From 9c3cea128636174e373c243bdab2d04688054633 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:55:24 +0800 Subject: [PATCH 001/654] Add `staged` keyword --- .../scala/hkmc2/semantics/Elaborator.scala | 5 +- .../src/main/scala/hkmc2/syntax/Keyword.scala | 3 +- .../src/main/scala/hkmc2/syntax/Lexer.scala | 3 +- .../main/scala/hkmc2/syntax/ParseRule.scala | 1 + .../src/main/scala/hkmc2/syntax/Tree.scala | 2 + .../src/test/mlscript/staging/Syntax.mls | 160 ++++++++++++++++++ 6 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/staging/Syntax.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index ce66d08ffe..249e8dbac0 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -308,7 +308,7 @@ extends Importer: case _ => N def annot(tree: Tree): Ctxl[Opt[Annot]] = tree match - case Keywrd(kw @ (Keyword.`abstract` | Keyword.`declare` | Keyword.`data`)) => S(Annot.Modifier(kw)) + case Keywrd(kw @ (Keyword.`abstract` | Keyword.`declare` | Keyword.`data` | Keyword.`staged`)) => S(Annot.Modifier(kw)) case _ => term(tree) match case Term.Error => N case trm => @@ -1334,6 +1334,9 @@ extends Importer: end go ctx.withMembers(members).givenIn: + // log(msg"${blk.showDbg}") + // log(msg"${blk.desugStmts.map(_.showDbg).mkString(",")}") + // transform to Annotated here go(blk.desugStmts, Nil, Nil) diff --git a/hkmc2/shared/src/main/scala/hkmc2/syntax/Keyword.scala b/hkmc2/shared/src/main/scala/hkmc2/syntax/Keyword.scala index 6f4e869a56..be17c06c33 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/syntax/Keyword.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/syntax/Keyword.scala @@ -113,6 +113,7 @@ object Keyword: val `abstract` = Keyword("abstract", N, N) val `constructor` = Keyword("constructor", N, N) val `virtual` = Keyword("virtual", N, N) + val `staged` = Keyword("staged", N, N) val `true` = Keyword("true", N, N) val `false` = Keyword("false", N, N) val `public` = Keyword("public", N, N) @@ -168,5 +169,5 @@ object Keyword: type LetLike = `let`.type | `set`.type type Modifier = `in`.type | `out`.type | `mut`.type | `abstract`.type | `declare`.type | `data`.type | `virtual`.type | `override`.type | - `public`.type | `private`.type + `public`.type | `private`.type | `staged`.type diff --git a/hkmc2/shared/src/main/scala/hkmc2/syntax/Lexer.scala b/hkmc2/shared/src/main/scala/hkmc2/syntax/Lexer.scala index ebab5b54b6..8355ed76e8 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/syntax/Lexer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/syntax/Lexer.scala @@ -576,7 +576,8 @@ object Lexer: "undefined", "abstract", "constructor", - "virtual" + "virtual", + "staged" ) private val SEP = "┊" diff --git a/hkmc2/shared/src/main/scala/hkmc2/syntax/ParseRule.scala b/hkmc2/shared/src/main/scala/hkmc2/syntax/ParseRule.scala index 744226371e..5e4ce63b4f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/syntax/ParseRule.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/syntax/ParseRule.scala @@ -377,6 +377,7 @@ class ParseRules(using State): modified(`public`), modified(`private`), modified(`out`), + modified(`staged`), singleKw(`true`)(BoolLit(true)), singleKw(`false`)(BoolLit(false)), singleKw(`undefined`)(UnitLit(false)), diff --git a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala index ea41d2df03..43e359e6b0 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala @@ -243,6 +243,8 @@ enum Tree extends AutoLocated: Annotated(kw, s.desugared) case Modified(kw @ Keywrd(Keyword.`abstract`), s) => Annotated(kw, s.desugared) + case Modified(kw @ Keywrd(Keyword.`staged`), s) => + Annotated(kw, s.desugared) case Modified(kw @ Keywrd(Keyword.`mut`), TermDef(ImmutVal, anme, rhs)) => TermDef(MutVal, anme, rhs).withLocOf(this).desugared case _ => m diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls new file mode 100644 index 0000000000..c0baf4c1b3 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -0,0 +1,160 @@ +import "./../../mlscript-compile/Predef.mjs" + +:de +:elt +module A with + fun f(x) = x +//│ Elab block List(TypeDef(Mod,InfixApp(Ident(A),keyword 'with',Block(List(TermDef(Fun,App(Ident(f),Tup(List(Ident[...] LocalScope(block:3) +//│ | Processing module/object definition Ident(A) +//│ | | Companion: None +//│ | | Elab block List(TermDef(Fun,App(Ident(f),Tup(List(Ident(x)))),Some(Ident(x)))) InnerScope(module:A‹537›) +//│ | | | Processing term definition App(Ident(f),Tup(List(Ident(x)))) +//│ | | | Elaborating ParamTree: ParamTree(‹›,Ident(x),None,None,Set()) +//│ | | | Elab term Ident(x) +//│ | | | | Elab subterm Ident(x) +//│ | | | | ~> Ref(x‹539›) +//│ | | | ~> Ref(x‹539›) +//│ | | ~> Blk(List(TermDefinition(Fun,member:f‹535›,module:A‹537›.f,List(ParamList(‹›,List(Param(‹›,x‹539›,None,Modulefulness(None))),None)),None,None,Some(Ref(x‹539›)),‹result of member:f‹535››‹541›,‹›,Modulefulness(None),List(),None)),Lit(UnitLit(false))) +//│ ~> Blk(List(ModuleOrObjectDef(None,module:A‹537›,member:A‹536›,List(),None,List(),None,Mod,{ fun member:f‹535›(x‹539›) = x‹539›#666; },None,List())),Lit(UnitLit(false))) +//│ Elaborated tree: +//│ Blk: +//│ stats = Ls of +//│ ModuleOrObjectDef: +//│ owner = N +//│ sym = module:A‹537› +//│ bsym = member:A‹536› +//│ tparams = Nil +//│ paramsOpt = N +//│ auxParams = Nil +//│ ext = N +//│ kind = Mod +//│ body = ObjBody of Blk: +//│ stats = Ls of +//│ TermDefinition: +//│ k = Fun +//│ sym = member:f‹535› +//│ tsym = module:A‹537›.f +//│ params = Ls of +//│ ParamList: +//│ flags = () +//│ params = Ls of +//│ Param: +//│ flags = () +//│ sym = x‹539› +//│ sign = N +//│ modulefulness = Modulefulness of N +//│ restParam = N +//│ tparams = N +//│ sign = N +//│ body = S of Ref{sym=x‹539›} of x‹539› +//│ resSym = ‹result of member:f‹535››‹541› +//│ flags = () +//│ modulefulness = Modulefulness of N +//│ annotations = Nil +//│ companion = N +//│ res = Lit of UnitLit of false +//│ companion = N +//│ annotations = Nil +//│ res = Lit of UnitLit of false +staged module B with + fun f(x) = x +B.f(1) +//│ Elab block List(Annotated(Keywrd(keyword 'staged'),TypeDef(Mod,InfixApp(Ident(B),keyword 'with',Block(List(Term[...] LocalScope(block:4) +//│ | Processing module/object definition Ident(B) +//│ | | Companion: None +//│ | | Elab block List(TermDef(Fun,App(Ident(f),Tup(List(Ident(x)))),Some(Ident(x)))) InnerScope(module:B‹545›) +//│ | | | Processing term definition App(Ident(f),Tup(List(Ident(x)))) +//│ | | | Elaborating ParamTree: ParamTree(‹›,Ident(x),None,None,Set()) +//│ | | | Elab term Ident(x) +//│ | | | | Elab subterm Ident(x) +//│ | | | | ~> Ref(x‹547›) +//│ | | | ~> Ref(x‹547›) +//│ | | ~> Blk(List(TermDefinition(Fun,member:f‹543›,module:B‹545›.f,List(ParamList(‹›,List(Param(‹›,x‹547›,None,Modulefulness(None))),None)),None,None,Some(Ref(x‹547›)),‹result of member:f‹543››‹549›,‹›,Modulefulness(None),List(),None)),Lit(UnitLit(false))) +//│ | Elab term App(Sel(Ident(B),Ident(f)),Tup(List(IntLit(1)))) +//│ | | Elab subterm App(Sel(Ident(B),Ident(f)),Tup(List(IntLit(1)))) +//│ | | | Elab subterm Sel(Ident(B),Ident(f)) +//│ | | | | Elab subterm Ident(B) +//│ | | | | ~> Ref(member:B‹544›) +//│ | | | ~> Sel(Ref(member:B‹544›),Ident(f)) +//│ | | | Elab subterm Tup(List(IntLit(1))) +//│ | | | | Elab term IntLit(1) +//│ | | | | | Elab subterm IntLit(1) +//│ | | | | | ~> Lit(IntLit(1)) +//│ | | | | ~> Lit(IntLit(1)) +//│ | | | ~> Tup(List(Fld(‹›,Lit(IntLit(1)),None))) +//│ | | ~> App(Sel(Ref(member:B‹544›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None)))) +//│ | ~> App(Sel(Ref(member:B‹544›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None)))) +//│ ~> Blk(List(ModuleOrObjectDef(None,module:B‹545›,member:B‹544›,List(),None,List(),None,Mod,{ fun member:f‹543›(x‹547›) = x‹547›#666; },None,List(Modifier(keyword 'staged')))),App(Sel(Ref(member:B‹544›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None))))) +//│ Elaborated tree: +//│ Blk: +//│ stats = Ls of +//│ ModuleOrObjectDef: +//│ owner = N +//│ sym = module:B‹545› +//│ bsym = member:B‹544› +//│ tparams = Nil +//│ paramsOpt = N +//│ auxParams = Nil +//│ ext = N +//│ kind = Mod +//│ body = ObjBody of Blk: +//│ stats = Ls of +//│ TermDefinition: +//│ k = Fun +//│ sym = member:f‹543› +//│ tsym = module:B‹545›.f +//│ params = Ls of +//│ ParamList: +//│ flags = () +//│ params = Ls of +//│ Param: +//│ flags = () +//│ sym = x‹547› +//│ sign = N +//│ modulefulness = Modulefulness of N +//│ restParam = N +//│ tparams = N +//│ sign = N +//│ body = S of Ref{sym=x‹547›} of x‹547› +//│ resSym = ‹result of member:f‹543››‹549› +//│ flags = () +//│ modulefulness = Modulefulness of N +//│ annotations = Nil +//│ companion = N +//│ res = Lit of UnitLit of false +//│ companion = N +//│ annotations = Ls of +//│ Modifier of keyword 'staged' +//│ res = App: +//│ lhs = Sel{sym=member:f‹543›}: +//│ prefix = Ref{sym=member:B‹544›} of member:B‹544› +//│ nme = Ident of "f" +//│ rhs = Tup of Ls of +//│ Fld: +//│ flags = () +//│ term = Lit of IntLit of 1 +//│ asc = N + +// should reject these annotations +:de +// :pe +staged object Foo +//│ Elab block List(Annotated(Keywrd(keyword 'staged'),TypeDef(Obj,Ident(Foo),None))) LocalScope(block:5) +//│ | Processing module/object definition Ident(Foo) +//│ | | Companion: None +//│ ~> Blk(List(ModuleOrObjectDef(None,object:Foo‹553›,member:Foo‹552›,List(),None,List(),None,Obj,{ },None,List(Modifier(keyword 'staged')))),Lit(UnitLit(false))) + +:de +:pe +// staged class Foo + +:de +// :pe +staged fun f() = 0 +//│ Elab block List(Annotated(Keywrd(keyword 'staged'),TermDef(Fun,App(Ident(f),Tup(List())),Some(IntLit(0))))) LocalScope(block:6) +//│ | Processing term definition App(Ident(f),Tup(List())) +//│ | Elab term IntLit(0) +//│ | | Elab subterm IntLit(0) +//│ | | ~> Lit(IntLit(0)) +//│ | ~> Lit(IntLit(0)) +//│ ~> Blk(List(TermDefinition(Fun,member:f‹555›,.f,List(ParamList(‹›,List(),None)),None,None,Some(Lit(IntLit(0))),‹result of member:f‹555››‹557›,‹›,Modulefulness(None),List(Modifier(keyword 'staged')),None)),Lit(UnitLit(false))) From 2711dd985927d2a31f9dc33ca53d1ddf7bfe0f46 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 30 Sep 2025 16:49:38 +0800 Subject: [PATCH 002/654] remove comments --- hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 249e8dbac0..facf91b308 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -1334,11 +1334,8 @@ extends Importer: end go ctx.withMembers(members).givenIn: - // log(msg"${blk.showDbg}") - // log(msg"${blk.desugStmts.map(_.showDbg).mkString(",")}") - // transform to Annotated here go(blk.desugStmts, Nil, Nil) - + def mkBlk(acc: Ls[Statement], res: Opt[Term], hasResult: Bool): Blk | Rcd = // TODO forbid certain kinds of terms in records From 7edc9b64233bc0167ca7225168a9b1590edd112c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 5 Oct 2025 00:11:37 +0800 Subject: [PATCH 003/654] draft out Block.mls --- .../src/test/mlscript-compile/Block.mls | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 hkmc2/shared/src/test/mlscript-compile/Block.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls new file mode 100644 index 0000000000..d5c4bbaa8d --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -0,0 +1,124 @@ +import "./Predef.mls" +import "./Option.mls" +import "./Term.mls" + +open Predef +open Option + +type Opt[A] = Option[A] +type Ls[A] = List[A] + +// dependancies referenced in Block classes +class List[A] with + class Cons[A](head: A, tail: List[A]) + object Nil +// copying Tree.Ident => Str in Term.mls +class Ident(name: Str) // translation of Tree.Ident +class VarSymbol(id: Ident) +type Local = Symbol +// should these be replaced with just Symbol? +type FieldSymbol = Symbol +type ClassSymbol = Symbol +type ClassLikeSymbol = Symbol +type TermSymbol = Symbol +type InnerSymbol = Symbol +type BlockMemberSymbol = Symbol +type ModuleOrObjectSymbol = Symbol +type MemberSymbol = Symbol + +type Literal = null | undefined | Str | Int | Num | Bool +class Arg(spread: Opt[Bool], value: Path) + +class ClsLikeKind(desc: Str) +class ParamListFlags(ctx: Bool) +class FldFlags(_mut: Bool, spec: Bool, pat: Bool, isVal: Bool) +class Modulefulness(msym: Opt[ModuleOrObjectSymbol]) +class Param(flags: FldFlags, sym: VarSymbol, sign: Opt[Term.Term], modulefulness: Modulefulness) +class ParamList(flags: ParamListFlags, params: Ls[Param], restParam: Opt[Param]) +// class Handler( +// sym: BlockMemberSymbol, +// resumeSym: VarSymbol, +// params: Ls[ParamList], +// body: Block, +// ) + +class Path with + class Select(qual: Path, name: Ident)(symcol: Opt[FieldSymbol]) + class Value with + constructor + Ref(l: Local) + Lit(lit: Literal) + // TODO Tup + +class Case with + constructor + CaseLit(lit: Literal) + Cls(cls: ClassLikeSymbol, path: Path) + Tup(len: Int, inf: Bool) + Field(name: Ident, safe: Bool) + +class Result with + constructor + TrivialResult + Call(_fun: Path, args: Ls[Arg])(isMlsFun: Bool, mayRaiseEffects: Bool) + Instantiate(_mut: Bool, cls: Path, args: Ls[Arg]) // may assume immutable + Tuple(_mut: Bool, elems: Ls[Arg]) // may assume immutable + +class Defn with + class ValDefn( + tsym: TermSymbol, + sym: BlockMemberSymbol, + rhs: Path + ) with + val innerSym = Some(tsym) + val owner: Opt[InnerSymbol] = tsym.owner + class ClsLikeDefn( + owner: Opt[InnerSymbol], + isym: MemberSymbol & InnerSymbol, + sym: BlockMemberSymbol, + k: ClsLikeKind, + paramsOpt: Opt[ParamList], + auxParams: Ls[ParamList], + parentPath: Opt[Path], + methods: Ls[FunDefn], + privateFields: Ls[TermSymbol], + publicFields: Ls[BlockMemberSymbol -> TermSymbol], + preCtor: Block, + ctor: Block, + companion: Opt[ClsLikeBody], + ) with + val innerSym = Some(isym) + class FunDefn( + owner: Opt[InnerSymbol], + sym: BlockMemberSymbol, + params: Ls[ParamList], + body: Block, + ) with + val innerSym = None + +// this is needed to convert the non-type selection to a type +type FunDefn = Defn.FunDefn + +class ClsLikeBody( + isym: MemberSymbol & InnerSymbol, + methods: Ls[FunDefn], + privateFields: Ls[TermSymbol], + publicFields: Ls[BlockMemberSymbol -> TermSymbol], + ctor: Block, +) + +class Block with + class Match(scrut: Path, arms: Ls[Case -> Block], dflt: Opt[Block], rest: Block) + class Return(res: Result, implct: Bool) + class Label(lavel: Local, body: Block, rest: Block) + class Define(defn: Defn, rest: Block) + // class HandleBlock( + // lhs: Local, + // rhs: Local, + // par: Path, + // args: Ls[Path], + // cls: ClassSymbol, + // handlers: Ls[Handler], + // body: Block, + // rest: Block, + // ) From becf900ab02e7cb47b7af84edc2d1310160774b4 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:17:11 +0800 Subject: [PATCH 004/654] switch from List to Array --- .../src/test/mlscript-compile/Block.mls | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d5c4bbaa8d..f54c4b8660 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -5,13 +5,12 @@ import "./Term.mls" open Predef open Option +module Block with... + type Opt[A] = Option[A] -type Ls[A] = List[A] // dependancies referenced in Block classes -class List[A] with - class Cons[A](head: A, tail: List[A]) - object Nil + // copying Tree.Ident => Str in Term.mls class Ident(name: Str) // translation of Tree.Ident class VarSymbol(id: Ident) @@ -34,11 +33,11 @@ class ParamListFlags(ctx: Bool) class FldFlags(_mut: Bool, spec: Bool, pat: Bool, isVal: Bool) class Modulefulness(msym: Opt[ModuleOrObjectSymbol]) class Param(flags: FldFlags, sym: VarSymbol, sign: Opt[Term.Term], modulefulness: Modulefulness) -class ParamList(flags: ParamListFlags, params: Ls[Param], restParam: Opt[Param]) +class ParamList(flags: ParamListFlags, params: Array[Param], restParam: Opt[Param]) // class Handler( // sym: BlockMemberSymbol, // resumeSym: VarSymbol, -// params: Ls[ParamList], +// params: Array[ParamList], // body: Block, // ) @@ -60,9 +59,9 @@ class Case with class Result with constructor TrivialResult - Call(_fun: Path, args: Ls[Arg])(isMlsFun: Bool, mayRaiseEffects: Bool) - Instantiate(_mut: Bool, cls: Path, args: Ls[Arg]) // may assume immutable - Tuple(_mut: Bool, elems: Ls[Arg]) // may assume immutable + Call(_fun: Path, args: Array[Arg])(isMlsFun: Bool, mayRaiseEffects: Bool) + Instantiate(_mut: Bool, cls: Path, args: Array[Arg]) // may assume immutable + Tuple(_mut: Bool, elems: Array[Arg]) // may assume immutable class Defn with class ValDefn( @@ -78,11 +77,11 @@ class Defn with sym: BlockMemberSymbol, k: ClsLikeKind, paramsOpt: Opt[ParamList], - auxParams: Ls[ParamList], + auxParams: Array[ParamList], parentPath: Opt[Path], - methods: Ls[FunDefn], - privateFields: Ls[TermSymbol], - publicFields: Ls[BlockMemberSymbol -> TermSymbol], + methods: Array[FunDefn], + privateFields: Array[TermSymbol], + publicFields: Array[BlockMemberSymbol -> TermSymbol], preCtor: Block, ctor: Block, companion: Opt[ClsLikeBody], @@ -91,7 +90,7 @@ class Defn with class FunDefn( owner: Opt[InnerSymbol], sym: BlockMemberSymbol, - params: Ls[ParamList], + params: Array[ParamList], body: Block, ) with val innerSym = None @@ -101,14 +100,14 @@ type FunDefn = Defn.FunDefn class ClsLikeBody( isym: MemberSymbol & InnerSymbol, - methods: Ls[FunDefn], - privateFields: Ls[TermSymbol], - publicFields: Ls[BlockMemberSymbol -> TermSymbol], + methods: Array[FunDefn], + privateFields: Array[TermSymbol], + publicFields: Array[BlockMemberSymbol -> TermSymbol], ctor: Block, ) class Block with - class Match(scrut: Path, arms: Ls[Case -> Block], dflt: Opt[Block], rest: Block) + class Match(scrut: Path, arms: Array[Case -> Block], dflt: Opt[Block], rest: Block) class Return(res: Result, implct: Bool) class Label(lavel: Local, body: Block, rest: Block) class Define(defn: Defn, rest: Block) @@ -116,9 +115,9 @@ class Block with // lhs: Local, // rhs: Local, // par: Path, - // args: Ls[Path], + // args: Array[Path], // cls: ClassSymbol, - // handlers: Ls[Handler], + // handlers: Array[Handler], // body: Block, // rest: Block, // ) From acc97a2711e8ac3adc981fa474d568411a0304ce Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:27:04 +0800 Subject: [PATCH 005/654] make constructor fields public --- .../src/test/mlscript-compile/Block.mls | 145 ++++++++---------- 1 file changed, 65 insertions(+), 80 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index f54c4b8660..97e06bd44f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -12,8 +12,8 @@ type Opt[A] = Option[A] // dependancies referenced in Block classes // copying Tree.Ident => Str in Term.mls -class Ident(name: Str) // translation of Tree.Ident -class VarSymbol(id: Ident) +class Ident(val name: Str) // translation of Tree.Ident +class VarSymbol(val id: Ident) type Local = Symbol // should these be replaced with just Symbol? type FieldSymbol = Symbol @@ -26,98 +26,83 @@ type ModuleOrObjectSymbol = Symbol type MemberSymbol = Symbol type Literal = null | undefined | Str | Int | Num | Bool -class Arg(spread: Opt[Bool], value: Path) +class Arg(val spread: Opt[Bool], val value: Path) -class ClsLikeKind(desc: Str) -class ParamListFlags(ctx: Bool) -class FldFlags(_mut: Bool, spec: Bool, pat: Bool, isVal: Bool) -class Modulefulness(msym: Opt[ModuleOrObjectSymbol]) -class Param(flags: FldFlags, sym: VarSymbol, sign: Opt[Term.Term], modulefulness: Modulefulness) -class ParamList(flags: ParamListFlags, params: Array[Param], restParam: Opt[Param]) -// class Handler( -// sym: BlockMemberSymbol, -// resumeSym: VarSymbol, -// params: Array[ParamList], -// body: Block, -// ) +class ClsLikeKind(val desc: Str) +class ParamListFlags(val ctx: Bool) +class FldFlags(val _mut: Bool, val spec: Bool, val pat: Bool, val isVal: Bool) +class Modulefulness(val msym: Opt[ModuleOrObjectSymbol]) +class Param(val flags: FldFlags, val sym: VarSymbol, val sign: Opt[Term.Term], val modulefulness: Modulefulness) +class ParamList(val flags: ParamListFlags, val params: Array[Param], val restParam: Opt[Param]) + +// Defined Classes for Block class Path with - class Select(qual: Path, name: Ident)(symcol: Opt[FieldSymbol]) - class Value with - constructor - Ref(l: Local) - Lit(lit: Literal) + constructor + Select(val qual: Path, val name: Ident)(symcol: Opt[FieldSymbol]) + ValueRef(val l: Local) + ValueLit(val lit: Literal) // TODO Tup class Case with constructor - CaseLit(lit: Literal) - Cls(cls: ClassLikeSymbol, path: Path) - Tup(len: Int, inf: Bool) - Field(name: Ident, safe: Bool) + CaseLit(val lit: Literal) + Cls(val cls: ClassLikeSymbol, val path: Path) + Tup(val len: Int, val inf: Bool) + Field(val name: Ident, val safe: Bool) class Result with constructor - TrivialResult - Call(_fun: Path, args: Array[Arg])(isMlsFun: Bool, mayRaiseEffects: Bool) - Instantiate(_mut: Bool, cls: Path, args: Array[Arg]) // may assume immutable - Tuple(_mut: Bool, elems: Array[Arg]) // may assume immutable +TrivialResult(val path: Path) // only Path extends TrivialResult + Call(val _fun: Path, val args: Array[Arg])(isMlsFun: Bool, mayRaiseEffects: Bool) + Instantiate(val _mut: Bool, val cls: Path, val args: Array[Arg]) // may assume immutable + Tuple(val _mut: Bool, val elems: Array[Arg]) // may assume immutable +// moved owner and innerSym into the argument to comply with `constructor` syntax class Defn with - class ValDefn( - tsym: TermSymbol, - sym: BlockMemberSymbol, - rhs: Path - ) with - val innerSym = Some(tsym) - val owner: Opt[InnerSymbol] = tsym.owner - class ClsLikeDefn( - owner: Opt[InnerSymbol], - isym: MemberSymbol & InnerSymbol, - sym: BlockMemberSymbol, - k: ClsLikeKind, - paramsOpt: Opt[ParamList], - auxParams: Array[ParamList], - parentPath: Opt[Path], - methods: Array[FunDefn], - privateFields: Array[TermSymbol], - publicFields: Array[BlockMemberSymbol -> TermSymbol], - preCtor: Block, - ctor: Block, - companion: Opt[ClsLikeBody], - ) with - val innerSym = Some(isym) - class FunDefn( - owner: Opt[InnerSymbol], - sym: BlockMemberSymbol, - params: Array[ParamList], - body: Block, - ) with - val innerSym = None - -// this is needed to convert the non-type selection to a type -type FunDefn = Defn.FunDefn + constructor + ValDefn( + val tsym: TermSymbol, + val sym: BlockMemberSymbol, + val rhs: Path, + val innerSym: Symbol = Some(tsym), + val owner: Opt[InnerSymbol] = tsym.owner, + ) + ClsLikeDefn( + val owner: Opt[InnerSymbol], + val isym: MemberSymbol & InnerSymbol, + val sym: BlockMemberSymbol, + val k: ClsLikeKind, + val paramsOpt: Opt[ParamList], + val auxParams: Array[ParamList], + val parentPath: Opt[Path], + val methods: Array[FunDefn], + val privateFields: Array[TermSymbol], + val publicFields: Array[BlockMemberSymbol -> TermSymbol], + val preCtor: Block, + val ctor: Block, + val companion: Opt[ClsLikeBody], + val innerSym: Symbol = Some(isym), + ) + FunDefn( + val owner: Opt[InnerSymbol], + val sym: BlockMemberSymbol, + val params: Array[ParamList], + val body: Block, + val innerSym: Symbol = None, + ) class ClsLikeBody( - isym: MemberSymbol & InnerSymbol, - methods: Array[FunDefn], - privateFields: Array[TermSymbol], - publicFields: Array[BlockMemberSymbol -> TermSymbol], - ctor: Block, + val isym: MemberSymbol & InnerSymbol, + val methods: Array[FunDefn], + val privateFields: Array[TermSymbol], + val publicFields: Array[BlockMemberSymbol -> TermSymbol], + val ctor: Block, ) class Block with - class Match(scrut: Path, arms: Array[Case -> Block], dflt: Opt[Block], rest: Block) - class Return(res: Result, implct: Bool) - class Label(lavel: Local, body: Block, rest: Block) - class Define(defn: Defn, rest: Block) - // class HandleBlock( - // lhs: Local, - // rhs: Local, - // par: Path, - // args: Array[Path], - // cls: ClassSymbol, - // handlers: Array[Handler], - // body: Block, - // rest: Block, - // ) + constructor +Match(val scrut: Path, val arms: Array[Case -> Block], val dflt: Opt[Block], val rest: Block) + Return(val res: Result, val implct: Bool) + Label(val lavel: Local, val body: Block, val rest: Block) + Define(val defn: Defn, val rest: Block) From c337fb37890c38774c5ad38bf709da85e20f1fb6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:37:40 +0800 Subject: [PATCH 006/654] remove type alias for Symbol --- .../src/test/mlscript-compile/Block.mls | 46 ++++++++----------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 97e06bd44f..7fe69ac278 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -14,16 +14,6 @@ type Opt[A] = Option[A] // copying Tree.Ident => Str in Term.mls class Ident(val name: Str) // translation of Tree.Ident class VarSymbol(val id: Ident) -type Local = Symbol -// should these be replaced with just Symbol? -type FieldSymbol = Symbol -type ClassSymbol = Symbol -type ClassLikeSymbol = Symbol -type TermSymbol = Symbol -type InnerSymbol = Symbol -type BlockMemberSymbol = Symbol -type ModuleOrObjectSymbol = Symbol -type MemberSymbol = Symbol type Literal = null | undefined | Str | Int | Num | Bool class Arg(val spread: Opt[Bool], val value: Path) @@ -31,7 +21,7 @@ class Arg(val spread: Opt[Bool], val value: Path) class ClsLikeKind(val desc: Str) class ParamListFlags(val ctx: Bool) class FldFlags(val _mut: Bool, val spec: Bool, val pat: Bool, val isVal: Bool) -class Modulefulness(val msym: Opt[ModuleOrObjectSymbol]) +class Modulefulness(val msym: Opt[Symbol]) class Param(val flags: FldFlags, val sym: VarSymbol, val sign: Opt[Term.Term], val modulefulness: Modulefulness) class ParamList(val flags: ParamListFlags, val params: Array[Param], val restParam: Opt[Param]) @@ -39,15 +29,15 @@ class ParamList(val flags: ParamListFlags, val params: Array[Param], val restPar class Path with constructor - Select(val qual: Path, val name: Ident)(symcol: Opt[FieldSymbol]) - ValueRef(val l: Local) + Select(val qual: Path, val name: Ident)(symcol: Opt[Symbol]) + ValueRef(val l: Symbol) ValueLit(val lit: Literal) // TODO Tup class Case with constructor CaseLit(val lit: Literal) - Cls(val cls: ClassLikeSymbol, val path: Path) + Cls(val cls: Symbol, val path: Path) Tup(val len: Int, val inf: Bool) Field(val name: Ident, val safe: Bool) @@ -62,41 +52,41 @@ TrivialResult(val path: Path) // only Path extends TrivialResult class Defn with constructor ValDefn( - val tsym: TermSymbol, - val sym: BlockMemberSymbol, + val tsym: Symbol, + val sym: Symbol, val rhs: Path, val innerSym: Symbol = Some(tsym), - val owner: Opt[InnerSymbol] = tsym.owner, + val owner: Opt[Symbol] = tsym.owner, ) ClsLikeDefn( - val owner: Opt[InnerSymbol], - val isym: MemberSymbol & InnerSymbol, - val sym: BlockMemberSymbol, + val owner: Opt[Symbol], + val isym: Symbol, + val sym: Symbol, val k: ClsLikeKind, val paramsOpt: Opt[ParamList], val auxParams: Array[ParamList], val parentPath: Opt[Path], val methods: Array[FunDefn], - val privateFields: Array[TermSymbol], - val publicFields: Array[BlockMemberSymbol -> TermSymbol], + val privateFields: Array[Symbol], + val publicFields: Array[Symbol -> Symbol], val preCtor: Block, val ctor: Block, val companion: Opt[ClsLikeBody], val innerSym: Symbol = Some(isym), ) FunDefn( - val owner: Opt[InnerSymbol], - val sym: BlockMemberSymbol, + val owner: Opt[Symbol], + val sym: Symbol, val params: Array[ParamList], val body: Block, val innerSym: Symbol = None, ) class ClsLikeBody( - val isym: MemberSymbol & InnerSymbol, + val isym: Symbol, val methods: Array[FunDefn], - val privateFields: Array[TermSymbol], - val publicFields: Array[BlockMemberSymbol -> TermSymbol], + val privateFields: Array[Symbol], + val publicFields: Array[Symbol -> Symbol], val ctor: Block, ) @@ -104,5 +94,5 @@ class Block with constructor Match(val scrut: Path, val arms: Array[Case -> Block], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) - Label(val lavel: Local, val body: Block, val rest: Block) + Label(val lavel: Symbol, val body: Block, val rest: Block) Define(val defn: Defn, val rest: Block) From 03e24d648ed55abd232adbd116021383e5c3d5de Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:40:01 +0800 Subject: [PATCH 007/654] fix whitespace issues --- .../shared/src/test/mlscript-compile/Block.mls | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 7fe69ac278..8e9e2a9838 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -28,11 +28,11 @@ class ParamList(val flags: ParamListFlags, val params: Array[Param], val restPar // Defined Classes for Block class Path with - constructor - Select(val qual: Path, val name: Ident)(symcol: Opt[Symbol]) + constructor + Select(val qual: Path, val name: Ident)(symcol: Opt[Symbol]) ValueRef(val l: Symbol) - ValueLit(val lit: Literal) - // TODO Tup + ValueLit(val lit: Literal) + // TODO Tup class Case with constructor @@ -43,7 +43,7 @@ class Case with class Result with constructor -TrivialResult(val path: Path) // only Path extends TrivialResult + TrivialResult(val path: Path) // only Path extends TrivialResult Call(val _fun: Path, val args: Array[Arg])(isMlsFun: Bool, mayRaiseEffects: Bool) Instantiate(val _mut: Bool, val cls: Path, val args: Array[Arg]) // may assume immutable Tuple(val _mut: Bool, val elems: Array[Arg]) // may assume immutable @@ -92,7 +92,7 @@ class ClsLikeBody( class Block with constructor -Match(val scrut: Path, val arms: Array[Case -> Block], val dflt: Opt[Block], val rest: Block) - Return(val res: Result, val implct: Bool) - Label(val lavel: Symbol, val body: Block, val rest: Block) - Define(val defn: Defn, val rest: Block) + Match(val scrut: Path, val arms: Array[Case -> Block], val dflt: Opt[Block], val rest: Block) + Return(val res: Result, val implct: Bool) + Label(val lavel: Symbol, val body: Block, val rest: Block) + Define(val defn: Defn, val rest: Block) From 866d68c86ad0dd9564c257a53e3d9aafc0505c2a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 23 Oct 2025 21:36:59 +0800 Subject: [PATCH 008/654] simplify ParamList representation --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 8e9e2a9838..0bd2af04b3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -13,23 +13,21 @@ type Opt[A] = Option[A] // copying Tree.Ident => Str in Term.mls class Ident(val name: Str) // translation of Tree.Ident +class Symbol(val name: Str) class VarSymbol(val id: Ident) type Literal = null | undefined | Str | Int | Num | Bool class Arg(val spread: Opt[Bool], val value: Path) class ClsLikeKind(val desc: Str) -class ParamListFlags(val ctx: Bool) -class FldFlags(val _mut: Bool, val spec: Bool, val pat: Bool, val isVal: Bool) -class Modulefulness(val msym: Opt[Symbol]) -class Param(val flags: FldFlags, val sym: VarSymbol, val sign: Opt[Term.Term], val modulefulness: Modulefulness) -class ParamList(val flags: ParamListFlags, val params: Array[Param], val restParam: Opt[Param]) +// copying ParamList => Array[Symbol] in Term.mls +type ParamList = Array[Symbol] // Defined Classes for Block class Path with constructor - Select(val qual: Path, val name: Ident)(symcol: Opt[Symbol]) + Select(val qual: Path, val name: Ident)(symcol: Opt[Symbol]) // extra term unnecessary? ValueRef(val l: Symbol) ValueLit(val lit: Literal) // TODO Tup From abbb517a322dd0cfdb34b14e23090c8450c1a749 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 28 Oct 2025 23:12:26 +0800 Subject: [PATCH 009/654] add more constructors to Block.mls --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 0bd2af04b3..9d9e7c6042 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -28,13 +28,14 @@ type ParamList = Array[Symbol] class Path with constructor Select(val qual: Path, val name: Ident)(symcol: Opt[Symbol]) // extra term unnecessary? + DynSelect(val qual: Path, val fld: Path, arrayIdx: Bool) ValueRef(val l: Symbol) ValueLit(val lit: Literal) // TODO Tup class Case with constructor - CaseLit(val lit: Literal) + Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) Tup(val len: Int, val inf: Bool) Field(val name: Ident, val safe: Bool) @@ -92,5 +93,7 @@ class Block with constructor Match(val scrut: Path, val arms: Array[Case -> Block], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) - Label(val lavel: Symbol, val body: Block, val rest: Block) + Assign(val lhs: Symbol, val rhs: Result, val rest: Block) + Label(val lavel: Symbol, val body: Block, val rest: Block) // unused? Define(val defn: Defn, val rest: Block) + End() From 5c275d294aa1bacbcf6a276dec8ad8f2fc532faf Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 28 Oct 2025 23:13:05 +0800 Subject: [PATCH 010/654] remove unnecessary fields --- .../src/test/mlscript-compile/Block.mls | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 9d9e7c6042..57b674e27e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -19,7 +19,7 @@ class VarSymbol(val id: Ident) type Literal = null | undefined | Str | Int | Num | Bool class Arg(val spread: Opt[Bool], val value: Path) -class ClsLikeKind(val desc: Str) +// class ClsLikeKind(val desc: Str) // copying ParamList => Array[Symbol] in Term.mls type ParamList = Array[Symbol] @@ -51,42 +51,42 @@ class Result with class Defn with constructor ValDefn( - val tsym: Symbol, + // val tsym: Symbol, val sym: Symbol, val rhs: Path, - val innerSym: Symbol = Some(tsym), - val owner: Opt[Symbol] = tsym.owner, + // val innerSym: Symbol = Some(tsym), + // val owner: Opt[Symbol] = tsym.owner, ) ClsLikeDefn( - val owner: Opt[Symbol], - val isym: Symbol, + // val owner: Opt[Symbol], + // val isym: Symbol, val sym: Symbol, - val k: ClsLikeKind, + // val k: ClsLikeKind, val paramsOpt: Opt[ParamList], - val auxParams: Array[ParamList], - val parentPath: Opt[Path], - val methods: Array[FunDefn], - val privateFields: Array[Symbol], - val publicFields: Array[Symbol -> Symbol], - val preCtor: Block, - val ctor: Block, + // val auxParams: Array[ParamList], + // val parentPath: Opt[Path], + // val methods: Array[FunDefn], + // val privateFields: Array[Symbol], + // val publicFields: Array[Symbol -> Symbol], + // val preCtor: Block, + // val ctor: Block, val companion: Opt[ClsLikeBody], - val innerSym: Symbol = Some(isym), + // val innerSym: Symbol = Some(isym), ) FunDefn( - val owner: Opt[Symbol], + // val owner: Opt[Symbol], val sym: Symbol, val params: Array[ParamList], val body: Block, - val innerSym: Symbol = None, + // val innerSym: Symbol = None, ) class ClsLikeBody( val isym: Symbol, val methods: Array[FunDefn], - val privateFields: Array[Symbol], + // val privateFields: Array[Symbol], val publicFields: Array[Symbol -> Symbol], - val ctor: Block, + // val ctor: Block, ) class Block with From 539bca3457942a03f5309e1c173f3c2440da6110 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 30 Oct 2025 00:03:54 +0800 Subject: [PATCH 011/654] Instrumentation progress following formalization --- .../scala/hkmc2/codegen/Instrumentation.scala | 217 ++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala new file mode 100644 index 0000000000..f3b1dd29dd --- /dev/null +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -0,0 +1,217 @@ +package hkmc2 +package codegen + +import mlscript.utils.*, shorthands.* + +import semantics.* +import semantics.Elaborator.State + +import syntax.{Literal, Tree} + +enum Shape: + case Dyn + case Lit(l: Literal) + case Arr(length: Int, shapes: Ls[Shape]) + case Class(c: Symbol, shapes: Ls[Shape]) + case Unit + +import Shape.{Dyn, Lit => SLit, Arr => SArr, Class => SClass, Unit} + +// TODO: use FlatPattern instead? +enum Pattern: + case Lit(l: Literal) + case Class(c: Symbol) + case Arr(len: Int) + case Wildcard + +import Pattern.{Lit => PLit, Class => PClass, Arr => PArr, Wildcard} + +def isPrimitiveTypeOf(c: Symbol, l: SLit) = ??? + +def mrg2(s1: Shape, s2: Shape): Shape = (s1, s2) match + case (s1, s2) if s1 == s2 => s1 + case (l: SLit, s@SClass(c, _)) if isPrimitiveTypeOf(c, l) => s + case (SClass(c1, s1), SClass(c2, s2)) if c1 == c2 => + SClass(c1, s1 zip s2 map mrg2) + case (SArr(l1, s1), SArr(l2, s2)) if l1 == l2 => + SArr(l1, s1 zip s2 map mrg2) + case _ => Dyn + +def mrg(shapes: Ls[Shape]): Shape = + shapes.reduceRight(mrg2) + +def canMatch(s: Shape, p: Pattern): Opt[Bool] = (s, p) match + case (_, Wildcard) => Some(true) + case (SLit(l1), PLit(l2)) if l1 == l2 => S(true) + case (l: SLit, PClass(c)) if isPrimitiveTypeOf(c, l) => S(true) + case (SClass(c1, _), PClass(c2)) if c1 == c2 => S(true) + case (SArr(n1, s), PArr(n2)) if n1 == n2 => S(true) + case (Dyn, _) => None + case _ => Some(false) + +type BlockRet = (Block => Block, Shape, Value) +class Instrumentation(using State): + // use TempSymbol? + lazy val block = new BlockMemberSymbol("Block", Nil) + lazy val shape = new BlockMemberSymbol("Shape", Nil) + + def toArg(x: Path | Local): Arg = + x match + case p: Path => Arg(N, p) + case l: Local => Arg(N, Value.Ref(l)) + + // null and undefined are missing + def toValue(lit: Str | BigInt | BigDecimal | Bool): Value = + val l = lit match + case i: BigInt => Tree.IntLit(i) + case b: Bool => Tree.BoolLit(b) + case s: Str => Tree.StrLit(s) + case n: BigDecimal => Tree.DecLit(n) + Value.Lit(l) + + // continuation-passing style allows symbols defined in current function to be referenced later + + def assign(res: Result)(k: Local => BlockRet): BlockRet = + val tmp = new TempSymbol(N, "tmp") + val (rest, shape, value) = k(tmp) + (b => Assign(tmp, res, rest(b)), shape, value) + def assign2(res: Result)(k: Local => Block): Block = + val tmp = new TempSymbol(N, "tmp") + Assign(tmp, res, k(tmp)) + + // helper for staging the constructors in Block.scala to Block.mls + // automatically convert Ls[Path] into Ls[Arg]? + def stagedBlock(nme: String, args: Ls[Path | Local])(k: Local => BlockRet): BlockRet = + val s = Select(Value.Ref(block), Tree.Ident(nme))(N) + val res = args match + case Nil => s + case h :: t => Call(s, args.map(toArg))(false, false) + assign(res)(k) + def stagedBlock2(nme: String, args: Ls[Path | Local])(k: Local => Block): Block = + val s = Select(Value.Ref(block), Tree.Ident(nme))(N) + val res = args match + case Nil => s + case h :: t => Call(s, args.map(toArg))(false, false) + assign2(res)(k) + def stagedShape(nme: String, args: Ls[Arg])(k: Local => BlockRet): BlockRet = + val s = Select(Value.Ref(shape), Tree.Ident(nme))(N) + val res = args match + case Nil => s + case h :: t => Call(s, args)(false, false) + assign(res)(k) + + // helpers for staging constructors in Block.mls + + def stagedSymbol(nme: String)(k: Local => BlockRet): BlockRet = + stagedBlock("Symbol", Ls(toValue(nme)))(k) + + def stagedIdent(nme: String)(k: Local => BlockRet): BlockRet = + stagedBlock("Ident", Ls(toValue(nme)))(k) + + def stagedRef(l: Symbol)(k: Local => BlockRet): BlockRet = + stagedSymbol(l.nme): l => + stagedBlock("ValueRef", Ls(l))(k) + + // note that this is for Block.ValueLit, not Shape.Lit + def stagedBLit(l: Literal)(k: Local => BlockRet): BlockRet = + stagedBlock("ValueLit", Ls(Value.Lit(l)))(k) + + def stagedSelect(qual: Path, name: Str)(k: Local => BlockRet): BlockRet = + stagedPath(qual): p => + stagedIdent(name): i => + stagedBlock("Select", Ls(p, i))(k) + + def stagedDynSelect(qual: Path, fld: Path, arrayIdx: Bool)(k: Local => BlockRet): BlockRet = + stagedPath(qual): q => + stagedPath(fld): f => + stagedBlock("DynSelect", Ls(q, f, toValue(arrayIdx)))(k) + + def stagedPath(p: Path)(k: Local => BlockRet): BlockRet = p match + case Select(qual, tree) => stagedSelect(qual, tree.name)(k) + case DynSelect(qual, fld, arrayIdx) => stagedDynSelect(qual, fld, arrayIdx)(k) + case Value.Ref(l) => stagedRef(l)(k) + case Value.Lit(lit) => stagedBLit(lit)(k) + case _ => ??? + + def stagedTuple(mut: Bool, elems: Ls[Arg])(k: Local => BlockRet): BlockRet = + // TODO: staging array + stagedBlock("Tuple", Ls(toValue(mut), ???))(k) + + // helpers to create and access the components of a staged value + def returnStagedValue(shape: Local, value: Local): Block = + stagedBlock2("Tuple", Ls(shape, value)): z => + stagedBlock2("Return", Ls(z, toValue(false))): _ => + End() + def getShape(l: Local)(k: Local => BlockRet): BlockRet = + stagedSelect(Value.Ref(l), "0")(k) + def getBlock(l: Local)(k: Local => BlockRet): BlockRet = + stagedSelect(Value.Ref(l), "1")(k) + + // functions that perform the instrumentation + + def ruleLit(l: Literal): BlockRet = + (id, SLit(l), Value.Lit(l)) + + def ruleVar(x: (Shape, Value.Ref)): BlockRet = + stagedBlock("ValueRef", Ls(x._2)): block => + (id, x._1, Value.Ref(block)) + + def ruleArr(ps: Ls[Path]): BlockRet = + // ps match + // case head :: next => next.foldRight(stagedPath(head)(b))() + // case Nil => (id, ) + + val (bs, ss, vs) = ps.map(stagedPath).unzip3 + (b => bs.foldRight(b)(_(_)), SArr(ps.length, ss), ???) + + def ruleReturn(r: Return): BlockRet = + val (b, s, v) = stagedResult(r.res) + stagedBlock("Return", Ls(v, toValue(r.implct))): ret => + (b, s, Value.Ref(ret)) + + def ruleInst(i: Instantiate): BlockRet = + val Instantiate(mut, cls, args) = i + assert(!mut) + // args.reduceRightOption[BlockRet]((arg, x) => + // val (b, ss, vs) = x + // ??? + // ).getOrElse(???) + val (bs, ss, vs) = args.map(stagedArg).unzip3 + // turn path to symbol somehow + val sym: Symbol = ??? + val s = SClass(???, ss) + stagedSelect(cls, "class"): sel => + stagedBlock("Tuple", Ls(toValue(false), ???)): _ => + ??? + // stagedBlock("Instantiate", Ls(toValue(false), sym, ???).map(toArg)): inst => + // ??? + + def ruleEnd(): BlockRet = + stagedBlock("End", Ls()): end => + (id, Unit, Value.Ref(end)) + + // todo functions that fills out the holes in the functions above + + def stagedResult(res: Result): BlockRet = res match + case Call(fun, args) => ??? + case res: Instantiate => ruleInst(res) + case Lambda(params, body) => ??? + case Tuple(mut, elems) => ??? + case Record(mut, elems) => ??? + case Select(qual, name) => ??? + case DynSelect(qual, fld, arrayIdx) => ??? + case Value.Ref(l) => ??? + case Value.Lit(lit) => ??? + case _ => ??? + + def stagedPath(p: Path): BlockRet = p match + case Select(qual, name) => ??? + case DynSelect(qual, fld, arrayIdx) => ??? + case Value.Ref(l) => ??? + case Value.Lit(lit) => ??? + case _ => ??? + + def stagedArg(a: Arg): BlockRet = ??? + + + \ No newline at end of file From 9298f36f9f97c645ab5b10c9290325c0e60ca7d0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 20:10:32 +0800 Subject: [PATCH 012/654] add Block.mls --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/Block.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls new file mode 100644 index 0000000000..e69de29bb2 From 4796cad5172ba4724aae521e30f8e8f550ca3de3 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 28 Oct 2025 09:59:28 +0800 Subject: [PATCH 013/654] Add Block.mls into DiffMaker and prepare the function for lowering --- .../main/scala/hkmc2/codegen/Lowering.scala | 55 +++++++++++-------- .../src/test/scala/hkmc2/MLsDiffMaker.scala | 7 +++ 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 273c473ec6..8e24e7bad4 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -62,7 +62,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): tl.trace[Term](s"Expanding term ${r}", post = t => s"~> ${t}"): r.expanded case t => t - + val lowerHandlers: Bool = config.effectHandlers.isDefined val lift: Bool = config.liftDefns.isDefined @@ -168,28 +168,34 @@ class Lowering()(using Config, TL, Raise, State, Ctx): case N => // abstract declarations have no lowering blockImpl(stats, res)(k) case S(bod) => - td.k match - case knd: syntax.Val => - assert(td.params.isEmpty) - subTerm_nonTail(bod)(r => - // Assign(td.sym, r, - // term(st.Blk(stats, res))(k))) - Define(ValDefn(td.tsym, td.sym, r), - blockImpl(stats, res)(k))) - case syntax.Fun => - val (paramLists, bodyBlock) = setupFunctionOrByNameDef(td.params, bod, S(td.sym.nme)) - Define(FunDefn(td.owner, td.sym, paramLists, bodyBlock), - blockImpl(stats, res)(k)) - case syntax.Ins => - // Implicit instances are not parameterized for now. - assert(td.params.isEmpty) - subTerm(bod)(r => - Define(ValDefn(td.tsym, td.sym, r), - blockImpl(stats, res)(k))) - case syntax.LetBind | syntax.ParamBind | syntax.HandlerBind => fail: - ErrorReport( - msg"Unexpected declaration kind '${td.k.str}' in lowering" -> td.toLoc :: Nil, - source = Diagnostic.Source.Compilation) + val isStaged: Bool = td.extraAnnotations.exists: + case Annot.Modifier(syntax.Keyword.`staged`) => true + case _ => false + if isStaged then + stage(d)(k) + else + td.k match + case knd: syntax.Val => + assert(td.params.isEmpty) + subTerm_nonTail(bod)(r => + // Assign(td.sym, r, + // term(st.Blk(stats, res))(k))) + Define(ValDefn(td.tsym, td.sym, r), + blockImpl(stats, res)(k))) + case syntax.Fun => + val (paramLists, bodyBlock) = setupFunctionOrByNameDef(td.params, bod, S(td.sym.nme)) + Define(FunDefn(td.owner, td.sym, paramLists, bodyBlock), + blockImpl(stats, res)(k)) + case syntax.Ins => + // Implicit instances are not parameterized for now. + assert(td.params.isEmpty) + subTerm(bod)(r => + Define(ValDefn(td.tsym, td.sym, r), + blockImpl(stats, res)(k))) + case syntax.LetBind | syntax.ParamBind | syntax.HandlerBind => fail: + ErrorReport( + msg"Unexpected declaration kind '${td.k.str}' in lowering" -> td.toLoc :: Nil, + source = Diagnostic.Source.Compilation) case cls: ClassLikeDef if cls.sym.defn.exists(_.hasDeclareModifier.isDefined) => // * Declarations have no lowering blockImpl(stats, res)(k) @@ -900,6 +906,8 @@ class Lowering()(using Config, TL, Raise, State, Ctx): source = Diagnostic.Source.Compilation ) + def stage(t: Declaration)(k: Result => Block)(using Subst): Block = ??? + def gatherMembers(clsBody: ObjBody)(using Subst) : (Ls[FunDefn], Ls[BlockMemberSymbol -> TermSymbol], Ls[TermSymbol], Block) = val mtds = clsBody.methods @@ -1053,6 +1061,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): def reportAnnotations(target: Statement, annotations: Ls[Annot]): Unit = annotations.foreach: case Annot.Untyped => () + case Annot.Modifier(syntax.Keyword("staged")) => () case annot => raise: WarningReport(msg"This annotation has no effect." -> annot.toLoc :: Nil) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index 3e59ea626a..c96b7829d8 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -20,6 +20,7 @@ abstract class MLsDiffMaker extends DiffMaker: val predefFile: os.Path // * Contains MLscript standard library definitions val runtimeFile: os.Path = predefFile/os.up/"Runtime.mjs" // * Contains MLscript runtime definitions val termFile: os.Path = predefFile/os.up/"Term.mjs" // * Contains MLscript runtime term definitions + val blockFile: os.Path = predefFile/os.up/"Block.mjs" // * Contains MLscript runtime block definitions val wd = file / os.up @@ -63,6 +64,7 @@ abstract class MLsDiffMaker extends DiffMaker: val stackSafe = Command("stackSafe")(_.trim) val liftDefns = NullaryCommand("lift") val importQQ = NullaryCommand("qq") + val staging = NullaryCommand("staging") def mkConfig: Config = import Config.* @@ -150,6 +152,11 @@ abstract class MLsDiffMaker extends DiffMaker: given Config = mkConfig processTrees( PrefixApp(Keywrd(`import`), StrLit(termFile.toString)) :: Nil) + if staging.isSet then + given Config = mkConfig + processTrees( + PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) + super.init() From b072e4aba60f1bca8391fa5d4b8b23e33c1aca8b Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 30 Oct 2025 21:46:59 +0800 Subject: [PATCH 014/654] add block.mjs also in MLsCompiler --- .../src/main/scala/hkmc2/MLsCompiler.scala | 6 +- .../main/scala/hkmc2/codegen/Lowering.scala | 55 ++++++++----------- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala index 86eef96736..63ef6a6832 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala @@ -41,6 +41,7 @@ class MLsCompiler(preludeFile: os.Path, mkOutput: ((Str => Unit) => Unit) => Uni val runtimeFile: os.Path = preludeFile/os.up/os.up/os.up/"mlscript-compile"/"Runtime.mjs" val termFile: os.Path = preludeFile/os.up/os.up/os.up/"mlscript-compile"/"Term.mjs" + val blockFile: os.Path = preludeFile/os.up/os.up/os.up/"mlscript-compile"/"Block.mjs" val report = ReportFormatter: outputConsumer => @@ -85,7 +86,10 @@ class MLsCompiler(preludeFile: os.Path, mkOutput: ((Str => Unit) => Unit) => Uni val resolver = Resolver(rtl) resolver.traverseBlock(blk0)(using Resolver.ICtx.empty) val blk = new semantics.Term.Blk( - semantics.Import(State.runtimeSymbol, runtimeFile.toString) :: semantics.Import(State.termSymbol, termFile.toString) :: blk0.stats, + semantics.Import(State.runtimeSymbol, runtimeFile.toString, runtimeFile) + :: semantics.Import(State.termSymbol, termFile.toString, termFile) + :: semantics.Import(State.termSymbol, termFile.toString, blockFile) // TODO: always include this? + :: blk0.stats, blk0.res ) val low = ltl.givenIn: diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 8e24e7bad4..5afa6d7d7a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -168,34 +168,28 @@ class Lowering()(using Config, TL, Raise, State, Ctx): case N => // abstract declarations have no lowering blockImpl(stats, res)(k) case S(bod) => - val isStaged: Bool = td.extraAnnotations.exists: - case Annot.Modifier(syntax.Keyword.`staged`) => true - case _ => false - if isStaged then - stage(d)(k) - else - td.k match - case knd: syntax.Val => - assert(td.params.isEmpty) - subTerm_nonTail(bod)(r => - // Assign(td.sym, r, - // term(st.Blk(stats, res))(k))) - Define(ValDefn(td.tsym, td.sym, r), - blockImpl(stats, res)(k))) - case syntax.Fun => - val (paramLists, bodyBlock) = setupFunctionOrByNameDef(td.params, bod, S(td.sym.nme)) - Define(FunDefn(td.owner, td.sym, paramLists, bodyBlock), - blockImpl(stats, res)(k)) - case syntax.Ins => - // Implicit instances are not parameterized for now. - assert(td.params.isEmpty) - subTerm(bod)(r => - Define(ValDefn(td.tsym, td.sym, r), - blockImpl(stats, res)(k))) - case syntax.LetBind | syntax.ParamBind | syntax.HandlerBind => fail: - ErrorReport( - msg"Unexpected declaration kind '${td.k.str}' in lowering" -> td.toLoc :: Nil, - source = Diagnostic.Source.Compilation) + td.k match + case knd: syntax.Val => + assert(td.params.isEmpty) + subTerm_nonTail(bod)(r => + // Assign(td.sym, r, + // term(st.Blk(stats, res))(k))) + Define(ValDefn(td.tsym, td.sym, r), + blockImpl(stats, res)(k))) + case syntax.Fun => + val (paramLists, bodyBlock) = setupFunctionOrByNameDef(td.params, bod, S(td.sym.nme)) + Define(FunDefn(td.owner, td.sym, paramLists, bodyBlock), + blockImpl(stats, res)(k)) + case syntax.Ins => + // Implicit instances are not parameterized for now. + assert(td.params.isEmpty) + subTerm(bod)(r => + Define(ValDefn(td.tsym, td.sym, r), + blockImpl(stats, res)(k))) + case syntax.LetBind | syntax.ParamBind | syntax.HandlerBind => fail: + ErrorReport( + msg"Unexpected declaration kind '${td.k.str}' in lowering" -> td.toLoc :: Nil, + source = Diagnostic.Source.Compilation) case cls: ClassLikeDef if cls.sym.defn.exists(_.hasDeclareModifier.isDefined) => // * Declarations have no lowering blockImpl(stats, res)(k) @@ -906,8 +900,6 @@ class Lowering()(using Config, TL, Raise, State, Ctx): source = Diagnostic.Source.Compilation ) - def stage(t: Declaration)(k: Result => Block)(using Subst): Block = ??? - def gatherMembers(clsBody: ObjBody)(using Subst) : (Ls[FunDefn], Ls[BlockMemberSymbol -> TermSymbol], Ls[TermSymbol], Block) = val mtds = clsBody.methods @@ -1061,7 +1053,8 @@ class Lowering()(using Config, TL, Raise, State, Ctx): def reportAnnotations(target: Statement, annotations: Ls[Annot]): Unit = annotations.foreach: case Annot.Untyped => () - case Annot.Modifier(syntax.Keyword("staged")) => () + case annot @ Annot.Modifier(syntax.Keyword("staged")) => raise: + WarningReport(msg"staged annotation has no effect." -> annot.toLoc :: Nil) case annot => raise: WarningReport(msg"This annotation has no effect." -> annot.toLoc :: Nil) From 35106c08e5faf1726c141bacdf64251336c58723 Mon Sep 17 00:00:00 2001 From: TYeung Date: Fri, 31 Oct 2025 01:17:04 +0800 Subject: [PATCH 015/654] lower 'staged' annotations to Block and add display of 'staged' annotation during diff testing --- .../src/main/scala/hkmc2/codegen/Block.scala | 8 ++ .../main/scala/hkmc2/codegen/Lowering.scala | 8 +- .../main/scala/hkmc2/codegen/Printer.scala | 8 +- .../src/test/mlscript/staging/Syntax.mls | 94 ++++++++++++------- .../test/scala/hkmc2/JSBackendDiffMaker.scala | 2 +- 5 files changed, 81 insertions(+), 39 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala index c8b9ccd103..b622df8e5e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala @@ -340,6 +340,14 @@ final case class FunDefn( body: Block, ) extends Defn: val innerSym = N + var staged = false + + +object FunDefn: + def apply(owner: Opt[InnerSymbol], sym: BlockMemberSymbol, params: Ls[ParamList], body: Block, staged: Boolean): FunDefn = + var f = new FunDefn(owner, sym, params, body) + f.staged = staged + f final case class ValDefn( diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 5afa6d7d7a..b448598f6d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -163,6 +163,9 @@ class Lowering()(using Config, TL, Raise, State, Ctx): case (d: Declaration) :: stats => d match case td: TermDefinition => + val isStaged = td.extraAnnotations.exists: + case Annot.Modifier(syntax.Keyword.`staged`) => true + case _ => false reportAnnotations(td, td.extraAnnotations) td.body match case N => // abstract declarations have no lowering @@ -178,7 +181,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): blockImpl(stats, res)(k))) case syntax.Fun => val (paramLists, bodyBlock) = setupFunctionOrByNameDef(td.params, bod, S(td.sym.nme)) - Define(FunDefn(td.owner, td.sym, paramLists, bodyBlock), + Define(FunDefn(td.owner, td.sym, paramLists, bodyBlock, isStaged), blockImpl(stats, res)(k)) case syntax.Ins => // Implicit instances are not parameterized for now. @@ -1053,8 +1056,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): def reportAnnotations(target: Statement, annotations: Ls[Annot]): Unit = annotations.foreach: case Annot.Untyped => () - case annot @ Annot.Modifier(syntax.Keyword("staged")) => raise: - WarningReport(msg"staged annotation has no effect." -> annot.toLoc :: Nil) + case annot @ Annot.Modifier(syntax.Keyword("staged")) => () case annot => raise: WarningReport(msg"This annotation has no effect." -> annot.toLoc :: Nil) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index 20963e8629..86d47fd502 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -60,10 +60,12 @@ object Printer: case _ => TODO(blk) def mkDocument(defn: Defn)(using Raise, Scope): Document = defn match - case FunDefn(own, sym, params, body) => - val docParams = doc"${own.fold("")(_.toString+"::")}${params.map(_.params.map(x => summon[Scope].allocateName(x.sym)).mkString("(", ", ", ")")).mkString}" + case fd @ FunDefn(own, sym, params, body) => + val docParams = doc"${own.fold("")(_.toString+"::")}${params.map(_.params.map(x => summon[Scope].allocateName(x.sym)).mkDocument("(", ", ", ")")).mkDocument("")}" val docBody = mkDocument(body) - doc"fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" + // doc"fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" + val docInstr = if fd.staged then doc" staged" else doc"" + doc"fun ${sym.nme}${docParams}${docInstr} { #{ # ${docBody} #} # }" case ValDefn(tsym, sym, rhs) => doc"val ${tsym.nme} = ${mkDocument(rhs)}" case ClsLikeDefn(own, _, sym, k, paramsOpt, auxParams, parentSym, methods, diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index c0baf4c1b3..547488ebd0 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -7,22 +7,22 @@ module A with //│ Elab block List(TypeDef(Mod,InfixApp(Ident(A),keyword 'with',Block(List(TermDef(Fun,App(Ident(f),Tup(List(Ident[...] LocalScope(block:3) //│ | Processing module/object definition Ident(A) //│ | | Companion: None -//│ | | Elab block List(TermDef(Fun,App(Ident(f),Tup(List(Ident(x)))),Some(Ident(x)))) InnerScope(module:A‹537›) +//│ | | Elab block List(TermDef(Fun,App(Ident(f),Tup(List(Ident(x)))),Some(Ident(x)))) InnerScope(module:A‹592›) //│ | | | Processing term definition App(Ident(f),Tup(List(Ident(x)))) //│ | | | Elaborating ParamTree: ParamTree(‹›,Ident(x),None,None,Set()) //│ | | | Elab term Ident(x) //│ | | | | Elab subterm Ident(x) -//│ | | | | ~> Ref(x‹539›) -//│ | | | ~> Ref(x‹539›) -//│ | | ~> Blk(List(TermDefinition(Fun,member:f‹535›,module:A‹537›.f,List(ParamList(‹›,List(Param(‹›,x‹539›,None,Modulefulness(None))),None)),None,None,Some(Ref(x‹539›)),‹result of member:f‹535››‹541›,‹›,Modulefulness(None),List(),None)),Lit(UnitLit(false))) -//│ ~> Blk(List(ModuleOrObjectDef(None,module:A‹537›,member:A‹536›,List(),None,List(),None,Mod,{ fun member:f‹535›(x‹539›) = x‹539›#666; },None,List())),Lit(UnitLit(false))) +//│ | | | | ~> Ref(x‹594›) +//│ | | | ~> Ref(x‹594›) +//│ | | ~> Blk(List(TermDefinition(Fun,member:f‹590›,module:A‹592›.f,List(ParamList(‹›,List(Param(‹›,x‹594›,None,Modulefulness(None))),None)),None,None,Some(Ref(x‹594›)),‹result of member:f‹590››‹596›,‹›,Modulefulness(None),List(),None)),Lit(UnitLit(false))) +//│ ~> Blk(List(ModuleOrObjectDef(None,module:A‹592›,member:A‹591›,List(),None,List(),None,Mod,{ fun member:f‹590›(x‹594›) = x‹594›#666; },None,List())),Lit(UnitLit(false))) //│ Elaborated tree: //│ Blk: //│ stats = Ls of //│ ModuleOrObjectDef: //│ owner = N -//│ sym = module:A‹537› -//│ bsym = member:A‹536› +//│ sym = module:A‹592› +//│ bsym = member:A‹591› //│ tparams = Nil //│ paramsOpt = N //│ auxParams = Nil @@ -32,22 +32,22 @@ module A with //│ stats = Ls of //│ TermDefinition: //│ k = Fun -//│ sym = member:f‹535› -//│ tsym = module:A‹537›.f +//│ sym = member:f‹590› +//│ tsym = module:A‹592›.f //│ params = Ls of //│ ParamList: //│ flags = () //│ params = Ls of //│ Param: //│ flags = () -//│ sym = x‹539› +//│ sym = x‹594› //│ sign = N //│ modulefulness = Modulefulness of N //│ restParam = N //│ tparams = N //│ sign = N -//│ body = S of Ref{sym=x‹539›} of x‹539› -//│ resSym = ‹result of member:f‹535››‹541› +//│ body = S of Ref{sym=x‹594›} of x‹594› +//│ resSym = ‹result of member:f‹590››‹596› //│ flags = () //│ modulefulness = Modulefulness of N //│ annotations = Nil @@ -62,36 +62,36 @@ B.f(1) //│ Elab block List(Annotated(Keywrd(keyword 'staged'),TypeDef(Mod,InfixApp(Ident(B),keyword 'with',Block(List(Term[...] LocalScope(block:4) //│ | Processing module/object definition Ident(B) //│ | | Companion: None -//│ | | Elab block List(TermDef(Fun,App(Ident(f),Tup(List(Ident(x)))),Some(Ident(x)))) InnerScope(module:B‹545›) +//│ | | Elab block List(TermDef(Fun,App(Ident(f),Tup(List(Ident(x)))),Some(Ident(x)))) InnerScope(module:B‹600›) //│ | | | Processing term definition App(Ident(f),Tup(List(Ident(x)))) //│ | | | Elaborating ParamTree: ParamTree(‹›,Ident(x),None,None,Set()) //│ | | | Elab term Ident(x) //│ | | | | Elab subterm Ident(x) -//│ | | | | ~> Ref(x‹547›) -//│ | | | ~> Ref(x‹547›) -//│ | | ~> Blk(List(TermDefinition(Fun,member:f‹543›,module:B‹545›.f,List(ParamList(‹›,List(Param(‹›,x‹547›,None,Modulefulness(None))),None)),None,None,Some(Ref(x‹547›)),‹result of member:f‹543››‹549›,‹›,Modulefulness(None),List(),None)),Lit(UnitLit(false))) +//│ | | | | ~> Ref(x‹602›) +//│ | | | ~> Ref(x‹602›) +//│ | | ~> Blk(List(TermDefinition(Fun,member:f‹598›,module:B‹600›.f,List(ParamList(‹›,List(Param(‹›,x‹602›,None,Modulefulness(None))),None)),None,None,Some(Ref(x‹602›)),‹result of member:f‹598››‹604›,‹›,Modulefulness(None),List(),None)),Lit(UnitLit(false))) //│ | Elab term App(Sel(Ident(B),Ident(f)),Tup(List(IntLit(1)))) //│ | | Elab subterm App(Sel(Ident(B),Ident(f)),Tup(List(IntLit(1)))) //│ | | | Elab subterm Sel(Ident(B),Ident(f)) //│ | | | | Elab subterm Ident(B) -//│ | | | | ~> Ref(member:B‹544›) -//│ | | | ~> Sel(Ref(member:B‹544›),Ident(f)) +//│ | | | | ~> Ref(member:B‹599›) +//│ | | | ~> Sel(Ref(member:B‹599›),Ident(f)) //│ | | | Elab subterm Tup(List(IntLit(1))) //│ | | | | Elab term IntLit(1) //│ | | | | | Elab subterm IntLit(1) //│ | | | | | ~> Lit(IntLit(1)) //│ | | | | ~> Lit(IntLit(1)) //│ | | | ~> Tup(List(Fld(‹›,Lit(IntLit(1)),None))) -//│ | | ~> App(Sel(Ref(member:B‹544›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None)))) -//│ | ~> App(Sel(Ref(member:B‹544›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None)))) -//│ ~> Blk(List(ModuleOrObjectDef(None,module:B‹545›,member:B‹544›,List(),None,List(),None,Mod,{ fun member:f‹543›(x‹547›) = x‹547›#666; },None,List(Modifier(keyword 'staged')))),App(Sel(Ref(member:B‹544›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None))))) +//│ | | ~> App(Sel(Ref(member:B‹599›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None)))) +//│ | ~> App(Sel(Ref(member:B‹599›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None)))) +//│ ~> Blk(List(ModuleOrObjectDef(None,module:B‹600›,member:B‹599›,List(),None,List(),None,Mod,{ fun member:f‹598›(x‹602›) = x‹602›#666; },None,List(Modifier(keyword 'staged')))),App(Sel(Ref(member:B‹599›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None))))) //│ Elaborated tree: //│ Blk: //│ stats = Ls of //│ ModuleOrObjectDef: //│ owner = N -//│ sym = module:B‹545› -//│ bsym = member:B‹544› +//│ sym = module:B‹600› +//│ bsym = member:B‹599› //│ tparams = Nil //│ paramsOpt = N //│ auxParams = Nil @@ -101,22 +101,22 @@ B.f(1) //│ stats = Ls of //│ TermDefinition: //│ k = Fun -//│ sym = member:f‹543› -//│ tsym = module:B‹545›.f +//│ sym = member:f‹598› +//│ tsym = module:B‹600›.f //│ params = Ls of //│ ParamList: //│ flags = () //│ params = Ls of //│ Param: //│ flags = () -//│ sym = x‹547› +//│ sym = x‹602› //│ sign = N //│ modulefulness = Modulefulness of N //│ restParam = N //│ tparams = N //│ sign = N -//│ body = S of Ref{sym=x‹547›} of x‹547› -//│ resSym = ‹result of member:f‹543››‹549› +//│ body = S of Ref{sym=x‹602›} of x‹602› +//│ resSym = ‹result of member:f‹598››‹604› //│ flags = () //│ modulefulness = Modulefulness of N //│ annotations = Nil @@ -126,8 +126,8 @@ B.f(1) //│ annotations = Ls of //│ Modifier of keyword 'staged' //│ res = App: -//│ lhs = Sel{sym=member:f‹543›}: -//│ prefix = Ref{sym=member:B‹544›} of member:B‹544› +//│ lhs = Sel{sym=member:f‹598›}: +//│ prefix = Ref{sym=member:B‹599›} of member:B‹599› //│ nme = Ident of "f" //│ rhs = Tup of Ls of //│ Fld: @@ -142,7 +142,7 @@ staged object Foo //│ Elab block List(Annotated(Keywrd(keyword 'staged'),TypeDef(Obj,Ident(Foo),None))) LocalScope(block:5) //│ | Processing module/object definition Ident(Foo) //│ | | Companion: None -//│ ~> Blk(List(ModuleOrObjectDef(None,object:Foo‹553›,member:Foo‹552›,List(),None,List(),None,Obj,{ },None,List(Modifier(keyword 'staged')))),Lit(UnitLit(false))) +//│ ~> Blk(List(ModuleOrObjectDef(None,object:Foo‹608›,member:Foo‹607›,List(),None,List(),None,Obj,{ },None,List(Modifier(keyword 'staged')))),Lit(UnitLit(false))) :de :pe @@ -157,4 +157,34 @@ staged fun f() = 0 //│ | | Elab subterm IntLit(0) //│ | | ~> Lit(IntLit(0)) //│ | ~> Lit(IntLit(0)) -//│ ~> Blk(List(TermDefinition(Fun,member:f‹555›,.f,List(ParamList(‹›,List(),None)),None,None,Some(Lit(IntLit(0))),‹result of member:f‹555››‹557›,‹›,Modulefulness(None),List(Modifier(keyword 'staged')),None)),Lit(UnitLit(false))) +//│ ~> Blk(List(TermDefinition(Fun,member:f‹610›,.f,List(ParamList(‹›,List(),None)),None,None,Some(Lit(IntLit(0))),‹result of member:f‹610››‹612›,‹›,Modulefulness(None),List(Modifier(keyword 'staged')),None)),Lit(UnitLit(false))) + + +:js +:lot +:slot +staged fun f() = 0 +//│ FAILURE: Unexpected warning +//│ FAILURE LOCATION: reportAnnotations (Lowering.scala:1102) +//│ ═══[WARNING] staged annotation detected. +//│ Lowered: +//│ Program: +//│ imports = Nil +//│ main = Define: +//│ defn = FunDefn (staged=true): +//│ owner = N +//│ sym = member:f +//│ params = Ls of +//│ ParamList: +//│ flags = () +//│ params = Nil +//│ restParam = N +//│ body = Return: +//│ res = Lit of IntLit of 0 +//│ implct = false +//│ rest = Assign: \ +//│ lhs = $block$res +//│ rhs = Lit of UnitLit of false +//│ rest = End of "" +//│ Pretty Lowered: +//│ define fun f() staged { return 0 } in set block$res = undefined in end diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 1adcd726b3..6fd0ddc9c1 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -113,7 +113,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: ) if showLoweredTree.isSet then output(s"Lowered:") - output(le.showAsTree) + output(le.showAsTree(using { case fd : hkmc2.codegen.FunDefn => s"staged=${fd.staged}" case _ => ""})) // * We used to do this to avoid needlessly generating new variable names in separate blocks: // val nestedScp = baseScp.nest From 4efccdfb153b1bc97829e1771a5ab4901f92c045 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 20:36:15 +0800 Subject: [PATCH 016/654] amend! Add Block.mls into DiffMaker and prepare the function for lowering Add Block.mls into DiffMaker and prepare the function for lowering Use older Import syntax for now --- hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala index 63ef6a6832..886bcc66d0 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala @@ -86,9 +86,9 @@ class MLsCompiler(preludeFile: os.Path, mkOutput: ((Str => Unit) => Unit) => Uni val resolver = Resolver(rtl) resolver.traverseBlock(blk0)(using Resolver.ICtx.empty) val blk = new semantics.Term.Blk( - semantics.Import(State.runtimeSymbol, runtimeFile.toString, runtimeFile) - :: semantics.Import(State.termSymbol, termFile.toString, termFile) - :: semantics.Import(State.termSymbol, termFile.toString, blockFile) // TODO: always include this? + semantics.Import(State.runtimeSymbol, runtimeFile.toString) + :: semantics.Import(State.termSymbol, termFile.toString) + :: semantics.Import(State.termSymbol, termFile.toString) // TODO: always include this? :: blk0.stats, blk0.res ) From f9ad6120ba6263447d47e4cfc5d67cabc5b9aee5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 20:50:01 +0800 Subject: [PATCH 017/654] clean up Syntax.mls --- .../src/test/mlscript/staging/Syntax.mls | 208 +++++------------- 1 file changed, 53 insertions(+), 155 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index 547488ebd0..f965622a29 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -1,172 +1,70 @@ -import "./../../mlscript-compile/Predef.mjs" -:de -:elt -module A with +:pt +staged module A with fun f(x) = x -//│ Elab block List(TypeDef(Mod,InfixApp(Ident(A),keyword 'with',Block(List(TermDef(Fun,App(Ident(f),Tup(List(Ident[...] LocalScope(block:3) -//│ | Processing module/object definition Ident(A) -//│ | | Companion: None -//│ | | Elab block List(TermDef(Fun,App(Ident(f),Tup(List(Ident(x)))),Some(Ident(x)))) InnerScope(module:A‹592›) -//│ | | | Processing term definition App(Ident(f),Tup(List(Ident(x)))) -//│ | | | Elaborating ParamTree: ParamTree(‹›,Ident(x),None,None,Set()) -//│ | | | Elab term Ident(x) -//│ | | | | Elab subterm Ident(x) -//│ | | | | ~> Ref(x‹594›) -//│ | | | ~> Ref(x‹594›) -//│ | | ~> Blk(List(TermDefinition(Fun,member:f‹590›,module:A‹592›.f,List(ParamList(‹›,List(Param(‹›,x‹594›,None,Modulefulness(None))),None)),None,None,Some(Ref(x‹594›)),‹result of member:f‹590››‹596›,‹›,Modulefulness(None),List(),None)),Lit(UnitLit(false))) -//│ ~> Blk(List(ModuleOrObjectDef(None,module:A‹592›,member:A‹591›,List(),None,List(),None,Mod,{ fun member:f‹590›(x‹594›) = x‹594›#666; },None,List())),Lit(UnitLit(false))) -//│ Elaborated tree: -//│ Blk: -//│ stats = Ls of -//│ ModuleOrObjectDef: -//│ owner = N -//│ sym = module:A‹592› -//│ bsym = member:A‹591› -//│ tparams = Nil -//│ paramsOpt = N -//│ auxParams = Nil -//│ ext = N -//│ kind = Mod -//│ body = ObjBody of Blk: -//│ stats = Ls of -//│ TermDefinition: -//│ k = Fun -//│ sym = member:f‹590› -//│ tsym = module:A‹592›.f -//│ params = Ls of -//│ ParamList: -//│ flags = () -//│ params = Ls of -//│ Param: -//│ flags = () -//│ sym = x‹594› -//│ sign = N -//│ modulefulness = Modulefulness of N -//│ restParam = N -//│ tparams = N -//│ sign = N -//│ body = S of Ref{sym=x‹594›} of x‹594› -//│ resSym = ‹result of member:f‹590››‹596› -//│ flags = () -//│ modulefulness = Modulefulness of N -//│ annotations = Nil -//│ companion = N -//│ res = Lit of UnitLit of false -//│ companion = N -//│ annotations = Nil -//│ res = Lit of UnitLit of false -staged module B with - fun f(x) = x -B.f(1) -//│ Elab block List(Annotated(Keywrd(keyword 'staged'),TypeDef(Mod,InfixApp(Ident(B),keyword 'with',Block(List(Term[...] LocalScope(block:4) -//│ | Processing module/object definition Ident(B) -//│ | | Companion: None -//│ | | Elab block List(TermDef(Fun,App(Ident(f),Tup(List(Ident(x)))),Some(Ident(x)))) InnerScope(module:B‹600›) -//│ | | | Processing term definition App(Ident(f),Tup(List(Ident(x)))) -//│ | | | Elaborating ParamTree: ParamTree(‹›,Ident(x),None,None,Set()) -//│ | | | Elab term Ident(x) -//│ | | | | Elab subterm Ident(x) -//│ | | | | ~> Ref(x‹602›) -//│ | | | ~> Ref(x‹602›) -//│ | | ~> Blk(List(TermDefinition(Fun,member:f‹598›,module:B‹600›.f,List(ParamList(‹›,List(Param(‹›,x‹602›,None,Modulefulness(None))),None)),None,None,Some(Ref(x‹602›)),‹result of member:f‹598››‹604›,‹›,Modulefulness(None),List(),None)),Lit(UnitLit(false))) -//│ | Elab term App(Sel(Ident(B),Ident(f)),Tup(List(IntLit(1)))) -//│ | | Elab subterm App(Sel(Ident(B),Ident(f)),Tup(List(IntLit(1)))) -//│ | | | Elab subterm Sel(Ident(B),Ident(f)) -//│ | | | | Elab subterm Ident(B) -//│ | | | | ~> Ref(member:B‹599›) -//│ | | | ~> Sel(Ref(member:B‹599›),Ident(f)) -//│ | | | Elab subterm Tup(List(IntLit(1))) -//│ | | | | Elab term IntLit(1) -//│ | | | | | Elab subterm IntLit(1) -//│ | | | | | ~> Lit(IntLit(1)) -//│ | | | | ~> Lit(IntLit(1)) -//│ | | | ~> Tup(List(Fld(‹›,Lit(IntLit(1)),None))) -//│ | | ~> App(Sel(Ref(member:B‹599›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None)))) -//│ | ~> App(Sel(Ref(member:B‹599›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None)))) -//│ ~> Blk(List(ModuleOrObjectDef(None,module:B‹600›,member:B‹599›,List(),None,List(),None,Mod,{ fun member:f‹598›(x‹602›) = x‹602›#666; },None,List(Modifier(keyword 'staged')))),App(Sel(Ref(member:B‹599›),Ident(f)),Tup(List(Fld(‹›,Lit(IntLit(1)),None))))) -//│ Elaborated tree: -//│ Blk: -//│ stats = Ls of -//│ ModuleOrObjectDef: -//│ owner = N -//│ sym = module:B‹600› -//│ bsym = member:B‹599› -//│ tparams = Nil -//│ paramsOpt = N -//│ auxParams = Nil -//│ ext = N -//│ kind = Mod -//│ body = ObjBody of Blk: -//│ stats = Ls of -//│ TermDefinition: -//│ k = Fun -//│ sym = member:f‹598› -//│ tsym = module:B‹600›.f -//│ params = Ls of -//│ ParamList: -//│ flags = () -//│ params = Ls of -//│ Param: -//│ flags = () -//│ sym = x‹602› -//│ sign = N -//│ modulefulness = Modulefulness of N -//│ restParam = N -//│ tparams = N -//│ sign = N -//│ body = S of Ref{sym=x‹602›} of x‹602› -//│ resSym = ‹result of member:f‹598››‹604› -//│ flags = () -//│ modulefulness = Modulefulness of N -//│ annotations = Nil -//│ companion = N -//│ res = Lit of UnitLit of false -//│ companion = N -//│ annotations = Ls of -//│ Modifier of keyword 'staged' -//│ res = App: -//│ lhs = Sel{sym=member:f‹598›}: -//│ prefix = Ref{sym=member:B‹599›} of member:B‹599› -//│ nme = Ident of "f" -//│ rhs = Tup of Ls of -//│ Fld: -//│ flags = () -//│ term = Lit of IntLit of 1 -//│ asc = N +A.f(1) +//│ Parsed tree: +//│ Modified: +//│ modifier = Keywrd of keyword 'staged' +//│ body = TypeDef: +//│ k = Mod +//│ head = InfixApp: +//│ lhs = Ident of "A" +//│ kw = keyword 'with' +//│ rhs = Block of Ls of +//│ TermDef: +//│ k = Fun +//│ head = App: +//│ lhs = Ident of "f" +//│ rhs = Tup of Ls of +//│ Ident of "x" +//│ rhs = S of Ident of "x" +//│ rhs = N +//│ App: +//│ lhs = Sel: +//│ prefix = Ident of "A" +//│ name = Ident of "f" +//│ rhs = Tup of Ls of +//│ IntLit of 1 // should reject these annotations -:de -// :pe +:pt staged object Foo -//│ Elab block List(Annotated(Keywrd(keyword 'staged'),TypeDef(Obj,Ident(Foo),None))) LocalScope(block:5) -//│ | Processing module/object definition Ident(Foo) -//│ | | Companion: None -//│ ~> Blk(List(ModuleOrObjectDef(None,object:Foo‹608›,member:Foo‹607›,List(),None,List(),None,Obj,{ },None,List(Modifier(keyword 'staged')))),Lit(UnitLit(false))) +//│ Parsed tree: +//│ Modified: +//│ modifier = Keywrd of keyword 'staged' +//│ body = TypeDef: +//│ k = Obj +//│ head = Ident of "Foo" +//│ rhs = N -:de -:pe -// staged class Foo +:pt +staged class Foo +//│ Parsed tree: +//│ Modified: +//│ modifier = Keywrd of keyword 'staged' +//│ body = TypeDef: +//│ k = Cls +//│ head = Ident of "Foo" +//│ rhs = N -:de -// :pe +:pt staged fun f() = 0 -//│ Elab block List(Annotated(Keywrd(keyword 'staged'),TermDef(Fun,App(Ident(f),Tup(List())),Some(IntLit(0))))) LocalScope(block:6) -//│ | Processing term definition App(Ident(f),Tup(List())) -//│ | Elab term IntLit(0) -//│ | | Elab subterm IntLit(0) -//│ | | ~> Lit(IntLit(0)) -//│ | ~> Lit(IntLit(0)) -//│ ~> Blk(List(TermDefinition(Fun,member:f‹610›,.f,List(ParamList(‹›,List(),None)),None,None,Some(Lit(IntLit(0))),‹result of member:f‹610››‹612›,‹›,Modulefulness(None),List(Modifier(keyword 'staged')),None)),Lit(UnitLit(false))) +//│ Parsed tree: +//│ Modified: +//│ modifier = Keywrd of keyword 'staged' +//│ body = TermDef: +//│ k = Fun +//│ head = App: +//│ lhs = Ident of "f" +//│ rhs = Tup of Nil +//│ rhs = S of IntLit of 0 :js :lot :slot staged fun f() = 0 -//│ FAILURE: Unexpected warning -//│ FAILURE LOCATION: reportAnnotations (Lowering.scala:1102) -//│ ═══[WARNING] staged annotation detected. //│ Lowered: //│ Program: //│ imports = Nil From f763b03b107f91b335de2b6b553e2717a7cee0c2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 20:59:25 +0800 Subject: [PATCH 018/654] fiddle with printing staged keyword in FunDefn --- hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala | 5 ++--- hkmc2/shared/src/test/mlscript/staging/Syntax.mls | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index 86d47fd502..ebfbeb3201 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -63,9 +63,8 @@ object Printer: case fd @ FunDefn(own, sym, params, body) => val docParams = doc"${own.fold("")(_.toString+"::")}${params.map(_.params.map(x => summon[Scope].allocateName(x.sym)).mkDocument("(", ", ", ")")).mkDocument("")}" val docBody = mkDocument(body) - // doc"fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" - val docInstr = if fd.staged then doc" staged" else doc"" - doc"fun ${sym.nme}${docParams}${docInstr} { #{ # ${docBody} #} # }" + val docInstr = if fd.staged then doc"staged " else doc"" + doc"${docInstr}fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" case ValDefn(tsym, sym, rhs) => doc"val ${tsym.nme} = ${mkDocument(rhs)}" case ClsLikeDefn(own, _, sym, k, paramsOpt, auxParams, parentSym, methods, diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index f965622a29..c24dfc0a3a 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -27,7 +27,7 @@ A.f(1) //│ rhs = Tup of Ls of //│ IntLit of 1 -// should reject these annotations +// TODO: reject these annotations :pt staged object Foo //│ Parsed tree: @@ -60,7 +60,6 @@ staged fun f() = 0 //│ rhs = Tup of Nil //│ rhs = S of IntLit of 0 - :js :lot :slot @@ -85,4 +84,4 @@ staged fun f() = 0 //│ rhs = Lit of UnitLit of false //│ rest = End of "" //│ Pretty Lowered: -//│ define fun f() staged { return 0 } in set block$res = undefined in end +//│ define staged fun f() { return 0 } in set block$res = undefined in end From 85f86c3a5fa8f94186025fc83a5d2596a3ec198f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 21:12:58 +0800 Subject: [PATCH 019/654] revert whitespace --- hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala | 2 +- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index facf91b308..8bd6975e1d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -1335,7 +1335,7 @@ extends Importer: ctx.withMembers(members).givenIn: go(blk.desugStmts, Nil, Nil) - + def mkBlk(acc: Ls[Statement], res: Opt[Term], hasResult: Bool): Blk | Rcd = // TODO forbid certain kinds of terms in records diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index c96b7829d8..6c292f2534 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -156,7 +156,6 @@ abstract class MLsDiffMaker extends DiffMaker: given Config = mkConfig processTrees( PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) - super.init() From a39765e30068f17d1b7da61ed5498d991bc46efe Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 21:21:38 +0800 Subject: [PATCH 020/654] revert change to printing --- hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index ebfbeb3201..f6375b22d9 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -61,7 +61,7 @@ object Printer: def mkDocument(defn: Defn)(using Raise, Scope): Document = defn match case fd @ FunDefn(own, sym, params, body) => - val docParams = doc"${own.fold("")(_.toString+"::")}${params.map(_.params.map(x => summon[Scope].allocateName(x.sym)).mkDocument("(", ", ", ")")).mkDocument("")}" + val docParams = doc"${own.fold("")(_.toString+"::")}${params.map(_.params.map(x => summon[Scope].allocateName(x.sym)).mkString("(", ", ", ")")).mkString("")}" val docBody = mkDocument(body) val docInstr = if fd.staged then doc"staged " else doc"" doc"${docInstr}fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" From ee681c900a3662cf758394ffac7bba5f0dab14f2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 21:22:07 +0800 Subject: [PATCH 021/654] move isStaged inside Fun --- hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index b448598f6d..f244436184 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -163,9 +163,6 @@ class Lowering()(using Config, TL, Raise, State, Ctx): case (d: Declaration) :: stats => d match case td: TermDefinition => - val isStaged = td.extraAnnotations.exists: - case Annot.Modifier(syntax.Keyword.`staged`) => true - case _ => false reportAnnotations(td, td.extraAnnotations) td.body match case N => // abstract declarations have no lowering @@ -181,6 +178,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): blockImpl(stats, res)(k))) case syntax.Fun => val (paramLists, bodyBlock) = setupFunctionOrByNameDef(td.params, bod, S(td.sym.nme)) + val isStaged = td.extraAnnotations.contains(Annot.Modifier(syntax.Keyword.`staged`)) Define(FunDefn(td.owner, td.sym, paramLists, bodyBlock, isStaged), blockImpl(stats, res)(k)) case syntax.Ins => From f77c44c88b1ea4b91bc65bf430e419abed829210 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 21:32:35 +0800 Subject: [PATCH 022/654] more formatting fixes --- hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index f244436184..5b2109f482 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -1054,7 +1054,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): def reportAnnotations(target: Statement, annotations: Ls[Annot]): Unit = annotations.foreach: case Annot.Untyped => () - case annot @ Annot.Modifier(syntax.Keyword("staged")) => () + case Annot.Modifier(syntax.Keyword("staged")) => () case annot => raise: WarningReport(msg"This annotation has no effect." -> annot.toLoc :: Nil) From 9c4c754fd1dd59445cb975688bd8d09882addfa6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 21:49:50 +0800 Subject: [PATCH 023/654] add new symbols to Elaborator --- hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 6c06363a31..74b5da556b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -233,6 +233,8 @@ object Elaborator: val definitionMetadataSymbol = TempSymbol(N, "definitionMetadata") val prettyPrintSymbol = TempSymbol(N, "prettyPrint") val termSymbol = TempSymbol(N, "Term") + val blockSymbol = TempSymbol(N, "Block") + val shapeSymbol = TempSymbol(N, "Shape") val wasmSymbol = TempSymbol(N, "wasm") val effectSigSymbol = ClassSymbol(DummyTypeDef(syntax.Cls), Ident("EffectSig")) val nonLocalRetHandlerTrm = From 4e5b28132d3cd6b4334d7ced2bc3129217e1eb19 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 21:56:11 +0800 Subject: [PATCH 024/654] remove Shape and Pattern --- .../scala/hkmc2/codegen/Instrumentation.scala | 41 ------------------- 1 file changed, 41 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f3b1dd29dd..add43a22a1 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -8,47 +8,6 @@ import semantics.Elaborator.State import syntax.{Literal, Tree} -enum Shape: - case Dyn - case Lit(l: Literal) - case Arr(length: Int, shapes: Ls[Shape]) - case Class(c: Symbol, shapes: Ls[Shape]) - case Unit - -import Shape.{Dyn, Lit => SLit, Arr => SArr, Class => SClass, Unit} - -// TODO: use FlatPattern instead? -enum Pattern: - case Lit(l: Literal) - case Class(c: Symbol) - case Arr(len: Int) - case Wildcard - -import Pattern.{Lit => PLit, Class => PClass, Arr => PArr, Wildcard} - -def isPrimitiveTypeOf(c: Symbol, l: SLit) = ??? - -def mrg2(s1: Shape, s2: Shape): Shape = (s1, s2) match - case (s1, s2) if s1 == s2 => s1 - case (l: SLit, s@SClass(c, _)) if isPrimitiveTypeOf(c, l) => s - case (SClass(c1, s1), SClass(c2, s2)) if c1 == c2 => - SClass(c1, s1 zip s2 map mrg2) - case (SArr(l1, s1), SArr(l2, s2)) if l1 == l2 => - SArr(l1, s1 zip s2 map mrg2) - case _ => Dyn - -def mrg(shapes: Ls[Shape]): Shape = - shapes.reduceRight(mrg2) - -def canMatch(s: Shape, p: Pattern): Opt[Bool] = (s, p) match - case (_, Wildcard) => Some(true) - case (SLit(l1), PLit(l2)) if l1 == l2 => S(true) - case (l: SLit, PClass(c)) if isPrimitiveTypeOf(c, l) => S(true) - case (SClass(c1, _), PClass(c2)) if c1 == c2 => S(true) - case (SArr(n1, s), PArr(n2)) if n1 == n2 => S(true) - case (Dyn, _) => None - case _ => Some(false) - type BlockRet = (Block => Block, Shape, Value) class Instrumentation(using State): // use TempSymbol? From d3aa471f517d85995eb449db055472c18d5c3045 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 22:13:47 +0800 Subject: [PATCH 025/654] rework function signatures --- .../scala/hkmc2/codegen/Instrumentation.scala | 148 ++++-------------- 1 file changed, 33 insertions(+), 115 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index add43a22a1..4dbb4320a1 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -8,169 +8,87 @@ import semantics.Elaborator.State import syntax.{Literal, Tree} -type BlockRet = (Block => Block, Shape, Value) class Instrumentation(using State): - // use TempSymbol? - lazy val block = new BlockMemberSymbol("Block", Nil) - lazy val shape = new BlockMemberSymbol("Shape", Nil) - - def toArg(x: Path | Local): Arg = + def toArg(x: Path | Symbol): Arg = x match case p: Path => Arg(N, p) - case l: Local => Arg(N, Value.Ref(l)) + case l: Symbol => Arg(N, l.asPath) // null and undefined are missing - def toValue(lit: Str | BigInt | BigDecimal | Bool): Value = + def toValue(lit: Str | Int | BigDecimal | Bool): Value = val l = lit match - case i: BigInt => Tree.IntLit(i) + case i: Int => Tree.IntLit(i) case b: Bool => Tree.BoolLit(b) case s: Str => Tree.StrLit(s) case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) - // continuation-passing style allows symbols defined in current function to be referenced later - - def assign(res: Result)(k: Local => BlockRet): BlockRet = - val tmp = new TempSymbol(N, "tmp") - val (rest, shape, value) = k(tmp) - (b => Assign(tmp, res, rest(b)), shape, value) - def assign2(res: Result)(k: Local => Block): Block = - val tmp = new TempSymbol(N, "tmp") - Assign(tmp, res, k(tmp)) + def end(l: Path): Block = Return(l, false) + def assign(res: Result, name: String = "tmp")(k: Path => Block): Block = + val tmp = new TempSymbol(N, name) + Assign(tmp, res, k(tmp.asPath)) // helper for staging the constructors in Block.scala to Block.mls - // automatically convert Ls[Path] into Ls[Arg]? - def stagedBlock(nme: String, args: Ls[Path | Local])(k: Local => BlockRet): BlockRet = - val s = Select(Value.Ref(block), Tree.Ident(nme))(N) - val res = args match - case Nil => s - case h :: t => Call(s, args.map(toArg))(false, false) - assign(res)(k) - def stagedBlock2(nme: String, args: Ls[Path | Local])(k: Local => Block): Block = - val s = Select(Value.Ref(block), Tree.Ident(nme))(N) - val res = args match - case Nil => s - case h :: t => Call(s, args.map(toArg))(false, false) - assign2(res)(k) - def stagedShape(nme: String, args: Ls[Arg])(k: Local => BlockRet): BlockRet = - val s = Select(Value.Ref(shape), Tree.Ident(nme))(N) - val res = args match - case Nil => s - case h :: t => Call(s, args)(false, false) - assign(res)(k) + + def stagedBlock(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = + val s = summon[State].blockSymbol.asPath.selSN(nme) + assign(Instantiate(false, s, args.map(toArg)))(k) + def stagedShape(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = + val s = summon[State].shapeSymbol.asPath.selSN(nme) + assign(Instantiate(false, s, args.map(toArg)))(k) // helpers for staging constructors in Block.mls - def stagedSymbol(nme: String)(k: Local => BlockRet): BlockRet = + def stagedSymbol(nme: String)(k: Path => Block): Block = stagedBlock("Symbol", Ls(toValue(nme)))(k) - def stagedIdent(nme: String)(k: Local => BlockRet): BlockRet = + def stagedIdent(nme: String)(k: Path => Block): Block = stagedBlock("Ident", Ls(toValue(nme)))(k) - def stagedRef(l: Symbol)(k: Local => BlockRet): BlockRet = + def stagedRef(l: Symbol)(k: Path => Block): Block = stagedSymbol(l.nme): l => stagedBlock("ValueRef", Ls(l))(k) // note that this is for Block.ValueLit, not Shape.Lit - def stagedBLit(l: Literal)(k: Local => BlockRet): BlockRet = + def stagedBLit(l: Literal)(k: Path => Block): Block = stagedBlock("ValueLit", Ls(Value.Lit(l)))(k) - def stagedSelect(qual: Path, name: Str)(k: Local => BlockRet): BlockRet = + def stagedSelect(qual: Path, name: Str)(k: Path => Block): Block = stagedPath(qual): p => stagedIdent(name): i => stagedBlock("Select", Ls(p, i))(k) - def stagedDynSelect(qual: Path, fld: Path, arrayIdx: Bool)(k: Local => BlockRet): BlockRet = + def stagedDynSelect(qual: Path, fld: Path, arrayIdx: Bool)(k: Path => Block): Block = stagedPath(qual): q => stagedPath(fld): f => stagedBlock("DynSelect", Ls(q, f, toValue(arrayIdx)))(k) - def stagedPath(p: Path)(k: Local => BlockRet): BlockRet = p match + def stagedPath(p: Path)(k: Path => Block): Block = p match case Select(qual, tree) => stagedSelect(qual, tree.name)(k) case DynSelect(qual, fld, arrayIdx) => stagedDynSelect(qual, fld, arrayIdx)(k) case Value.Ref(l) => stagedRef(l)(k) case Value.Lit(lit) => stagedBLit(lit)(k) case _ => ??? - def stagedTuple(mut: Bool, elems: Ls[Arg])(k: Local => BlockRet): BlockRet = + def stagedTuple(elems: Ls[Symbol | Path])(k: Path => Block): Block = // TODO: staging array - stagedBlock("Tuple", Ls(toValue(mut), ???))(k) + stagedBlock("Tuple", Ls(toValue(false), ???))(k) // helpers to create and access the components of a staged value - def returnStagedValue(shape: Local, value: Local): Block = - stagedBlock2("Tuple", Ls(shape, value)): z => - stagedBlock2("Return", Ls(z, toValue(false))): _ => - End() - def getShape(l: Local)(k: Local => BlockRet): BlockRet = - stagedSelect(Value.Ref(l), "0")(k) - def getBlock(l: Local)(k: Local => BlockRet): BlockRet = - stagedSelect(Value.Ref(l), "1")(k) - - // functions that perform the instrumentation - - def ruleLit(l: Literal): BlockRet = - (id, SLit(l), Value.Lit(l)) - - def ruleVar(x: (Shape, Value.Ref)): BlockRet = - stagedBlock("ValueRef", Ls(x._2)): block => - (id, x._1, Value.Ref(block)) - - def ruleArr(ps: Ls[Path]): BlockRet = - // ps match - // case head :: next => next.foldRight(stagedPath(head)(b))() - // case Nil => (id, ) - - val (bs, ss, vs) = ps.map(stagedPath).unzip3 - (b => bs.foldRight(b)(_(_)), SArr(ps.length, ss), ???) + def returnStagedValue(shape: Path, value: Path)(k: Path => Block): Block = + assign(Tuple(true, Ls(shape, value).map(toArg)))(k) + def getShape(l: Symbol)(k: Path => Block): Block = + assign(DynSelect(Value.Ref(l), toValue(0), false))(k) + def getBlock(l: Symbol)(k: Path => Block): Block = + assign(DynSelect(Value.Ref(l), toValue(1), false))(k) - def ruleReturn(r: Return): BlockRet = - val (b, s, v) = stagedResult(r.res) - stagedBlock("Return", Ls(v, toValue(r.implct))): ret => - (b, s, Value.Ref(ret)) - - def ruleInst(i: Instantiate): BlockRet = - val Instantiate(mut, cls, args) = i - assert(!mut) - // args.reduceRightOption[BlockRet]((arg, x) => - // val (b, ss, vs) = x - // ??? - // ).getOrElse(???) - val (bs, ss, vs) = args.map(stagedArg).unzip3 - // turn path to symbol somehow - val sym: Symbol = ??? - val s = SClass(???, ss) - stagedSelect(cls, "class"): sel => - stagedBlock("Tuple", Ls(toValue(false), ???)): _ => - ??? - // stagedBlock("Instantiate", Ls(toValue(false), sym, ???).map(toArg)): inst => - // ??? - - def ruleEnd(): BlockRet = - stagedBlock("End", Ls()): end => - (id, Unit, Value.Ref(end)) - // todo functions that fills out the holes in the functions above - def stagedResult(res: Result): BlockRet = res match + def stagedResult(res: Result)(k: Block => Block): Block = res match case Call(fun, args) => ??? - case res: Instantiate => ruleInst(res) + case res: Instantiate => ??? case Lambda(params, body) => ??? case Tuple(mut, elems) => ??? case Record(mut, elems) => ??? - case Select(qual, name) => ??? - case DynSelect(qual, fld, arrayIdx) => ??? - case Value.Ref(l) => ??? - case Value.Lit(lit) => ??? - case _ => ??? - - def stagedPath(p: Path): BlockRet = p match - case Select(qual, name) => ??? - case DynSelect(qual, fld, arrayIdx) => ??? - case Value.Ref(l) => ??? - case Value.Lit(lit) => ??? - case _ => ??? - - def stagedArg(a: Arg): BlockRet = ??? - + case p: Path => stagedPath(p) - \ No newline at end of file From b251526e18c37ccb79678c358ca3135a96f2a368 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 22:32:36 +0800 Subject: [PATCH 026/654] clean up Block.mls --- .../scala/hkmc2/codegen/Instrumentation.scala | 2 +- .../src/test/mlscript-compile/Block.mls | 34 +++---------------- 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 4dbb4320a1..13811e9211 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -72,7 +72,7 @@ class Instrumentation(using State): def stagedTuple(elems: Ls[Symbol | Path])(k: Path => Block): Block = // TODO: staging array - stagedBlock("Tuple", Ls(toValue(false), ???))(k) + stagedBlock("Tuple", Ls(???))(k) // helpers to create and access the components of a staged value def returnStagedValue(shape: Path, value: Path)(k: Path => Block): Block = diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 57b674e27e..5e5eedcc87 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -9,29 +9,24 @@ module Block with... type Opt[A] = Option[A] -// dependancies referenced in Block classes +// dependancies referenced in Block classes, referencing implementation in Term.mls -// copying Tree.Ident => Str in Term.mls class Ident(val name: Str) // translation of Tree.Ident class Symbol(val name: Str) -class VarSymbol(val id: Ident) type Literal = null | undefined | Str | Int | Num | Bool class Arg(val spread: Opt[Bool], val value: Path) -// class ClsLikeKind(val desc: Str) -// copying ParamList => Array[Symbol] in Term.mls type ParamList = Array[Symbol] -// Defined Classes for Block +// Classes defined in Block.scala class Path with constructor - Select(val qual: Path, val name: Ident)(symcol: Opt[Symbol]) // extra term unnecessary? + Select(val qual: Path, val name: Ident) DynSelect(val qual: Path, val fld: Path, arrayIdx: Bool) ValueRef(val l: Symbol) ValueLit(val lit: Literal) - // TODO Tup class Case with constructor @@ -44,49 +39,30 @@ class Result with constructor TrivialResult(val path: Path) // only Path extends TrivialResult Call(val _fun: Path, val args: Array[Arg])(isMlsFun: Bool, mayRaiseEffects: Bool) - Instantiate(val _mut: Bool, val cls: Path, val args: Array[Arg]) // may assume immutable - Tuple(val _mut: Bool, val elems: Array[Arg]) // may assume immutable + Instantiate(val cls: Path, val args: Array[Arg]) // assume immutable + Tuple(val elems: Array[Arg]) // assume immutable -// moved owner and innerSym into the argument to comply with `constructor` syntax class Defn with constructor ValDefn( - // val tsym: Symbol, val sym: Symbol, val rhs: Path, - // val innerSym: Symbol = Some(tsym), - // val owner: Opt[Symbol] = tsym.owner, ) ClsLikeDefn( - // val owner: Opt[Symbol], - // val isym: Symbol, val sym: Symbol, - // val k: ClsLikeKind, val paramsOpt: Opt[ParamList], - // val auxParams: Array[ParamList], - // val parentPath: Opt[Path], - // val methods: Array[FunDefn], - // val privateFields: Array[Symbol], - // val publicFields: Array[Symbol -> Symbol], - // val preCtor: Block, - // val ctor: Block, val companion: Opt[ClsLikeBody], - // val innerSym: Symbol = Some(isym), ) FunDefn( - // val owner: Opt[Symbol], val sym: Symbol, val params: Array[ParamList], val body: Block, - // val innerSym: Symbol = None, ) class ClsLikeBody( val isym: Symbol, val methods: Array[FunDefn], - // val privateFields: Array[Symbol], val publicFields: Array[Symbol -> Symbol], - // val ctor: Block, ) class Block with From 84730bf90fb6e427e0471b7b68673d04901ac458 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 31 Oct 2025 23:31:52 +0800 Subject: [PATCH 027/654] add Shape.mls --- .../src/test/mlscript-compile/Shape.mls | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 hkmc2/shared/src/test/mlscript-compile/Shape.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls new file mode 100644 index 0000000000..058ec92344 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -0,0 +1,90 @@ +import "./Predef.mls" +import "./Option.mls" + +open Predef +open Option + +type Literal = null | undefined | Str | Int | Num | Bool +type Opt[A] = Option[A] + +module Shape with... + +class Shape with + constructor + Dyn + Lit(val l: Literal) + Arr(val length: Int, val shapes: Array[Shape]) + // TODO: change sym to accept multiple possible class symbols + Class(val sym: Symbol, val shapes: Array[Shape]) + Unit + +fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = + if [sym, l] is + ["Str", l] and l is Str then true + ["Int", i] and i is Int then true + ["Num", n] and n is Num then true + ["Bool", b] and b is Bool then true + _ then false + +// TODO: look at how Array is used +fun mrg2(s1: Shape, s2: Shape) = if s1 + == s2 then s1 + is Lit(l) and s2 is Class(sym, shapes) + and isPrimitiveTypeOf(sym, l) then Class(sym, shapes) + is Class(sym1, shapes1) and s2 is Class(sym2, shapes2) + and sym1 == sym2 then Class(sym1, ???) + is Arr(l1, s1) and s2 is Arr(l2, s2) + and l1 == l2 then Arr(l1, ???) + else ??? + +fun mrg(s1: Array[Shape]) = ??? + +fun sel(s1: Shape, s2: Shape) = + if [s1, s2] is + [Class(c, shapes), Lit(n)] // n_i ? + and n is Int then shapes.n + [Dyn, Lit(n)] // n_i ? + and n is Int then Dyn + [Arr(l, shapes), Lit(n)] + and n is Int then shapes.n + [Dyn, Lit(n)] + and n is Int then Dyn + [Dyn, Dyn] then Dyn + _ then ??? + +fun static(s: Shape) = + if s is + Lit then true + Class | Dyn then false // c vs c() ? + _ then ??? + +module Pattern with... + +class Pattern with + constructor + Lit(val lit: Literal) + Class(val sym: Symbol) + Arr(val size: Int) + Wildcard + +fun silh(p: Pattern): Shape = if p is + Lit(l) then Shape.Lit(l) + // where to store size of argument array? + Class(sym) then Shape.Class(sym, ???) + // how to initialize array of Dyn? + Arr(n) then Shape.Arr(???) + Wildcard then Dyn + +fun match(s: Shape, p: Pattern): Option[Bool] = + if [s, p] is + [Shape.Lit(l1), Lit(l2)] then Some(true) + [Shape.Lit(l), Class(c)] and isPrimitiveTypeOf(c, l) then Some(true) + [Shape.Class(c1, _), Class(c2)] and c1 == c2 then Some(true) + [Shape.Arr(n1, _), Arr(n2)] and n1 == n2 then Some(true) + [_, Wildcard] then Some(true) + [Shape.Dyn, _] then None + _ then Some(false) + +fun det(s: Shape, ps: Array[Pattern]): Option[Bool] = + val a = ps.map(p => match(s, p) is Some(true)) + return ??? From f44b1675d23bb3430a92febf57aa23f082013265 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 1 Nov 2025 00:06:20 +0800 Subject: [PATCH 028/654] copy over more rules --- .../scala/hkmc2/codegen/Instrumentation.scala | 86 +++++++++++++------ 1 file changed, 62 insertions(+), 24 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 13811e9211..77686397ff 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -22,38 +22,44 @@ class Instrumentation(using State): case s: Str => Tree.StrLit(s) case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) - + + // helper for staging the constructors + def end(l: Path): Block = Return(l, false) - def assign(res: Result, name: String = "tmp")(k: Path => Block): Block = + + def assign(res: Result, name: String = "tmp")(k: Path => Block): Block = val tmp = new TempSymbol(N, name) Assign(tmp, res, k(tmp.asPath)) - - // helper for staging the constructors in Block.scala to Block.mls - + + def extractResult(b: Block)(k: Path => Block): Block = + b.mapTail match + case Return(r, _) => assign(r)(k) + case _ => ??? // impossible + def stagedBlock(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = val s = summon[State].blockSymbol.asPath.selSN(nme) assign(Instantiate(false, s, args.map(toArg)))(k) - def stagedShape(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = + def stagedShape(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = val s = summon[State].shapeSymbol.asPath.selSN(nme) assign(Instantiate(false, s, args.map(toArg)))(k) - // helpers for staging constructors in Block.mls + // helpers corresponding to constructors def stagedSymbol(nme: String)(k: Path => Block): Block = stagedBlock("Symbol", Ls(toValue(nme)))(k) - - def stagedIdent(nme: String)(k: Path => Block): Block = + + def stagedIdent(nme: String)(k: Path => Block): Block = stagedBlock("Ident", Ls(toValue(nme)))(k) - + def stagedRef(l: Symbol)(k: Path => Block): Block = stagedSymbol(l.nme): l => stagedBlock("ValueRef", Ls(l))(k) - + // note that this is for Block.ValueLit, not Shape.Lit def stagedBLit(l: Literal)(k: Path => Block): Block = stagedBlock("ValueLit", Ls(Value.Lit(l)))(k) - def stagedSelect(qual: Path, name: Str)(k: Path => Block): Block = + def stagedSelect(qual: Path, name: Str)(k: Path => Block): Block = stagedPath(qual): p => stagedIdent(name): i => stagedBlock("Select", Ls(p, i))(k) @@ -71,24 +77,56 @@ class Instrumentation(using State): case _ => ??? def stagedTuple(elems: Ls[Symbol | Path])(k: Path => Block): Block = - // TODO: staging array - stagedBlock("Tuple", Ls(???))(k) - + // is this the same as "Ls of"? + assign(Tuple(false, elems.map(toArg))): tup => + stagedBlock("Tuple", Ls(tup))(k) + // helpers to create and access the components of a staged value - def returnStagedValue(shape: Path, value: Path)(k: Path => Block): Block = - assign(Tuple(true, Ls(shape, value).map(toArg)))(k) - def getShape(l: Symbol)(k: Path => Block): Block = - assign(DynSelect(Value.Ref(l), toValue(0), false))(k) - def getBlock(l: Symbol)(k: Path => Block): Block = - assign(DynSelect(Value.Ref(l), toValue(1), false))(k) - + def returnPair(shape: Path, value: Path): Block = + assign(Tuple(true, Ls(shape, value).map(toArg)))(end) + def getShape(p: Path)(k: Path => Block): Block = assign(getShape2(p))(k) + def getCode(p: Path)(k: Path => Block): Block = assign(getCode2(p))(k) + def getShape2(p: Path): Path = DynSelect(p, toValue(0), false) + def getCode2(p: Path): Path = DynSelect(p, toValue(1), false) + // todo functions that fills out the holes in the functions above - + def stagedResult(res: Result)(k: Block => Block): Block = res match - case Call(fun, args) => ??? + case Call(fun, args) => ??? case res: Instantiate => ??? case Lambda(params, body) => ??? case Tuple(mut, elems) => ??? case Record(mut, elems) => ??? case p: Path => stagedPath(p) + def stagedArg(arg: Arg)(k: Path => Block): Block = + val stagedSpread = arg.spread match + case Some(value) => stagedBlock("Some", Ls(toValue(value))) + case None => stagedBlock("None", Ls()) + stagedSpread: s => + stagedPath(arg.value): v => + stagedTuple(Ls(s, v))(k) + + // functions that perform the instrumentation + + def ruleLit(l: Literal): Block = + stagedShape("Lit", Ls(Value.Lit(l))): sp => + stagedBlock("Lit", Ls(Value.Lit(l))): cde => + returnPair(sp, cde) + + def ruleVar(r: Value.Ref): Block = + // why not just use getShape2? + getShape(r): sp => + // why not just use r? + stagedBlock("ValueRef", Ls(toValue(r.l.nme))): cde => + returnPair(sp, cde) + + def ruleReturn(r: Return): Block = + transformResult(r.res): b => + extractResult(b): tmp => + getShape(tmp): sp => + stagedBlock("Return", Ls(getCode2(tmp))): cde => + returnPair(sp, cde) + + def transformResult(r: Result)(k: Block => Block): Block = + ??? From dcb0ed674c6dde0dec273049bc4db962064de8c4 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 1 Nov 2025 00:32:11 +0800 Subject: [PATCH 029/654] remove import of block inside MLsCompiler --- hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala | 1 - hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala index 886bcc66d0..95aedda0ec 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala @@ -88,7 +88,6 @@ class MLsCompiler(preludeFile: os.Path, mkOutput: ((Str => Unit) => Unit) => Uni val blk = new semantics.Term.Blk( semantics.Import(State.runtimeSymbol, runtimeFile.toString) :: semantics.Import(State.termSymbol, termFile.toString) - :: semantics.Import(State.termSymbol, termFile.toString) // TODO: always include this? :: blk0.stats, blk0.res ) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index f6375b22d9..a93b8f0fc3 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -63,8 +63,8 @@ object Printer: case fd @ FunDefn(own, sym, params, body) => val docParams = doc"${own.fold("")(_.toString+"::")}${params.map(_.params.map(x => summon[Scope].allocateName(x.sym)).mkString("(", ", ", ")")).mkString("")}" val docBody = mkDocument(body) - val docInstr = if fd.staged then doc"staged " else doc"" - doc"${docInstr}fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" + val docStaged = if fd.staged then doc"staged " else doc"" + doc"${docStaged}fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" case ValDefn(tsym, sym, rhs) => doc"val ${tsym.nme} = ${mkDocument(rhs)}" case ClsLikeDefn(own, _, sym, k, paramsOpt, auxParams, parentSym, methods, From bfac96d02261bd6aed5617afcdb6ceddf18f6e7c Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 1 Nov 2025 00:33:50 +0800 Subject: [PATCH 030/654] update diff test result (for the staged annotation) --- hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls b/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls index 702afdc8d7..867c672bcf 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls @@ -90,7 +90,7 @@ case //│ Program: //│ imports = Nil //│ main = Define: -//│ defn = FunDefn: +//│ defn = FunDefn (staged=false): //│ owner = N //│ sym = member:lambda //│ params = Ls of From a81c0e9e1a464f41df3703fafc091284995e52f5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 1 Nov 2025 13:05:16 +0800 Subject: [PATCH 031/654] fix importing for Block.mls --- hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala | 1 + hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala | 1 + hkmc2/shared/src/test/mlscript-compile/Predef.mjs | 1 + hkmc2/shared/src/test/mlscript-compile/Runtime.mjs | 1 + 4 files changed, 4 insertions(+) diff --git a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala index 95aedda0ec..54007a0df9 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala @@ -88,6 +88,7 @@ class MLsCompiler(preludeFile: os.Path, mkOutput: ((Str => Unit) => Unit) => Uni val blk = new semantics.Term.Blk( semantics.Import(State.runtimeSymbol, runtimeFile.toString) :: semantics.Import(State.termSymbol, termFile.toString) + :: semantics.Import(State.blockSymbol, blockFile.toString) :: blk0.stats, blk0.res ) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 8bd6975e1d..cf1d8f2064 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -223,6 +223,7 @@ object Elaborator: val definitionMetadataSymbol = TempSymbol(N, "definitionMetadata") val prettyPrintSymbol = TempSymbol(N, "prettyPrint") val termSymbol = TempSymbol(N, "Term") + val blockSymbol = TempSymbol(N, "Block") val effectSigSymbol = ClassSymbol(DummyTypeDef(syntax.Cls), Ident("EffectSig")) val nonLocalRetHandlerTrm = val id = new Ident("NonLocalReturn") diff --git a/hkmc2/shared/src/test/mlscript-compile/Predef.mjs b/hkmc2/shared/src/test/mlscript-compile/Predef.mjs index d1a8d1fb79..c43f0fdf6d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Predef.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Predef.mjs @@ -2,6 +2,7 @@ const definitionMetadata = globalThis.Symbol.for("mlscript.definitionMetadata"); const prettyPrint = globalThis.Symbol.for("mlscript.prettyPrint"); import runtime from "./Runtime.mjs"; import Term from "./Term.mjs"; +import Block from "./Block.mjs"; import RuntimeJS from "./RuntimeJS.mjs"; import Runtime from "./Runtime.mjs"; import Rendering from "./Rendering.mjs"; diff --git a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs index 7b1c3e8013..250868463e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs @@ -2,6 +2,7 @@ const definitionMetadata = globalThis.Symbol.for("mlscript.definitionMetadata"); const prettyPrint = globalThis.Symbol.for("mlscript.prettyPrint"); import runtime from "./Runtime.mjs"; import Term from "./Term.mjs"; +import Block from "./Block.mjs"; import RuntimeJS from "./RuntimeJS.mjs"; import Rendering from "./Rendering.mjs"; import LazyArray from "./LazyArray.mjs"; From 4b0fa4529e3660eade4d1b316b0a43b3307dcdd5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 1 Nov 2025 17:53:05 +0800 Subject: [PATCH 032/654] draft ruleInst --- .../scala/hkmc2/codegen/Instrumentation.scala | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 77686397ff..354be38b58 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -128,5 +128,50 @@ class Instrumentation(using State): stagedBlock("Return", Ls(getCode2(tmp))): cde => returnPair(sp, cde) + def ruleInst(i: Instantiate): Block = + val Instantiate(mut, cls, args) = i + assert(!mut) + // the problem here is i can't accumulate the results? + val a0 = (f: List[Path] => Block) => + (transformArg(args(0)): + _.mapTail { + case Return(r, _) => + assign(r): p => + f(Ls(p)) + case _ => ??? + } + ) + + val a1 = (f: List[Path] => Block) => + a0: ls => + transformArg(args(1)): + _.mapTail { + case Return(r, _) => + assign(r): p => + f(p :: ls) + case _ => ??? + } + + val a2 = (f: List[Path] => Block) => + a1: ls => + transformArg(args(2)): + _.mapTail { + case Return(r, _) => + assign(r): p => + f(p :: ls) + case _ => ??? + } + + val res = a2(ls => Return(Tuple(false, ls.reverse.map(toArg)), false)) + ??? + + val as = args.map(transformArg) + // collect paths from each transformed arg + + ??? + def transformResult(r: Result)(k: Block => Block): Block = ??? + + def transformArg(p: Arg)(k: Block => Block): Block = + ??? From 3761d19afeef9a5b3483ec44b4b258dbc401f6cf Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 1 Nov 2025 17:54:30 +0800 Subject: [PATCH 033/654] generalize recursion --- .../scala/hkmc2/codegen/Instrumentation.scala | 47 +++++-------------- 1 file changed, 12 insertions(+), 35 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 354be38b58..44b9b9c26b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -131,42 +131,19 @@ class Instrumentation(using State): def ruleInst(i: Instantiate): Block = val Instantiate(mut, cls, args) = i assert(!mut) - // the problem here is i can't accumulate the results? - val a0 = (f: List[Path] => Block) => - (transformArg(args(0)): - _.mapTail { - case Return(r, _) => - assign(r): p => - f(Ls(p)) - case _ => ??? - } - ) - - val a1 = (f: List[Path] => Block) => - a0: ls => - transformArg(args(1)): - _.mapTail { - case Return(r, _) => - assign(r): p => - f(p :: ls) - case _ => ??? - } - - val a2 = (f: List[Path] => Block) => - a1: ls => - transformArg(args(2)): - _.mapTail { - case Return(r, _) => - assign(r): p => - f(p :: ls) - case _ => ??? - } - - val res = a2(ls => Return(Tuple(false, ls.reverse.map(toArg)), false)) - ??? - val as = args.map(transformArg) - // collect paths from each transformed arg + def rec(f: List[Path] => Block, a: Arg, rest: Ls[Path]) = + transformArg(a): b => + extractResult(b): p => + f(p :: rest) + + // collect up path for all args into a list + val a = args.foldRight((f: List[Path] => Block) => f(Nil))((a, acc) => f => acc(rec(f, a, _))) + val b = a: args => + ??? + + // val as = args.map(transformArg) + // collect paths from each transformed arg ??? From 3ca8a988ca9dd638f1db526267fe69ac513cdcdb Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 00:00:55 +0800 Subject: [PATCH 034/654] add more rules --- .../scala/hkmc2/codegen/Instrumentation.scala | 75 ++++++++++++++++--- 1 file changed, 63 insertions(+), 12 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 44b9b9c26b..00ebcddc16 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -98,7 +98,10 @@ class Instrumentation(using State): case Tuple(mut, elems) => ??? case Record(mut, elems) => ??? case p: Path => stagedPath(p) - + + // probably wrong signature + def stagedPath(p: Path): Block = ??? + def stagedArg(arg: Arg)(k: Path => Block): Block = val stagedSpread = arg.spread match case Some(value) => stagedBlock("Some", Ls(toValue(value))) @@ -121,6 +124,17 @@ class Instrumentation(using State): stagedBlock("ValueRef", Ls(toValue(r.l.nme))): cde => returnPair(sp, cde) + def ruleSel(s: Select): Block = + val Select(p, Tree.Ident(a)) = s + transformPath(p): b => + extractResult(b): x => + // TODO: how to format a? + val sel = ??? + val n = ??? + assign(Call(sel, Ls(getShape2(x), n).map(toArg))(true, false)): sp => + stagedSelect(getCode2(x), a): cde => + returnPair(sp, cde) + def ruleReturn(r: Return): Block = transformResult(r.res): b => extractResult(b): tmp => @@ -132,23 +146,60 @@ class Instrumentation(using State): val Instantiate(mut, cls, args) = i assert(!mut) - def rec(f: List[Path] => Block, a: Arg, rest: Ls[Path]) = + // collect (shape, code) pair for each arg + def rec(f: List[(Path, Path)] => Block, a: Arg, rest: Ls[(Path, Path)]) = transformArg(a): b => extractResult(b): p => - f(p :: rest) - + getShape(p): sh => + getCode(p): cde => + f((sh, cde) :: rest) + + // // can you collect element wise? + // val paths = args.map(a => + // (k: Path => Block) => + // transformArg(a): b => + // extractResult(b)(k) + // ) // collect up path for all args into a list - val a = args.foldRight((f: List[Path] => Block) => f(Nil))((a, acc) => f => acc(rec(f, a, _))) - val b = a: args => - ??? - - // val as = args.map(transformArg) - // collect paths from each transformed arg - - ??? + args.foldRight((f: List[(Path, Path)] => Block) => f(Nil))((a, acc) => + f => acc(rest => rec(f, a, rest)) + ): ps => + val (shapes, codes) = ps.unzip + stagedTuple(shapes): shapes => + stagedTuple(codes): codes => + stagedShape("Class", Ls(cls, shapes)): sp => + stagedBlock("Instantiate", Ls(cls, codes)): cde => + returnPair(sp, cde) + + def ruleVal(defn: ValDefn, rest: Block): Block = + val ValDefn(_, sym, rhs) = defn + transformPath(rhs): b => + extractResult(b): y => + transformBlock(rest): b => + extractResult(b): z => + // TODO: valdefn needs to be before code blocks? + Define( + ValDefn(???, sym, y), + getShape(z): sp => + stagedSymbol("x"): x => + stagedBlock("ValDefn", Ls(x, getCode2(y))): df => + stagedBlock("Define", Ls(df, getCode2(z))): cde => + returnPair(sp, cde) + ) + + def transformPath(p: Path)(k: Block => Block): Block = + p match + // case Select(p, ident) => ??? + // case DynSelect(qual, fld, arrayIdx) => ??? + case r: Value.Ref => ruleVar(r) + case Value.Lit(lit) => ruleLit(lit) + case _ => ??? def transformResult(r: Result)(k: Block => Block): Block = ??? def transformArg(p: Arg)(k: Block => Block): Block = ??? + + def transformBlock(b: Block)(k: Block => Block): Block = ??? + From 71d5df3521c1e3d56918df0ba2f3907e78fed326 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 00:16:46 +0800 Subject: [PATCH 035/654] remove length parameter from Shape.Arr --- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 058ec92344..df9304d468 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -13,7 +13,7 @@ class Shape with constructor Dyn Lit(val l: Literal) - Arr(val length: Int, val shapes: Array[Shape]) + Arr(val shapes: Array[Shape]) // is length parameter needed? // TODO: change sym to accept multiple possible class symbols Class(val sym: Symbol, val shapes: Array[Shape]) Unit @@ -33,8 +33,8 @@ fun mrg2(s1: Shape, s2: Shape) = if s1 and isPrimitiveTypeOf(sym, l) then Class(sym, shapes) is Class(sym1, shapes1) and s2 is Class(sym2, shapes2) and sym1 == sym2 then Class(sym1, ???) - is Arr(l1, s1) and s2 is Arr(l2, s2) - and l1 == l2 then Arr(l1, ???) + is Arr(s1) and s2 is Arr(s2) + and s1.length == s2.length then Arr(???) else ??? fun mrg(s1: Array[Shape]) = ??? @@ -45,7 +45,7 @@ fun sel(s1: Shape, s2: Shape) = and n is Int then shapes.n [Dyn, Lit(n)] // n_i ? and n is Int then Dyn - [Arr(l, shapes), Lit(n)] + [Arr(shapes), Lit(n)] and n is Int then shapes.n [Dyn, Lit(n)] and n is Int then Dyn @@ -80,7 +80,7 @@ fun match(s: Shape, p: Pattern): Option[Bool] = [Shape.Lit(l1), Lit(l2)] then Some(true) [Shape.Lit(l), Class(c)] and isPrimitiveTypeOf(c, l) then Some(true) [Shape.Class(c1, _), Class(c2)] and c1 == c2 then Some(true) - [Shape.Arr(n1, _), Arr(n2)] and n1 == n2 then Some(true) + [Shape.Arr(ls), Arr(n)] and ls.length == n then Some(true) [_, Wildcard] then Some(true) [Shape.Dyn, _] then None _ then Some(false) From cca32c62ca2ee90759167745ae8120d4e85cc04b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 00:29:46 +0800 Subject: [PATCH 036/654] stub all current rules --- .../scala/hkmc2/codegen/Instrumentation.scala | 131 ++++++++++++------ 1 file changed, 86 insertions(+), 45 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 00ebcddc16..24831f01ab 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -28,6 +28,7 @@ class Instrumentation(using State): def end(l: Path): Block = Return(l, false) def assign(res: Result, name: String = "tmp")(k: Path => Block): Block = + // TODO: skip assignment if res: Path? val tmp = new TempSymbol(N, name) Assign(tmp, res, k(tmp.asPath)) @@ -82,33 +83,38 @@ class Instrumentation(using State): stagedBlock("Tuple", Ls(tup))(k) // helpers to create and access the components of a staged value + // use getCode2 for spliced result, and getCode for code def returnPair(shape: Path, value: Path): Block = assign(Tuple(true, Ls(shape, value).map(toArg)))(end) def getShape(p: Path)(k: Path => Block): Block = assign(getShape2(p))(k) def getCode(p: Path)(k: Path => Block): Block = assign(getCode2(p))(k) + // can we just use getShape2 everywhere? def getShape2(p: Path): Path = DynSelect(p, toValue(0), false) def getCode2(p: Path): Path = DynSelect(p, toValue(1), false) + // simplifies transform-extract code + def extract(k: (Block => Block) => Block)(rest: Path => Block): Block = + k(extractResult(_)(rest)) // todo functions that fills out the holes in the functions above - def stagedResult(res: Result)(k: Block => Block): Block = res match - case Call(fun, args) => ??? - case res: Instantiate => ??? - case Lambda(params, body) => ??? - case Tuple(mut, elems) => ??? - case Record(mut, elems) => ??? - case p: Path => stagedPath(p) - - // probably wrong signature - def stagedPath(p: Path): Block = ??? - - def stagedArg(arg: Arg)(k: Path => Block): Block = - val stagedSpread = arg.spread match - case Some(value) => stagedBlock("Some", Ls(toValue(value))) - case None => stagedBlock("None", Ls()) - stagedSpread: s => - stagedPath(arg.value): v => - stagedTuple(Ls(s, v))(k) + // def stagedResult(res: Result)(k: Block => Block): Block = res match + // case Call(fun, args) => ??? + // case res: Instantiate => ??? + // case Lambda(params, body) => ??? + // case Tuple(mut, elems) => ??? + // case Record(mut, elems) => ??? + // case p: Path => stagedPath(p) + + // // probably wrong signature + // def stagedPath(p: Path): Block = ??? + + // def stagedArg(arg: Arg)(k: Path => Block): Block = + // val stagedSpread = arg.spread match + // case Some(value) => stagedBlock("Some", Ls(toValue(value))) + // case None => stagedBlock("None", Ls()) + // stagedSpread: s => + // stagedPath(arg.value): v => + // stagedTuple(Ls(s, v))(k) // functions that perform the instrumentation @@ -124,6 +130,16 @@ class Instrumentation(using State): stagedBlock("ValueRef", Ls(toValue(r.l.nme))): cde => returnPair(sp, cde) + def ruleTup(t: Tuple): Block = + val Tuple(mut, elems) = t + assert(!mut) + + transformArgs(elems): (shapes, codes) => + stagedTuple(shapes): shapes => + stagedShape("Arr", Ls(shapes)): sp => + assign(Tuple(false, codes.map(toArg))): cde => + returnPair(sp, cde) + def ruleSel(s: Select): Block = val Select(p, Tree.Ident(a)) = s transformPath(p): b => @@ -135,42 +151,39 @@ class Instrumentation(using State): stagedSelect(getCode2(x), a): cde => returnPair(sp, cde) - def ruleReturn(r: Return): Block = - transformResult(r.res): b => - extractResult(b): tmp => - getShape(tmp): sp => - stagedBlock("Return", Ls(getCode2(tmp))): cde => - returnPair(sp, cde) + def ruleDynSel(d: DynSelect): Block = ??? + + def ruleRefinedPath(p: Path): Block = ??? + + def ruleApp(c: Call): Block = ??? def ruleInst(i: Instantiate): Block = val Instantiate(mut, cls, args) = i assert(!mut) - // collect (shape, code) pair for each arg - def rec(f: List[(Path, Path)] => Block, a: Arg, rest: Ls[(Path, Path)]) = - transformArg(a): b => - extractResult(b): p => - getShape(p): sh => - getCode(p): cde => - f((sh, cde) :: rest) - - // // can you collect element wise? - // val paths = args.map(a => - // (k: Path => Block) => - // transformArg(a): b => - // extractResult(b)(k) - // ) - // collect up path for all args into a list - args.foldRight((f: List[(Path, Path)] => Block) => f(Nil))((a, acc) => - f => acc(rest => rec(f, a, rest)) - ): ps => - val (shapes, codes) = ps.unzip + transformArgs(args): (shapes, codes) => stagedTuple(shapes): shapes => stagedTuple(codes): codes => stagedShape("Class", Ls(cls, shapes)): sp => stagedBlock("Instantiate", Ls(cls, codes)): cde => returnPair(sp, cde) + def ruleReturn(r: Return): Block = + transformResult(r.res): b => + extractResult(b): tmp => + getShape(tmp): sp => + stagedBlock("Return", Ls(getCode2(tmp))): cde => + returnPair(sp, cde) + + def ruleMatch(m: Match): Block = ??? + + def ruleAssign(a: Assign): Block = ??? + + def ruleEnd(): Block = + stagedShape("Unit", Ls()): sp => + stagedBlock("End", Ls()): cde => + returnPair(sp, cde) + def ruleVal(defn: ValDefn, rest: Block): Block = val ValDefn(_, sym, rhs) = defn transformPath(rhs): b => @@ -187,6 +200,12 @@ class Instrumentation(using State): returnPair(sp, cde) ) + def ruleBlk(b: Block): Block = ??? + + def ruleCls(c: ClassLikeDef, rest: Block): Block = ??? + + // functions for instrumentation + def transformPath(p: Path)(k: Block => Block): Block = p match // case Select(p, ident) => ??? @@ -198,8 +217,30 @@ class Instrumentation(using State): def transformResult(r: Result)(k: Block => Block): Block = ??? - def transformArg(p: Arg)(k: Block => Block): Block = + def transformArg(a: Arg)(k: Block => Block): Block = ??? - def transformBlock(b: Block)(k: Block => Block): Block = ??? + // provides list of shapes and list of codes to continuation + def transformArgs(args: List[Arg])(k: (Ls[Path], Ls[Path]) => Block): Block = + // collect (shape, code) pair for each arg + def rec(f: List[(Path, Path)] => Block, a: Arg, rest: Ls[(Path, Path)]) = + transformArg(a): b => + extractResult(b): p => + getShape(p): sh => + getCode(p): cde => + f((sh, cde) :: rest) + + // can you collect element wise instead? + // val paths = args.map(a => + // (k: Path => Block) => + // transformArg(a): b => + // extractResult(b)(k) + // ) + // collect up path for all args into a list + args.foldRight((f: List[(Path, Path)] => Block) => f(Nil))((a, acc) => + f => acc(rest => rec(f, a, rest)) + ): ps => + val (shapes, codes) = ps.unzip + k(shapes, codes) + def transformBlock(b: Block)(k: Block => Block): Block = ??? From ea13fe3917fc0b145675596388afe58831b3828c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 00:39:53 +0800 Subject: [PATCH 037/654] change transform* signature --- .../scala/hkmc2/codegen/Instrumentation.scala | 65 +++++++++---------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 24831f01ab..c5ab27ab48 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -142,14 +142,13 @@ class Instrumentation(using State): def ruleSel(s: Select): Block = val Select(p, Tree.Ident(a)) = s - transformPath(p): b => - extractResult(b): x => - // TODO: how to format a? - val sel = ??? - val n = ??? - assign(Call(sel, Ls(getShape2(x), n).map(toArg))(true, false)): sp => - stagedSelect(getCode2(x), a): cde => - returnPair(sp, cde) + transformPath(p): x => + // TODO: how to format a? + val sel = ??? + val n = ??? + assign(Call(sel, Ls(getShape2(x), n).map(toArg))(true, false)): sp => + stagedSelect(getCode2(x), a): cde => + returnPair(sp, cde) def ruleDynSel(d: DynSelect): Block = ??? @@ -169,11 +168,10 @@ class Instrumentation(using State): returnPair(sp, cde) def ruleReturn(r: Return): Block = - transformResult(r.res): b => - extractResult(b): tmp => - getShape(tmp): sp => - stagedBlock("Return", Ls(getCode2(tmp))): cde => - returnPair(sp, cde) + transformResult(r.res): x => + getShape(x): sp => + stagedBlock("Return", Ls(getCode2(x))): cde => + returnPair(sp, cde) def ruleMatch(m: Match): Block = ??? @@ -186,19 +184,17 @@ class Instrumentation(using State): def ruleVal(defn: ValDefn, rest: Block): Block = val ValDefn(_, sym, rhs) = defn - transformPath(rhs): b => - extractResult(b): y => - transformBlock(rest): b => - extractResult(b): z => - // TODO: valdefn needs to be before code blocks? - Define( - ValDefn(???, sym, y), - getShape(z): sp => - stagedSymbol("x"): x => - stagedBlock("ValDefn", Ls(x, getCode2(y))): df => - stagedBlock("Define", Ls(df, getCode2(z))): cde => - returnPair(sp, cde) - ) + transformPath(rhs): y => + transformBlock(rest): z => + // TODO: valdefn needs to be before code blocks? + Define( + ValDefn(???, sym, y), + getShape(z): sp => + stagedSymbol("x"): x => + stagedBlock("ValDefn", Ls(x, getCode2(y))): df => + stagedBlock("Define", Ls(df, getCode2(z))): cde => + returnPair(sp, cde) + ) def ruleBlk(b: Block): Block = ??? @@ -206,7 +202,7 @@ class Instrumentation(using State): // functions for instrumentation - def transformPath(p: Path)(k: Block => Block): Block = + def transformPath(p: Path)(k: Path => Block): Block = p match // case Select(p, ident) => ??? // case DynSelect(qual, fld, arrayIdx) => ??? @@ -214,21 +210,20 @@ class Instrumentation(using State): case Value.Lit(lit) => ruleLit(lit) case _ => ??? - def transformResult(r: Result)(k: Block => Block): Block = + def transformResult(r: Result)(k: Path => Block): Block = ??? - def transformArg(a: Arg)(k: Block => Block): Block = + def transformArg(a: Arg)(k: Path => Block): Block = ??? // provides list of shapes and list of codes to continuation def transformArgs(args: List[Arg])(k: (Ls[Path], Ls[Path]) => Block): Block = // collect (shape, code) pair for each arg def rec(f: List[(Path, Path)] => Block, a: Arg, rest: Ls[(Path, Path)]) = - transformArg(a): b => - extractResult(b): p => - getShape(p): sh => - getCode(p): cde => - f((sh, cde) :: rest) + transformArg(a): p => + getShape(p): sh => + getCode(p): cde => + f((sh, cde) :: rest) // can you collect element wise instead? // val paths = args.map(a => @@ -243,4 +238,4 @@ class Instrumentation(using State): val (shapes, codes) = ps.unzip k(shapes, codes) - def transformBlock(b: Block)(k: Block => Block): Block = ??? + def transformBlock(b: Block)(k: Path => Block): Block = ??? From 47919c47cbba39aaa42ed552a4c2e9cf0f7f7d27 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 00:51:58 +0800 Subject: [PATCH 038/654] change staged* to mls* --- .../scala/hkmc2/codegen/Instrumentation.scala | 116 +++++------------- 1 file changed, 30 insertions(+), 86 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index c5ab27ab48..b59fac6005 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -37,50 +37,25 @@ class Instrumentation(using State): case Return(r, _) => assign(r)(k) case _ => ??? // impossible - def stagedBlock(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = + def mlsBlock(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = val s = summon[State].blockSymbol.asPath.selSN(nme) assign(Instantiate(false, s, args.map(toArg)))(k) - def stagedShape(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = + def mlsShape(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = val s = summon[State].shapeSymbol.asPath.selSN(nme) assign(Instantiate(false, s, args.map(toArg)))(k) // helpers corresponding to constructors - def stagedSymbol(nme: String)(k: Path => Block): Block = - stagedBlock("Symbol", Ls(toValue(nme)))(k) + def mlsSymbol(nme: String)(k: Path => Block): Block = + mlsBlock("Symbol", Ls(toValue(nme)))(k) - def stagedIdent(nme: String)(k: Path => Block): Block = - stagedBlock("Ident", Ls(toValue(nme)))(k) + def mlsSelect(qual: Path, ident: Tree.Ident)(k: Path => Block): Block = + // unnecessary assignment? + assign(Select(qual, ident)(N))(k) - def stagedRef(l: Symbol)(k: Path => Block): Block = - stagedSymbol(l.nme): l => - stagedBlock("ValueRef", Ls(l))(k) - - // note that this is for Block.ValueLit, not Shape.Lit - def stagedBLit(l: Literal)(k: Path => Block): Block = - stagedBlock("ValueLit", Ls(Value.Lit(l)))(k) - - def stagedSelect(qual: Path, name: Str)(k: Path => Block): Block = - stagedPath(qual): p => - stagedIdent(name): i => - stagedBlock("Select", Ls(p, i))(k) - - def stagedDynSelect(qual: Path, fld: Path, arrayIdx: Bool)(k: Path => Block): Block = - stagedPath(qual): q => - stagedPath(fld): f => - stagedBlock("DynSelect", Ls(q, f, toValue(arrayIdx)))(k) - - def stagedPath(p: Path)(k: Path => Block): Block = p match - case Select(qual, tree) => stagedSelect(qual, tree.name)(k) - case DynSelect(qual, fld, arrayIdx) => stagedDynSelect(qual, fld, arrayIdx)(k) - case Value.Ref(l) => stagedRef(l)(k) - case Value.Lit(lit) => stagedBLit(lit)(k) - case _ => ??? - - def stagedTuple(elems: Ls[Symbol | Path])(k: Path => Block): Block = + def mlsTuple(elems: Ls[Symbol | Path])(k: Path => Block): Block = // is this the same as "Ls of"? - assign(Tuple(false, elems.map(toArg))): tup => - stagedBlock("Tuple", Ls(tup))(k) + assign(Tuple(false, elems.map(toArg)))(k) // helpers to create and access the components of a staged value // use getCode2 for spliced result, and getCode for code @@ -91,43 +66,19 @@ class Instrumentation(using State): // can we just use getShape2 everywhere? def getShape2(p: Path): Path = DynSelect(p, toValue(0), false) def getCode2(p: Path): Path = DynSelect(p, toValue(1), false) - // simplifies transform-extract code - def extract(k: (Block => Block) => Block)(rest: Path => Block): Block = - k(extractResult(_)(rest)) - - // todo functions that fills out the holes in the functions above - - // def stagedResult(res: Result)(k: Block => Block): Block = res match - // case Call(fun, args) => ??? - // case res: Instantiate => ??? - // case Lambda(params, body) => ??? - // case Tuple(mut, elems) => ??? - // case Record(mut, elems) => ??? - // case p: Path => stagedPath(p) - - // // probably wrong signature - // def stagedPath(p: Path): Block = ??? - - // def stagedArg(arg: Arg)(k: Path => Block): Block = - // val stagedSpread = arg.spread match - // case Some(value) => stagedBlock("Some", Ls(toValue(value))) - // case None => stagedBlock("None", Ls()) - // stagedSpread: s => - // stagedPath(arg.value): v => - // stagedTuple(Ls(s, v))(k) // functions that perform the instrumentation def ruleLit(l: Literal): Block = - stagedShape("Lit", Ls(Value.Lit(l))): sp => - stagedBlock("Lit", Ls(Value.Lit(l))): cde => + mlsShape("Lit", Ls(Value.Lit(l))): sp => + mlsBlock("Lit", Ls(Value.Lit(l))): cde => returnPair(sp, cde) def ruleVar(r: Value.Ref): Block = // why not just use getShape2? getShape(r): sp => // why not just use r? - stagedBlock("ValueRef", Ls(toValue(r.l.nme))): cde => + mlsBlock("ValueRef", Ls(toValue(r.l.nme))): cde => returnPair(sp, cde) def ruleTup(t: Tuple): Block = @@ -135,19 +86,19 @@ class Instrumentation(using State): assert(!mut) transformArgs(elems): (shapes, codes) => - stagedTuple(shapes): shapes => - stagedShape("Arr", Ls(shapes)): sp => + mlsTuple(shapes): shapes => + mlsShape("Arr", Ls(shapes)): sp => assign(Tuple(false, codes.map(toArg))): cde => returnPair(sp, cde) def ruleSel(s: Select): Block = - val Select(p, Tree.Ident(a)) = s + val Select(p, i) = s transformPath(p): x => // TODO: how to format a? val sel = ??? val n = ??? assign(Call(sel, Ls(getShape2(x), n).map(toArg))(true, false)): sp => - stagedSelect(getCode2(x), a): cde => + mlsSelect(getCode2(x), i): cde => returnPair(sp, cde) def ruleDynSel(d: DynSelect): Block = ??? @@ -161,16 +112,16 @@ class Instrumentation(using State): assert(!mut) transformArgs(args): (shapes, codes) => - stagedTuple(shapes): shapes => - stagedTuple(codes): codes => - stagedShape("Class", Ls(cls, shapes)): sp => - stagedBlock("Instantiate", Ls(cls, codes)): cde => + mlsTuple(shapes): shapes => + mlsTuple(codes): codes => + mlsShape("Class", Ls(cls, shapes)): sp => + mlsBlock("Instantiate", Ls(cls, codes)): cde => returnPair(sp, cde) def ruleReturn(r: Return): Block = transformResult(r.res): x => getShape(x): sp => - stagedBlock("Return", Ls(getCode2(x))): cde => + mlsBlock("Return", Ls(getCode2(x))): cde => returnPair(sp, cde) def ruleMatch(m: Match): Block = ??? @@ -178,23 +129,21 @@ class Instrumentation(using State): def ruleAssign(a: Assign): Block = ??? def ruleEnd(): Block = - stagedShape("Unit", Ls()): sp => - stagedBlock("End", Ls()): cde => + mlsShape("Unit", Ls()): sp => + mlsBlock("End", Ls()): cde => returnPair(sp, cde) def ruleVal(defn: ValDefn, rest: Block): Block = - val ValDefn(_, sym, rhs) = defn + val ValDefn(tsym, sym, rhs) = defn transformPath(rhs): y => transformBlock(rest): z => - // TODO: valdefn needs to be before code blocks? - Define( - ValDefn(???, sym, y), + // TODO: valdefn needs to be before code blocks somehow? + (rest => Define(ValDefn(tsym, sym, y), rest)): getShape(z): sp => - stagedSymbol("x"): x => - stagedBlock("ValDefn", Ls(x, getCode2(y))): df => - stagedBlock("Define", Ls(df, getCode2(z))): cde => + mlsSymbol("x"): x => + mlsBlock("ValDefn", Ls(x, getCode2(y))): df => + mlsBlock("Define", Ls(df, getCode2(z))): cde => returnPair(sp, cde) - ) def ruleBlk(b: Block): Block = ??? @@ -225,13 +174,8 @@ class Instrumentation(using State): getCode(p): cde => f((sh, cde) :: rest) - // can you collect element wise instead? - // val paths = args.map(a => - // (k: Path => Block) => - // transformArg(a): b => - // extractResult(b)(k) - // ) // collect up path for all args into a list + // can you collect element wise instead? args.foldRight((f: List[(Path, Path)] => Block) => f(Nil))((a, acc) => f => acc(rest => rec(f, a, rest)) ): ps => From 217fb90b83e2ce5738d420c0e4ddb58b36324da2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 01:03:34 +0800 Subject: [PATCH 039/654] simplify getShape, getCode --- .../scala/hkmc2/codegen/Instrumentation.scala | 50 ++++++++----------- 1 file changed, 20 insertions(+), 30 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b59fac6005..6d0530bbf5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -60,12 +60,9 @@ class Instrumentation(using State): // helpers to create and access the components of a staged value // use getCode2 for spliced result, and getCode for code def returnPair(shape: Path, value: Path): Block = - assign(Tuple(true, Ls(shape, value).map(toArg)))(end) - def getShape(p: Path)(k: Path => Block): Block = assign(getShape2(p))(k) - def getCode(p: Path)(k: Path => Block): Block = assign(getCode2(p))(k) - // can we just use getShape2 everywhere? - def getShape2(p: Path): Path = DynSelect(p, toValue(0), false) - def getCode2(p: Path): Path = DynSelect(p, toValue(1), false) + mlsTuple(Ls(shape, value))(end) + def getShape(p: Path): Path = DynSelect(p, toValue(0), false) + def getCode(p: Path): Path = DynSelect(p, toValue(1), false) // functions that perform the instrumentation @@ -75,11 +72,9 @@ class Instrumentation(using State): returnPair(sp, cde) def ruleVar(r: Value.Ref): Block = - // why not just use getShape2? - getShape(r): sp => - // why not just use r? - mlsBlock("ValueRef", Ls(toValue(r.l.nme))): cde => - returnPair(sp, cde) + // why not just use r? + mlsBlock("ValueRef", Ls(toValue(r.l.nme))): cde => + returnPair(getShape(r), cde) def ruleTup(t: Tuple): Block = val Tuple(mut, elems) = t @@ -97,8 +92,8 @@ class Instrumentation(using State): // TODO: how to format a? val sel = ??? val n = ??? - assign(Call(sel, Ls(getShape2(x), n).map(toArg))(true, false)): sp => - mlsSelect(getCode2(x), i): cde => + assign(Call(sel, Ls(getShape(x), n).map(toArg))(true, false)): sp => + mlsSelect(getCode(x), i): cde => returnPair(sp, cde) def ruleDynSel(d: DynSelect): Block = ??? @@ -120,9 +115,8 @@ class Instrumentation(using State): def ruleReturn(r: Return): Block = transformResult(r.res): x => - getShape(x): sp => - mlsBlock("Return", Ls(getCode2(x))): cde => - returnPair(sp, cde) + mlsBlock("Return", Ls(getCode(x))): cde => + returnPair(getShape(x), cde) def ruleMatch(m: Match): Block = ??? @@ -138,12 +132,11 @@ class Instrumentation(using State): transformPath(rhs): y => transformBlock(rest): z => // TODO: valdefn needs to be before code blocks somehow? - (rest => Define(ValDefn(tsym, sym, y), rest)): - getShape(z): sp => - mlsSymbol("x"): x => - mlsBlock("ValDefn", Ls(x, getCode2(y))): df => - mlsBlock("Define", Ls(df, getCode2(z))): cde => - returnPair(sp, cde) + (Define(ValDefn(tsym, sym, y), _)): + mlsSymbol("x"): x => + mlsBlock("ValDefn", Ls(x, getCode(y))): df => + mlsBlock("Define", Ls(df, getCode(z))): cde => + returnPair(getShape(z), cde) def ruleBlk(b: Block): Block = ??? @@ -170,16 +163,13 @@ class Instrumentation(using State): // collect (shape, code) pair for each arg def rec(f: List[(Path, Path)] => Block, a: Arg, rest: Ls[(Path, Path)]) = transformArg(a): p => - getShape(p): sh => - getCode(p): cde => - f((sh, cde) :: rest) + f((getShape(p), getCode(p)) :: rest) // collect up path for all args into a list // can you collect element wise instead? - args.foldRight((f: List[(Path, Path)] => Block) => f(Nil))((a, acc) => - f => acc(rest => rec(f, a, rest)) - ): ps => - val (shapes, codes) = ps.unzip - k(shapes, codes) + args.foldRight((f: List[(Path, Path)] => Block) => f(Nil))((a, acc) => f => acc(rec(f, a, _))): + ps => + val (shapes, codes) = ps.unzip + k(shapes, codes) def transformBlock(b: Block)(k: Path => Block): Block = ??? From 3827db5ba43052747e25703ee2f57176b4bc23d2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 13:29:56 +0800 Subject: [PATCH 040/654] reword transformArgs --- .../scala/hkmc2/codegen/Instrumentation.scala | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 6d0530bbf5..1ec69b8a9a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -160,16 +160,17 @@ class Instrumentation(using State): // provides list of shapes and list of codes to continuation def transformArgs(args: List[Arg])(k: (Ls[Path], Ls[Path]) => Block): Block = - // collect (shape, code) pair for each arg - def rec(f: List[(Path, Path)] => Block, a: Arg, rest: Ls[(Path, Path)]) = - transformArg(a): p => - f((getShape(p), getCode(p)) :: rest) - - // collect up path for all args into a list - // can you collect element wise instead? - args.foldRight((f: List[(Path, Path)] => Block) => f(Nil))((a, acc) => f => acc(rec(f, a, _))): - ps => - val (shapes, codes) = ps.unzip + args + .map(transformArg) + // defer applying k while prepending new paths to the list + .foldRight((_: List[Path] => Block)(Nil))((pathCont, restCont) => + k => + pathCont: p => + restCont: rest => + k(p :: rest) + ): ps => + // collect (shape, code) pair for each arg + val (shapes, codes) = ps.map(p => (getShape(p), getCode(p))).unzip k(shapes, codes) def transformBlock(b: Block)(k: Path => Block): Block = ??? From 2d9c3d2e2296048a259f3d56e413b181988eb63d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 15:47:21 +0800 Subject: [PATCH 041/654] remove extractResult --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 5 ----- 1 file changed, 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 1ec69b8a9a..3bbd518c19 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -32,11 +32,6 @@ class Instrumentation(using State): val tmp = new TempSymbol(N, name) Assign(tmp, res, k(tmp.asPath)) - def extractResult(b: Block)(k: Path => Block): Block = - b.mapTail match - case Return(r, _) => assign(r)(k) - case _ => ??? // impossible - def mlsBlock(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = val s = summon[State].blockSymbol.asPath.selSN(nme) assign(Instantiate(false, s, args.map(toArg)))(k) From c5be8eccffb6f32ec4a89e670e2c799bd0652b43 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 16:47:23 +0800 Subject: [PATCH 042/654] introduce StagedPath --- .../scala/hkmc2/codegen/Instrumentation.scala | 114 ++++++++++-------- 1 file changed, 66 insertions(+), 48 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 3bbd518c19..d91c13e91b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -25,8 +25,6 @@ class Instrumentation(using State): // helper for staging the constructors - def end(l: Path): Block = Return(l, false) - def assign(res: Result, name: String = "tmp")(k: Path => Block): Block = // TODO: skip assignment if res: Path? val tmp = new TempSymbol(N, name) @@ -53,51 +51,61 @@ class Instrumentation(using State): assign(Tuple(false, elems.map(toArg)))(k) // helpers to create and access the components of a staged value - // use getCode2 for spliced result, and getCode for code - def returnPair(shape: Path, value: Path): Block = - mlsTuple(Ls(shape, value))(end) - def getShape(p: Path): Path = DynSelect(p, toValue(0), false) - def getCode(p: Path): Path = DynSelect(p, toValue(1), false) + class StagedPath(val p: Path): + def shape: Path = DynSelect(p, toValue(0), false) + def code: Path = DynSelect(p, toValue(1), false) + + object StagedPath: + def mk(shape: Path, code: Path)(k: StagedPath => Block): Block = + mlsTuple(Ls(shape, code))(p => k(StagedPath(p))) + // in some cases this can reduce the indentation level + def mk(shapeCont: (Path => Block) => Block, codeCont: (Path => Block) => Block)(k: StagedPath => Block): Block = + shapeCont: shape => + codeCont: code => + mk(shape, code)(k) + def end(sp: StagedPath): Block = Return(sp.p, false) // functions that perform the instrumentation - def ruleLit(l: Literal): Block = + def ruleLit(l: Literal)(k: StagedPath => Block): Block = mlsShape("Lit", Ls(Value.Lit(l))): sp => mlsBlock("Lit", Ls(Value.Lit(l))): cde => - returnPair(sp, cde) + StagedPath.mk(sp, cde)(k) - def ruleVar(r: Value.Ref): Block = - // why not just use r? + def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = + // why assume it is already staged? + val sp = StagedPath(r) + // why not just use sp.code? mlsBlock("ValueRef", Ls(toValue(r.l.nme))): cde => - returnPair(getShape(r), cde) + StagedPath.mk(sp.shape, cde)(k) - def ruleTup(t: Tuple): Block = + def ruleTup(t: Tuple)(k: StagedPath => Block): Block = val Tuple(mut, elems) = t assert(!mut) transformArgs(elems): (shapes, codes) => mlsTuple(shapes): shapes => mlsShape("Arr", Ls(shapes)): sp => - assign(Tuple(false, codes.map(toArg))): cde => - returnPair(sp, cde) + mlsTuple(codes): cde => // is Tuple quotes as well? + StagedPath.mk(sp, cde)(k) - def ruleSel(s: Select): Block = + def ruleSel(s: Select)(k: StagedPath => Block): Block = val Select(p, i) = s transformPath(p): x => // TODO: how to format a? val sel = ??? val n = ??? - assign(Call(sel, Ls(getShape(x), n).map(toArg))(true, false)): sp => - mlsSelect(getCode(x), i): cde => - returnPair(sp, cde) + assign(Call(sel, Ls(x.shape, n).map(toArg))(true, false)): sp => + mlsSelect(x.code, i): cde => + StagedPath.mk(sp, cde)(k) - def ruleDynSel(d: DynSelect): Block = ??? + def ruleDynSel(d: DynSelect)(k: StagedPath => Block): Block = ??? - def ruleRefinedPath(p: Path): Block = ??? + def ruleRefinedPath(p: Path)(k: StagedPath => Block): Block = ??? - def ruleApp(c: Call): Block = ??? + def ruleApp(c: Call)(k: StagedPath => Block): Block = ??? - def ruleInst(i: Instantiate): Block = + def ruleInst(i: Instantiate)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut) @@ -106,66 +114,76 @@ class Instrumentation(using State): mlsTuple(codes): codes => mlsShape("Class", Ls(cls, shapes)): sp => mlsBlock("Instantiate", Ls(cls, codes)): cde => - returnPair(sp, cde) + StagedPath.mk(sp, cde)(k) - def ruleReturn(r: Return): Block = + def ruleReturn(r: Return)(k: StagedPath => Block): Block = transformResult(r.res): x => - mlsBlock("Return", Ls(getCode(x))): cde => - returnPair(getShape(x), cde) + mlsBlock("Return", Ls(x.code)): cde => + StagedPath.mk(x.shape, cde)(k) - def ruleMatch(m: Match): Block = ??? + def ruleMatch(m: Match)(k: StagedPath => Block): Block = ??? - def ruleAssign(a: Assign): Block = ??? + def ruleAssign(a: Assign)(k: StagedPath => Block): Block = ??? - def ruleEnd(): Block = + def ruleEnd()(k: StagedPath => Block): Block = mlsShape("Unit", Ls()): sp => mlsBlock("End", Ls()): cde => - returnPair(sp, cde) + StagedPath.mk(sp, cde)(k) - def ruleVal(defn: ValDefn, rest: Block): Block = + def ruleVal(defn: ValDefn, rest: Block)(k: StagedPath => Block): Block = val ValDefn(tsym, sym, rhs) = defn transformPath(rhs): y => transformBlock(rest): z => // TODO: valdefn needs to be before code blocks somehow? - (Define(ValDefn(tsym, sym, y), _)): + // y is StagedPath, not Path? + (Define(ValDefn(tsym, sym, y.p), _)): mlsSymbol("x"): x => - mlsBlock("ValDefn", Ls(x, getCode(y))): df => - mlsBlock("Define", Ls(df, getCode(z))): cde => - returnPair(getShape(z), cde) + mlsBlock("ValDefn", Ls(x, y.code)): df => + mlsBlock("Define", Ls(df, z.code)): cde => + StagedPath.mk(z.shape, cde)(k) - def ruleBlk(b: Block): Block = ??? + def ruleBlk(b: Block)(k: StagedPath => Block): Block = ??? - def ruleCls(c: ClassLikeDef, rest: Block): Block = ??? + def ruleCls(c: ClassLikeDef, rest: Block)(k: StagedPath => Block): Block = ??? // functions for instrumentation - def transformPath(p: Path)(k: Path => Block): Block = + def transformPath(p: Path)(k: StagedPath => Block): Block = p match // case Select(p, ident) => ??? // case DynSelect(qual, fld, arrayIdx) => ??? - case r: Value.Ref => ruleVar(r) - case Value.Lit(lit) => ruleLit(lit) + case r: Value.Ref => ruleVar(r)(k) + case Value.Lit(lit) => ruleLit(lit)(k) case _ => ??? - def transformResult(r: Result)(k: Path => Block): Block = - ??? + def transformResult(r: Result)(k: StagedPath => Block): Block = + r match + case Call(name, args) => ??? + case Instantiate(mut, cls, args) => ??? + case Lambda(params, body) => ??? + case Tuple(mut, elems) => ??? + case Record(mut, elems) => ??? + case p: Path => transformPath(p)(k) + + def transformArg(a: Arg)(k: StagedPath => Block): Block = + val Arg(spread, value) = a + ??? // arg has no shape of its own? - def transformArg(a: Arg)(k: Path => Block): Block = - ??? + transformPath(value)(k) // provides list of shapes and list of codes to continuation def transformArgs(args: List[Arg])(k: (Ls[Path], Ls[Path]) => Block): Block = args .map(transformArg) // defer applying k while prepending new paths to the list - .foldRight((_: List[Path] => Block)(Nil))((pathCont, restCont) => + .foldRight((_: List[StagedPath] => Block)(Nil))((pathCont, restCont) => k => pathCont: p => restCont: rest => k(p :: rest) ): ps => // collect (shape, code) pair for each arg - val (shapes, codes) = ps.map(p => (getShape(p), getCode(p))).unzip + val (shapes, codes) = ps.map(p => (p.shape, p.code)).unzip k(shapes, codes) - def transformBlock(b: Block)(k: Path => Block): Block = ??? + def transformBlock(b: Block)(k: StagedPath => Block): Block = ??? From b4eaf5c5e311cc649f0555336c7fa0acd18e1d91 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 17:38:47 +0800 Subject: [PATCH 043/654] introduce Shape --- .../scala/hkmc2/codegen/Instrumentation.scala | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index d91c13e91b..4c2b8c6d82 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -9,10 +9,13 @@ import semantics.Elaborator.State import syntax.{Literal, Tree} class Instrumentation(using State): - def toArg(x: Path | Symbol): Arg = + type PathLike = Path | Symbol | Shape + + def asArg(x: PathLike): Arg = x match - case p: Path => Arg(N, p) - case l: Symbol => Arg(N, l.asPath) + case p: Path => p.asArg + case l: Symbol => l.asPath.asArg + case Shape(p) => p.asArg // null and undefined are missing def toValue(lit: Str | Int | BigDecimal | Bool): Value = @@ -30,12 +33,12 @@ class Instrumentation(using State): val tmp = new TempSymbol(N, name) Assign(tmp, res, k(tmp.asPath)) - def mlsBlock(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = + def mlsBlock(nme: String, args: Ls[PathLike])(k: Path => Block): Block = val s = summon[State].blockSymbol.asPath.selSN(nme) - assign(Instantiate(false, s, args.map(toArg)))(k) - def mlsShape(nme: String, args: Ls[Path | Symbol])(k: Path => Block): Block = + assign(Instantiate(false, s, args.map(asArg)))(k) + def mlsShape(nme: String, args: Ls[PathLike])(k: Shape => Block): Block = val s = summon[State].shapeSymbol.asPath.selSN(nme) - assign(Instantiate(false, s, args.map(toArg)))(k) + assign(Instantiate(false, s, args.map(asArg)))(p => k(Shape(p))) // helpers corresponding to constructors @@ -46,20 +49,24 @@ class Instrumentation(using State): // unnecessary assignment? assign(Select(qual, ident)(N))(k) - def mlsTuple(elems: Ls[Symbol | Path])(k: Path => Block): Block = + def mlsTuple(elems: Ls[PathLike])(k: Path => Block): Block = // is this the same as "Ls of"? - assign(Tuple(false, elems.map(toArg)))(k) + assign(Tuple(false, elems.map(asArg)))(k) + def mrg(shapes: Ls[Shape]) = () + // helpers to create and access the components of a staged value + case class Shape(val p: Path) + class StagedPath(val p: Path): - def shape: Path = DynSelect(p, toValue(0), false) + def shape: Shape = Shape(DynSelect(p, toValue(0), false)) def code: Path = DynSelect(p, toValue(1), false) object StagedPath: - def mk(shape: Path, code: Path)(k: StagedPath => Block): Block = - mlsTuple(Ls(shape, code))(p => k(StagedPath(p))) + def mk(shape: Shape, code: Path)(k: StagedPath => Block): Block = + mlsTuple(Ls(shape.p, code))(p => k(StagedPath(p))) // in some cases this can reduce the indentation level - def mk(shapeCont: (Path => Block) => Block, codeCont: (Path => Block) => Block)(k: StagedPath => Block): Block = + def mk(shapeCont: (Shape => Block) => Block, codeCont: (Path => Block) => Block)(k: StagedPath => Block): Block = shapeCont: shape => codeCont: code => mk(shape, code)(k) @@ -92,12 +99,15 @@ class Instrumentation(using State): def ruleSel(s: Select)(k: StagedPath => Block): Block = val Select(p, i) = s transformPath(p): x => + // TODO: how to format a? val sel = ??? val n = ??? - assign(Call(sel, Ls(x.shape, n).map(toArg))(true, false)): sp => - mlsSelect(x.code, i): cde => - StagedPath.mk(sp, cde)(k) + // can use shape.p? + // assign(Call(sel, Ls(x.shape, n).map(toArg))(true, false)): sp => + // mlsSelect(x.code, i): cde => + // StagedPath.mk(sp, cde)(k) + ??? def ruleDynSel(d: DynSelect)(k: StagedPath => Block): Block = ??? @@ -172,11 +182,11 @@ class Instrumentation(using State): transformPath(value)(k) // provides list of shapes and list of codes to continuation - def transformArgs(args: List[Arg])(k: (Ls[Path], Ls[Path]) => Block): Block = + def transformArgs(args: Ls[Arg])(k: (Ls[Shape], Ls[Path]) => Block): Block = args .map(transformArg) // defer applying k while prepending new paths to the list - .foldRight((_: List[StagedPath] => Block)(Nil))((pathCont, restCont) => + .foldRight((_: Ls[StagedPath] => Block)(Nil))((pathCont, restCont) => k => pathCont: p => restCont: rest => From 2563eca03682c68dfe55785a742041b60584c7e1 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 23:18:36 +0800 Subject: [PATCH 044/654] link to functions in Shape.mls --- .../scala/hkmc2/codegen/Instrumentation.scala | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 4c2b8c6d82..aaeafe5307 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -28,7 +28,8 @@ class Instrumentation(using State): // helper for staging the constructors - def assign(res: Result, name: String = "tmp")(k: Path => Block): Block = + // could use `using` to allow passthrough of names + def assign(res: Result, name: String = "tmp")(k: Path => Block): Assign = // TODO: skip assignment if res: Path? val tmp = new TempSymbol(N, name) Assign(tmp, res, k(tmp.asPath)) @@ -53,8 +54,9 @@ class Instrumentation(using State): // is this the same as "Ls of"? assign(Tuple(false, elems.map(asArg)))(k) - def mrg(shapes: Ls[Shape]) = () - + def mlsCall(fun: Path, args: Ls[PathLike], isMlsFun: Bool)(k: Path => Block): Block = + assign(Call(fun, args.map(asArg))(isMlsFun, false))(k) + // helpers to create and access the components of a staged value case class Shape(val p: Path) @@ -72,6 +74,28 @@ class Instrumentation(using State): mk(shape, code)(k) def end(sp: StagedPath): Block = Return(sp.p, false) + // linking functions defined in MLscipt + val mrgSymbol = new TempSymbol(N, "mrg") + val silhSymbol = new TempSymbol(N, "silh") + val matchSymbol = new TempSymbol(N, "match") + val selSymbol = new TempSymbol(N, "sel") + val staticSymbol = new TempSymbol(N, "static") + val compileSymbol = new TempSymbol(N, "compile") + + def fnMrg(shapes: Ls[Shape])(k: Shape => Block): Block = + mlsCall(mrgSymbol.asPath, shapes, true)(s => k(Shape(s))) + // TODO: make fnSilh take in a wrapped Path type + def fnSilh(pattern: Path)(k: Shape => Block) = + mlsCall(silhSymbol.asPath, Ls(pattern), true)(s => k(Shape(s))) + def fnMatch(s: Shape, pat: Path)(k: Path => Block) = + mlsCall(matchSymbol.asPath, Ls(s, pat), true)(k) + def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = + mlsCall(selSymbol.asPath, Ls(s1, s2), true)(s => k(Shape(s))) + def fnStatic(s: Shape)(k: Path => Block) = + mlsCall(staticSymbol.asPath, Ls(s), true)(k) + def fnCompile(x: Path)(k: StagedPath => Block): Block = + mlsCall(compileSymbol.asPath, Ls(x), true)(p => k(StagedPath(p))) + // functions that perform the instrumentation def ruleLit(l: Literal)(k: StagedPath => Block): Block = From edd7436acbc21bfef37252172424d686d0e27f1b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 23:19:13 +0800 Subject: [PATCH 045/654] move function --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index aaeafe5307..490b11bc16 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -58,11 +58,13 @@ class Instrumentation(using State): assign(Call(fun, args.map(asArg))(isMlsFun, false))(k) // helpers to create and access the components of a staged value - case class Shape(val p: Path) + case class Shape(p: Path) + // A StagedPath is a path that points to a (shape, code) tuple class StagedPath(val p: Path): def shape: Shape = Shape(DynSelect(p, toValue(0), false)) def code: Path = DynSelect(p, toValue(1), false) + def end: Block = Return(p, false) object StagedPath: def mk(shape: Shape, code: Path)(k: StagedPath => Block): Block = @@ -72,7 +74,6 @@ class Instrumentation(using State): shapeCont: shape => codeCont: code => mk(shape, code)(k) - def end(sp: StagedPath): Block = Return(sp.p, false) // linking functions defined in MLscipt val mrgSymbol = new TempSymbol(N, "mrg") From c17c3e1a5a52d07e23672a95d87505957114eb42 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 23:19:52 +0800 Subject: [PATCH 046/654] implement more rules --- .../scala/hkmc2/codegen/Instrumentation.scala | 84 +++++++++++++------ 1 file changed, 58 insertions(+), 26 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 490b11bc16..fcc9465b72 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -122,19 +122,22 @@ class Instrumentation(using State): StagedPath.mk(sp, cde)(k) def ruleSel(s: Select)(k: StagedPath => Block): Block = - val Select(p, i) = s + val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => - - // TODO: how to format a? - val sel = ??? + // stage? there isn't a correct constructor for it though + // val n = Shape(Value.Ref(new TempSymbol(N, name))) val n = ??? - // can use shape.p? - // assign(Call(sel, Ls(x.shape, n).map(toArg))(true, false)): sp => - // mlsSelect(x.code, i): cde => - // StagedPath.mk(sp, cde)(k) - ??? - - def ruleDynSel(d: DynSelect)(k: StagedPath => Block): Block = ??? + fnSel(x.shape, n): sp => + mlsSelect(x.code, i): cde => + StagedPath.mk(sp, cde)(k) + + def ruleDynSel(d: DynSelect)(k: StagedPath => Block): Block = + val DynSelect(qual, path, arrayIdx) = d + transformPath(qual): x => + transformPath(path): y => + fnSel(x.shape, y.shape): sp => + mlsBlock("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => + StagedPath.mk(sp, cde)(k) def ruleRefinedPath(p: Path)(k: StagedPath => Block): Block = ??? @@ -156,9 +159,19 @@ class Instrumentation(using State): mlsBlock("Return", Ls(x.code)): cde => StagedPath.mk(x.shape, cde)(k) - def ruleMatch(m: Match)(k: StagedPath => Block): Block = ??? + def ruleMatch(m: Match)(k: StagedPath => Block): Block = + val Match(p, arms, dflt, b) = m + transformPath(p): x => + ??? - def ruleAssign(a: Assign)(k: StagedPath => Block): Block = ??? + def ruleAssign(a: Assign)(k: StagedPath => Block): Block = + val Assign(x, r, b) = a + transformResult(r): y => + (Assign(x, y.p, _)): + transformBlock(b): z => + // need to wrap x with Symbol? + mlsBlock("Assign", Ls(x, y.code, z.code)): cde => + StagedPath.mk(z.shape, cde)(k) def ruleEnd()(k: StagedPath => Block): Block = mlsShape("Unit", Ls()): sp => @@ -177,37 +190,42 @@ class Instrumentation(using State): mlsBlock("Define", Ls(df, z.code)): cde => StagedPath.mk(z.shape, cde)(k) - def ruleBlk(b: Block)(k: StagedPath => Block): Block = ??? + def ruleBlk(b: Block)(k: StagedPath => Block): Block = + transformBlock(b): x => + fnCompile(x.code)(k) - def ruleCls(c: ClassLikeDef, rest: Block)(k: StagedPath => Block): Block = ??? + // g is Program? + def ruleCls(c: Program, rest: Block)(k: StagedPath => Block): Block = + // val ClsLikeDefn(_, _, ) + ??? // functions for instrumentation def transformPath(p: Path)(k: StagedPath => Block): Block = p match - // case Select(p, ident) => ??? - // case DynSelect(qual, fld, arrayIdx) => ??? + case s: Select => ruleSel(s)(k) + case d: DynSelect => ruleDynSel(d)(k) case r: Value.Ref => ruleVar(r)(k) case Value.Lit(lit) => ruleLit(lit)(k) - case _ => ??? + case _ => ??? // not supported def transformResult(r: Result)(k: StagedPath => Block): Block = r match - case Call(name, args) => ??? - case Instantiate(mut, cls, args) => ??? - case Lambda(params, body) => ??? - case Tuple(mut, elems) => ??? - case Record(mut, elems) => ??? + case c: Call => ruleApp(c)(k) + case i: Instantiate => ruleInst(i)(k) + case t: Tuple => ruleTup(t)(k) case p: Path => transformPath(p)(k) + case _ : Lambda | _: Record => ??? // not supported def transformArg(a: Arg)(k: StagedPath => Block): Block = val Arg(spread, value) = a - ??? // arg has no shape of its own? + ??? // arg has no shape of its own? it's just a wrapper for Path transformPath(value)(k) // provides list of shapes and list of codes to continuation def transformArgs(args: Ls[Arg])(k: (Ls[Shape], Ls[Path]) => Block): Block = + // TODO: use BlockTransformer.applyListOf? args .map(transformArg) // defer applying k while prepending new paths to the list @@ -220,5 +238,19 @@ class Instrumentation(using State): // collect (shape, code) pair for each arg val (shapes, codes) = ps.map(p => (p.shape, p.code)).unzip k(shapes, codes) - - def transformBlock(b: Block)(k: StagedPath => Block): Block = ??? + + def transformDefine(d: Define)(k: StagedPath => Block): Block = + d.defn match + case f: FunDefn => ??? + case v: ValDefn => ruleVal(v, d.rest)(k) + case c: ClsLikeDefn => ??? + + def transformBlock(b: Block)(k: StagedPath => Block): Block = + b match + case m: Match => ruleMatch(m)(k) + case r: Return => ruleReturn(r)(k) + case a: Assign => ruleAssign(a)(k) + case d: Define => transformDefine(d)(k) + case End(_) => ruleEnd()(k) + case l: Label => ??? + case _ => ??? // not supported From 369195f537a751669bc64eb9764e9479280ae5f4 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 23:51:51 +0800 Subject: [PATCH 047/654] add stubs for function instrumentation --- .../scala/hkmc2/codegen/Instrumentation.scala | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index fcc9465b72..66859262c2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -76,6 +76,7 @@ class Instrumentation(using State): mk(shape, code)(k) // linking functions defined in MLscipt + val mrgSymbol = new TempSymbol(N, "mrg") val silhSymbol = new TempSymbol(N, "silh") val matchSymbol = new TempSymbol(N, "match") @@ -97,7 +98,26 @@ class Instrumentation(using State): def fnCompile(x: Path)(k: StagedPath => Block): Block = mlsCall(compileSymbol.asPath, Ls(x), true)(p => k(StagedPath(p))) - // functions that perform the instrumentation + // helpers for instrumenting functions + + def inst(f: StagedPath, args: Ls[StagedPath]): StagedPath = + if ??? then + // non-staged function + ??? + else + // staged function + ??? + + def instGlobal(f: StagedPath, args: Ls[StagedPath])(k: StagedPath => Block): Block = + def isFunction(p: Path) = ??? + if isFunction(f.p) then + k(inst(???, args)) + else + mlsShape("Dyn", Ls()): sp => + mlsCall(f.p, args.map(_.p), ???): cde => + StagedPath.mk(sp, cde)(k) + + // instrumentation rules def ruleLit(l: Literal)(k: StagedPath => Block): Block = mlsShape("Lit", Ls(Value.Lit(l))): sp => @@ -199,7 +219,7 @@ class Instrumentation(using State): // val ClsLikeDefn(_, _, ) ??? - // functions for instrumentation + // transformations of Block def transformPath(p: Path)(k: StagedPath => Block): Block = p match From ded726045f26bb53264ad3016989b01f48b30c0b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 2 Nov 2025 23:53:38 +0800 Subject: [PATCH 048/654] add instrumentation context --- .../scala/hkmc2/codegen/Instrumentation.scala | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 66859262c2..d283e99a6e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -1,6 +1,8 @@ package hkmc2 package codegen +import scala.collection.mutable.HashMap + import mlscript.utils.*, shorthands.* import semantics.* @@ -8,9 +10,23 @@ import semantics.Elaborator.State import syntax.{Literal, Tree} +// TODO: I didn't use BlockTransformer here, because in some cases it constrains the type of the continuation +// but it seems some logic should be deferred to it to dedup code + +// it should be possible to convert to the BlockTransformer signatures, +// but it would require re-extracting and re-assigning StagedPath from the output. + +// the continuation would basically be solely dedicated to staging then? +// like, we do a transformation on DynSelect where we keep the fields inteact, then perform staging in the DynSelect => Block continuation? +// the previous blocks created by the fields are handled by BlockTransformer's continuation code + class Instrumentation(using State): + // A PathLike type is a type that can be turned into an Arg type PathLike = Path | Symbol | Shape + // is Elaborator.Ctx relevant? + type Context = HashMap[Path, Shape] + def asArg(x: PathLike): Arg = x match case p: Path => p.asArg From 5e08d178b7feb42ff5548bce0ed3b5968a2340e2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 00:11:51 +0800 Subject: [PATCH 049/654] refactor transformArgs --- .../scala/hkmc2/codegen/Instrumentation.scala | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index d283e99a6e..3327fe2d0a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -151,10 +151,10 @@ class Instrumentation(using State): val Tuple(mut, elems) = t assert(!mut) - transformArgs(elems): (shapes, codes) => - mlsTuple(shapes): shapes => + transformArgs(elems): xs => + mlsTuple(xs.map(_.shape)): shapes => mlsShape("Arr", Ls(shapes)): sp => - mlsTuple(codes): cde => // is Tuple quotes as well? + mlsTuple(xs.map(_.code)): cde => // is Tuple quotes as well? StagedPath.mk(sp, cde)(k) def ruleSel(s: Select)(k: StagedPath => Block): Block = @@ -177,15 +177,20 @@ class Instrumentation(using State): def ruleRefinedPath(p: Path)(k: StagedPath => Block): Block = ??? + // .apply is Call? def ruleApp(c: Call)(k: StagedPath => Block): Block = ??? + val Call(fun, args) = c + transformPath(fun): f => + transformArgs(args): xs => + instGlobal(f, xs)(k) def ruleInst(i: Instantiate)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut) - transformArgs(args): (shapes, codes) => - mlsTuple(shapes): shapes => - mlsTuple(codes): codes => + transformArgs(args): xs => + mlsTuple(xs.map(_.shape)): shapes => + mlsTuple(xs.map(_.code)): codes => mlsShape("Class", Ls(cls, shapes)): sp => mlsBlock("Instantiate", Ls(cls, codes)): cde => StagedPath.mk(sp, cde)(k) @@ -260,7 +265,7 @@ class Instrumentation(using State): transformPath(value)(k) // provides list of shapes and list of codes to continuation - def transformArgs(args: Ls[Arg])(k: (Ls[Shape], Ls[Path]) => Block): Block = + def transformArgs(args: Ls[Arg])(k: Ls[StagedPath] => Block): Block = // TODO: use BlockTransformer.applyListOf? args .map(transformArg) @@ -270,10 +275,7 @@ class Instrumentation(using State): pathCont: p => restCont: rest => k(p :: rest) - ): ps => - // collect (shape, code) pair for each arg - val (shapes, codes) = ps.map(p => (p.shape, p.code)).unzip - k(shapes, codes) + )(k) def transformDefine(d: Define)(k: StagedPath => Block): Block = d.defn match From 3de464348aba4e62f05678af5f05948fded5e487 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 00:37:25 +0800 Subject: [PATCH 050/654] add Context to some functions --- .../scala/hkmc2/codegen/Instrumentation.scala | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 3327fe2d0a..0feaf8cb0e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -147,7 +147,7 @@ class Instrumentation(using State): mlsBlock("ValueRef", Ls(toValue(r.l.nme))): cde => StagedPath.mk(sp.shape, cde)(k) - def ruleTup(t: Tuple)(k: StagedPath => Block): Block = + def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = val Tuple(mut, elems) = t assert(!mut) @@ -157,7 +157,7 @@ class Instrumentation(using State): mlsTuple(xs.map(_.code)): cde => // is Tuple quotes as well? StagedPath.mk(sp, cde)(k) - def ruleSel(s: Select)(k: StagedPath => Block): Block = + def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => // stage? there isn't a correct constructor for it though @@ -167,7 +167,7 @@ class Instrumentation(using State): mlsSelect(x.code, i): cde => StagedPath.mk(sp, cde)(k) - def ruleDynSel(d: DynSelect)(k: StagedPath => Block): Block = + def ruleDynSel(d: DynSelect)(using Context)(k: StagedPath => Block): Block = val DynSelect(qual, path, arrayIdx) = d transformPath(qual): x => transformPath(path): y => @@ -175,16 +175,16 @@ class Instrumentation(using State): mlsBlock("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => StagedPath.mk(sp, cde)(k) - def ruleRefinedPath(p: Path)(k: StagedPath => Block): Block = ??? + def ruleRefinedPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = ??? // .apply is Call? - def ruleApp(c: Call)(k: StagedPath => Block): Block = ??? + def ruleApp(c: Call)(using Context)(k: StagedPath => Block): Block = val Call(fun, args) = c transformPath(fun): f => transformArgs(args): xs => instGlobal(f, xs)(k) - def ruleInst(i: Instantiate)(k: StagedPath => Block): Block = + def ruleInst(i: Instantiate)(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut) @@ -195,17 +195,17 @@ class Instrumentation(using State): mlsBlock("Instantiate", Ls(cls, codes)): cde => StagedPath.mk(sp, cde)(k) - def ruleReturn(r: Return)(k: StagedPath => Block): Block = + def ruleReturn(r: Return)(using Context)(k: StagedPath => Block): Block = transformResult(r.res): x => mlsBlock("Return", Ls(x.code)): cde => StagedPath.mk(x.shape, cde)(k) - def ruleMatch(m: Match)(k: StagedPath => Block): Block = + def ruleMatch(m: Match)(using Context)(k: StagedPath => Block): Block = val Match(p, arms, dflt, b) = m transformPath(p): x => ??? - def ruleAssign(a: Assign)(k: StagedPath => Block): Block = + def ruleAssign(a: Assign)(using Context)(k: StagedPath => Block): Block = val Assign(x, r, b) = a transformResult(r): y => (Assign(x, y.p, _)): @@ -219,7 +219,7 @@ class Instrumentation(using State): mlsBlock("End", Ls()): cde => StagedPath.mk(sp, cde)(k) - def ruleVal(defn: ValDefn, rest: Block)(k: StagedPath => Block): Block = + def ruleVal(defn: ValDefn, rest: Block)(using Context)(k: StagedPath => Block): Block = val ValDefn(tsym, sym, rhs) = defn transformPath(rhs): y => transformBlock(rest): z => @@ -231,18 +231,18 @@ class Instrumentation(using State): mlsBlock("Define", Ls(df, z.code)): cde => StagedPath.mk(z.shape, cde)(k) - def ruleBlk(b: Block)(k: StagedPath => Block): Block = + def ruleBlk(b: Block)(using Context)(k: StagedPath => Block): Block = transformBlock(b): x => fnCompile(x.code)(k) // g is Program? - def ruleCls(c: Program, rest: Block)(k: StagedPath => Block): Block = + def ruleCls(c: Program, rest: Block)(using Context)(k: StagedPath => Block): Block = // val ClsLikeDefn(_, _, ) ??? // transformations of Block - def transformPath(p: Path)(k: StagedPath => Block): Block = + def transformPath(p: Path)(using Context)(k: StagedPath => Block): Block = p match case s: Select => ruleSel(s)(k) case d: DynSelect => ruleDynSel(d)(k) @@ -250,7 +250,7 @@ class Instrumentation(using State): case Value.Lit(lit) => ruleLit(lit)(k) case _ => ??? // not supported - def transformResult(r: Result)(k: StagedPath => Block): Block = + def transformResult(r: Result)(using Context)(k: StagedPath => Block): Block = r match case c: Call => ruleApp(c)(k) case i: Instantiate => ruleInst(i)(k) @@ -258,14 +258,14 @@ class Instrumentation(using State): case p: Path => transformPath(p)(k) case _ : Lambda | _: Record => ??? // not supported - def transformArg(a: Arg)(k: StagedPath => Block): Block = + def transformArg(a: Arg)(using Context)(k: StagedPath => Block): Block = val Arg(spread, value) = a ??? // arg has no shape of its own? it's just a wrapper for Path transformPath(value)(k) // provides list of shapes and list of codes to continuation - def transformArgs(args: Ls[Arg])(k: Ls[StagedPath] => Block): Block = + def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = // TODO: use BlockTransformer.applyListOf? args .map(transformArg) @@ -277,13 +277,13 @@ class Instrumentation(using State): k(p :: rest) )(k) - def transformDefine(d: Define)(k: StagedPath => Block): Block = + def transformDefine(d: Define)(using Context)(k: StagedPath => Block): Block = d.defn match case f: FunDefn => ??? case v: ValDefn => ruleVal(v, d.rest)(k) case c: ClsLikeDefn => ??? - def transformBlock(b: Block)(k: StagedPath => Block): Block = + def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = b match case m: Match => ruleMatch(m)(k) case r: Return => ruleReturn(r)(k) From c3a1f5c519e4ad6bfe552bdda95582e624da43aa Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 00:37:57 +0800 Subject: [PATCH 051/654] dedup Pattern with Block.Case --- .../src/test/mlscript-compile/Block.mls | 28 +++++----------- .../src/test/mlscript-compile/Shape.mls | 33 +++++++++---------- 2 files changed, 23 insertions(+), 38 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 5e5eedcc87..d32ef23f5d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -11,6 +11,7 @@ type Opt[A] = Option[A] // dependancies referenced in Block classes, referencing implementation in Term.mls +// TODO: convert these classes to Str class Ident(val name: Str) // translation of Tree.Ident class Symbol(val name: Str) @@ -28,12 +29,14 @@ class Path with ValueRef(val l: Symbol) ValueLit(val lit: Literal) +// Match pattern for staged code class Case with constructor Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) Tup(val len: Int, val inf: Bool) - Field(val name: Ident, val safe: Bool) + Field(val name: Ident) + Wildcard class Result with constructor @@ -44,26 +47,11 @@ class Result with class Defn with constructor - ValDefn( - val sym: Symbol, - val rhs: Path, - ) - ClsLikeDefn( - val sym: Symbol, - val paramsOpt: Opt[ParamList], - val companion: Opt[ClsLikeBody], - ) - FunDefn( - val sym: Symbol, - val params: Array[ParamList], - val body: Block, - ) + ValDefn(val sym: Symbol, val rhs: Path) + ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) + FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) -class ClsLikeBody( - val isym: Symbol, - val methods: Array[FunDefn], - val publicFields: Array[Symbol -> Symbol], -) +class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[Symbol -> Symbol]) class Block with constructor diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index df9304d468..ddccbdfae4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,5 +1,6 @@ import "./Predef.mls" import "./Option.mls" +import "./Block.mls" open Predef open Option @@ -53,38 +54,34 @@ fun sel(s1: Shape, s2: Shape) = _ then ??? fun static(s: Shape) = - if s is - Lit then true - Class | Dyn then false // c vs c() ? - _ then ??? - -module Pattern with... + if s + == Dyn then false + is + Lit then true + Class then false + _ then ??? -class Pattern with - constructor - Lit(val lit: Literal) - Class(val sym: Symbol) - Arr(val size: Int) - Wildcard +open Block -fun silh(p: Pattern): Shape = if p is +fun silh(p: Case): Shape = if p is Lit(l) then Shape.Lit(l) // where to store size of argument array? - Class(sym) then Shape.Class(sym, ???) + Class(sym, path) then Shape.Class(sym, ???) // how to initialize array of Dyn? - Arr(n) then Shape.Arr(???) + Tup(n, inf) then Shape.Arr(???) + Field(name) then ??? Wildcard then Dyn -fun match(s: Shape, p: Pattern): Option[Bool] = +fun match(s: Shape, p: Case): Option[Bool] = if [s, p] is [Shape.Lit(l1), Lit(l2)] then Some(true) [Shape.Lit(l), Class(c)] and isPrimitiveTypeOf(c, l) then Some(true) [Shape.Class(c1, _), Class(c2)] and c1 == c2 then Some(true) - [Shape.Arr(ls), Arr(n)] and ls.length == n then Some(true) + [Shape.Arr(ls), Tup(n, inf)] and ls.length == n then Some(true) [_, Wildcard] then Some(true) [Shape.Dyn, _] then None _ then Some(false) -fun det(s: Shape, ps: Array[Pattern]): Option[Bool] = +fun det(s: Shape, ps: Array[Case]): Option[Bool] = val a = ps.map(p => match(s, p) is Some(true)) return ??? From d1170e91ce80b06a80de1421ea890dbf51e22a17 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:31:09 +0800 Subject: [PATCH 052/654] rename mls{Block, Shape, Symbol} helpers --- .../scala/hkmc2/codegen/Instrumentation.scala | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 0feaf8cb0e..92c207855a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -50,18 +50,17 @@ class Instrumentation(using State): val tmp = new TempSymbol(N, name) Assign(tmp, res, k(tmp.asPath)) - def mlsBlock(nme: String, args: Ls[PathLike])(k: Path => Block): Block = + def mlsBlockMod(nme: String, args: Ls[PathLike])(k: Path => Block): Block = val s = summon[State].blockSymbol.asPath.selSN(nme) assign(Instantiate(false, s, args.map(asArg)))(k) - def mlsShape(nme: String, args: Ls[PathLike])(k: Shape => Block): Block = + def mlsShapeMod(nme: String, args: Ls[PathLike])(k: Path => Block): Block = val s = summon[State].shapeSymbol.asPath.selSN(nme) - assign(Instantiate(false, s, args.map(asArg)))(p => k(Shape(p))) + assign(Instantiate(false, s, args.map(asArg)))(k) + def mlsShape(nme: String, args: Ls[PathLike])(k: Shape => Block): Block = + mlsShapeMod(nme, args)(p => k(Shape(p))) // helpers corresponding to constructors - def mlsSymbol(nme: String)(k: Path => Block): Block = - mlsBlock("Symbol", Ls(toValue(nme)))(k) - def mlsSelect(qual: Path, ident: Tree.Ident)(k: Path => Block): Block = // unnecessary assignment? assign(Select(qual, ident)(N))(k) @@ -137,14 +136,14 @@ class Instrumentation(using State): def ruleLit(l: Literal)(k: StagedPath => Block): Block = mlsShape("Lit", Ls(Value.Lit(l))): sp => - mlsBlock("Lit", Ls(Value.Lit(l))): cde => + mlsBlockMod("Lit", Ls(Value.Lit(l))): cde => StagedPath.mk(sp, cde)(k) def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = // why assume it is already staged? val sp = StagedPath(r) // why not just use sp.code? - mlsBlock("ValueRef", Ls(toValue(r.l.nme))): cde => + mlsBlockMod("ValueRef", Ls(toValue(r.l.nme))): cde => StagedPath.mk(sp.shape, cde)(k) def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = @@ -172,7 +171,7 @@ class Instrumentation(using State): transformPath(qual): x => transformPath(path): y => fnSel(x.shape, y.shape): sp => - mlsBlock("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => + mlsBlockMod("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => StagedPath.mk(sp, cde)(k) def ruleRefinedPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = ??? @@ -192,12 +191,12 @@ class Instrumentation(using State): mlsTuple(xs.map(_.shape)): shapes => mlsTuple(xs.map(_.code)): codes => mlsShape("Class", Ls(cls, shapes)): sp => - mlsBlock("Instantiate", Ls(cls, codes)): cde => + mlsBlockMod("Instantiate", Ls(cls, codes)): cde => StagedPath.mk(sp, cde)(k) def ruleReturn(r: Return)(using Context)(k: StagedPath => Block): Block = transformResult(r.res): x => - mlsBlock("Return", Ls(x.code)): cde => + mlsBlockMod("Return", Ls(x.code)): cde => StagedPath.mk(x.shape, cde)(k) def ruleMatch(m: Match)(using Context)(k: StagedPath => Block): Block = @@ -211,24 +210,23 @@ class Instrumentation(using State): (Assign(x, y.p, _)): transformBlock(b): z => // need to wrap x with Symbol? - mlsBlock("Assign", Ls(x, y.code, z.code)): cde => + mlsBlockMod("Assign", Ls(x, y.code, z.code)): cde => StagedPath.mk(z.shape, cde)(k) def ruleEnd()(k: StagedPath => Block): Block = mlsShape("Unit", Ls()): sp => - mlsBlock("End", Ls()): cde => + mlsBlockMod("End", Ls()): cde => StagedPath.mk(sp, cde)(k) - def ruleVal(defn: ValDefn, rest: Block)(using Context)(k: StagedPath => Block): Block = - val ValDefn(tsym, sym, rhs) = defn - transformPath(rhs): y => - transformBlock(rest): z => + def ruleVal(defn: ValDefn, b: Block)(using Context)(k: StagedPath => Block): Block = + val ValDefn(tsym, x, p) = defn + transformPath(p): y => + transformBlock(b): z => // TODO: valdefn needs to be before code blocks somehow? // y is StagedPath, not Path? - (Define(ValDefn(tsym, sym, y.p), _)): - mlsSymbol("x"): x => - mlsBlock("ValDefn", Ls(x, y.code)): df => - mlsBlock("Define", Ls(df, z.code)): cde => + (Define(ValDefn(tsym, x, y.p), _)): + mlsBlockMod("ValDefn", Ls(x, y.code)): df => + mlsBlockMod("Define", Ls(df, z.code)): cde => StagedPath.mk(z.shape, cde)(k) def ruleBlk(b: Block)(using Context)(k: StagedPath => Block): Block = From 36107df377f18bf3e84e801f77032fa823ec9e78 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:02:35 +0800 Subject: [PATCH 053/654] amend! link to functions in Shape.mls link to functions in Shape.mls --- .../scala/hkmc2/codegen/Instrumentation.scala | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 92c207855a..bb04d5faee 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -92,26 +92,22 @@ class Instrumentation(using State): // linking functions defined in MLscipt - val mrgSymbol = new TempSymbol(N, "mrg") - val silhSymbol = new TempSymbol(N, "silh") - val matchSymbol = new TempSymbol(N, "match") - val selSymbol = new TempSymbol(N, "sel") - val staticSymbol = new TempSymbol(N, "static") - val compileSymbol = new TempSymbol(N, "compile") - - def fnMrg(shapes: Ls[Shape])(k: Shape => Block): Block = - mlsCall(mrgSymbol.asPath, shapes, true)(s => k(Shape(s))) + def fnMrg(shapes: Ls[Shape])(k: Shape => Block): Block = + mlsShapeMod("mrg", shapes)(s => k(Shape(s))) // TODO: make fnSilh take in a wrapped Path type - def fnSilh(pattern: Path)(k: Shape => Block) = - mlsCall(silhSymbol.asPath, Ls(pattern), true)(s => k(Shape(s))) - def fnMatch(s: Shape, pat: Path)(k: Path => Block) = - mlsCall(matchSymbol.asPath, Ls(s, pat), true)(k) - def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = - mlsCall(selSymbol.asPath, Ls(s1, s2), true)(s => k(Shape(s))) - def fnStatic(s: Shape)(k: Path => Block) = - mlsCall(staticSymbol.asPath, Ls(s), true)(k) - def fnCompile(x: Path)(k: StagedPath => Block): Block = - mlsCall(compileSymbol.asPath, Ls(x), true)(p => k(StagedPath(p))) + def fnSilh(pattern: Path)(k: Shape => Block) = + mlsShapeMod("silh", Ls(pattern))(s => k(Shape(s))) + def fnMatch(s: Shape, pat: Path)(k: Path => Block) = + mlsShapeMod("match", Ls(s, pat))(k) + def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = + mlsShapeMod("sel", Ls(s1, s2))(s => k(Shape(s))) + def fnStatic(s: Shape)(k: Path => Block) = + mlsShapeMod("static", Ls(s))(k) + def fnCompile(x: Path)(k: StagedPath => Block): Block = + mlsShapeMod("compile", Ls(x))(p => k(StagedPath(p))) + def fnDet(s: Shape, ps: Ls[PathLike])(k: Path => Block): Block = + mlsTuple(ps): tup => + mlsShapeMod("det", Ls(s, tup))(k) // helpers for instrumenting functions From ed393fcf44c484018299b29c59117b0c97a338f7 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:07:29 +0800 Subject: [PATCH 054/654] flesh out {Block, Shape}.mls --- .../src/test/mlscript-compile/Block.mls | 5 +- .../src/test/mlscript-compile/Shape.mls | 78 ++++++++++++------- 2 files changed, 51 insertions(+), 32 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d32ef23f5d..48cd3bb942 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -12,8 +12,7 @@ type Opt[A] = Option[A] // dependancies referenced in Block classes, referencing implementation in Term.mls // TODO: convert these classes to Str -class Ident(val name: Str) // translation of Tree.Ident -class Symbol(val name: Str) +type Ident = Symbol type Literal = null | undefined | Str | Int | Num | Bool class Arg(val spread: Opt[Bool], val value: Path) @@ -34,7 +33,7 @@ class Case with constructor Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) - Tup(val len: Int, val inf: Bool) + Tup(val len: Int, val inf: Bool) // TODO: remove inf? Field(val name: Ident) Wildcard diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index ddccbdfae4..a688490556 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -15,10 +15,18 @@ class Shape with Dyn Lit(val l: Literal) Arr(val shapes: Array[Shape]) // is length parameter needed? - // TODO: change sym to accept multiple possible class symbols + // TODO: change sym to accept multiple possible class symbols? Class(val sym: Symbol, val shapes: Array[Shape]) Unit +fun isPrimitiveType(sym: Str) = + if sym is + "Str" then true + "Int" then true + "Num" then true + "Bool" then true + else false + fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = if [sym, l] is ["Str", l] and l is Str then true @@ -27,29 +35,37 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = ["Bool", b] and b is Bool then true _ then false +fun zipMrg[A](a: Array[A], b: Array[A]): Array[[A, A]] = + [...Array(a.length).keys()].map((i, _, _) => mrg2(a.at(i), b.at(i))) + // TODO: look at how Array is used fun mrg2(s1: Shape, s2: Shape) = if s1 == s2 then s1 - is Lit(l) and s2 is Class(sym, shapes) - and isPrimitiveTypeOf(sym, l) then Class(sym, shapes) - is Class(sym1, shapes1) and s2 is Class(sym2, shapes2) - and sym1 == sym2 then Class(sym1, ???) - is Arr(s1) and s2 is Arr(s2) - and s1.length == s2.length then Arr(???) - else ??? + is + Lit(l) and s2 is Class(sym, shapes) + and isPrimitiveTypeOf(sym, l) + then Class(sym, shapes) + Class(sym1, s1) and s2 is Class(sym2, s2) + and sym1 == sym2 + then Class(sym1, zipMrg(s1, s2)) + Arr(s1) and s2 is Arr(s2) + and s1.length == s2.length + then Arr(zipMrg(s1, s2)) + else Dyn -fun mrg(s1: Array[Shape]) = ??? +fun mrg(s1: Array[Shape]) = + s1.reduceRight((acc, s, _, _) => mrg2(s, acc)) fun sel(s1: Shape, s2: Shape) = if [s1, s2] is - [Class(c, shapes), Lit(n)] // n_i ? - and n is Int then shapes.n - [Dyn, Lit(n)] // n_i ? - and n is Int then Dyn + [Class(c, shapes), Lit(n)] + and n is Str then shapes.at(n) // field name election using Str? + [Dyn, Lit(n)] + and n is Str then Dyn [Arr(shapes), Lit(n)] - and n is Int then shapes.n + and n is Int then shapes.at(n) [Dyn, Lit(n)] - and n is Int then Dyn + and n is Int then Dyn [Dyn, Dyn] then Dyn _ then ??? @@ -57,31 +73,35 @@ fun static(s: Shape) = if s == Dyn then false is - Lit then true - Class then false - _ then ??? + Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? + Class(_, shapes) then shapes.every((s, _, _) => static(s)) + Arr(shapes) then shapes.every((s, _, _) => static(s)) +type SLit = Lit open Block fun silh(p: Case): Shape = if p is - Lit(l) then Shape.Lit(l) + Lit(l) then SLit(l) // where to store size of argument array? - Class(sym, path) then Shape.Class(sym, ???) + Cls(sym, path) then Class(sym, ???) // how to initialize array of Dyn? - Tup(n, inf) then Shape.Arr(???) + Tup(n, inf) then Arr(Array(n).fill(Dyn)) Field(name) then ??? Wildcard then Dyn fun match(s: Shape, p: Case): Option[Bool] = if [s, p] is - [Shape.Lit(l1), Lit(l2)] then Some(true) - [Shape.Lit(l), Class(c)] and isPrimitiveTypeOf(c, l) then Some(true) - [Shape.Class(c1, _), Class(c2)] and c1 == c2 then Some(true) - [Shape.Arr(ls), Tup(n, inf)] and ls.length == n then Some(true) - [_, Wildcard] then Some(true) + [Lit(l1), Lit(l2)] then Some(true) + [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then Some(true) + [Class(c1, _), Cls(c2, _)] and c1 == c2 then Some(true) + [Arr(ls), Tup(n, inf)] and ls.length == n then Some(true) + [_, Block.Wildcard] then Some(true) [Shape.Dyn, _] then None _ then Some(false) -fun det(s: Shape, ps: Array[Case]): Option[Bool] = - val a = ps.map(p => match(s, p) is Some(true)) - return ??? +fun det(s: Shape, ps: Array[Case]): Bool = + ps.every((p, i, a) => + if i != ps.length - 1 + then match(s, p) == Some(false) + else match(s, p) == Some(true) + ) From 1c5fc1aa9bd7776600b9fbb1735625cd45efe1fd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:13:04 +0800 Subject: [PATCH 055/654] formatting --- .../scala/hkmc2/codegen/Instrumentation.scala | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index bb04d5faee..8542aeba09 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -109,25 +109,24 @@ class Instrumentation(using State): mlsTuple(ps): tup => mlsShapeMod("det", Ls(s, tup))(k) - // helpers for instrumenting functions + // helpers for instrumenting functions def inst(f: StagedPath, args: Ls[StagedPath]): StagedPath = - if ??? then + if ??? then // non-staged function ??? - else - // staged function + else + // staged function ??? def instGlobal(f: StagedPath, args: Ls[StagedPath])(k: StagedPath => Block): Block = def isFunction(p: Path) = ??? - if isFunction(f.p) then - k(inst(???, args)) - else + if isFunction(f.p) then k(inst(???, args)) + else mlsShape("Dyn", Ls()): sp => mlsCall(f.p, args.map(_.p), ???): cde => StagedPath.mk(sp, cde)(k) - + // instrumentation rules def ruleLit(l: Literal)(k: StagedPath => Block): Block = @@ -172,7 +171,7 @@ class Instrumentation(using State): def ruleRefinedPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = ??? - // .apply is Call? + // .apply is Call? def ruleApp(c: Call)(using Context)(k: StagedPath => Block): Block = val Call(fun, args) = c transformPath(fun): f => @@ -200,7 +199,7 @@ class Instrumentation(using State): transformPath(p): x => ??? - def ruleAssign(a: Assign)(using Context)(k: StagedPath => Block): Block = + def ruleAssign(a: Assign)(using Context)(k: StagedPath => Block): Block = val Assign(x, r, b) = a transformResult(r): y => (Assign(x, y.p, _)): @@ -221,11 +220,11 @@ class Instrumentation(using State): // TODO: valdefn needs to be before code blocks somehow? // y is StagedPath, not Path? (Define(ValDefn(tsym, x, y.p), _)): - mlsBlockMod("ValDefn", Ls(x, y.code)): df => - mlsBlockMod("Define", Ls(df, z.code)): cde => - StagedPath.mk(z.shape, cde)(k) + mlsBlockMod("ValDefn", Ls(x, y.code)): df => + mlsBlockMod("Define", Ls(df, z.code)): cde => + StagedPath.mk(z.shape, cde)(k) - def ruleBlk(b: Block)(using Context)(k: StagedPath => Block): Block = + def ruleBlk(b: Block)(using Context)(k: StagedPath => Block): Block = transformBlock(b): x => fnCompile(x.code)(k) @@ -250,7 +249,7 @@ class Instrumentation(using State): case i: Instantiate => ruleInst(i)(k) case t: Tuple => ruleTup(t)(k) case p: Path => transformPath(p)(k) - case _ : Lambda | _: Record => ??? // not supported + case _: Lambda | _: Record => ??? // not supported def transformArg(a: Arg)(using Context)(k: StagedPath => Block): Block = val Arg(spread, value) = a From 38069b7294e6faee40315a2f384658bcd3b332c5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:30:18 +0800 Subject: [PATCH 056/654] implement ruleMatch --- .../scala/hkmc2/codegen/Instrumentation.scala | 89 +++++++++++++++---- 1 file changed, 74 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 8542aeba09..18b6831b1c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -42,6 +42,17 @@ class Instrumentation(using State): case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) + // TODO: use BlockTransformer.applyListOf? + extension [A](ls: Ls[(A => Block) => Block]) + def collectApply(f: Ls[A] => Block): Block = + // defer applying k while prepending new paths to the list + ls.foldRight((_: Ls[A] => Block)(Nil))((headCont, tailCont) => + k => + headCont: head => + tailCont: tail => + k(head :: tail) + )(f) + // helper for staging the constructors // could use `using` to allow passthrough of names @@ -194,10 +205,67 @@ class Instrumentation(using State): mlsBlockMod("Return", Ls(x.code)): cde => StagedPath.mk(x.shape, cde)(k) - def ruleMatch(m: Match)(using Context)(k: StagedPath => Block): Block = - val Match(p, arms, dflt, b) = m + def ruleMatch(m: Match)(using ctx: Context)(k: StagedPath => Block): Block = + def concat(b1: Block, b2: Block) = b1.mapTail { + case r: Return => r + case _: End => b2 + case _ => ??? + } + + val Match(p, arms, dflt, rest) = m + + val allArms = + // append at the end to make Ls[Opt[Case], Block] + (arms.map((c, b) => + val concatBlock = concat(b, rest) + (k: ((Path, (StagedPath => Block) => Block)) => Block) => + (c match { + // refactor as Opt[Case] + // convert to Block.mls Case + case Case.Lit(lit) => mlsBlockMod("Lit", Ls(Value.Lit(lit))) + case Case.Cls(cls, path) => mlsBlockMod("Cls", Ls(cls, path)) + case Case.Tup(len, inf) => mlsBlockMod("Tup", Ls(len, inf).map(toValue)) + case Case.Field(name, safe) => mlsBlockMod("Field", Ls(toValue(name.name))) + }): patt => + fnSilh(patt): sp => + val newCtx = ctx.clone() + newCtx += p -> sp + k(patt, transformBlock(concatBlock)(using newCtx)) + ) + ::: (dflt match + case S(b) => + val concatBlock = b + Ls((k: ((Path, (StagedPath => Block) => Block)) => Block) => + mlsBlockMod("Wildcard", Ls()): patt => + fnSilh(patt): sp => + val newCtx = ctx.clone() + newCtx += p -> sp + k(patt, transformBlock(concatBlock)(using newCtx)) + ) + case N => Nil + )) + transformPath(p): x => - ??? + allArms.collectApply: arms => + val (patts, blocksCont) = arms.unzip + (arms.zipWithIndex.foldRight(_: Block) { case (((patt, blockCont), i), rest) => + val slice = arms.slice(0, i + 1).map(_._1) + fnDet(x.shape, slice): scrut => + blockCont: block => + val cse = Case.Lit(Tree.BoolLit(false)) -> k(block) + Match(scrut, Ls(cse), S(rest), End()) + }): + // staged block + blocksCont.collectApply: xs => + val (sps, cdes) = xs.map(xi => (xi.shape, xi.code)).unzip + fnMrg(sps): s => + (patts + .zip(cdes) + .foldRight(mlsBlockMod("End", Ls())) { case ((patt, cde), restCont) => + (k: Path => Block) => + restCont: rest => + mlsBlockMod("Match", Ls(x.code, patt, cde, rest))(k) + })(StagedPath.mk(s, _)(k)) def ruleAssign(a: Assign)(using Context)(k: StagedPath => Block): Block = val Assign(x, r, b) = a @@ -259,18 +327,9 @@ class Instrumentation(using State): // provides list of shapes and list of codes to continuation def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = - // TODO: use BlockTransformer.applyListOf? - args - .map(transformArg) - // defer applying k while prepending new paths to the list - .foldRight((_: Ls[StagedPath] => Block)(Nil))((pathCont, restCont) => - k => - pathCont: p => - restCont: rest => - k(p :: rest) - )(k) - - def transformDefine(d: Define)(using Context)(k: StagedPath => Block): Block = + args.map(transformArg).collectApply(k) + + def transformDefine(d: Define)(using Context)(k: StagedPath => Block): Block = d.defn match case f: FunDefn => ??? case v: ValDefn => ruleVal(v, d.rest)(k) From f1a209bdb3741cd363b1ebc290d33166647d1b75 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:30:53 +0800 Subject: [PATCH 057/654] remove Label from Block.mls --- hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 1 - hkmc2/shared/src/test/mlscript-compile/Block.mls | 1 - 2 files changed, 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 18b6831b1c..e759e5a0ee 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -342,5 +342,4 @@ class Instrumentation(using State): case a: Assign => ruleAssign(a)(k) case d: Define => transformDefine(d)(k) case End(_) => ruleEnd()(k) - case l: Label => ??? case _ => ??? // not supported diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 48cd3bb942..9c9c51e71d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -57,6 +57,5 @@ class Block with Match(val scrut: Path, val arms: Array[Case -> Block], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) - Label(val lavel: Symbol, val body: Block, val rest: Block) // unused? Define(val defn: Defn, val rest: Block) End() From 55f4fa1afeb8cd18ef651b24ea05e598a7217d69 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:22:16 +0800 Subject: [PATCH 058/654] rename helpers --- .../scala/hkmc2/codegen/Instrumentation.scala | 96 +++++++++++-------- .../src/test/mlscript-compile/Block.mls | 4 + 2 files changed, 58 insertions(+), 42 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index e759e5a0ee..12b9c3adde 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -53,7 +53,7 @@ class Instrumentation(using State): k(head :: tail) )(f) - // helper for staging the constructors + // helpers corresponding to constructors // could use `using` to allow passthrough of names def assign(res: Result, name: String = "tmp")(k: Path => Block): Assign = @@ -61,17 +61,6 @@ class Instrumentation(using State): val tmp = new TempSymbol(N, name) Assign(tmp, res, k(tmp.asPath)) - def mlsBlockMod(nme: String, args: Ls[PathLike])(k: Path => Block): Block = - val s = summon[State].blockSymbol.asPath.selSN(nme) - assign(Instantiate(false, s, args.map(asArg)))(k) - def mlsShapeMod(nme: String, args: Ls[PathLike])(k: Path => Block): Block = - val s = summon[State].shapeSymbol.asPath.selSN(nme) - assign(Instantiate(false, s, args.map(asArg)))(k) - def mlsShape(nme: String, args: Ls[PathLike])(k: Shape => Block): Block = - mlsShapeMod(nme, args)(p => k(Shape(p))) - - // helpers corresponding to constructors - def mlsSelect(qual: Path, ident: Tree.Ident)(k: Path => Block): Block = // unnecessary assignment? assign(Select(qual, ident)(N))(k) @@ -80,9 +69,28 @@ class Instrumentation(using State): // is this the same as "Ls of"? assign(Tuple(false, elems.map(asArg)))(k) - def mlsCall(fun: Path, args: Ls[PathLike], isMlsFun: Bool)(k: Path => Block): Block = + // helper for staging the constructors + + def blockMod(name: String) = summon[State].blockSymbol.asPath.selSN(name) + def shapeMod(name: String) = summon[State].shapeSymbol.asPath.selSN(name) + + def ctor(cls: Path, args: Ls[PathLike])(k: Path => Block): Block = + assign(Instantiate(false, cls, args.map(asArg)))(k) + + // isMlsFun is probably always true? + def call(fun: Path, args: Ls[PathLike], isMlsFun: Bool = true)(k: Path => Block): Block = assign(Call(fun, args.map(asArg))(isMlsFun, false))(k) + def blockCtor(name: String, args: Ls[PathLike])(k: Path => Block): Block = + ctor(blockMod(name), args)(k) + def shapeCtor(name: String, args: Ls[PathLike])(k: Shape => Block): Block = + ctor(shapeMod(name), args)(p => k(Shape(p))) + + def blockCall(name: String, args: Ls[PathLike])(k: Path => Block): Block = + call(blockMod(name), args)(k) + def shapeCall(name: String, args: Ls[PathLike])(k: Path => Block): Block = + call(shapeMod(name), args)(k) + // helpers to create and access the components of a staged value case class Shape(p: Path) @@ -103,22 +111,26 @@ class Instrumentation(using State): // linking functions defined in MLscipt + def fnPrintCode(p: Path)(k: Path => Block): Block = + blockCall("printCode", Ls(p))(k) + def applyCompile(r: Path)(k: Path => Block): Block = + blockCall("compile", Ls(r))(k) def fnMrg(shapes: Ls[Shape])(k: Shape => Block): Block = - mlsShapeMod("mrg", shapes)(s => k(Shape(s))) + shapeCall("mrg", shapes)(s => k(Shape(s))) // TODO: make fnSilh take in a wrapped Path type def fnSilh(pattern: Path)(k: Shape => Block) = - mlsShapeMod("silh", Ls(pattern))(s => k(Shape(s))) + shapeCall("silh", Ls(pattern))(s => k(Shape(s))) def fnMatch(s: Shape, pat: Path)(k: Path => Block) = - mlsShapeMod("match", Ls(s, pat))(k) + shapeCall("match", Ls(s, pat))(k) def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = - mlsShapeMod("sel", Ls(s1, s2))(s => k(Shape(s))) + shapeCall("sel", Ls(s1, s2))(s => k(Shape(s))) def fnStatic(s: Shape)(k: Path => Block) = - mlsShapeMod("static", Ls(s))(k) + shapeCall("static", Ls(s))(k) def fnCompile(x: Path)(k: StagedPath => Block): Block = - mlsShapeMod("compile", Ls(x))(p => k(StagedPath(p))) + shapeCall("compile", Ls(x))(p => k(StagedPath(p))) def fnDet(s: Shape, ps: Ls[PathLike])(k: Path => Block): Block = mlsTuple(ps): tup => - mlsShapeMod("det", Ls(s, tup))(k) + shapeCall("det", Ls(s, tup))(k) // helpers for instrumenting functions @@ -134,22 +146,22 @@ class Instrumentation(using State): def isFunction(p: Path) = ??? if isFunction(f.p) then k(inst(???, args)) else - mlsShape("Dyn", Ls()): sp => - mlsCall(f.p, args.map(_.p), ???): cde => + shapeCtor("Dyn", Ls()): sp => + call(f.p, args.map(_.p), ???): cde => StagedPath.mk(sp, cde)(k) // instrumentation rules def ruleLit(l: Literal)(k: StagedPath => Block): Block = - mlsShape("Lit", Ls(Value.Lit(l))): sp => - mlsBlockMod("Lit", Ls(Value.Lit(l))): cde => + shapeCtor("Lit", Ls(Value.Lit(l))): sp => + blockCtor("ValueLit", Ls(Value.Lit(l))): cde => StagedPath.mk(sp, cde)(k) def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = // why assume it is already staged? val sp = StagedPath(r) // why not just use sp.code? - mlsBlockMod("ValueRef", Ls(toValue(r.l.nme))): cde => + blockCtor("ValueRef", Ls(toValue(r.l.nme))): cde => StagedPath.mk(sp.shape, cde)(k) def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = @@ -158,7 +170,7 @@ class Instrumentation(using State): transformArgs(elems): xs => mlsTuple(xs.map(_.shape)): shapes => - mlsShape("Arr", Ls(shapes)): sp => + shapeCtor("Arr", Ls(shapes)): sp => mlsTuple(xs.map(_.code)): cde => // is Tuple quotes as well? StagedPath.mk(sp, cde)(k) @@ -177,7 +189,7 @@ class Instrumentation(using State): transformPath(qual): x => transformPath(path): y => fnSel(x.shape, y.shape): sp => - mlsBlockMod("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => + blockCtor("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => StagedPath.mk(sp, cde)(k) def ruleRefinedPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = ??? @@ -196,13 +208,13 @@ class Instrumentation(using State): transformArgs(args): xs => mlsTuple(xs.map(_.shape)): shapes => mlsTuple(xs.map(_.code)): codes => - mlsShape("Class", Ls(cls, shapes)): sp => - mlsBlockMod("Instantiate", Ls(cls, codes)): cde => + shapeCtor("Class", Ls(cls, shapes)): sp => + blockCtor("Instantiate", Ls(cls, codes)): cde => StagedPath.mk(sp, cde)(k) def ruleReturn(r: Return)(using Context)(k: StagedPath => Block): Block = transformResult(r.res): x => - mlsBlockMod("Return", Ls(x.code)): cde => + blockCtor("Return", Ls(x.code)): cde => StagedPath.mk(x.shape, cde)(k) def ruleMatch(m: Match)(using ctx: Context)(k: StagedPath => Block): Block = @@ -222,10 +234,10 @@ class Instrumentation(using State): (c match { // refactor as Opt[Case] // convert to Block.mls Case - case Case.Lit(lit) => mlsBlockMod("Lit", Ls(Value.Lit(lit))) - case Case.Cls(cls, path) => mlsBlockMod("Cls", Ls(cls, path)) - case Case.Tup(len, inf) => mlsBlockMod("Tup", Ls(len, inf).map(toValue)) - case Case.Field(name, safe) => mlsBlockMod("Field", Ls(toValue(name.name))) + case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit))) + case Case.Cls(cls, path) => blockCtor("Cls", Ls(cls, path)) + case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue)) + case Case.Field(name, safe) => blockCtor("Field", Ls(toValue(name.name))) }): patt => fnSilh(patt): sp => val newCtx = ctx.clone() @@ -236,7 +248,7 @@ class Instrumentation(using State): case S(b) => val concatBlock = b Ls((k: ((Path, (StagedPath => Block) => Block)) => Block) => - mlsBlockMod("Wildcard", Ls()): patt => + blockCtor("Wildcard", Ls()): patt => fnSilh(patt): sp => val newCtx = ctx.clone() newCtx += p -> sp @@ -261,10 +273,10 @@ class Instrumentation(using State): fnMrg(sps): s => (patts .zip(cdes) - .foldRight(mlsBlockMod("End", Ls())) { case ((patt, cde), restCont) => + .foldRight(blockCtor("End", Ls())) { case ((patt, cde), restCont) => (k: Path => Block) => restCont: rest => - mlsBlockMod("Match", Ls(x.code, patt, cde, rest))(k) + blockCtor("Match", Ls(x.code, patt, cde, rest))(k) })(StagedPath.mk(s, _)(k)) def ruleAssign(a: Assign)(using Context)(k: StagedPath => Block): Block = @@ -273,12 +285,12 @@ class Instrumentation(using State): (Assign(x, y.p, _)): transformBlock(b): z => // need to wrap x with Symbol? - mlsBlockMod("Assign", Ls(x, y.code, z.code)): cde => + blockCtor("Assign", Ls(x, y.code, z.code)): cde => StagedPath.mk(z.shape, cde)(k) def ruleEnd()(k: StagedPath => Block): Block = - mlsShape("Unit", Ls()): sp => - mlsBlockMod("End", Ls()): cde => + shapeCtor("Unit", Ls()): sp => + blockCtor("End", Ls()): cde => StagedPath.mk(sp, cde)(k) def ruleVal(defn: ValDefn, b: Block)(using Context)(k: StagedPath => Block): Block = @@ -288,8 +300,8 @@ class Instrumentation(using State): // TODO: valdefn needs to be before code blocks somehow? // y is StagedPath, not Path? (Define(ValDefn(tsym, x, y.p), _)): - mlsBlockMod("ValDefn", Ls(x, y.code)): df => - mlsBlockMod("Define", Ls(df, z.code)): cde => + blockCtor("ValDefn", Ls(x, y.code)): df => + blockCtor("Define", Ls(df, z.code)): cde => StagedPath.mk(z.shape, cde)(k) def ruleBlk(b: Block)(using Context)(k: StagedPath => Block): Block = diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 9c9c51e71d..9f6dad1b91 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -59,3 +59,7 @@ class Block with Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) End() + +fun printCode(p: Block) = ??? + +fun compile(p: Block) = ??? \ No newline at end of file From 124232f7012d47dab5304c9f4c753567c9e9ec0e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:33:11 +0800 Subject: [PATCH 059/654] update Block.mls --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 9f6dad1b91..534fe777ac 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -11,11 +11,10 @@ type Opt[A] = Option[A] // dependancies referenced in Block classes, referencing implementation in Term.mls -// TODO: convert these classes to Str type Ident = Symbol type Literal = null | undefined | Str | Int | Num | Bool -class Arg(val spread: Opt[Bool], val value: Path) +class Arg(val spread: Opt[Bool], val value: Path) // unused type ParamList = Array[Symbol] @@ -39,18 +38,19 @@ class Case with class Result with constructor + // unused? TrivialResult(val path: Path) // only Path extends TrivialResult - Call(val _fun: Path, val args: Array[Arg])(isMlsFun: Bool, mayRaiseEffects: Bool) + Call(val _fun: Path, val args: Array[Arg]) Instantiate(val cls: Path, val args: Array[Arg]) // assume immutable Tuple(val elems: Array[Arg]) // assume immutable class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) - ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) + ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) -class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[Symbol -> Symbol]) +class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[Symbol -> Symbol]) // unused class Block with constructor From 7c8f3d9e059cc71d6952158a0c9cb45aa0e7b3c1 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:39:44 +0800 Subject: [PATCH 060/654] adapt NeilKleistGao's example code --- .../scala/hkmc2/codegen/Instrumentation.scala | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 12b9c3adde..bb7f12798b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -333,8 +333,6 @@ class Instrumentation(using State): def transformArg(a: Arg)(using Context)(k: StagedPath => Block): Block = val Arg(spread, value) = a - ??? // arg has no shape of its own? it's just a wrapper for Path - transformPath(value)(k) // provides list of shapes and list of codes to continuation @@ -343,9 +341,18 @@ class Instrumentation(using State): def transformDefine(d: Define)(using Context)(k: StagedPath => Block): Block = d.defn match - case f: FunDefn => ??? + case f @ FunDefn(owner, sym, parameters, body) => + val genSym = BlockMemberSymbol("gen", Nil, true) // TODO: reuse original function name? + val b = transformBlock(d.rest): res => + // TODO: remove it. only for test + // TODO: put correct parameters instead of Nil + call(genSym.asPath, Nil): ret => + blockCall("printCode", Ls(StagedPath(ret).code)): _ => // discard result, we only care about side effect + res.end + val rest = Define(FunDefn(owner, genSym, parameters, transformBlock(body)(_.end)), b) + Define(f, rest) case v: ValDefn => ruleVal(v, d.rest)(k) - case c: ClsLikeDefn => ??? + case c: ClsLikeDefn => ??? // nested class? def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = b match @@ -355,3 +362,8 @@ class Instrumentation(using State): case d: Define => transformDefine(d)(k) case End(_) => ruleEnd()(k) case _ => ??? // not supported + + def transformProgram(prog: Program)(): Program = + // TODO imports + ??? // use ruleCls and ruleBlock here + Program(prog.imports, transformBlock(prog.main)(using new Context())(_.end)) From 6997e89ef5ea80d3a79235a7985cfe63c229708e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 3 Nov 2025 23:56:06 +0800 Subject: [PATCH 061/654] rename helpers --- .../scala/hkmc2/codegen/Instrumentation.scala | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index bb7f12798b..9021b5dc38 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -61,19 +61,14 @@ class Instrumentation(using State): val tmp = new TempSymbol(N, name) Assign(tmp, res, k(tmp.asPath)) - def mlsSelect(qual: Path, ident: Tree.Ident)(k: Path => Block): Block = - // unnecessary assignment? - assign(Select(qual, ident)(N))(k) + def select(qual: Path, ident: Tree.Ident): Path = + // do we need to call assign here? it's already a path anyways + Select(qual, ident)(N) - def mlsTuple(elems: Ls[PathLike])(k: Path => Block): Block = + def tuple(elems: Ls[PathLike])(k: Path => Block): Block = // is this the same as "Ls of"? assign(Tuple(false, elems.map(asArg)))(k) - // helper for staging the constructors - - def blockMod(name: String) = summon[State].blockSymbol.asPath.selSN(name) - def shapeMod(name: String) = summon[State].shapeSymbol.asPath.selSN(name) - def ctor(cls: Path, args: Ls[PathLike])(k: Path => Block): Block = assign(Instantiate(false, cls, args.map(asArg)))(k) @@ -81,6 +76,11 @@ class Instrumentation(using State): def call(fun: Path, args: Ls[PathLike], isMlsFun: Bool = true)(k: Path => Block): Block = assign(Call(fun, args.map(asArg))(isMlsFun, false))(k) + // helper for staging the constructors + + def blockMod(name: String) = summon[State].blockSymbol.asPath.selSN(name) + def shapeMod(name: String) = summon[State].shapeSymbol.asPath.selSN(name) + def blockCtor(name: String, args: Ls[PathLike])(k: Path => Block): Block = ctor(blockMod(name), args)(k) def shapeCtor(name: String, args: Ls[PathLike])(k: Shape => Block): Block = @@ -102,7 +102,7 @@ class Instrumentation(using State): object StagedPath: def mk(shape: Shape, code: Path)(k: StagedPath => Block): Block = - mlsTuple(Ls(shape.p, code))(p => k(StagedPath(p))) + tuple(Ls(shape.p, code))(p => k(StagedPath(p))) // in some cases this can reduce the indentation level def mk(shapeCont: (Shape => Block) => Block, codeCont: (Path => Block) => Block)(k: StagedPath => Block): Block = shapeCont: shape => @@ -129,7 +129,7 @@ class Instrumentation(using State): def fnCompile(x: Path)(k: StagedPath => Block): Block = shapeCall("compile", Ls(x))(p => k(StagedPath(p))) def fnDet(s: Shape, ps: Ls[PathLike])(k: Path => Block): Block = - mlsTuple(ps): tup => + tuple(ps): tup => shapeCall("det", Ls(s, tup))(k) // helpers for instrumenting functions @@ -169,9 +169,9 @@ class Instrumentation(using State): assert(!mut) transformArgs(elems): xs => - mlsTuple(xs.map(_.shape)): shapes => + tuple(xs.map(_.shape)): shapes => shapeCtor("Arr", Ls(shapes)): sp => - mlsTuple(xs.map(_.code)): cde => // is Tuple quotes as well? + tuple(xs.map(_.code)): cde => // is Tuple quotes as well? StagedPath.mk(sp, cde)(k) def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = @@ -181,7 +181,7 @@ class Instrumentation(using State): // val n = Shape(Value.Ref(new TempSymbol(N, name))) val n = ??? fnSel(x.shape, n): sp => - mlsSelect(x.code, i): cde => + select(x.code, i): cde => StagedPath.mk(sp, cde)(k) def ruleDynSel(d: DynSelect)(using Context)(k: StagedPath => Block): Block = @@ -206,8 +206,8 @@ class Instrumentation(using State): assert(!mut) transformArgs(args): xs => - mlsTuple(xs.map(_.shape)): shapes => - mlsTuple(xs.map(_.code)): codes => + tuple(xs.map(_.shape)): shapes => + tuple(xs.map(_.code)): codes => shapeCtor("Class", Ls(cls, shapes)): sp => blockCtor("Instantiate", Ls(cls, codes)): cde => StagedPath.mk(sp, cde)(k) From 36abad1e4d37d15f6de62a70134dfd5b131a79c1 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 4 Nov 2025 00:50:15 +0800 Subject: [PATCH 062/654] refactor ruleMatch --- .../scala/hkmc2/codegen/Instrumentation.scala | 88 ++++++++----------- 1 file changed, 37 insertions(+), 51 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 9021b5dc38..3c81fcf070 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -223,61 +223,47 @@ class Instrumentation(using State): case _: End => b2 case _ => ??? } + def transformCase(cse: Opt[Case])(k: Path => Block): Block = + cse match + case S(Case.Lit(lit)) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) + case S(Case.Cls(cls, path)) => blockCtor("Cls", Ls(cls, path))(k) + case S(Case.Tup(len, inf)) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) + case S(Case.Field(name, safe)) => blockCtor("Field", Ls(toValue(name.name)))(k) + case N => blockCtor("Wildcard", Ls())(k) val Match(p, arms, dflt, rest) = m - val allArms = - // append at the end to make Ls[Opt[Case], Block] - (arms.map((c, b) => - val concatBlock = concat(b, rest) - (k: ((Path, (StagedPath => Block) => Block)) => Block) => - (c match { - // refactor as Opt[Case] - // convert to Block.mls Case - case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit))) - case Case.Cls(cls, path) => blockCtor("Cls", Ls(cls, path)) - case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue)) - case Case.Field(name, safe) => blockCtor("Field", Ls(toValue(name.name))) - }): patt => - fnSilh(patt): sp => - val newCtx = ctx.clone() - newCtx += p -> sp - k(patt, transformBlock(concatBlock)(using newCtx)) - ) - ::: (dflt match - case S(b) => - val concatBlock = b - Ls((k: ((Path, (StagedPath => Block) => Block)) => Block) => - blockCtor("Wildcard", Ls()): patt => - fnSilh(patt): sp => - val newCtx = ctx.clone() - newCtx += p -> sp - k(patt, transformBlock(concatBlock)(using newCtx)) - ) - case N => Nil - )) - transformPath(p): x => - allArms.collectApply: arms => - val (patts, blocksCont) = arms.unzip - (arms.zipWithIndex.foldRight(_: Block) { case (((patt, blockCont), i), rest) => - val slice = arms.slice(0, i + 1).map(_._1) - fnDet(x.shape, slice): scrut => - blockCont: block => - val cse = Case.Lit(Tree.BoolLit(false)) -> k(block) - Match(scrut, Ls(cse), S(rest), End()) - }): - // staged block - blocksCont.collectApply: xs => - val (sps, cdes) = xs.map(xi => (xi.shape, xi.code)).unzip - fnMrg(sps): s => - (patts - .zip(cdes) - .foldRight(blockCtor("End", Ls())) { case ((patt, cde), restCont) => - (k: Path => Block) => - restCont: rest => - blockCtor("Match", Ls(x.code, patt, cde, rest))(k) - })(StagedPath.mk(s, _)(k)) + (arms.map((c, b) => (S(c), b)) ++ (dflt.map((N, _)))) + .map: (c, b) => + val concatBlock = concat(b, rest) + (k: (((Path, (StagedPath => Block) => Block)) => Block)) => + transformCase(c): patt => + fnSilh(patt): sp => + val newCtx = ctx.clone() += (p -> sp) + val blockCont = transformBlock(concatBlock)(using newCtx) + k(patt, blockCont) + .collectApply: arms => + // we need to duplicate the blocks anyways, so it's fine that blocksCont gets evaluated twice + val (patts, blocksCont) = arms.unzip + (arms.zipWithIndex.foldRight(_: Block) { case (((patt, blockCont), i), rest) => + val slice = arms.slice(0, i + 1).map(_._1) + fnDet(x.shape, slice): scrut => + blockCont: block => + val cse = Case.Lit(Tree.BoolLit(false)) -> k(block) + Match(scrut, Ls(cse), S(rest), End()) + }): + // staged block + blocksCont.collectApply: xs => + val (shapes, codes) = xs.map(xi => (xi.shape, xi.code)).unzip + fnMrg(shapes): s => + (patts + .zip(codes) + .foldRight(blockCtor("End", Ls())) { case ((patt, cde), restCont) => + (k: Path => Block) => + restCont: rest => + blockCtor("Match", Ls(x.code, patt, cde, rest))(k) + })(StagedPath.mk(s, _)(k)) def ruleAssign(a: Assign)(using Context)(k: StagedPath => Block): Block = val Assign(x, r, b) = a From 64960a87cb227a5ed16590f529efb63d0bb418c8 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 4 Nov 2025 00:52:05 +0800 Subject: [PATCH 063/654] fix ruleTup --- hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 3c81fcf070..7c12319454 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -171,7 +171,7 @@ class Instrumentation(using State): transformArgs(elems): xs => tuple(xs.map(_.shape)): shapes => shapeCtor("Arr", Ls(shapes)): sp => - tuple(xs.map(_.code)): cde => // is Tuple quotes as well? + blockCtor("Tuple", xs.map(_.code)): cde => StagedPath.mk(sp, cde)(k) def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = From a264406bd8480e68a66511178878c487944a975c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 4 Nov 2025 00:54:33 +0800 Subject: [PATCH 064/654] reduce supported cases to make mvp --- .../scala/hkmc2/codegen/Instrumentation.scala | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 7c12319454..94ac6a35a4 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -84,7 +84,10 @@ class Instrumentation(using State): def blockCtor(name: String, args: Ls[PathLike])(k: Path => Block): Block = ctor(blockMod(name), args)(k) def shapeCtor(name: String, args: Ls[PathLike])(k: Shape => Block): Block = - ctor(shapeMod(name), args)(p => k(Shape(p))) + // ctor(shapeMod(name), args)(p => k(Shape(p))) + // override handling shape + if name == "Lit" then ctor(shapeMod("Lit"), args)(p => k(Shape(p))) + else ctor(shapeMod("Dyn"), Ls())(p => k(Shape(p))) def blockCall(name: String, args: Ls[PathLike])(k: Path => Block): Block = call(blockMod(name), args)(k) @@ -303,17 +306,18 @@ class Instrumentation(using State): def transformPath(p: Path)(using Context)(k: StagedPath => Block): Block = p match - case s: Select => ruleSel(s)(k) - case d: DynSelect => ruleDynSel(d)(k) + // case s: Select => ruleSel(s)(ruleRefinedPath(_)(k)) + // case d: DynSelect => ruleDynSel(d)(ruleRefinedPath(_)(k)) + // case r: Value.Ref => ruleVar(r)(ruleRefinedPath(_)(k)) case r: Value.Ref => ruleVar(r)(k) case Value.Lit(lit) => ruleLit(lit)(k) case _ => ??? // not supported def transformResult(r: Result)(using Context)(k: StagedPath => Block): Block = r match - case c: Call => ruleApp(c)(k) - case i: Instantiate => ruleInst(i)(k) - case t: Tuple => ruleTup(t)(k) + // case c: Call => ruleApp(c)(k) + // case i: Instantiate => ruleInst(i)(k) + // case t: Tuple => ruleTup(t)(k) case p: Path => transformPath(p)(k) case _: Lambda | _: Record => ??? // not supported @@ -342,9 +346,9 @@ class Instrumentation(using State): def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = b match - case m: Match => ruleMatch(m)(k) + // case m: Match => ruleMatch(m)(k) case r: Return => ruleReturn(r)(k) - case a: Assign => ruleAssign(a)(k) + // case a: Assign => ruleAssign(a)(k) case d: Define => transformDefine(d)(k) case End(_) => ruleEnd()(k) case _ => ??? // not supported From 4ae88977a10eaa94d82ec4702e7647067e566654 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 1 Nov 2025 16:32:57 +0800 Subject: [PATCH 065/654] Update Syntax.mls --- .../src/test/mlscript/staging/Syntax.mls | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index c24dfc0a3a..be4cbbcdc5 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -60,6 +60,45 @@ staged fun f() = 0 //│ rhs = Tup of Nil //│ rhs = S of IntLit of 0 +:js +:lot +:slot +staged module B +//│ Lowered: +//│ Program: +//│ imports = Nil +//│ main = Define: +//│ defn = ClsLikeDefn: +//│ owner = N +//│ isym = class:B +//│ sym = member:B +//│ k = Cls +//│ paramsOpt = N +//│ auxParams = Nil +//│ parentPath = N +//│ methods = Nil +//│ privateFields = Nil +//│ publicFields = Nil +//│ preCtor = End of "" +//│ ctor = Return: +//│ res = Select{object:Unit}: +//│ qual = Ref of $runtime +//│ name = Ident of "Unit" +//│ implct = true +//│ companion = S of ClsLikeBody: +//│ isym = module:B +//│ methods = Nil +//│ privateFields = Nil +//│ publicFields = Nil +//│ ctor = End of "" +//│ staged = true +//│ rest = Assign: \ +//│ lhs = $block$res +//│ rhs = Lit of UnitLit of false +//│ rest = End of "" +//│ Pretty Lowered: +//│ define class B in set block$res = undefined in end + :js :lot :slot From 88c3a5ef60d975d1722a505ca82d190245ee1881 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 4 Nov 2025 19:36:17 +0800 Subject: [PATCH 066/654] move detecting staged annotation to ClsLikeDefn --- .../src/main/scala/hkmc2/codegen/Block.scala | 9 -- .../main/scala/hkmc2/codegen/Lowering.scala | 15 +++- .../main/scala/hkmc2/codegen/Printer.scala | 6 +- .../src/main/scala/hkmc2/semantics/Term.scala | 2 + .../test/mlscript/codegen/FieldSymbols.mls | 2 +- .../src/test/mlscript/staging/Syntax.mls | 90 ++----------------- 6 files changed, 27 insertions(+), 97 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala index b622df8e5e..4ed29658f2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala @@ -340,15 +340,6 @@ final case class FunDefn( body: Block, ) extends Defn: val innerSym = N - var staged = false - - -object FunDefn: - def apply(owner: Opt[InnerSymbol], sym: BlockMemberSymbol, params: Ls[ParamList], body: Block, staged: Boolean): FunDefn = - var f = new FunDefn(owner, sym, params, body) - f.staged = staged - f - final case class ValDefn( tsym: TermSymbol, diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 5b2109f482..edda9dfbbc 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -178,8 +178,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): blockImpl(stats, res)(k))) case syntax.Fun => val (paramLists, bodyBlock) = setupFunctionOrByNameDef(td.params, bod, S(td.sym.nme)) - val isStaged = td.extraAnnotations.contains(Annot.Modifier(syntax.Keyword.`staged`)) - Define(FunDefn(td.owner, td.sym, paramLists, bodyBlock, isStaged), + Define(FunDefn(td.owner, td.sym, paramLists, bodyBlock), blockImpl(stats, res)(k)) case syntax.Ins => // Implicit instances are not parameterized for now. @@ -1027,7 +1026,9 @@ class Lowering()(using Config, TL, Raise, State, Ctx): if lift then Lifter(S(handlerPaths)).transform(flattened) else flattened - val res = MergeMatchArmTransformer.applyBlock(lifted) + val merged = MergeMatchArmTransformer.applyBlock(lifted) + + val res = Instrumentation(using summon).applyBlock(merged) Program( imps.map(imp => imp.sym -> imp.file), @@ -1205,3 +1206,11 @@ object MergeMatchArmTransformer extends BlockTransformer(new SymbolSubst()): k.getOrElse(identity: Block => Block)(Match(scrut, arms ::: newArms, dfltRewritten, rest)) case _ => m case b => b + +class Instrumentation(using Raise) extends BlockTransformer(new SymbolSubst()): + override def applyDefn(d: Defn): Defn = super.applyDefn(d) match + case defn: ClsLikeDefn => + if defn.sym.defn.exists(_.hasStagedModifier.isDefined) + then raise(WarningReport(msg"`staged` keyword doesn't do anything currently." -> defn.sym.toLoc :: Nil)) + defn + case b => b \ No newline at end of file diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index a93b8f0fc3..d6a476b37d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -63,8 +63,7 @@ object Printer: case fd @ FunDefn(own, sym, params, body) => val docParams = doc"${own.fold("")(_.toString+"::")}${params.map(_.params.map(x => summon[Scope].allocateName(x.sym)).mkString("(", ", ", ")")).mkString("")}" val docBody = mkDocument(body) - val docStaged = if fd.staged then doc"staged " else doc"" - doc"${docStaged}fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" + doc"fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" case ValDefn(tsym, sym, rhs) => doc"val ${tsym.nme} = ${mkDocument(rhs)}" case ClsLikeDefn(own, _, sym, k, paramsOpt, auxParams, parentSym, methods, @@ -83,7 +82,8 @@ object Printer: val docPubFlds = if publicFields.isEmpty then doc"" else doc" # ${pubFields}" val docBody = if publicFields.isEmpty && privateFields.isEmpty then doc"" else doc" { #{ ${docPrivFlds}${docPubFlds} #} # }" val docCtorParams = if clsParams.isEmpty then doc"" else doc"(${ctorParams.mkString(", ")})" - doc"class ${own.fold("")(_.toString+"::")}${sym.nme}${docCtorParams}${docBody}" + val docStaged = if !sym.defn.exists(_.hasStagedModifier.isDefined) then doc"" else doc"staged " + doc"${docStaged}class ${own.fold("")(_.toString+"::")}${sym.nme}${docCtorParams}${docBody}" def mkDocument(arg: Arg)(using Raise, Scope): Document = val doc = mkDocument(arg.value) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala index 98c6a15298..42ae9eb350 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala @@ -676,6 +676,8 @@ sealed abstract class Definition extends Declaration, Statement: val annotations: Ls[Annot] def hasDeclareModifier: Opt[Annot.Modifier] = annotations.collectFirst: case mod @ Annot.Modifier(Keyword.`declare`) => mod + def hasStagedModifier: Opt[Annot.Modifier] = annotations.collectFirst: + case mod @ Annot.Modifier(Keyword.`staged`) => mod sealed trait CompanionValue extends Definition diff --git a/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls b/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls index 867c672bcf..702afdc8d7 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls @@ -90,7 +90,7 @@ case //│ Program: //│ imports = Nil //│ main = Define: -//│ defn = FunDefn (staged=false): +//│ defn = FunDefn: //│ owner = N //│ sym = member:lambda //│ params = Ls of diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index be4cbbcdc5..dce73de7dc 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -1,33 +1,15 @@ :pt -staged module A with - fun f(x) = x -A.f(1) +staged module A //│ Parsed tree: //│ Modified: //│ modifier = Keywrd of keyword 'staged' //│ body = TypeDef: //│ k = Mod -//│ head = InfixApp: -//│ lhs = Ident of "A" -//│ kw = keyword 'with' -//│ rhs = Block of Ls of -//│ TermDef: -//│ k = Fun -//│ head = App: -//│ lhs = Ident of "f" -//│ rhs = Tup of Ls of -//│ Ident of "x" -//│ rhs = S of Ident of "x" +//│ head = Ident of "A" //│ rhs = N -//│ App: -//│ lhs = Sel: -//│ prefix = Ident of "A" -//│ name = Ident of "f" -//│ rhs = Tup of Ls of -//│ IntLit of 1 -// TODO: reject these annotations +// TODO: reject these annotations? :pt staged object Foo //│ Parsed tree: @@ -61,66 +43,12 @@ staged fun f() = 0 //│ rhs = S of IntLit of 0 :js -:lot :slot -staged module B -//│ Lowered: -//│ Program: -//│ imports = Nil -//│ main = Define: -//│ defn = ClsLikeDefn: -//│ owner = N -//│ isym = class:B -//│ sym = member:B -//│ k = Cls -//│ paramsOpt = N -//│ auxParams = Nil -//│ parentPath = N -//│ methods = Nil -//│ privateFields = Nil -//│ publicFields = Nil -//│ preCtor = End of "" -//│ ctor = Return: -//│ res = Select{object:Unit}: -//│ qual = Ref of $runtime -//│ name = Ident of "Unit" -//│ implct = true -//│ companion = S of ClsLikeBody: -//│ isym = module:B -//│ methods = Nil -//│ privateFields = Nil -//│ publicFields = Nil -//│ ctor = End of "" -//│ staged = true -//│ rest = Assign: \ -//│ lhs = $block$res -//│ rhs = Lit of UnitLit of false -//│ rest = End of "" +:w +staged module A +//│ ╔══[WARNING] `staged` keyword doesn't do anything currently. +//│ ║ l.48: staged module A +//│ ╙── ^^^^^^^^ //│ Pretty Lowered: -//│ define class B in set block$res = undefined in end +//│ define staged class A in set block$res = undefined in end -:js -:lot -:slot -staged fun f() = 0 -//│ Lowered: -//│ Program: -//│ imports = Nil -//│ main = Define: -//│ defn = FunDefn (staged=true): -//│ owner = N -//│ sym = member:f -//│ params = Ls of -//│ ParamList: -//│ flags = () -//│ params = Nil -//│ restParam = N -//│ body = Return: -//│ res = Lit of IntLit of 0 -//│ implct = false -//│ rest = Assign: \ -//│ lhs = $block$res -//│ rhs = Lit of UnitLit of false -//│ rest = End of "" -//│ Pretty Lowered: -//│ define staged fun f() { return 0 } in set block$res = undefined in end From 17701b9332d31d2ec67cc6b2aa3bdfe9f1d06f75 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 4 Nov 2025 19:38:47 +0800 Subject: [PATCH 067/654] move importing to diff testing compiler flag --- hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala | 2 -- .../shared/src/main/scala/hkmc2/semantics/Elaborator.scala | 1 + hkmc2/shared/src/test/mlscript-compile/Predef.mjs | 1 - hkmc2/shared/src/test/mlscript-compile/Runtime.mjs | 1 - hkmc2/shared/src/test/mlscript-compile/Shape.mls | 0 .../src/test/scala/hkmc2/JSBackendDiffMaker.scala | 7 ++++++- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 7 +++++-- 7 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/Shape.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala index 54007a0df9..abcbaff56b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala @@ -41,7 +41,6 @@ class MLsCompiler(preludeFile: os.Path, mkOutput: ((Str => Unit) => Unit) => Uni val runtimeFile: os.Path = preludeFile/os.up/os.up/os.up/"mlscript-compile"/"Runtime.mjs" val termFile: os.Path = preludeFile/os.up/os.up/os.up/"mlscript-compile"/"Term.mjs" - val blockFile: os.Path = preludeFile/os.up/os.up/os.up/"mlscript-compile"/"Block.mjs" val report = ReportFormatter: outputConsumer => @@ -88,7 +87,6 @@ class MLsCompiler(preludeFile: os.Path, mkOutput: ((Str => Unit) => Unit) => Uni val blk = new semantics.Term.Blk( semantics.Import(State.runtimeSymbol, runtimeFile.toString) :: semantics.Import(State.termSymbol, termFile.toString) - :: semantics.Import(State.blockSymbol, blockFile.toString) :: blk0.stats, blk0.res ) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index cf1d8f2064..adb65752f5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -224,6 +224,7 @@ object Elaborator: val prettyPrintSymbol = TempSymbol(N, "prettyPrint") val termSymbol = TempSymbol(N, "Term") val blockSymbol = TempSymbol(N, "Block") + val shapeSymbol = TempSymbol(N, "Shape") val effectSigSymbol = ClassSymbol(DummyTypeDef(syntax.Cls), Ident("EffectSig")) val nonLocalRetHandlerTrm = val id = new Ident("NonLocalReturn") diff --git a/hkmc2/shared/src/test/mlscript-compile/Predef.mjs b/hkmc2/shared/src/test/mlscript-compile/Predef.mjs index c43f0fdf6d..d1a8d1fb79 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Predef.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Predef.mjs @@ -2,7 +2,6 @@ const definitionMetadata = globalThis.Symbol.for("mlscript.definitionMetadata"); const prettyPrint = globalThis.Symbol.for("mlscript.prettyPrint"); import runtime from "./Runtime.mjs"; import Term from "./Term.mjs"; -import Block from "./Block.mjs"; import RuntimeJS from "./RuntimeJS.mjs"; import Runtime from "./Runtime.mjs"; import Rendering from "./Rendering.mjs"; diff --git a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs index 250868463e..7b1c3e8013 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs @@ -2,7 +2,6 @@ const definitionMetadata = globalThis.Symbol.for("mlscript.definitionMetadata"); const prettyPrint = globalThis.Symbol.for("mlscript.prettyPrint"); import runtime from "./Runtime.mjs"; import Term from "./Term.mjs"; -import Block from "./Block.mjs"; import RuntimeJS from "./RuntimeJS.mjs"; import Rendering from "./Rendering.mjs"; import LazyArray from "./LazyArray.mjs"; diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls new file mode 100644 index 0000000000..e69de29bb2 diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 6fd0ddc9c1..a450b5c6e1 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -32,6 +32,8 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val runtimeNme = baseScp.allocateName(Elaborator.State.runtimeSymbol) val termNme = baseScp.allocateName(Elaborator.State.termSymbol) + val blockNme = baseScp.allocateName(Elaborator.State.blockSymbol) + val shapeNme = baseScp.allocateName(Elaborator.State.shapeSymbol) val definitionMetadataNme = baseScp.allocateName(Elaborator.State.definitionMetadataSymbol) val prettyPrintNme = baseScp.allocateName(Elaborator.State.prettyPrintSymbol) @@ -57,6 +59,9 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: h.execute(s"const $definitionMetadataNme = Symbol.for(\"mlscript.definitionMetadata\");") h.execute(s"const $prettyPrintNme = Symbol.for(\"mlscript.prettyPrint\");") if importQQ.isSet then importRuntimeModule(termNme, termFile) + if stageCode.isSet then + importRuntimeModule(blockNme, blockFile) + importRuntimeModule(shapeNme, shapeFile) h private var hostCreated = false @@ -113,7 +118,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: ) if showLoweredTree.isSet then output(s"Lowered:") - output(le.showAsTree(using { case fd : hkmc2.codegen.FunDefn => s"staged=${fd.staged}" case _ => ""})) + output(le.showAsTree) // * We used to do this to avoid needlessly generating new variable names in separate blocks: // val nestedScp = baseScp.nest diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index 6c292f2534..a588fb0e72 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -21,6 +21,7 @@ abstract class MLsDiffMaker extends DiffMaker: val runtimeFile: os.Path = predefFile/os.up/"Runtime.mjs" // * Contains MLscript runtime definitions val termFile: os.Path = predefFile/os.up/"Term.mjs" // * Contains MLscript runtime term definitions val blockFile: os.Path = predefFile/os.up/"Block.mjs" // * Contains MLscript runtime block definitions + val shapeFile: os.Path = predefFile/os.up/"Shape.mjs" // * Contains MLscript runtime shape definitions val wd = file / os.up @@ -64,7 +65,7 @@ abstract class MLsDiffMaker extends DiffMaker: val stackSafe = Command("stackSafe")(_.trim) val liftDefns = NullaryCommand("lift") val importQQ = NullaryCommand("qq") - val staging = NullaryCommand("staging") + val stageCode = NullaryCommand("ds") def mkConfig: Config = import Config.* @@ -152,10 +153,12 @@ abstract class MLsDiffMaker extends DiffMaker: given Config = mkConfig processTrees( PrefixApp(Keywrd(`import`), StrLit(termFile.toString)) :: Nil) - if staging.isSet then + if stageCode.isSet then given Config = mkConfig processTrees( PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) + processTrees( + PrefixApp(Keywrd(`import`), StrLit(shapeFile.toString)) :: Nil) super.init() From 5ccb64cc36cb32a442b0e0fa3add00f48958db14 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 4 Nov 2025 20:07:00 +0800 Subject: [PATCH 068/654] revert formatting changes --- hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala | 1 + hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 2 +- hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala index 4ed29658f2..c8b9ccd103 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala @@ -341,6 +341,7 @@ final case class FunDefn( ) extends Defn: val innerSym = N + final case class ValDefn( tsym: TermSymbol, sym: BlockMemberSymbol, diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index edda9dfbbc..f15199fc77 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -62,7 +62,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): tl.trace[Term](s"Expanding term ${r}", post = t => s"~> ${t}"): r.expanded case t => t - + val lowerHandlers: Bool = config.effectHandlers.isDefined val lift: Bool = config.liftDefns.isDefined diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index d6a476b37d..c6637475b6 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -60,8 +60,8 @@ object Printer: case _ => TODO(blk) def mkDocument(defn: Defn)(using Raise, Scope): Document = defn match - case fd @ FunDefn(own, sym, params, body) => - val docParams = doc"${own.fold("")(_.toString+"::")}${params.map(_.params.map(x => summon[Scope].allocateName(x.sym)).mkString("(", ", ", ")")).mkString("")}" + case FunDefn(own, sym, params, body) => + val docParams = doc"${own.fold("")(_.toString+"::")}${params.map(_.params.map(x => summon[Scope].allocateName(x.sym)).mkString("(", ", ", ")")).mkString}" val docBody = mkDocument(body) doc"fun ${sym.nme}${docParams} { #{ # ${docBody} #} # }" case ValDefn(tsym, sym, rhs) => From 980d89c6b02ba4549f17556cd08236f6621d83fc Mon Sep 17 00:00:00 2001 From: Ching Long Tin <26105652+ChingLongTin@users.noreply.github.com> Date: Wed, 5 Nov 2025 18:46:31 +0800 Subject: [PATCH 069/654] Update Printer.scala Co-authored-by: Lionel Parreaux --- hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index c6637475b6..0e94b7aa7f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -82,7 +82,7 @@ object Printer: val docPubFlds = if publicFields.isEmpty then doc"" else doc" # ${pubFields}" val docBody = if publicFields.isEmpty && privateFields.isEmpty then doc"" else doc" { #{ ${docPrivFlds}${docPubFlds} #} # }" val docCtorParams = if clsParams.isEmpty then doc"" else doc"(${ctorParams.mkString(", ")})" - val docStaged = if !sym.defn.exists(_.hasStagedModifier.isDefined) then doc"" else doc"staged " + val docStaged = if sym.defn.forall(_.hasStagedModifier.isEmpty) then doc"" else doc"staged " doc"${docStaged}class ${own.fold("")(_.toString+"::")}${sym.nme}${docCtorParams}${docBody}" def mkDocument(arg: Arg)(using Raise, Scope): Document = From ce1e38ca8911fe1b57032225e1613690a9f72802 Mon Sep 17 00:00:00 2001 From: Ching Long Tin <26105652+ChingLongTin@users.noreply.github.com> Date: Wed, 5 Nov 2025 18:47:50 +0800 Subject: [PATCH 070/654] Update Lowering.scala Co-authored-by: Lionel Parreaux --- hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index f15199fc77..4418a54a81 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -1213,4 +1213,4 @@ class Instrumentation(using Raise) extends BlockTransformer(new SymbolSubst()): if defn.sym.defn.exists(_.hasStagedModifier.isDefined) then raise(WarningReport(msg"`staged` keyword doesn't do anything currently." -> defn.sym.toLoc :: Nil)) defn - case b => b \ No newline at end of file + case b => b From 317c6f6c3a2ae963d064f1ad3b011da396bc1dfe Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 5 Nov 2025 21:14:47 +0800 Subject: [PATCH 071/654] remove redundant :pt --- .../src/test/mlscript/staging/Syntax.mls | 35 +------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index dce73de7dc..733594c96d 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -9,45 +9,12 @@ staged module A //│ head = Ident of "A" //│ rhs = N -// TODO: reject these annotations? -:pt -staged object Foo -//│ Parsed tree: -//│ Modified: -//│ modifier = Keywrd of keyword 'staged' -//│ body = TypeDef: -//│ k = Obj -//│ head = Ident of "Foo" -//│ rhs = N - -:pt -staged class Foo -//│ Parsed tree: -//│ Modified: -//│ modifier = Keywrd of keyword 'staged' -//│ body = TypeDef: -//│ k = Cls -//│ head = Ident of "Foo" -//│ rhs = N - -:pt -staged fun f() = 0 -//│ Parsed tree: -//│ Modified: -//│ modifier = Keywrd of keyword 'staged' -//│ body = TermDef: -//│ k = Fun -//│ head = App: -//│ lhs = Ident of "f" -//│ rhs = Tup of Nil -//│ rhs = S of IntLit of 0 - :js :slot :w staged module A //│ ╔══[WARNING] `staged` keyword doesn't do anything currently. -//│ ║ l.48: staged module A +//│ ║ l.15: staged module A //│ ╙── ^^^^^^^^ //│ Pretty Lowered: //│ define staged class A in set block$res = undefined in end From 9023eecc3bc42ec16a9b9617b19e53ef2206c5c4 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 5 Nov 2025 21:21:01 +0800 Subject: [PATCH 072/654] fix syntax error --- hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 6 +++--- hkmc2/shared/src/test/mlscript/staging/Syntax.mls | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 5e91d08ffe..9bab660436 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -1250,9 +1250,9 @@ object MergeMatchArmTransformer extends BlockTransformer(new SymbolSubst()): case b => b class Instrumentation(using Raise) extends BlockTransformer(new SymbolSubst()): - override def applyDefn(d: Defn): Defn = super.applyDefn(d) match + override def applyDefn(d: Defn)(k: Defn => Block): Block = d match case defn: ClsLikeDefn => if defn.sym.defn.exists(_.hasStagedModifier.isDefined) then raise(WarningReport(msg"`staged` keyword doesn't do anything currently." -> defn.sym.toLoc :: Nil)) - defn - case b => b + super.applyDefn(defn)(k) + case b => super.applyDefn(b)(k) diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index 733594c96d..ee2e0b02be 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -18,4 +18,3 @@ staged module A //│ ╙── ^^^^^^^^ //│ Pretty Lowered: //│ define staged class A in set block$res = undefined in end - From 9fc83dcd6e9317bef07f5fe633e7aa00fb0b90c0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 01:12:36 +0800 Subject: [PATCH 073/654] fix type hint for arms in Match --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 534fe777ac..70c82c9883 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -54,7 +54,7 @@ class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicField class Block with constructor - Match(val scrut: Path, val arms: Array[Case -> Block], val dflt: Opt[Block], val rest: Block) + Match(val scrut: Path, val arms: Array[[Case, Block]], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) From 7b702f344fa1f6a715ff7c6f3b8657a9dfb70626 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 6 Nov 2025 02:36:28 +0800 Subject: [PATCH 074/654] add preliminary printCode function --- .../src/test/mlscript-compile/Block.mls | 180 ++++++++++++++++++ .../test/scala/hkmc2/JSBackendDiffMaker.scala | 2 +- .../src/test/scala/hkmc2/MLsDiffMaker.scala | 4 +- 3 files changed, 184 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index e69de29bb2..13b4457051 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -0,0 +1,180 @@ +import "./Predef.mls" +import "./Option.mls" +import "./StrOps.mls" + +open StrOps +open Predef +open Option + +module Block with... + +type Opt[A] = Option[A] + +// dependancies referenced in Block classes, referencing implementation in Term.mls + +class Symbol(val name: Str) +type Ident = Symbol + +type Literal = null | undefined | Str | Int | Num | Bool +class Arg(val spread: Opt[Bool], val value: Path) // unused + +type ParamList = Array[Symbol] + +// Classes defined in Block.scala + +class Path with + constructor + Select(val qual: Path, val name: Ident) + DynSelect(val qual: Path, val fld: Path, val arrayIdx: Bool) + ValueRef(val l: Symbol) + ValueLit(val lit: Literal) + +// Match pattern for staged code +class Case with + constructor + Lit(val lit: Literal) + Cls(val cls: Symbol, val path: Path) + Tup(val len: Int, val inf: Bool) // TODO: remove inf? + Field(val name: Ident) + Wildcard + +class Result with + constructor + // unused? + TrivialResult(val path: Path) // only Path extends TrivialResult + Call(val _fun: Path, val args: Array[Arg]) + Instantiate(val cls: Path, val args: Array[Arg]) // assume immutable + Tuple(val elems: Array[Arg]) // assume immutable + +class Defn with + constructor + ValDefn(val sym: Symbol, val rhs: Path) + ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused + FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) + +class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused + +class Block with + constructor + Match(val scrut: Path, val arms: Array[[Case, Block]], val dflt: Opt[Block], val rest: Block) + Return(val res: Result, val implct: Bool) + Assign(val lhs: Symbol, val rhs: Result, val rest: Block) + Define(val defn: Defn, val rest: Block) + End() + +fun showBool(b: Bool) = if b then "true" else "false" + +fun showLiteral(l: Literal) = l.toString() + +fun showSymbol(s: Symbol) = "Symbol(" + "\"" + s.name + "\"" + ")" + +fun showIdent(i: Ident) = showSymbol(i) + +fun showPath(p: Path): Str = + if p is + Select(qual, name) then + "Select(" + showPath(qual) + ", " + showIdent(name) + ")" + DynSelect(qual, fld, arrayIdx) then + "DynSelect(" + showPath(qual) + ", " + showPath(fld) + ", " + showBool(arrayIdx) + ")" + ValueRef(l) then + "Ref(" + showSymbol(l) + ")" + ValueLit(lit) then + "Lit(" + showLiteral(lit) + ")" + +fun showArg(a: Arg) = + if a.spread is + Some(true) then "..." + showPath(a.value) + _ then showPath(a.value) + +fun showArgs(args: Array[Arg]) = + "[" + args.map(showArg).joinWith(", ") + "]" + +// Case (match arm patterns) +fun showCase(c: Case): Str = + if c is + Lit(lit) then "Lit(" + showLiteral(lit) + ")" + Cls(cls, path) then "Cls(" + showSymbol(cls) + ", " + showPath(path) + ")" + Tup(len, inf) then "Tup(" + len + ", " + showBool(inf) + ")" + Field(name) then "Field(" + showIdent(name) + ")" + Wildcard then "Wildcard" + +fun showResult(r: Result): Str = + if r is + TrivialResult(path) then showPath(path) + Call(f, args) then "Call(" + showPath(f) + ", " + showArgs(args) + ")" + Instantiate(cls, args) then "Instantiate(" + showPath(cls) + ", " + showArgs(args) + ")" + Tuple(elems) then "Tuple(" + showArgs(elems) + ")" + +fun showParamList(ps: ParamList) = + "[" + ps.map(showSymbol).joinWith(", ") + "]" + +fun showDefn(d: Defn): Str = + if d is + ValDefn(sym, rhs) then + "ValDefn(" + showSymbol(sym) + ", " + showPath(rhs) + ")" + FunDefn(sym, params, body) then + "FunDefn(" + showSymbol(sym) + ", " + + "[" + params.map(showParamList).joinWith(", ") + "], " + + showBlock(body) + ")" + ClsLikeDefn(sym, paramsOpt, companion) then + // minimal, since this is unused in your staged Block for now + "ClsLikeDefn(" + showSymbol(sym) + ")" + +fun showOptBlock(ob: Opt[Block]) = + if ob is Some(b) then showBlock(b) else "None" + +fun showArm(pair: Case -> Block) = + if pair is [cse, body] then showCase(cse) + " -> " + showBlock(body) else "" + +fun showBlock(b: Block): Str = + if b is + Match(scrut, arms, dflt, rest) then + "Match(" + + showPath(scrut) + ", " + + "[" + arms.map(showArm).joinWith(", ") + "], " + + showOptBlock(dflt) + ", " + + showBlock(rest) + ")" + Return(res, implct) then + "Return(" + showResult(res) + ", " + showBool(implct) + ")" + Assign(lhs, rhs, rest) then + "Assign(" + showSymbol(lhs) + ", " + showResult(rhs) + ", " + showBlock(rest) + ")" + Define(defn, rest) then + "Define(" + showDefn(defn) + ", " + showBlock(rest) + ")" + End() then "End" + +fun show(x) = + if x is + Match(_, _, _, _) then showBlock(x) + Return(_, _) then showBlock(x) + Assign(_, _, _) then showBlock(x) + Define(_, _) then showBlock(x) + End() then showBlock(x) + else if x is + Select(_, _) then showPath(x) + DynSelect(_, _, _) then showPath(x) + ValueRef(_) then showPath(x) + ValueLit(_) then showPath(x) + else if x is + TrivialResult(_) then showResult(x) + Call(_, _) then showResult(x) + Instantiate(_, _) then showResult(x) + Tuple(_) then showResult(x) + else if x is + Lit(_) then showCase(x) + Cls(_, _) then showCase(x) + Tup(_, _) then showCase(x) + Field(_) then showCase(x) + Wildcard then showCase(x) + else if x is + ValDefn(_, _) then showDefn(x) + FunDefn(_, _, _) then showDefn(x) + ClsLikeDefn(_, _, _) then showDefn(x) + else if x is + Arg(_, _) then showArg(x) + else if x is + [a, b] then StrOps.concat of "[", show(a), ", ", show(b), "]" + else + "" + + +fun compile(p: Block) = ??? \ No newline at end of file diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 2bf32e5879..3695c08b0f 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -61,7 +61,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: if importQQ.isSet then importRuntimeModule(termNme, termFile) if stageCode.isSet then importRuntimeModule(blockNme, blockFile) - importRuntimeModule(shapeNme, shapeFile) + // importRuntimeModule(shapeNme, shapeFile) h private var hostCreated = false diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index c9ee6dd0f7..ddb8b731ee 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -21,7 +21,7 @@ abstract class MLsDiffMaker extends DiffMaker: val runtimeFile: os.Path = predefFile/os.up/"Runtime.mjs" // * Contains MLscript runtime definitions val termFile: os.Path = predefFile/os.up/"Term.mjs" // * Contains MLscript runtime term definitions val blockFile: os.Path = predefFile/os.up/"Block.mjs" // * Contains MLscript runtime block definitions - val shapeFile: os.Path = predefFile/os.up/"Shape.mjs" // * Contains MLscript runtime shape definitions + // val shapeFile: os.Path = predefFile/os.up/"Shape.mjs" // * Contains MLscript runtime shape definitions val wd = file / os.up @@ -163,8 +163,10 @@ abstract class MLsDiffMaker extends DiffMaker: given Config = mkConfig processTrees( PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) + /* processTrees( PrefixApp(Keywrd(`import`), StrLit(shapeFile.toString)) :: Nil) + */ super.init() From e4d7b227ee3cab3d5a7461ec746cf23468b5ae8d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 16:41:14 +0800 Subject: [PATCH 075/654] move instrumentation to JSBackendDiffMaker --- .../scala/hkmc2/codegen/Instrumentation.scala | 15 +++++++++++++++ .../src/main/scala/hkmc2/codegen/Lowering.scala | 12 +----------- hkmc2/shared/src/test/mlscript/staging/Syntax.mls | 3 ++- .../src/test/scala/hkmc2/JSBackendDiffMaker.scala | 5 ++++- 4 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala new file mode 100644 index 0000000000..3232ad7b09 --- /dev/null +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -0,0 +1,15 @@ +package hkmc2 +package codegen + +import utils.* +import hkmc2.Message.MessageContext + +class Instrumentation(using Raise) extends BlockTransformer(new SymbolSubst()): + def transform(prgm: Program) = Program(prgm.imports, applyBlock(prgm.main)) + + override def applyDefn(d: Defn)(k: Defn => Block): Block = d match + case defn: ClsLikeDefn => + if defn.sym.defn.exists(_.hasStagedModifier.isDefined) && defn.companion.isDefined + then raise(WarningReport(msg"`staged` keyword doesn't do anything currently." -> defn.sym.toLoc :: Nil)) + super.applyDefn(defn)(k) + case b => super.applyDefn(b)(k) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 9bab660436..8d242536df 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -1068,9 +1068,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): val bufferable = BufferableTransform().transform(lifted) - val merged = MergeMatchArmTransformer.applyBlock(bufferable) - - val res = Instrumentation(using summon).applyBlock(merged) + val res = MergeMatchArmTransformer.applyBlock(bufferable) Program( imps.map(imp => imp.sym -> imp.str), @@ -1248,11 +1246,3 @@ object MergeMatchArmTransformer extends BlockTransformer(new SymbolSubst()): k.getOrElse(identity: Block => Block)(Match(scrut, arms ::: newArms, dfltRewritten, rest)) case _ => m case b => b - -class Instrumentation(using Raise) extends BlockTransformer(new SymbolSubst()): - override def applyDefn(d: Defn)(k: Defn => Block): Block = d match - case defn: ClsLikeDefn => - if defn.sym.defn.exists(_.hasStagedModifier.isDefined) - then raise(WarningReport(msg"`staged` keyword doesn't do anything currently." -> defn.sym.toLoc :: Nil)) - super.applyDefn(defn)(k) - case b => super.applyDefn(b)(k) diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index ee2e0b02be..d13ab800c0 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -11,10 +11,11 @@ staged module A :js :slot +:ds :w staged module A //│ ╔══[WARNING] `staged` keyword doesn't do anything currently. -//│ ║ l.15: staged module A +//│ ║ l.16: staged module A //│ ╙── ^^^^^^^^ //│ Pretty Lowered: //│ define staged class A in set block$res = undefined in end diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 2bf32e5879..1d5a5eab06 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -107,7 +107,10 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: new JSBuilder with JSBuilderArgNumSanityChecks val resSym = new TempSymbol(S(blk), "block$res") - val lowered0 = low.program(blk) + val lowered0 = if stageCode.isSet then + val instrumentation = new Instrumentation + instrumentation.transform(low.program(blk)) + else low.program(blk) val le = lowered0.copy(main = lowered0.main.mapTail: case e: End => Assign(resSym, Value.Lit(syntax.Tree.UnitLit(false)), e) From 6576f284b3b2ebb4ce2c7e4bea3595de04a97a26 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 16:42:27 +0800 Subject: [PATCH 076/654] rename compiler flag to :staging --- hkmc2/shared/src/test/mlscript/staging/Syntax.mls | 2 +- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index d13ab800c0..686338774f 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -11,7 +11,7 @@ staged module A :js :slot -:ds +:staging :w staged module A //│ ╔══[WARNING] `staged` keyword doesn't do anything currently. diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index c9ee6dd0f7..5f250a555c 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -70,7 +70,7 @@ abstract class MLsDiffMaker extends DiffMaker: val stackSafe = Command("stackSafe")(_.trim) val liftDefns = NullaryCommand("lift") val importQQ = NullaryCommand("qq") - val stageCode = NullaryCommand("ds") + val stageCode = NullaryCommand("staging") def mkConfig: Config = import Config.* From 4191464b7aea27afc99affb1812f7e726e1561cd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 16:45:29 +0800 Subject: [PATCH 077/654] Revert "remove redundant :pt" This reverts commit 317c6f6c3a2ae963d064f1ad3b011da396bc1dfe. --- hkmc2/shared/src/test/mlscript/staging/Syntax.mls | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index 686338774f..94accabd06 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -9,13 +9,20 @@ staged module A //│ head = Ident of "A" //│ rhs = N +// TODO: reject these annotations? +staged object Foo + +staged class Foo + +staged fun f() = 0 + :js :slot :staging :w staged module A //│ ╔══[WARNING] `staged` keyword doesn't do anything currently. -//│ ║ l.16: staged module A +//│ ║ l.23: staged module A //│ ╙── ^^^^^^^^ //│ Pretty Lowered: //│ define staged class A in set block$res = undefined in end From 817e828af3a94372b92aa49e6580948cf8da5383 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 17:03:12 +0800 Subject: [PATCH 078/654] combine import statements to list --- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index 5f250a555c..49117a526b 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -162,9 +162,9 @@ abstract class MLsDiffMaker extends DiffMaker: if stageCode.isSet then given Config = mkConfig processTrees( - PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) - processTrees( - PrefixApp(Keywrd(`import`), StrLit(shapeFile.toString)) :: Nil) + PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) + :: PrefixApp(Keywrd(`import`), StrLit(shapeFile.toString)) + :: Nil) super.init() From 33a37491c94b70f3fc2b7a1680076a6a56c99ac0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 17:58:54 +0800 Subject: [PATCH 079/654] reword function --- .../scala/hkmc2/codegen/Instrumentation.scala | 15 +++++---------- .../src/test/scala/hkmc2/JSBackendDiffMaker.scala | 4 ++-- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 342c05d68b..b4f9a86f7c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -356,17 +356,12 @@ class InstrumentationImpl(using State): case End(_) => ruleEnd()(k) case _ => ??? // not supported - def transformProgram(prog: Program)(): Program = - // TODO imports - ??? // use ruleCls and ruleBlock here - Program(prog.imports, transformBlock(prog.main)(using new Context())(_.end)) +class InstrumentationTransformer(using State) extends BlockTransformer(new SymbolSubst()): + val impl = new InstrumentationImpl -class Instrumentation(using Raise) extends BlockTransformer(new SymbolSubst()): - def transform(prgm: Program) = Program(prgm.imports, applyBlock(prgm.main)) + def applyProgram(prgm: Program) = Program(prgm.imports, applyBlock(prgm.main)) override def applyDefn(d: Defn)(k: Defn => Block): Block = d match - case defn: ClsLikeDefn => - if defn.sym.defn.exists(_.hasStagedModifier.isDefined) && defn.companion.isDefined - then raise(WarningReport(msg"`staged` keyword doesn't do anything currently." -> defn.sym.toLoc :: Nil)) - super.applyDefn(defn)(k) + case defn: ClsLikeDefn if defn.sym.defn.exists(_.hasStagedModifier.isDefined) && defn.companion.isDefined => + ??? case b => super.applyDefn(b)(k) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 1d5a5eab06..12c2bbd19e 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -108,8 +108,8 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: with JSBuilderArgNumSanityChecks val resSym = new TempSymbol(S(blk), "block$res") val lowered0 = if stageCode.isSet then - val instrumentation = new Instrumentation - instrumentation.transform(low.program(blk)) + val instrumentation = new InstrumentationTransformer + instrumentation.applyProgram(low.program(blk)) else low.program(blk) val le = lowered0.copy(main = lowered0.main.mapTail: case e: End => From b10e9750d619d07f2e1ece40e5d31aa84fe3b1e2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 20:46:23 +0800 Subject: [PATCH 080/654] Revert "move instrumentation to JSBackendDiffMaker" This reverts commit e4d7b227ee3cab3d5a7461ec746cf23468b5ae8d. --- hkmc2/shared/src/main/scala/hkmc2/Config.scala | 2 ++ hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 8 +++++++- .../src/test/scala/hkmc2/JSBackendDiffMaker.scala | 5 +---- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/Config.scala b/hkmc2/shared/src/main/scala/hkmc2/Config.scala index 44dcbe6303..d0a684622b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/Config.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/Config.scala @@ -20,6 +20,7 @@ case class Config( sanityChecks: Opt[SanityChecks], effectHandlers: Opt[EffectHandlers], liftDefns: Opt[LiftDefns], + stageCode: Bool, target: CompilationTarget, ): @@ -35,6 +36,7 @@ object Config: // sanityChecks = S(SanityChecks(light = true)), effectHandlers = N, liftDefns = N, + stageCode = false, target = CompilationTarget.JS ) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 8d242536df..4be76c1e5f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -11,6 +11,8 @@ import utils.* import hkmc2.Message.MessageContext +import codegen.Instrumentation + import semantics.*, ucs.FlatPattern import hkmc2.{semantics => sem} import semantics.{Term => st} @@ -1068,7 +1070,11 @@ class Lowering()(using Config, TL, Raise, State, Ctx): val bufferable = BufferableTransform().transform(lifted) - val res = MergeMatchArmTransformer.applyBlock(bufferable) + val merged = MergeMatchArmTransformer.applyBlock(bufferable) + + val res = + if config.stageCode then Instrumentation(using summon).applyBlock(merged) + else merged Program( imps.map(imp => imp.sym -> imp.str), diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 1d5a5eab06..2bf32e5879 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -107,10 +107,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: new JSBuilder with JSBuilderArgNumSanityChecks val resSym = new TempSymbol(S(blk), "block$res") - val lowered0 = if stageCode.isSet then - val instrumentation = new Instrumentation - instrumentation.transform(low.program(blk)) - else low.program(blk) + val lowered0 = low.program(blk) val le = lowered0.copy(main = lowered0.main.mapTail: case e: End => Assign(resSym, Value.Lit(syntax.Tree.UnitLit(false)), e) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index 49117a526b..e748836b81 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -96,6 +96,7 @@ abstract class MLsDiffMaker extends DiffMaker: , )), liftDefns = Opt.when(liftDefns.isSet)(LiftDefns()), + stageCode = stageCode.isSet, target = if wasm.isSet then CompilationTarget.Wasm else CompilationTarget.JS, ) From 791b5b4faebc6293bddd26c9b23d9f8a38275b35 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 21:07:41 +0800 Subject: [PATCH 081/654] prune implementation for mvp --- .../scala/hkmc2/codegen/Instrumentation.scala | 208 ++---------------- 1 file changed, 22 insertions(+), 186 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index e75c9497da..30c8f9c4c4 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -27,9 +27,6 @@ class InstrumentationImpl(using State): // A PathLike type is a type that can be turned into an Arg type PathLike = Path | Symbol | Shape - // is Elaborator.Ctx relevant? - type Context = HashMap[Path, Shape] - def asArg(x: PathLike): Arg = x match case p: Path => p.asArg @@ -45,17 +42,6 @@ class InstrumentationImpl(using State): case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) - // TODO: use BlockTransformer.applyListOf? - extension [A](ls: Ls[(A => Block) => Block]) - def collectApply(f: Ls[A] => Block): Block = - // defer applying k while prepending new paths to the list - ls.foldRight((_: Ls[A] => Block)(Nil))((headCont, tailCont) => - k => - headCont: head => - tailCont: tail => - k(head :: tail) - )(f) - // helpers corresponding to constructors // could use `using` to allow passthrough of names @@ -87,10 +73,7 @@ class InstrumentationImpl(using State): def blockCtor(name: String, args: Ls[PathLike])(k: Path => Block): Block = ctor(blockMod(name), args)(k) def shapeCtor(name: String, args: Ls[PathLike])(k: Shape => Block): Block = - // ctor(shapeMod(name), args)(p => k(Shape(p))) - // override handling shape - if name == "Lit" then ctor(shapeMod("Lit"), args)(p => k(Shape(p))) - else ctor(shapeMod("Dyn"), Ls())(p => k(Shape(p))) + ctor(shapeMod(name), args)(p => k(Shape(p))) def blockCall(name: String, args: Ls[PathLike])(k: Path => Block): Block = call(blockMod(name), args)(k) @@ -109,52 +92,11 @@ class InstrumentationImpl(using State): object StagedPath: def mk(shape: Shape, code: Path)(k: StagedPath => Block): Block = tuple(Ls(shape.p, code))(p => k(StagedPath(p))) - // in some cases this can reduce the indentation level - def mk(shapeCont: (Shape => Block) => Block, codeCont: (Path => Block) => Block)(k: StagedPath => Block): Block = - shapeCont: shape => - codeCont: code => - mk(shape, code)(k) // linking functions defined in MLscipt def fnPrintCode(p: Path)(k: Path => Block): Block = blockCall("printCode", Ls(p))(k) - def applyCompile(r: Path)(k: Path => Block): Block = - blockCall("compile", Ls(r))(k) - def fnMrg(shapes: Ls[Shape])(k: Shape => Block): Block = - shapeCall("mrg", shapes)(s => k(Shape(s))) - // TODO: make fnSilh take in a wrapped Path type - def fnSilh(pattern: Path)(k: Shape => Block) = - shapeCall("silh", Ls(pattern))(s => k(Shape(s))) - def fnMatch(s: Shape, pat: Path)(k: Path => Block) = - shapeCall("match", Ls(s, pat))(k) - def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = - shapeCall("sel", Ls(s1, s2))(s => k(Shape(s))) - def fnStatic(s: Shape)(k: Path => Block) = - shapeCall("static", Ls(s))(k) - def fnCompile(x: Path)(k: StagedPath => Block): Block = - shapeCall("compile", Ls(x))(p => k(StagedPath(p))) - def fnDet(s: Shape, ps: Ls[PathLike])(k: Path => Block): Block = - tuple(ps): tup => - shapeCall("det", Ls(s, tup))(k) - - // helpers for instrumenting functions - - def inst(f: StagedPath, args: Ls[StagedPath]): StagedPath = - if ??? then - // non-staged function - ??? - else - // staged function - ??? - - def instGlobal(f: StagedPath, args: Ls[StagedPath])(k: StagedPath => Block): Block = - def isFunction(p: Path) = ??? - if isFunction(f.p) then k(inst(???, args)) - else - shapeCtor("Dyn", Ls()): sp => - call(f.p, args.map(_.p), ???): cde => - StagedPath.mk(sp, cde)(k) // instrumentation rules @@ -170,108 +112,12 @@ class InstrumentationImpl(using State): blockCtor("ValueRef", Ls(toValue(r.l.nme))): cde => StagedPath.mk(sp.shape, cde)(k) - def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = - val Tuple(mut, elems) = t - assert(!mut) - - transformArgs(elems): xs => - tuple(xs.map(_.shape)): shapes => - shapeCtor("Arr", Ls(shapes)): sp => - blockCtor("Tuple", xs.map(_.code)): cde => - StagedPath.mk(sp, cde)(k) - - def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = - val Select(p, i @ Tree.Ident(name)) = s - transformPath(p): x => - // stage? there isn't a correct constructor for it though - // val n = Shape(Value.Ref(new TempSymbol(N, name))) - val n = ??? - fnSel(x.shape, n): sp => - val cde = select(x.code, i) - StagedPath.mk(sp, cde)(k) - - def ruleDynSel(d: DynSelect)(using Context)(k: StagedPath => Block): Block = - val DynSelect(qual, path, arrayIdx) = d - transformPath(qual): x => - transformPath(path): y => - fnSel(x.shape, y.shape): sp => - blockCtor("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => - StagedPath.mk(sp, cde)(k) - - def ruleRefinedPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = ??? - - // .apply is Call? - def ruleApp(c: Call)(using Context)(k: StagedPath => Block): Block = - val Call(fun, args) = c - transformPath(fun): f => - transformArgs(args): xs => - instGlobal(f, xs)(k) - - def ruleInst(i: Instantiate)(using Context)(k: StagedPath => Block): Block = - val Instantiate(mut, cls, args) = i - assert(!mut) - - transformArgs(args): xs => - tuple(xs.map(_.shape)): shapes => - tuple(xs.map(_.code)): codes => - shapeCtor("Class", Ls(cls, shapes)): sp => - blockCtor("Instantiate", Ls(cls, codes)): cde => - StagedPath.mk(sp, cde)(k) - - def ruleReturn(r: Return)(using Context)(k: StagedPath => Block): Block = + def ruleReturn(r: Return)(k: StagedPath => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code)): cde => StagedPath.mk(x.shape, cde)(k) - def ruleMatch(m: Match)(using ctx: Context)(k: StagedPath => Block): Block = - def concat(b1: Block, b2: Block) = b1.mapTail { - case r: Return => r - case _: End => b2 - case _ => ??? - } - def transformCase(cse: Opt[Case])(k: Path => Block): Block = - cse match - case S(Case.Lit(lit)) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) - case S(Case.Cls(cls, path)) => blockCtor("Cls", Ls(cls, path))(k) - case S(Case.Tup(len, inf)) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) - case S(Case.Field(name, safe)) => blockCtor("Field", Ls(toValue(name.name)))(k) - case N => blockCtor("Wildcard", Ls())(k) - - val Match(p, arms, dflt, rest) = m - - transformPath(p): x => - (arms.map((c, b) => (S(c), b)) ++ (dflt.map((N, _)))) - .map: (c, b) => - val concatBlock = concat(b, rest) - (k: (((Path, (StagedPath => Block) => Block)) => Block)) => - transformCase(c): patt => - fnSilh(patt): sp => - val newCtx = ctx.clone() += (p -> sp) - val blockCont = transformBlock(concatBlock)(using newCtx) - k(patt, blockCont) - .collectApply: arms => - // we need to duplicate the blocks anyways, so it's fine that blocksCont gets evaluated twice - val (patts, blocksCont) = arms.unzip - (arms.zipWithIndex.foldRight(_: Block) { case (((patt, blockCont), i), rest) => - val slice = arms.slice(0, i + 1).map(_._1) - fnDet(x.shape, slice): scrut => - blockCont: block => - val cse = Case.Lit(Tree.BoolLit(false)) -> k(block) - Match(scrut, Ls(cse), S(rest), End()) - }): - // staged block - blocksCont.collectApply: xs => - val (shapes, codes) = xs.map(xi => (xi.shape, xi.code)).unzip - fnMrg(shapes): s => - (patts - .zip(codes) - .foldRight(blockCtor("End", Ls())) { case ((patt, cde), restCont) => - (k: Path => Block) => - restCont: rest => - blockCtor("Match", Ls(x.code, patt, cde, rest))(k) - })(StagedPath.mk(s, _)(k)) - - def ruleAssign(a: Assign)(using Context)(k: StagedPath => Block): Block = + def ruleAssign(a: Assign)(k: StagedPath => Block): Block = val Assign(x, r, b) = a transformResult(r): y => (Assign(x, y.p, _)): @@ -285,7 +131,7 @@ class InstrumentationImpl(using State): blockCtor("End", Ls()): cde => StagedPath.mk(sp, cde)(k) - def ruleVal(defn: ValDefn, b: Block)(using Context)(k: StagedPath => Block): Block = + def ruleVal(defn: ValDefn, b: Block)(k: StagedPath => Block): Block = val ValDefn(tsym, x, p) = defn transformPath(p): y => transformBlock(b): z => @@ -296,43 +142,34 @@ class InstrumentationImpl(using State): blockCtor("Define", Ls(df, z.code)): cde => StagedPath.mk(z.shape, cde)(k) - def ruleBlk(b: Block)(using Context)(k: StagedPath => Block): Block = - transformBlock(b): x => - fnCompile(x.code)(k) - - // g is Program? - def ruleCls(c: Program, rest: Block)(using Context)(k: StagedPath => Block): Block = - // val ClsLikeDefn(_, _, ) - ??? - // transformations of Block - def transformPath(p: Path)(using Context)(k: StagedPath => Block): Block = + def transformPath(p: Path)(k: StagedPath => Block): Block = p match - // case s: Select => ruleSel(s)(ruleRefinedPath(_)(k)) - // case d: DynSelect => ruleDynSel(d)(ruleRefinedPath(_)(k)) - // case r: Value.Ref => ruleVar(r)(ruleRefinedPath(_)(k)) case r: Value.Ref => ruleVar(r)(k) case Value.Lit(lit) => ruleLit(lit)(k) case _ => ??? // not supported - def transformResult(r: Result)(using Context)(k: StagedPath => Block): Block = + def transformResult(r: Result)(k: StagedPath => Block): Block = r match - // case c: Call => ruleApp(c)(k) - // case i: Instantiate => ruleInst(i)(k) - // case t: Tuple => ruleTup(t)(k) case p: Path => transformPath(p)(k) - case _: Lambda | _: Record => ??? // not supported + case _ => ??? // not supported - def transformArg(a: Arg)(using Context)(k: StagedPath => Block): Block = + def transformArg(a: Arg)(k: StagedPath => Block): Block = val Arg(spread, value) = a transformPath(value)(k) - - // provides list of shapes and list of codes to continuation - def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = - args.map(transformArg).collectApply(k) - - def transformDefine(d: Define)(using Context)(k: StagedPath => Block): Block = + + def transformFunDefn(f: FunDefn): FunDefn = + val FunDefn(owner, sym, parameters, body) = f + val genSym = BlockMemberSymbol(sym.nme+"_gen", Nil, true) // TODO: reuse original function name? + // TODO: remove it. only for test + // TODO: put correct parameters instead of Nil + val b = call(genSym.asPath, Nil): ret => + blockCall("printCode", Ls(StagedPath(ret).code)): _ => // discard result, we only care about side effect + transformBlock(body)(_.end) + FunDefn(owner, genSym, parameters, transformBlock(body)(_.end)) + + def transformDefine(d: Define)(k: StagedPath => Block): Block = d.defn match case f @ FunDefn(owner, sym, parameters, body) => val genSym = BlockMemberSymbol("gen", Nil, true) // TODO: reuse original function name? @@ -347,11 +184,10 @@ class InstrumentationImpl(using State): case v: ValDefn => ruleVal(v, d.rest)(k) case c: ClsLikeDefn => ??? // nested class? - def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = + def transformBlock(b: Block)(k: StagedPath => Block): Block = b match - // case m: Match => ruleMatch(m)(k) case r: Return => ruleReturn(r)(k) - // case a: Assign => ruleAssign(a)(k) + case a: Assign => ruleAssign(a)(k) case d: Define => transformDefine(d)(k) case End(_) => ruleEnd()(k) case _ => ??? // not supported From 578dfd16159eec36f99f5cb9dc68a861049cea7d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 21:20:38 +0800 Subject: [PATCH 082/654] implement rudimentary instrumentation logic --- .../scala/hkmc2/codegen/Instrumentation.scala | 22 +++++- .../src/test/mlscript/staging/Functions.mls | 77 +++++++++++++++++++ 2 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/staging/Functions.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 30c8f9c4c4..3ddcc6738d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -197,8 +197,22 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val impl = new InstrumentationImpl def applyProgram(prgm: Program) = Program(prgm.imports, applyBlock(prgm.main)) + + // This stages any function definition, + // instead of staging functions within staged modules. + override def applyBlock(b: Block): Block = b match + case Define(defn, rest) => + defn match + case f @ FunDefn(owner, sym, parameters, body) => + val genSym = BlockMemberSymbol("gen", Nil, true) // TODO: reuse original function name? + val staged = FunDefn(owner, genSym, parameters, impl.transformBlock(body)(_.end)) + // TODO: remove it. only for test + // TODO: put correct parameters instead of Nil + val b = impl.call(genSym.asPath, Nil): ret => + // discard result, we only care about side effect of printCode + impl.blockCall("printCode", Ls(impl.StagedPath(ret).code)): _ => + applyBlock(rest) + Define(f, Define(staged, b)) + case _ => b + case _ => b - override def applyDefn(d: Defn)(k: Defn => Block): Block = d match - case defn: ClsLikeDefn if defn.sym.defn.exists(_.hasStagedModifier.isDefined) && defn.companion.isDefined => - ??? - case b => super.applyDefn(b)(k) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls new file mode 100644 index 0000000000..4650c0d09b --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -0,0 +1,77 @@ + +:js +:staging +:ssjs +:re +fun f() = + let x = 42 + x +//│ JS: +//│ f = function f(...args) { +//│ runtime.checkArgs("f", 0, true, args.length); +//│ let x; +//│ x = 42; +//│ return x +//│ }; +//│ gen = function gen(...args) { +//│ runtime.checkArgs("gen", 0, true, args.length); +//│ let x, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10; +//│ tmp2 = globalThis.Object.freeze(new Shape.Lit(42)); +//│ tmp3 = globalThis.Object.freeze(new Block.ValueLit(42)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp2, +//│ tmp3 +//│ ]); +//│ x = tmp4; +//│ tmp5 = globalThis.Object.freeze(new Block.ValueRef("x")); +//│ tmp6 = globalThis.Object.freeze([ +//│ x[0], +//│ tmp5 +//│ ]); +//│ tmp7 = globalThis.Object.freeze(new Block.Return(tmp6[1])); +//│ tmp8 = globalThis.Object.freeze([ +//│ tmp6[0], +//│ tmp7 +//│ ]); +//│ tmp9 = globalThis.Object.freeze(new Block.Assign(x, tmp4[1], tmp8[1])); +//│ tmp10 = globalThis.Object.freeze([ +//│ tmp8[0], +//│ tmp9 +//│ ]); +//│ return tmp10 +//│ }; +//│ tmp = runtime.checkCall(gen()); +//│ tmp1 = runtime.checkCall(Block.printCode(tmp[1])); +//│ block$res = undefined; +//│ ═══[RUNTIME ERROR] Error: Not implemented + +:js +:staging +:ssjs +:re +fun g() = 12 +//│ JS: +//│ g = function g(...args) { +//│ runtime.checkArgs("g", 0, true, args.length); +//│ return 12 +//│ }; +//│ gen1 = function gen(...args) { +//│ runtime.checkArgs("gen", 0, true, args.length); +//│ let tmp4, tmp5, tmp6, tmp7, tmp8; +//│ tmp4 = globalThis.Object.freeze(new Shape.Lit(12)); +//│ tmp5 = globalThis.Object.freeze(new Block.ValueLit(12)); +//│ tmp6 = globalThis.Object.freeze([ +//│ tmp4, +//│ tmp5 +//│ ]); +//│ tmp7 = globalThis.Object.freeze(new Block.Return(tmp6[1])); +//│ tmp8 = globalThis.Object.freeze([ +//│ tmp6[0], +//│ tmp7 +//│ ]); +//│ return tmp8 +//│ }; +//│ tmp2 = runtime.checkCall(gen1()); +//│ tmp3 = runtime.checkCall(Block.printCode(tmp2[1])); +//│ block$res1 = undefined; +//│ ═══[RUNTIME ERROR] Error: Not implemented From 27bf507e156f3c96d88e71b3eaeaf7f1f11ef986 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 22:17:12 +0800 Subject: [PATCH 083/654] implement printing for DynSelect --- hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index 63a0569c6e..254442efdf 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -100,6 +100,10 @@ object Printer: case Select(qual, name) => val docQual = mkDocument(qual) doc"${docQual}.${name.name}" + case DynSelect(qual, fld, true) => + val docQual = mkDocument(qual) + val docFld = mkDocument(fld) + doc"${docQual}[${docFld}]" case x: Value => mkDocument(x) case _ => TODO(path) From 9c975f6827efb2d8f6e09932bbd958f0bc3dbe23 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 23:46:29 +0800 Subject: [PATCH 084/654] only stage functions in staged modules --- .../scala/hkmc2/codegen/Instrumentation.scala | 45 +++++--- .../src/test/mlscript-compile/Block.mls | 4 +- .../src/test/mlscript/staging/Functions.mls | 103 ++++++------------ 3 files changed, 66 insertions(+), 86 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 3ddcc6738d..b3dfbe66c2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -158,10 +158,10 @@ class InstrumentationImpl(using State): def transformArg(a: Arg)(k: StagedPath => Block): Block = val Arg(spread, value) = a transformPath(value)(k) - + def transformFunDefn(f: FunDefn): FunDefn = val FunDefn(owner, sym, parameters, body) = f - val genSym = BlockMemberSymbol(sym.nme+"_gen", Nil, true) // TODO: reuse original function name? + val genSym = BlockMemberSymbol(sym.nme + "_gen", Nil, true) // TODO: reuse original function name? // TODO: remove it. only for test // TODO: put correct parameters instead of Nil val b = call(genSym.asPath, Nil): ret => @@ -196,23 +196,38 @@ class InstrumentationImpl(using State): class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val impl = new InstrumentationImpl - def applyProgram(prgm: Program) = Program(prgm.imports, applyBlock(prgm.main)) - // This stages any function definition, // instead of staging functions within staged modules. override def applyBlock(b: Block): Block = b match case Define(defn, rest) => defn match - case f @ FunDefn(owner, sym, parameters, body) => - val genSym = BlockMemberSymbol("gen", Nil, true) // TODO: reuse original function name? - val staged = FunDefn(owner, genSym, parameters, impl.transformBlock(body)(_.end)) - // TODO: remove it. only for test - // TODO: put correct parameters instead of Nil - val b = impl.call(genSym.asPath, Nil): ret => - // discard result, we only care about side effect of printCode - impl.blockCall("printCode", Ls(impl.StagedPath(ret).code)): _ => - applyBlock(rest) - Define(f, Define(staged, b)) + // case f @ FunDefn(owner, sym, parameters, body) => + // val genSym = BlockMemberSymbol("gen", Nil, true) // TODO: reuse original function name? + // val staged = FunDefn(owner, genSym, parameters, impl.transformBlock(body)(_.end)) + // // TODO: remove it. only for test + // // TODO: put correct parameters instead of Nil + // val b = impl.call(genSym.asPath, Nil): ret => + // // discard result, we only care about side effect of printCode + // impl.blockCall("printCode", Ls(impl.StagedPath(ret).code)): _ => + // applyBlock(rest) + // Define(f, Define(staged, b)) + // find modules with staged annotation + case c: ClsLikeDefn if c.sym.defn.exists(_.hasStagedModifier.isDefined) && c.companion.isDefined => + val companion = c.companion.get + val (stagedMethods, debugPrintCode) = companion.methods.map { case f @ FunDefn(owner, sym, parameters, body) => + val genSym = BlockMemberSymbol(sym.nme + "_gen", Nil, true) // TODO: reuse original function name? + // TODO: remove it. only for test + // TODO: put correct parameters instead of Nil + // Select(c.sym, genSym.nme) + // c.sym.selSN(genSym.nme) + val b: Block = impl.call(c.sym.asPath.selSN(genSym.nme), Nil): ret => + impl.blockCall("printCode", Ls(impl.StagedPath(ret).code)): _ => // discard result, we only care about side effect + End() + (f.copy(sym = genSym, body = impl.transformBlock(body)(_.end)), b) + }.unzip + val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods) + val newModule = c.copy(sym = c.sym, companion = Some(newCompanion)) + val debugBlock: Block = debugPrintCode.foldRight(rest)((b1, b2) => b1.mapTail { case _ => b2 }) + Define(newModule, debugBlock) case _ => b case _ => b - diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 70c82c9883..0bced10f9f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -60,6 +60,6 @@ class Block with Define(val defn: Defn, val rest: Block) End() -fun printCode(p: Block) = ??? +fun printCode(p: Block) = print("printCode") -fun compile(p: Block) = ??? \ No newline at end of file +fun compile(p: Block) = 0 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 4650c0d09b..391028146b 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -2,76 +2,41 @@ :js :staging :ssjs -:re -fun f() = - let x = 42 - x +staged module A with + fun f() = 1 //│ JS: -//│ f = function f(...args) { -//│ runtime.checkArgs("f", 0, true, args.length); -//│ let x; -//│ x = 42; -//│ return x -//│ }; -//│ gen = function gen(...args) { -//│ runtime.checkArgs("gen", 0, true, args.length); -//│ let x, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10; -//│ tmp2 = globalThis.Object.freeze(new Shape.Lit(42)); -//│ tmp3 = globalThis.Object.freeze(new Block.ValueLit(42)); -//│ tmp4 = globalThis.Object.freeze([ -//│ tmp2, -//│ tmp3 -//│ ]); -//│ x = tmp4; -//│ tmp5 = globalThis.Object.freeze(new Block.ValueRef("x")); -//│ tmp6 = globalThis.Object.freeze([ -//│ x[0], -//│ tmp5 -//│ ]); -//│ tmp7 = globalThis.Object.freeze(new Block.Return(tmp6[1])); -//│ tmp8 = globalThis.Object.freeze([ -//│ tmp6[0], -//│ tmp7 -//│ ]); -//│ tmp9 = globalThis.Object.freeze(new Block.Assign(x, tmp4[1], tmp8[1])); -//│ tmp10 = globalThis.Object.freeze([ -//│ tmp8[0], -//│ tmp9 -//│ ]); -//│ return tmp10 -//│ }; -//│ tmp = runtime.checkCall(gen()); +//│ globalThis.Object.freeze(class A { +//│ static { +//│ A1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static f(...args) { +//│ runtime.checkArgs("f", 0, true, args.length); +//│ return 1 +//│ } +//│ static f_gen(...args) { +//│ runtime.checkArgs("f_gen", 0, true, args.length); +//│ let tmp2, tmp3, tmp4, tmp5, tmp6; +//│ tmp2 = globalThis.Object.freeze(new Shape.Lit(1)); +//│ tmp3 = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp2, +//│ tmp3 +//│ ]); +//│ tmp5 = globalThis.Object.freeze(new Block.Return(tmp4[1])); +//│ tmp6 = globalThis.Object.freeze([ +//│ tmp4[0], +//│ tmp5 +//│ ]); +//│ return tmp6 +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "A"]; +//│ }); +//│ tmp = runtime.checkCall(A1.f_gen()); //│ tmp1 = runtime.checkCall(Block.printCode(tmp[1])); //│ block$res = undefined; -//│ ═══[RUNTIME ERROR] Error: Not implemented +//│ > printCode -:js -:staging -:ssjs -:re -fun g() = 12 -//│ JS: -//│ g = function g(...args) { -//│ runtime.checkArgs("g", 0, true, args.length); -//│ return 12 -//│ }; -//│ gen1 = function gen(...args) { -//│ runtime.checkArgs("gen", 0, true, args.length); -//│ let tmp4, tmp5, tmp6, tmp7, tmp8; -//│ tmp4 = globalThis.Object.freeze(new Shape.Lit(12)); -//│ tmp5 = globalThis.Object.freeze(new Block.ValueLit(12)); -//│ tmp6 = globalThis.Object.freeze([ -//│ tmp4, -//│ tmp5 -//│ ]); -//│ tmp7 = globalThis.Object.freeze(new Block.Return(tmp6[1])); -//│ tmp8 = globalThis.Object.freeze([ -//│ tmp6[0], -//│ tmp7 -//│ ]); -//│ return tmp8 -//│ }; -//│ tmp2 = runtime.checkCall(gen1()); -//│ tmp3 = runtime.checkCall(Block.printCode(tmp2[1])); -//│ block$res1 = undefined; -//│ ═══[RUNTIME ERROR] Error: Not implemented From ff6b121cd055e5089b9dacc7d8e6328342c86577 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 6 Nov 2025 23:47:49 +0800 Subject: [PATCH 085/654] update Syntax.mls --- hkmc2/shared/src/test/mlscript/staging/Syntax.mls | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index 94accabd06..2f5c8aab11 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -19,10 +19,6 @@ staged fun f() = 0 :js :slot :staging -:w staged module A -//│ ╔══[WARNING] `staged` keyword doesn't do anything currently. -//│ ║ l.23: staged module A -//│ ╙── ^^^^^^^^ //│ Pretty Lowered: //│ define staged class A in set block$res = undefined in end From 068fd379441e6cc1a191ff3eb09b13ab299bd8e6 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 8 Nov 2025 00:58:50 +0800 Subject: [PATCH 086/654] remove bugs in pretty printing --- .../src/test/mlscript-compile/Block.mls | 39 ++++++------------- .../src/test/mlscript/staging/Block.mls | 38 ++++++++++++++++++ .../src/test/scala/hkmc2/MLsDiffMaker.scala | 2 +- 3 files changed, 51 insertions(+), 28 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/staging/Block.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 13b4457051..764433cbbb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -2,8 +2,8 @@ import "./Predef.mls" import "./Option.mls" import "./StrOps.mls" -open StrOps open Predef +open StrOps open Option module Block with... @@ -106,7 +106,7 @@ fun showResult(r: Result): Str = Tuple(elems) then "Tuple(" + showArgs(elems) + ")" fun showParamList(ps: ParamList) = - "[" + ps.map(showSymbol).joinWith(", ") + "]" + "[" + ps.map(s => showSymbol(s)).join(", ") + "]" fun showDefn(d: Defn): Str = if d is @@ -114,7 +114,7 @@ fun showDefn(d: Defn): Str = "ValDefn(" + showSymbol(sym) + ", " + showPath(rhs) + ")" FunDefn(sym, params, body) then "FunDefn(" + showSymbol(sym) + ", " + - "[" + params.map(showParamList).joinWith(", ") + "], " + + showParamList(params) + ", " + showBlock(body) + ")" ClsLikeDefn(sym, paramsOpt, companion) then // minimal, since this is unused in your staged Block for now @@ -131,7 +131,7 @@ fun showBlock(b: Block): Str = Match(scrut, arms, dflt, rest) then "Match(" + showPath(scrut) + ", " + - "[" + arms.map(showArm).joinWith(", ") + "], " + + "[" + arms.map(showArm).join(", ") + "], " + showOptBlock(dflt) + ", " + showBlock(rest) + ")" Return(res, implct) then @@ -144,37 +144,22 @@ fun showBlock(b: Block): Str = fun show(x) = if x is - Match(_, _, _, _) then showBlock(x) - Return(_, _) then showBlock(x) - Assign(_, _, _) then showBlock(x) - Define(_, _) then showBlock(x) - End() then showBlock(x) + Symbol then showSymbol(x) else if x is - Select(_, _) then showPath(x) - DynSelect(_, _, _) then showPath(x) - ValueRef(_) then showPath(x) - ValueLit(_) then showPath(x) + Path then showPath(x) else if x is - TrivialResult(_) then showResult(x) - Call(_, _) then showResult(x) - Instantiate(_, _) then showResult(x) - Tuple(_) then showResult(x) + Result then showResult(x) else if x is - Lit(_) then showCase(x) - Cls(_, _) then showCase(x) - Tup(_, _) then showCase(x) - Field(_) then showCase(x) - Wildcard then showCase(x) + Case then showCase(x) else if x is - ValDefn(_, _) then showDefn(x) - FunDefn(_, _, _) then showDefn(x) - ClsLikeDefn(_, _, _) then showDefn(x) + Defn then showDefn(x) else if x is - Arg(_, _) then showArg(x) + Arg then showArg(x) else if x is - [a, b] then StrOps.concat of "[", show(a), ", ", show(b), "]" + Block then showBlock(x) else "" +fun printCode(x) = print(show(x)) fun compile(p: Block) = ??? \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/staging/Block.mls b/hkmc2/shared/src/test/mlscript/staging/Block.mls new file mode 100644 index 0000000000..00a8b3c364 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/staging/Block.mls @@ -0,0 +1,38 @@ +:staging +:js + +//│ Block = class Block { +//│ Symbol: fun Symbol { class: class Symbol }, +//│ Arg: fun Arg { class: class Arg }, +//│ Path: class Path, +//│ Select: fun Select { class: class Select }, +//│ DynSelect: fun DynSelect { class: class DynSelect }, +//│ ValueRef: fun ValueRef { class: class ValueRef }, +//│ ValueLit: fun ValueLit { class: class ValueLit }, +//│ Case: class Case, +//│ Lit: fun Lit { class: class Lit }, +//│ Cls: fun Cls { class: class Cls }, +//│ Tup: fun Tup { class: class Tup }, +//│ Field: fun Field { class: class Field }, +//│ Wildcard: class Wildcard, +//│ Result: class Result, +//│ TrivialResult: fun TrivialResult { class: class TrivialResult }, +//│ Call: fun Call { class: class Call }, +//│ Instantiate: fun Instantiate { class: class Instantiate }, +//│ Tuple: fun Tuple { class: class Tuple }, +//│ Defn: class Defn, +//│ ValDefn: fun ValDefn { class: class ValDefn }, +//│ ClsLikeDefn: fun ClsLikeDefn { class: class ClsLikeDefn }, +//│ FunDefn: fun FunDefn { class: class FunDefn }, +//│ ClsLikeBody: fun ClsLikeBody { class: class ClsLikeBody }, +//│ Block: class Block, +//│ Match: fun Match { class: class Match }, +//│ Return: fun Return { class: class Return }, +//│ Assign: fun Assign { class: class Assign }, +//│ Define: fun Define { class: class Define }, +//│ End: fun End { class: class End } +//│ } + +Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.TrivialResult(Block.ValueLit(1)), false))) +//│ > FunDefn(Symbol("f"), [Symbol("x")], Return(Lit(1), false)) + diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index ddb8b731ee..b8cfdf866d 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -70,7 +70,7 @@ abstract class MLsDiffMaker extends DiffMaker: val stackSafe = Command("stackSafe")(_.trim) val liftDefns = NullaryCommand("lift") val importQQ = NullaryCommand("qq") - val stageCode = NullaryCommand("ds") + val stageCode = NullaryCommand("staging") def mkConfig: Config = import Config.* From 3f32b39664e4e76b5d74678b97068d7fe9321e65 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 8 Nov 2025 23:43:30 +0800 Subject: [PATCH 087/654] formatting --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 764433cbbb..0db9c74c0e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -124,7 +124,7 @@ fun showOptBlock(ob: Opt[Block]) = if ob is Some(b) then showBlock(b) else "None" fun showArm(pair: Case -> Block) = - if pair is [cse, body] then showCase(cse) + " -> " + showBlock(body) else "" + if pair is [cse, body] then showCase(cse) + " -> " + showBlock(body) else "" fun showBlock(b: Block): Str = if b is @@ -145,17 +145,11 @@ fun showBlock(b: Block): Str = fun show(x) = if x is Symbol then showSymbol(x) - else if x is Path then showPath(x) - else if x is Result then showResult(x) - else if x is Case then showCase(x) - else if x is Defn then showDefn(x) - else if x is Arg then showArg(x) - else if x is Block then showBlock(x) else "" From d3bd300a2320e88d3c7c8ee6321f314bf889cd23 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 8 Nov 2025 23:45:07 +0800 Subject: [PATCH 088/654] add back Symbol class this was done to be in line with Block, though there's no reason Symbol can't just be a Str --- .../scala/hkmc2/codegen/Instrumentation.scala | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b3dfbe66c2..5022b97b65 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -109,8 +109,9 @@ class InstrumentationImpl(using State): // why assume it is already staged? val sp = StagedPath(r) // why not just use sp.code? - blockCtor("ValueRef", Ls(toValue(r.l.nme))): cde => - StagedPath.mk(sp.shape, cde)(k) + blockCtor("Symbol", Ls(toValue(r.l.nme))): sym => + blockCtor("ValueRef", Ls(sym)): cde => + StagedPath.mk(sp.shape, cde)(k) def ruleReturn(r: Return)(k: StagedPath => Block): Block = transformResult(r.res): x => @@ -122,9 +123,10 @@ class InstrumentationImpl(using State): transformResult(r): y => (Assign(x, y.p, _)): transformBlock(b): z => - // need to wrap x with Symbol? - blockCtor("Assign", Ls(x, y.code, z.code)): cde => - StagedPath.mk(z.shape, cde)(k) + blockCtor("Symbol", Ls(toValue(x.nme))): x => + // need to wrap x with Symbol? + blockCtor("Assign", Ls(x, y.code, z.code)): cde => + StagedPath.mk(z.shape, cde)(k) def ruleEnd()(k: StagedPath => Block): Block = shapeCtor("Unit", Ls()): sp => @@ -152,7 +154,10 @@ class InstrumentationImpl(using State): def transformResult(r: Result)(k: StagedPath => Block): Block = r match - case p: Path => transformPath(p)(k) + case p: Path => + transformPath(p): p => + blockCtor("TrivialResult", Ls(p.code)): cde => + StagedPath.mk(p.shape, cde)(k) case _ => ??? // not supported def transformArg(a: Arg)(k: StagedPath => Block): Block = From 8ef91e9a3d987191867f73c5d7a69c227a0cf585 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 8 Nov 2025 23:53:40 +0800 Subject: [PATCH 089/654] reuse original function name --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 5022b97b65..e43b8f36f7 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -166,7 +166,7 @@ class InstrumentationImpl(using State): def transformFunDefn(f: FunDefn): FunDefn = val FunDefn(owner, sym, parameters, body) = f - val genSym = BlockMemberSymbol(sym.nme + "_gen", Nil, true) // TODO: reuse original function name? + val genSym = BlockMemberSymbol(sym.nme + "_gen", Nil, true) // TODO: remove it. only for test // TODO: put correct parameters instead of Nil val b = call(genSym.asPath, Nil): ret => @@ -176,8 +176,9 @@ class InstrumentationImpl(using State): def transformDefine(d: Define)(k: StagedPath => Block): Block = d.defn match + // duplicated because we need a reference to genSym here case f @ FunDefn(owner, sym, parameters, body) => - val genSym = BlockMemberSymbol("gen", Nil, true) // TODO: reuse original function name? + val genSym = BlockMemberSymbol(sym.nme + "_gen", Nil, true) val b = transformBlock(d.rest): res => // TODO: remove it. only for test // TODO: put correct parameters instead of Nil @@ -223,8 +224,6 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val genSym = BlockMemberSymbol(sym.nme + "_gen", Nil, true) // TODO: reuse original function name? // TODO: remove it. only for test // TODO: put correct parameters instead of Nil - // Select(c.sym, genSym.nme) - // c.sym.selSN(genSym.nme) val b: Block = impl.call(c.sym.asPath.selSN(genSym.nme), Nil): ret => impl.blockCall("printCode", Ls(impl.StagedPath(ret).code)): _ => // discard result, we only care about side effect End() From 3c7f58db43afc7837bd51545d377b3c6235e6d3d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 8 Nov 2025 23:53:49 +0800 Subject: [PATCH 090/654] update test cases --- .../src/test/mlscript/staging/Functions.mls | 48 +++++-------------- .../staging/{Block.mls => PrintCode.mls} | 8 ++++ 2 files changed, 19 insertions(+), 37 deletions(-) rename hkmc2/shared/src/test/mlscript/staging/{Block.mls => PrintCode.mls} (86%) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 391028146b..e1a145ea2d 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -1,42 +1,16 @@ :js :staging -:ssjs +// :ssjs staged module A with fun f() = 1 -//│ JS: -//│ globalThis.Object.freeze(class A { -//│ static { -//│ A1 = this -//│ } -//│ constructor() { -//│ runtime.Unit; -//│ } -//│ static f(...args) { -//│ runtime.checkArgs("f", 0, true, args.length); -//│ return 1 -//│ } -//│ static f_gen(...args) { -//│ runtime.checkArgs("f_gen", 0, true, args.length); -//│ let tmp2, tmp3, tmp4, tmp5, tmp6; -//│ tmp2 = globalThis.Object.freeze(new Shape.Lit(1)); -//│ tmp3 = globalThis.Object.freeze(new Block.ValueLit(1)); -//│ tmp4 = globalThis.Object.freeze([ -//│ tmp2, -//│ tmp3 -//│ ]); -//│ tmp5 = globalThis.Object.freeze(new Block.Return(tmp4[1])); -//│ tmp6 = globalThis.Object.freeze([ -//│ tmp4[0], -//│ tmp5 -//│ ]); -//│ return tmp6 -//│ } -//│ toString() { return runtime.render(this); } -//│ static [definitionMetadata] = ["class", "A"]; -//│ }); -//│ tmp = runtime.checkCall(A1.f_gen()); -//│ tmp1 = runtime.checkCall(Block.printCode(tmp[1])); -//│ block$res = undefined; -//│ > printCode - + fun g() = + let x = 42 + let y = x + y + // I-Val doesn't work yet + // fun i() = + // val x = 1 + // x +//│ > Return(Lit(1), false) +//│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) diff --git a/hkmc2/shared/src/test/mlscript/staging/Block.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls similarity index 86% rename from hkmc2/shared/src/test/mlscript/staging/Block.mls rename to hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index 00a8b3c364..332923c4f8 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Block.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -32,6 +32,14 @@ //│ Define: fun Define { class: class Define }, //│ End: fun End { class: class End } //│ } +//│ Shape = class Shape { +//│ Shape: class Shape, +//│ Dyn: class Dyn, +//│ Lit: fun Lit { class: class Lit }, +//│ Arr: fun Arr { class: class Arr }, +//│ Class: fun Class { class: class Class }, +//│ Unit: class Unit +//│ } Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.TrivialResult(Block.ValueLit(1)), false))) //│ > FunDefn(Symbol("f"), [Symbol("x")], Return(Lit(1), false)) From 2ecda34ca3718947acac4e3395c7710564a334d7 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 9 Nov 2025 00:24:13 +0800 Subject: [PATCH 091/654] fix ruleVal --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 14 +++++++------- .../shared/src/test/mlscript/staging/Functions.mls | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index e43b8f36f7..300db4dba0 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -136,13 +136,13 @@ class InstrumentationImpl(using State): def ruleVal(defn: ValDefn, b: Block)(k: StagedPath => Block): Block = val ValDefn(tsym, x, p) = defn transformPath(p): y => - transformBlock(b): z => - // TODO: valdefn needs to be before code blocks somehow? - // y is StagedPath, not Path? - (Define(ValDefn(tsym, x, y.p), _)): - blockCtor("ValDefn", Ls(x, y.code)): df => - blockCtor("Define", Ls(df, z.code)): cde => - StagedPath.mk(z.shape, cde)(k) + // y is StagedPath, not Path? + (Define(ValDefn(tsym, x, y.p), _)): + transformBlock(b): z => + blockCtor("Symbol", Ls(toValue(x.nme))): x => + blockCtor("ValDefn", Ls(x, y.code)): df => + blockCtor("Define", Ls(df, z.code)): cde => + StagedPath.mk(z.shape, cde)(k) // transformations of Block diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index e1a145ea2d..9f61a56a4c 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -8,9 +8,9 @@ staged module A with let x = 42 let y = x y - // I-Val doesn't work yet - // fun i() = - // val x = 1 - // x + fun i() = + val x = 1 + x //│ > Return(Lit(1), false) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) +//│ > Define(ValDefn(Symbol("x"), Lit(1)), Return(Ref(Symbol("x")), false)) From 9ebf26b47f87a236c95a7c8d834454be7b91dea8 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 9 Nov 2025 00:31:08 +0800 Subject: [PATCH 092/654] add some debug symbol names --- .../scala/hkmc2/codegen/Instrumentation.scala | 50 +++++++++---------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 300db4dba0..387d4d8416 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -44,41 +44,39 @@ class InstrumentationImpl(using State): // helpers corresponding to constructors - // could use `using` to allow passthrough of names - def assign(res: Result, name: String = "tmp")(k: Path => Block): Assign = + def assign(res: Result, symName: String = "tmp")(k: Path => Block): Assign = // TODO: skip assignment if res: Path? - val tmp = new TempSymbol(N, name) + val tmp = new TempSymbol(N, symName) Assign(tmp, res, k(tmp.asPath)) def select(qual: Path, ident: Tree.Ident): Path = - // do we need to call assign here? it's already a path anyways Select(qual, ident)(N) - def tuple(elems: Ls[PathLike])(k: Path => Block): Block = + def tuple(elems: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = // is this the same as "Ls of"? - assign(Tuple(false, elems.map(asArg)))(k) + assign(Tuple(false, elems.map(asArg)), symName)(k) - def ctor(cls: Path, args: Ls[PathLike])(k: Path => Block): Block = - assign(Instantiate(false, cls, args.map(asArg)))(k) + def ctor(cls: Path, args: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = + assign(Instantiate(false, cls, args.map(asArg)), symName)(k) // isMlsFun is probably always true? - def call(fun: Path, args: Ls[PathLike], isMlsFun: Bool = true)(k: Path => Block): Block = - assign(Call(fun, args.map(asArg))(isMlsFun, false))(k) + def call(fun: Path, args: Ls[PathLike], isMlsFun: Bool = true, symName: String = "tmp")(k: Path => Block): Block = + assign(Call(fun, args.map(asArg))(isMlsFun, false), symName)(k) // helper for staging the constructors def blockMod(name: String) = summon[State].blockSymbol.asPath.selSN(name) def shapeMod(name: String) = summon[State].shapeSymbol.asPath.selSN(name) - def blockCtor(name: String, args: Ls[PathLike])(k: Path => Block): Block = - ctor(blockMod(name), args)(k) - def shapeCtor(name: String, args: Ls[PathLike])(k: Shape => Block): Block = - ctor(shapeMod(name), args)(p => k(Shape(p))) + def blockCtor(name: String, args: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = + ctor(blockMod(name), args, symName = symName)(k) + def shapeCtor(name: String, args: Ls[PathLike], symName: String = "tmp")(k: Shape => Block): Block = + ctor(shapeMod(name), args, symName = symName)(p => k(Shape(p))) - def blockCall(name: String, args: Ls[PathLike])(k: Path => Block): Block = - call(blockMod(name), args)(k) - def shapeCall(name: String, args: Ls[PathLike])(k: Path => Block): Block = - call(shapeMod(name), args)(k) + def blockCall(name: String, args: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = + call(blockMod(name), args, symName = symName)(k) + def shapeCall(name: String, args: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = + call(shapeMod(name), args, symName = symName)(k) // helpers to create and access the components of a staged value case class Shape(p: Path) @@ -90,8 +88,8 @@ class InstrumentationImpl(using State): def end: Block = Return(p, false) object StagedPath: - def mk(shape: Shape, code: Path)(k: StagedPath => Block): Block = - tuple(Ls(shape.p, code))(p => k(StagedPath(p))) + def mk(shape: Shape, code: Path, symName: String = "tmp")(k: StagedPath => Block): Block = + tuple(Ls(shape.p, code), symName)(p => k(StagedPath(p))) // linking functions defined in MLscipt @@ -103,7 +101,7 @@ class InstrumentationImpl(using State): def ruleLit(l: Literal)(k: StagedPath => Block): Block = shapeCtor("Lit", Ls(Value.Lit(l))): sp => blockCtor("ValueLit", Ls(Value.Lit(l))): cde => - StagedPath.mk(sp, cde)(k) + StagedPath.mk(sp, cde, "lit")(k) def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = // why assume it is already staged? @@ -111,12 +109,12 @@ class InstrumentationImpl(using State): // why not just use sp.code? blockCtor("Symbol", Ls(toValue(r.l.nme))): sym => blockCtor("ValueRef", Ls(sym)): cde => - StagedPath.mk(sp.shape, cde)(k) + StagedPath.mk(sp.shape, cde, "var")(k) def ruleReturn(r: Return)(k: StagedPath => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code)): cde => - StagedPath.mk(x.shape, cde)(k) + StagedPath.mk(x.shape, cde, "ret")(k) def ruleAssign(a: Assign)(k: StagedPath => Block): Block = val Assign(x, r, b) = a @@ -126,12 +124,12 @@ class InstrumentationImpl(using State): blockCtor("Symbol", Ls(toValue(x.nme))): x => // need to wrap x with Symbol? blockCtor("Assign", Ls(x, y.code, z.code)): cde => - StagedPath.mk(z.shape, cde)(k) + StagedPath.mk(z.shape, cde, "ass")(k) def ruleEnd()(k: StagedPath => Block): Block = shapeCtor("Unit", Ls()): sp => blockCtor("End", Ls()): cde => - StagedPath.mk(sp, cde)(k) + StagedPath.mk(sp, cde, "end")(k) def ruleVal(defn: ValDefn, b: Block)(k: StagedPath => Block): Block = val ValDefn(tsym, x, p) = defn @@ -142,7 +140,7 @@ class InstrumentationImpl(using State): blockCtor("Symbol", Ls(toValue(x.nme))): x => blockCtor("ValDefn", Ls(x, y.code)): df => blockCtor("Define", Ls(df, z.code)): cde => - StagedPath.mk(z.shape, cde)(k) + StagedPath.mk(z.shape, cde, "val")(k) // transformations of Block From 0198eb997d8cc0562a8ce004731d5495045f7f57 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 9 Nov 2025 00:37:09 +0800 Subject: [PATCH 093/654] rename PathLike to ArgWrappable --- .../scala/hkmc2/codegen/Instrumentation.scala | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 387d4d8416..4ef75d72d2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -24,10 +24,9 @@ import syntax.{Literal, Tree} // the previous blocks created by the fields are handled by BlockTransformer's continuation code class InstrumentationImpl(using State): - // A PathLike type is a type that can be turned into an Arg - type PathLike = Path | Symbol | Shape + type ArgWrappable = Path | Symbol | Shape - def asArg(x: PathLike): Arg = + def asArg(x: ArgWrappable): Arg = x match case p: Path => p.asArg case l: Symbol => l.asPath.asArg @@ -52,15 +51,15 @@ class InstrumentationImpl(using State): def select(qual: Path, ident: Tree.Ident): Path = Select(qual, ident)(N) - def tuple(elems: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = + def tuple(elems: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = // is this the same as "Ls of"? assign(Tuple(false, elems.map(asArg)), symName)(k) - def ctor(cls: Path, args: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = + def ctor(cls: Path, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = assign(Instantiate(false, cls, args.map(asArg)), symName)(k) // isMlsFun is probably always true? - def call(fun: Path, args: Ls[PathLike], isMlsFun: Bool = true, symName: String = "tmp")(k: Path => Block): Block = + def call(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: String = "tmp")(k: Path => Block): Block = assign(Call(fun, args.map(asArg))(isMlsFun, false), symName)(k) // helper for staging the constructors @@ -68,14 +67,14 @@ class InstrumentationImpl(using State): def blockMod(name: String) = summon[State].blockSymbol.asPath.selSN(name) def shapeMod(name: String) = summon[State].shapeSymbol.asPath.selSN(name) - def blockCtor(name: String, args: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = + def blockCtor(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = ctor(blockMod(name), args, symName = symName)(k) - def shapeCtor(name: String, args: Ls[PathLike], symName: String = "tmp")(k: Shape => Block): Block = + def shapeCtor(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Shape => Block): Block = ctor(shapeMod(name), args, symName = symName)(p => k(Shape(p))) - def blockCall(name: String, args: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = + def blockCall(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = call(blockMod(name), args, symName = symName)(k) - def shapeCall(name: String, args: Ls[PathLike], symName: String = "tmp")(k: Path => Block): Block = + def shapeCall(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = call(shapeMod(name), args, symName = symName)(k) // helpers to create and access the components of a staged value From 8fa331b20e3bf441e6fd18017004e1987b2ccd90 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 00:37:14 +0800 Subject: [PATCH 094/654] fix applyBlock impl this makes it so modules that are not the first node of the Block will still be staged --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 4ef75d72d2..85d613e133 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -201,8 +201,8 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): // This stages any function definition, // instead of staging functions within staged modules. - override def applyBlock(b: Block): Block = b match - case Define(defn, rest) => + override def applyBlock(b: Block): Block = super.applyBlock(b) match + case d @ Define(defn, rest) => defn match // case f @ FunDefn(owner, sym, parameters, body) => // val genSym = BlockMemberSymbol("gen", Nil, true) // TODO: reuse original function name? @@ -230,5 +230,5 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val newModule = c.copy(sym = c.sym, companion = Some(newCompanion)) val debugBlock: Block = debugPrintCode.foldRight(rest)((b1, b2) => b1.mapTail { case _ => b2 }) Define(newModule, debugBlock) - case _ => b - case _ => b + case _ => d + case b => b From e167b2062777c37d3302a151ca0ae7f9532aeab2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 08:45:03 +0800 Subject: [PATCH 095/654] refactor transformFunDefn clean up function staging logic --- .../scala/hkmc2/codegen/Instrumentation.scala | 53 ++++++------------- 1 file changed, 17 insertions(+), 36 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 85d613e133..87cbd7a512 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -161,29 +161,26 @@ class InstrumentationImpl(using State): val Arg(spread, value) = a transformPath(value)(k) - def transformFunDefn(f: FunDefn): FunDefn = - val FunDefn(owner, sym, parameters, body) = f - val genSym = BlockMemberSymbol(sym.nme + "_gen", Nil, true) + // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function + // so we pass modSym instead + def transformFunDefn(modSym: Symbol, f: FunDefn): (FunDefn, Block) = + val genSym = BlockMemberSymbol(f.sym.nme + "_gen", Nil, true) // TODO: remove it. only for test // TODO: put correct parameters instead of Nil - val b = call(genSym.asPath, Nil): ret => - blockCall("printCode", Ls(StagedPath(ret).code)): _ => // discard result, we only care about side effect - transformBlock(body)(_.end) - FunDefn(owner, genSym, parameters, transformBlock(body)(_.end)) + val debug = + call(modSym.asPath.selSN(genSym.nme), Nil): ret => + blockCall("printCode", Ls(StagedPath(ret).code)): _ => // discard result, we only care about side effect + End() + + ( + f.copy(sym = genSym, body = transformBlock(f.body)(_.end)), + debug + ) def transformDefine(d: Define)(k: StagedPath => Block): Block = d.defn match // duplicated because we need a reference to genSym here - case f @ FunDefn(owner, sym, parameters, body) => - val genSym = BlockMemberSymbol(sym.nme + "_gen", Nil, true) - val b = transformBlock(d.rest): res => - // TODO: remove it. only for test - // TODO: put correct parameters instead of Nil - call(genSym.asPath, Nil): ret => - blockCall("printCode", Ls(StagedPath(ret).code)): _ => // discard result, we only care about side effect - res.end - val rest = Define(FunDefn(owner, genSym, parameters, transformBlock(body)(_.end)), b) - Define(f, rest) + case f: FunDefn => ??? case v: ValDefn => ruleVal(v, d.rest)(k) case c: ClsLikeDefn => ??? // nested class? @@ -204,28 +201,12 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): override def applyBlock(b: Block): Block = super.applyBlock(b) match case d @ Define(defn, rest) => defn match - // case f @ FunDefn(owner, sym, parameters, body) => - // val genSym = BlockMemberSymbol("gen", Nil, true) // TODO: reuse original function name? - // val staged = FunDefn(owner, genSym, parameters, impl.transformBlock(body)(_.end)) - // // TODO: remove it. only for test - // // TODO: put correct parameters instead of Nil - // val b = impl.call(genSym.asPath, Nil): ret => - // // discard result, we only care about side effect of printCode - // impl.blockCall("printCode", Ls(impl.StagedPath(ret).code)): _ => - // applyBlock(rest) - // Define(f, Define(staged, b)) // find modules with staged annotation case c: ClsLikeDefn if c.sym.defn.exists(_.hasStagedModifier.isDefined) && c.companion.isDefined => val companion = c.companion.get - val (stagedMethods, debugPrintCode) = companion.methods.map { case f @ FunDefn(owner, sym, parameters, body) => - val genSym = BlockMemberSymbol(sym.nme + "_gen", Nil, true) // TODO: reuse original function name? - // TODO: remove it. only for test - // TODO: put correct parameters instead of Nil - val b: Block = impl.call(c.sym.asPath.selSN(genSym.nme), Nil): ret => - impl.blockCall("printCode", Ls(impl.StagedPath(ret).code)): _ => // discard result, we only care about side effect - End() - (f.copy(sym = genSym, body = impl.transformBlock(body)(_.end)), b) - }.unzip + val (stagedMethods, debugPrintCode) = companion.methods + .map(impl.transformFunDefn(c.sym, _)) + .unzip val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods) val newModule = c.copy(sym = c.sym, companion = Some(newCompanion)) val debugBlock: Block = debugPrintCode.foldRight(rest)((b1, b2) => b1.mapTail { case _ => b2 }) From 0e08e07e433d12fdcf59d6701b3d078946b36c50 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 08:52:57 +0800 Subject: [PATCH 096/654] remove spread from Arg this makes having to import Option and makes transformArg easier to implement --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 0db9c74c0e..f8e4f0e898 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -16,7 +16,7 @@ class Symbol(val name: Str) type Ident = Symbol type Literal = null | undefined | Str | Int | Num | Bool -class Arg(val spread: Opt[Bool], val value: Path) // unused +type Arg = Path type ParamList = Array[Symbol] @@ -81,13 +81,8 @@ fun showPath(p: Path): Str = ValueLit(lit) then "Lit(" + showLiteral(lit) + ")" -fun showArg(a: Arg) = - if a.spread is - Some(true) then "..." + showPath(a.value) - _ then showPath(a.value) - fun showArgs(args: Array[Arg]) = - "[" + args.map(showArg).joinWith(", ") + "]" + "[" + args.map(showPath).joinWith(", ") + "]" // Case (match arm patterns) fun showCase(c: Case): Str = @@ -149,7 +144,6 @@ fun show(x) = Result then showResult(x) Case then showCase(x) Defn then showDefn(x) - Arg then showArg(x) Block then showBlock(x) else "" From 827f6af3ab0dd840b11f685cdf196910fda63395 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 09:56:27 +0800 Subject: [PATCH 097/654] clean up outdated comments and helpers --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 87cbd7a512..9807c1c8dd 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -48,9 +48,6 @@ class InstrumentationImpl(using State): val tmp = new TempSymbol(N, symName) Assign(tmp, res, k(tmp.asPath)) - def select(qual: Path, ident: Tree.Ident): Path = - Select(qual, ident)(N) - def tuple(elems: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = // is this the same as "Ls of"? assign(Tuple(false, elems.map(asArg)), symName)(k) @@ -105,7 +102,6 @@ class InstrumentationImpl(using State): def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = // why assume it is already staged? val sp = StagedPath(r) - // why not just use sp.code? blockCtor("Symbol", Ls(toValue(r.l.nme))): sym => blockCtor("ValueRef", Ls(sym)): cde => StagedPath.mk(sp.shape, cde, "var")(k) @@ -121,7 +117,6 @@ class InstrumentationImpl(using State): (Assign(x, y.p, _)): transformBlock(b): z => blockCtor("Symbol", Ls(toValue(x.nme))): x => - // need to wrap x with Symbol? blockCtor("Assign", Ls(x, y.code, z.code)): cde => StagedPath.mk(z.shape, cde, "ass")(k) @@ -209,7 +204,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): .unzip val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods) val newModule = c.copy(sym = c.sym, companion = Some(newCompanion)) - val debugBlock: Block = debugPrintCode.foldRight(rest)((b1, b2) => b1.mapTail { case _ => b2 }) + val debugBlock = debugPrintCode.foldRight(rest)((b1, b2) => b1.mapTail { case _ => b2 }) Define(newModule, debugBlock) case _ => d case b => b From 57b45fd5d6d8bd9976da4f755068190450381d80 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 10:26:38 +0800 Subject: [PATCH 098/654] implement ruleTup --- .../scala/hkmc2/codegen/Instrumentation.scala | 27 +++++++++++++++++++ .../src/test/mlscript-compile/Block.mls | 2 +- .../src/test/mlscript/staging/Functions.mls | 4 ++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 9807c1c8dd..8ac4e34969 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -41,6 +41,17 @@ class InstrumentationImpl(using State): case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) + // TODO: use BlockTransformer.applyListOf? + extension [A](ls: Ls[(A => Block) => Block]) + def collectApply(f: Ls[A] => Block): Block = + // defer applying k while prepending new paths to the list + ls.foldRight((_: Ls[A] => Block)(Nil))((headCont, tailCont) => + k => + headCont: head => + tailCont: tail => + k(head :: tail) + )(f) + // helpers corresponding to constructors def assign(res: Result, symName: String = "tmp")(k: Path => Block): Assign = @@ -106,6 +117,15 @@ class InstrumentationImpl(using State): blockCtor("ValueRef", Ls(sym)): cde => StagedPath.mk(sp.shape, cde, "var")(k) + def ruleTup(t: Tuple)(k: StagedPath => Block): Block = + assert(!t.mut) + transformArgs(t.elems): xs => + tuple(xs.map(_.shape)): shapes => + shapeCtor("Arr", Ls(shapes)): sp => + tuple(xs.map(_.code)): codes => + blockCtor("Tuple", Ls(codes)): cde => + StagedPath.mk(sp, cde, "tup")(k) + def ruleReturn(r: Return)(k: StagedPath => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code)): cde => @@ -150,12 +170,17 @@ class InstrumentationImpl(using State): transformPath(p): p => blockCtor("TrivialResult", Ls(p.code)): cde => StagedPath.mk(p.shape, cde)(k) + case t: Tuple => ruleTup(t)(k) case _ => ??? // not supported def transformArg(a: Arg)(k: StagedPath => Block): Block = val Arg(spread, value) = a transformPath(value)(k) + // provides list of shapes and list of codes to continuation + def transformArgs(args: Ls[Arg])(k: Ls[StagedPath] => Block): Block = + args.map(transformArg).collectApply(k) + // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead def transformFunDefn(modSym: Symbol, f: FunDefn): (FunDefn, Block) = @@ -185,6 +210,8 @@ class InstrumentationImpl(using State): case a: Assign => ruleAssign(a)(k) case d: Define => transformDefine(d)(k) case End(_) => ruleEnd()(k) + // temporary measure to accept returning an array + case Begin(b1, b2) => transformBlock(b1.mapTail { case _ => b2 })(k) case _ => ??? // not supported // TODO: rename as InstrumentationTransformer? diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index f8e4f0e898..30fee28783 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -82,7 +82,7 @@ fun showPath(p: Path): Str = "Lit(" + showLiteral(lit) + ")" fun showArgs(args: Array[Arg]) = - "[" + args.map(showPath).joinWith(", ") + "]" + "[" + args.map(showPath).join(", ") + "]" // Case (match arm patterns) fun showCase(c: Case): Str = diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 9f61a56a4c..5dddcb891e 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -8,9 +8,11 @@ staged module A with let x = 42 let y = x y - fun i() = + fun h() = val x = 1 x + fun i() = [1, 2] //│ > Return(Lit(1), false) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) //│ > Define(ValDefn(Symbol("x"), Lit(1)), Return(Ref(Symbol("x")), false)) +//│ > Return(Tuple([Lit(1), Lit(2)]), false) From 37eb7a10181a4a92fe633fe1ee89ca1f412d3b23 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 10:51:09 +0800 Subject: [PATCH 099/654] formatting --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 8ac4e34969..de8f29b61c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -105,9 +105,9 @@ class InstrumentationImpl(using State): // instrumentation rules - def ruleLit(l: Literal)(k: StagedPath => Block): Block = - shapeCtor("Lit", Ls(Value.Lit(l))): sp => - blockCtor("ValueLit", Ls(Value.Lit(l))): cde => + def ruleLit(l: Value.Lit)(k: StagedPath => Block): Block = + shapeCtor("Lit", Ls(l)): sp => + blockCtor("ValueLit", Ls(l)): cde => StagedPath.mk(sp, cde, "lit")(k) def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = @@ -161,7 +161,7 @@ class InstrumentationImpl(using State): def transformPath(p: Path)(k: StagedPath => Block): Block = p match case r: Value.Ref => ruleVar(r)(k) - case Value.Lit(lit) => ruleLit(lit)(k) + case l: Value.Lit => ruleLit(l)(k) case _ => ??? // not supported def transformResult(r: Result)(k: StagedPath => Block): Block = From 69f5997ce86603cc7f897cf367fb323004b56b75 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 11:22:36 +0800 Subject: [PATCH 100/654] implement ruleSel and ruleInst --- .../scala/hkmc2/codegen/Instrumentation.scala | 27 +++++++++++++++++++ .../src/test/mlscript-compile/Shape.mls | 6 ++--- .../src/test/mlscript/staging/Functions.mls | 12 +++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index de8f29b61c..af3d4109da 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -102,6 +102,8 @@ class InstrumentationImpl(using State): def fnPrintCode(p: Path)(k: Path => Block): Block = blockCall("printCode", Ls(p))(k) + def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = + shapeCall("sel", Ls(s1, s2))(s => k(Shape(s))) // instrumentation rules @@ -126,6 +128,29 @@ class InstrumentationImpl(using State): blockCtor("Tuple", Ls(codes)): cde => StagedPath.mk(sp, cde, "tup")(k) + def ruleSel(s: Select)(k: StagedPath => Block): Block = + val Select(p, i @ Tree.Ident(name)) = s + transformPath(p): x => + // TODO: figure out actual shape + shapeCtor("Dyn", Ls()): n => + fnSel(x.shape, n): sp => + blockCtor("Symbol", Ls(toValue(name))): name => + blockCtor("Select", Ls(x.code, name)): cde => + StagedPath.mk(sp, cde, "sel")(k) + + def ruleInst(i: Instantiate)(k: StagedPath => Block): Block = + val Instantiate(mut, cls, args) = i + assert(!mut) + transformArgs(args): xs => + tuple(xs.map(_.shape)): shapes => + tuple(xs.map(_.code)): codes => + // NOTE: this was not needed in the formalization + // but it seems to be necessary to stage the path? + transformPath(cls): cls => + shapeCtor("Class", Ls(cls.code, shapes)): sp => + blockCtor("Instantiate", Ls(cls.code, codes)): cde => + StagedPath.mk(sp, cde, "inst")(k) + def ruleReturn(r: Return)(k: StagedPath => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code)): cde => @@ -162,6 +187,7 @@ class InstrumentationImpl(using State): p match case r: Value.Ref => ruleVar(r)(k) case l: Value.Lit => ruleLit(l)(k) + case s: Select => ruleSel(s)(k) case _ => ??? // not supported def transformResult(r: Result)(k: StagedPath => Block): Block = @@ -171,6 +197,7 @@ class InstrumentationImpl(using State): blockCtor("TrivialResult", Ls(p.code)): cde => StagedPath.mk(p.shape, cde)(k) case t: Tuple => ruleTup(t)(k) + case i: Instantiate => ruleInst(i)(k) case _ => ??? // not supported def transformArg(a: Arg)(k: StagedPath => Block): Block = diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index a688490556..f149533b3c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -12,12 +12,12 @@ module Shape with... class Shape with constructor - Dyn + Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape]) // is length parameter needed? // TODO: change sym to accept multiple possible class symbols? Class(val sym: Symbol, val shapes: Array[Shape]) - Unit + Unit() fun isPrimitiveType(sym: Str) = if sym is @@ -67,7 +67,7 @@ fun sel(s1: Shape, s2: Shape) = [Dyn, Lit(n)] and n is Int then Dyn [Dyn, Dyn] then Dyn - _ then ??? + _ then Dyn // temp, makes call not error fun static(s: Shape) = if s diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 5dddcb891e..cd00dea636 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -2,6 +2,7 @@ :js :staging // :ssjs +class B() staged module A with fun f() = 1 fun g() = @@ -12,7 +13,18 @@ staged module A with val x = 1 x fun i() = [1, 2] + fun j() = new B() //│ > Return(Lit(1), false) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) //│ > Define(ValDefn(Symbol("x"), Lit(1)), Return(Ref(Symbol("x")), false)) //│ > Return(Tuple([Lit(1), Lit(2)]), false) +//│ > Return(Instantiate(Select(Ref(Symbol("B")), Symbol("class")), []), false) + +// collision with class name? +:js +:staging +:fixme +class A() +staged module A with + fun f() = 1 +//│ ═══[RUNTIME ERROR] TypeError: A3.f_gen is not a function From 6831c6157a4747269c64246ed43ea48566a258a1 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 11:24:58 +0800 Subject: [PATCH 101/654] remove outdated comment --- hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index af3d4109da..f0fd125d7a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -60,7 +60,6 @@ class InstrumentationImpl(using State): Assign(tmp, res, k(tmp.asPath)) def tuple(elems: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = - // is this the same as "Ls of"? assign(Tuple(false, elems.map(asArg)), symName)(k) def ctor(cls: Path, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = From ab92537dd3655bb4661a1abfc224e0e286ceb773 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 11:48:11 +0800 Subject: [PATCH 102/654] clean up symName printing --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f0fd125d7a..277df5fcc2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -75,9 +75,9 @@ class InstrumentationImpl(using State): def shapeMod(name: String) = summon[State].shapeSymbol.asPath.selSN(name) def blockCtor(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = - ctor(blockMod(name), args, symName = symName)(k) + ctor(blockMod(name), args)(k) def shapeCtor(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Shape => Block): Block = - ctor(shapeMod(name), args, symName = symName)(p => k(Shape(p))) + ctor(shapeMod(name), args)(p => k(Shape(p))) def blockCall(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = call(blockMod(name), args, symName = symName)(k) @@ -153,7 +153,7 @@ class InstrumentationImpl(using State): def ruleReturn(r: Return)(k: StagedPath => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code)): cde => - StagedPath.mk(x.shape, cde, "ret")(k) + StagedPath.mk(x.shape, cde, "return")(k) def ruleAssign(a: Assign)(k: StagedPath => Block): Block = val Assign(x, r, b) = a @@ -162,7 +162,7 @@ class InstrumentationImpl(using State): transformBlock(b): z => blockCtor("Symbol", Ls(toValue(x.nme))): x => blockCtor("Assign", Ls(x, y.code, z.code)): cde => - StagedPath.mk(z.shape, cde, "ass")(k) + StagedPath.mk(z.shape, cde, "assign")(k) def ruleEnd()(k: StagedPath => Block): Block = shapeCtor("Unit", Ls()): sp => From 29c1109a2ce574c261b419891a46489fd5b0d901 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 10 Nov 2025 11:48:50 +0800 Subject: [PATCH 103/654] formatting --- .../scala/hkmc2/codegen/Instrumentation.scala | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 277df5fcc2..578501349b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -54,34 +54,34 @@ class InstrumentationImpl(using State): // helpers corresponding to constructors - def assign(res: Result, symName: String = "tmp")(k: Path => Block): Assign = + def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Assign = // TODO: skip assignment if res: Path? val tmp = new TempSymbol(N, symName) Assign(tmp, res, k(tmp.asPath)) - def tuple(elems: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = + def tuple(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = assign(Tuple(false, elems.map(asArg)), symName)(k) - def ctor(cls: Path, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = + def ctor(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = assign(Instantiate(false, cls, args.map(asArg)), symName)(k) // isMlsFun is probably always true? - def call(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: String = "tmp")(k: Path => Block): Block = + def call(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = assign(Call(fun, args.map(asArg))(isMlsFun, false), symName)(k) // helper for staging the constructors - def blockMod(name: String) = summon[State].blockSymbol.asPath.selSN(name) - def shapeMod(name: String) = summon[State].shapeSymbol.asPath.selSN(name) + def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) + def shapeMod(name: Str) = summon[State].shapeSymbol.asPath.selSN(name) - def blockCtor(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = + def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = ctor(blockMod(name), args)(k) - def shapeCtor(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Shape => Block): Block = + def shapeCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Shape => Block): Block = ctor(shapeMod(name), args)(p => k(Shape(p))) - def blockCall(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = + def blockCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = call(blockMod(name), args, symName = symName)(k) - def shapeCall(name: String, args: Ls[ArgWrappable], symName: String = "tmp")(k: Path => Block): Block = + def shapeCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = call(shapeMod(name), args, symName = symName)(k) // helpers to create and access the components of a staged value @@ -94,7 +94,7 @@ class InstrumentationImpl(using State): def end: Block = Return(p, false) object StagedPath: - def mk(shape: Shape, code: Path, symName: String = "tmp")(k: StagedPath => Block): Block = + def mk(shape: Shape, code: Path, symName: Str = "tmp")(k: StagedPath => Block): Block = tuple(Ls(shape.p, code), symName)(p => k(StagedPath(p))) // linking functions defined in MLscipt From 55fdf2666d7ea4fec0a440116a211b9afb3c07a3 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 11 Nov 2025 20:08:49 +0800 Subject: [PATCH 104/654] Add shape in diff testing --- hkmc2/shared/src/test/mlscript/staging/PrintCode.mls | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index 332923c4f8..a09ef4f3a2 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -40,6 +40,14 @@ //│ Class: fun Class { class: class Class }, //│ Unit: class Unit //│ } +//│ Shape = class Shape { +//│ Shape: class Shape, +//│ Dyn: class Dyn, +//│ Lit: fun Lit { class: class Lit }, +//│ Arr: fun Arr { class: class Arr }, +//│ Class: fun Class { class: class Class }, +//│ Unit: class Unit +//│ } Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.TrivialResult(Block.ValueLit(1)), false))) //│ > FunDefn(Symbol("f"), [Symbol("x")], Return(Lit(1), false)) From 1e0eb651696629888d3ad5f3160df88f9cfcbd6a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 17 Nov 2025 09:57:45 +0800 Subject: [PATCH 105/654] update note as BlockTransformer doesn't pass around a context, the implementation should be more than just a extension of BlockTransformer --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 578501349b..37fc7544fb 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -13,15 +13,8 @@ import semantics.Elaborator.State import syntax.{Literal, Tree} -// TODO: I didn't use BlockTransformer here, because in some cases it constrains the type of the continuation -// but it seems some logic should be deferred to it to dedup code - -// it should be possible to convert to the BlockTransformer signatures, -// but it would require re-extracting and re-assigning StagedPath from the output. - -// the continuation would basically be solely dedicated to staging then? -// like, we do a transformation on DynSelect where we keep the fields inteact, then perform staging in the DynSelect => Block continuation? -// the previous blocks created by the fields are handled by BlockTransformer's continuation code +// it seems some logic should be deferred to BlockTransformer to dedup code +// but it doesn't accept the current context, so applications seem limited class InstrumentationImpl(using State): type ArgWrappable = Path | Symbol | Shape From 772c93a42514afb17959df023a1556258a2ee656 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:16:00 +0800 Subject: [PATCH 106/654] update Shape constructors --- .../scala/hkmc2/codegen/Instrumentation.scala | 11 ++-- .../src/test/mlscript-compile/Shape.mls | 61 +++++++++---------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 37fc7544fb..4731443a26 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -34,7 +34,7 @@ class InstrumentationImpl(using State): case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) - // TODO: use BlockTransformer.applyListOf? + // TODO: use BlockTransformer.applyListOf? extension [A](ls: Ls[(A => Block) => Block]) def collectApply(f: Ls[A] => Block): Block = // defer applying k while prepending new paths to the list @@ -104,6 +104,7 @@ class InstrumentationImpl(using State): blockCtor("ValueLit", Ls(l)): cde => StagedPath.mk(sp, cde, "lit")(k) + // outdated def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = // why assume it is already staged? val sp = StagedPath(r) @@ -158,10 +159,12 @@ class InstrumentationImpl(using State): StagedPath.mk(z.shape, cde, "assign")(k) def ruleEnd()(k: StagedPath => Block): Block = - shapeCtor("Unit", Ls()): sp => - blockCtor("End", Ls()): cde => - StagedPath.mk(sp, cde, "end")(k) + assign(State.globalThisSymbol.asPath.selSN("Set")): newSet => + shapeCtor("Multiple", Ls(newSet)): sp => + blockCtor("End", Ls()): cde => + StagedPath.mk(sp, cde, "end")(k) + // converted to ruleLet? def ruleVal(defn: ValDefn, b: Block)(k: StagedPath => Block): Block = val ValDefn(tsym, x, p) = defn transformPath(p): y => diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index f149533b3c..b6ee6fa1d8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -15,9 +15,8 @@ class Shape with Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape]) // is length parameter needed? - // TODO: change sym to accept multiple possible class symbols? Class(val sym: Symbol, val shapes: Array[Shape]) - Unit() + Multiple(val shapes: Set) // empty represents bottom fun isPrimitiveType(sym: Str) = if sym is @@ -58,24 +57,28 @@ fun mrg(s1: Array[Shape]) = fun sel(s1: Shape, s2: Shape) = if [s1, s2] is - [Class(c, shapes), Lit(n)] - and n is Str then shapes.at(n) // field name election using Str? - [Dyn, Lit(n)] - and n is Str then Dyn - [Arr(shapes), Lit(n)] - and n is Int then shapes.at(n) - [Dyn, Lit(n)] - and n is Int then Dyn - [Dyn, Dyn] then Dyn + [Class(c, shapes), Lit(n)] and n is Str + then shapes.at(n) // field name election using Str? + [Dyn, Lit(n)] and n is Str + then Dyn + [Arr(shapes), Lit(n)] and n is Int + then shapes.at(n) + [Arr(shapes), Dyn] then + Multiple(new Set(shapes)) + [Dyn, Lit(n)] and n is Int + then Dyn + [Dyn, Dyn] + then Dyn + [Multiple(shapes), s2] + then Multiple(new Set(shapes.values().map((s, _) => sel(s, s2)))) _ then Dyn // temp, makes call not error fun static(s: Shape) = - if s - == Dyn then false - is - Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? - Class(_, shapes) then shapes.every((s, _, _) => static(s)) - Arr(shapes) then shapes.every((s, _, _) => static(s)) + if s is + Dyn then false + Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? + Class(_, shapes) then shapes.every((s, _, _) => static(s)) + Arr(shapes) then shapes.every((s, _, _) => static(s)) type SLit = Lit open Block @@ -89,19 +92,13 @@ fun silh(p: Case): Shape = if p is Field(name) then ??? Wildcard then Dyn -fun match(s: Shape, p: Case): Option[Bool] = +fun filter(s: Shape, p: Case): Shape = if [s, p] is - [Lit(l1), Lit(l2)] then Some(true) - [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then Some(true) - [Class(c1, _), Cls(c2, _)] and c1 == c2 then Some(true) - [Arr(ls), Tup(n, inf)] and ls.length == n then Some(true) - [_, Block.Wildcard] then Some(true) - [Shape.Dyn, _] then None - _ then Some(false) - -fun det(s: Shape, ps: Array[Case]): Bool = - ps.every((p, i, a) => - if i != ps.length - 1 - then match(s, p) == Some(false) - else match(s, p) == Some(true) - ) + [_, Wildcard] then s + [Lit(l1), Lit(l2)] and l1 == l2 then l1 // typo? should be Lit(l1)? + [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then s + [Arr(ls), Tup(n, _)] and ls.length == n then s + [Class(c1, _), Cls(c2, _)] and c1 == c2 then s + [Dyn, _] then silh(p) + [Multiple(shapes), _] then Multiple(shapes.map((s, _, _) => filter(s, p))) + _ then Multiple(new Set()) From fbe45ea1e7a82a9363b3b45c127cc9cd71b8ff20 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:53:26 +0800 Subject: [PATCH 107/654] add context --- .../scala/hkmc2/codegen/Instrumentation.scala | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 4731443a26..90cbca8e38 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -18,6 +18,7 @@ import syntax.{Literal, Tree} class InstrumentationImpl(using State): type ArgWrappable = Path | Symbol | Shape + type Context = HashMap[Path, StagedPath] def asArg(x: ArgWrappable): Arg = x match @@ -112,7 +113,7 @@ class InstrumentationImpl(using State): blockCtor("ValueRef", Ls(sym)): cde => StagedPath.mk(sp.shape, cde, "var")(k) - def ruleTup(t: Tuple)(k: StagedPath => Block): Block = + def ruleTup(t: Tuple)(using ctx: Context)(k: StagedPath => Block): Block = assert(!t.mut) transformArgs(t.elems): xs => tuple(xs.map(_.shape)): shapes => @@ -121,7 +122,7 @@ class InstrumentationImpl(using State): blockCtor("Tuple", Ls(codes)): cde => StagedPath.mk(sp, cde, "tup")(k) - def ruleSel(s: Select)(k: StagedPath => Block): Block = + def ruleSel(s: Select)(using ctx: Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => // TODO: figure out actual shape @@ -131,7 +132,7 @@ class InstrumentationImpl(using State): blockCtor("Select", Ls(x.code, name)): cde => StagedPath.mk(sp, cde, "sel")(k) - def ruleInst(i: Instantiate)(k: StagedPath => Block): Block = + def ruleInst(i: Instantiate)(using ctx: Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut) transformArgs(args): xs => @@ -144,19 +145,20 @@ class InstrumentationImpl(using State): blockCtor("Instantiate", Ls(cls.code, codes)): cde => StagedPath.mk(sp, cde, "inst")(k) - def ruleReturn(r: Return)(k: StagedPath => Block): Block = + def ruleReturn(r: Return)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code)): cde => - StagedPath.mk(x.shape, cde, "return")(k) + StagedPath.mk(x.shape, cde, "return")(k(_, ctx)) - def ruleAssign(a: Assign)(k: StagedPath => Block): Block = + // outdated + def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a transformResult(r): y => (Assign(x, y.p, _)): - transformBlock(b): z => + transformBlock(b): z => // have ctx here? blockCtor("Symbol", Ls(toValue(x.nme))): x => blockCtor("Assign", Ls(x, y.code, z.code)): cde => - StagedPath.mk(z.shape, cde, "assign")(k) + StagedPath.mk(z.shape, cde, "assign")(k(_, ctx)) def ruleEnd()(k: StagedPath => Block): Block = assign(State.globalThisSymbol.asPath.selSN("Set")): newSet => @@ -165,7 +167,8 @@ class InstrumentationImpl(using State): StagedPath.mk(sp, cde, "end")(k) // converted to ruleLet? - def ruleVal(defn: ValDefn, b: Block)(k: StagedPath => Block): Block = + // outdated + def ruleVal(defn: ValDefn, b: Block)(using ctx: Context)(k: StagedPath => Block): Block = val ValDefn(tsym, x, p) = defn transformPath(p): y => // y is StagedPath, not Path? @@ -178,14 +181,14 @@ class InstrumentationImpl(using State): // transformations of Block - def transformPath(p: Path)(k: StagedPath => Block): Block = + def transformPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = p match case r: Value.Ref => ruleVar(r)(k) case l: Value.Lit => ruleLit(l)(k) case s: Select => ruleSel(s)(k) - case _ => ??? // not supported + case _ => ??? // not supporteda - def transformResult(r: Result)(k: StagedPath => Block): Block = + def transformResult(r: Result)(using ctx: Context)(k: StagedPath => Block): Block = r match case p: Path => transformPath(p): p => @@ -195,17 +198,17 @@ class InstrumentationImpl(using State): case i: Instantiate => ruleInst(i)(k) case _ => ??? // not supported - def transformArg(a: Arg)(k: StagedPath => Block): Block = + def transformArg(a: Arg)(using ctx: Context)(k: StagedPath => Block): Block = val Arg(spread, value) = a transformPath(value)(k) // provides list of shapes and list of codes to continuation - def transformArgs(args: Ls[Arg])(k: Ls[StagedPath] => Block): Block = + def transformArgs(args: Ls[Arg])(using ctx: Context)(k: Ls[StagedPath] => Block): Block = args.map(transformArg).collectApply(k) // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead - def transformFunDefn(modSym: Symbol, f: FunDefn): (FunDefn, Block) = + def transformFunDefn(modSym: Symbol, f: FunDefn)(using ctx: Context): (FunDefn, Block) = val genSym = BlockMemberSymbol(f.sym.nme + "_gen", Nil, true) // TODO: remove it. only for test // TODO: put correct parameters instead of Nil @@ -219,17 +222,19 @@ class InstrumentationImpl(using State): debug ) - def transformDefine(d: Define)(k: StagedPath => Block): Block = + def transformDefine(d: Define)(using ctx: Context)(k: StagedPath => Block): Block = d.defn match // duplicated because we need a reference to genSym here case f: FunDefn => ??? case v: ValDefn => ruleVal(v, d.rest)(k) case c: ClsLikeDefn => ??? // nested class? - def transformBlock(b: Block)(k: StagedPath => Block): Block = + def transformBlock(b: Block)(using ctx: Context)(k: StagedPath => Block): Block = + // ruleBlk? + val k2 = (p: StagedPath, ctx: Context) => k(p) b match - case r: Return => ruleReturn(r)(k) - case a: Assign => ruleAssign(a)(k) + case r: Return => ruleReturn(r)(k2) + case a: Assign => ruleAssign(a)(k2) case d: Define => transformDefine(d)(k) case End(_) => ruleEnd()(k) // temporary measure to accept returning an array @@ -249,7 +254,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case c: ClsLikeDefn if c.sym.defn.exists(_.hasStagedModifier.isDefined) && c.companion.isDefined => val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods - .map(impl.transformFunDefn(c.sym, _)) + .map(impl.transformFunDefn(c.sym, _)(using new HashMap())) // fold instead to retain env? .unzip val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods) val newModule = c.copy(sym = c.sym, companion = Some(newCompanion)) From 873c8cc2259efc7751ea79e977e8881796090e4a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:53:46 +0800 Subject: [PATCH 108/654] remove outdated comments --- .../shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 3 --- 1 file changed, 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 90cbca8e38..0617675a75 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -224,7 +224,6 @@ class InstrumentationImpl(using State): def transformDefine(d: Define)(using ctx: Context)(k: StagedPath => Block): Block = d.defn match - // duplicated because we need a reference to genSym here case f: FunDefn => ??? case v: ValDefn => ruleVal(v, d.rest)(k) case c: ClsLikeDefn => ??? // nested class? @@ -245,8 +244,6 @@ class InstrumentationImpl(using State): class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val impl = new InstrumentationImpl - // This stages any function definition, - // instead of staging functions within staged modules. override def applyBlock(b: Block): Block = super.applyBlock(b) match case d @ Define(defn, rest) => defn match From 31809c784a751c55d3c8b3f076af6cf67dd5eb1d Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 20 Nov 2025 16:44:04 +0800 Subject: [PATCH 109/654] correc comment --- hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f0fd125d7a..4fca2c8c3e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -20,7 +20,7 @@ import syntax.{Literal, Tree} // but it would require re-extracting and re-assigning StagedPath from the output. // the continuation would basically be solely dedicated to staging then? -// like, we do a transformation on DynSelect where we keep the fields inteact, then perform staging in the DynSelect => Block continuation? +// like, we do a transformation on DynSelect where we keep the fields intact, then perform staging in the DynSelect => Block continuation? // the previous blocks created by the fields are handled by BlockTransformer's continuation code class InstrumentationImpl(using State): From 91e5197ca676e329ec2eaa6672649dcb08b41aa9 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 20 Nov 2025 16:44:25 +0800 Subject: [PATCH 110/654] fix pretty print to print mlscript --- .../src/test/mlscript-compile/Block.mls | 158 ++++++++---------- .../src/test/mlscript/staging/PrintCode.mls | 45 +++-- 2 files changed, 103 insertions(+), 100 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 30fee28783..0b01e6915b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -1,9 +1,8 @@ -import "./Predef.mls" +// import "./Predef.mls" import "./Option.mls" import "./StrOps.mls" -open Predef -open StrOps +// open Predef open Option module Block with... @@ -11,25 +10,25 @@ module Block with... type Opt[A] = Option[A] // dependancies referenced in Block classes, referencing implementation in Term.mls - class Symbol(val name: Str) type Ident = Symbol +// what's the difference between Ident & Symbol? type Literal = null | undefined | Str | Int | Num | Bool -type Arg = Path type ParamList = Array[Symbol] // Classes defined in Block.scala - class Path with constructor Select(val qual: Path, val name: Ident) DynSelect(val qual: Path, val fld: Path, val arrayIdx: Bool) ValueRef(val l: Symbol) ValueLit(val lit: Literal) + +class Arg(val spread: Opt[Bool], val value: Path) +// Classes defined in Block.scala -// Match pattern for staged code class Case with constructor Lit(val lit: Literal) @@ -50,104 +49,91 @@ class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused - FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) + FunDefn(val sym: Symbol, val params: ParamList, val body: Block, val stage: Bool) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused +class Arm(val cse: Case, val body: Block) + class Block with constructor - Match(val scrut: Path, val arms: Array[[Case, Block]], val dflt: Opt[Block], val rest: Block) + Match(val scrut: Path, val arms: Array[Arm], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) End() -fun showBool(b: Bool) = if b then "true" else "false" - -fun showLiteral(l: Literal) = l.toString() -fun showSymbol(s: Symbol) = "Symbol(" + "\"" + s.name + "\"" + ")" +fun showSymbol(s) = s.name -fun showIdent(i: Ident) = showSymbol(i) +fun showLiteral(l) = l.toString() -fun showPath(p: Path): Str = +fun showPath(p) = if p is - Select(qual, name) then - "Select(" + showPath(qual) + ", " + showIdent(name) + ")" - DynSelect(qual, fld, arrayIdx) then - "DynSelect(" + showPath(qual) + ", " + showPath(fld) + ", " + showBool(arrayIdx) + ")" - ValueRef(l) then - "Ref(" + showSymbol(l) + ")" - ValueLit(lit) then - "Lit(" + showLiteral(lit) + ")" - -fun showArgs(args: Array[Arg]) = - "[" + args.map(showPath).join(", ") + "]" - -// Case (match arm patterns) -fun showCase(c: Case): Str = - if c is - Lit(lit) then "Lit(" + showLiteral(lit) + ")" - Cls(cls, path) then "Cls(" + showSymbol(cls) + ", " + showPath(path) + ")" - Tup(len, inf) then "Tup(" + len + ", " + showBool(inf) + ")" - Field(name) then "Field(" + showIdent(name) + ")" - Wildcard then "Wildcard" + Select(qual, name) then showPath(qual) + "." + showSymbol(name) + DynSelect(qual, fld, idx) then showPath(qual) + "[" + showPath(fld) + "]" + ValueRef(s) then showSymbol(s) + ValueLit(l) then showLiteral(l) + _ then "" -fun showResult(r: Result): Str = +fun showArg(a) = + (if a.spread is Some(true) then "..." else "") + showPath(a.value) + +fun showArgs(args) = + args.map(showArg) + +fun showResult(r) = if r is - TrivialResult(path) then showPath(path) - Call(f, args) then "Call(" + showPath(f) + ", " + showArgs(args) + ")" - Instantiate(cls, args) then "Instantiate(" + showPath(cls) + ", " + showArgs(args) + ")" - Tuple(elems) then "Tuple(" + showArgs(elems) + ")" + TrivialResult(p) then showPath(p) + Call(f, args) then showPath(f) + "(" + showArgs(args) + ")" + Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" + Tuple(elems) then "(" + showArgs(elems) + ")" + +fun showCase(c) = + if c is + Lit(l) then showLiteral(l) + Cls(cls, p) then showSymbol(cls) + "(" + showPath(p) + ")" + Tup(len, inf) then "Tuple" // Simplified + Field(n) then showSymbol(n) + Wildcard then "_" + +fun showArm(a) = + showCase(a.cse) + " then " + showBlock(a.body) + +fun showParamsOpt(p) = + if p is + Some(s) then showParams(s) + None then "()" -fun showParamList(ps: ParamList) = - "[" + ps.map(s => showSymbol(s)).join(", ") + "]" +fun showParams(p: ParamList) = + "(" + p.map(showSymbol).join(", ") + ")" -fun showDefn(d: Defn): Str = +fun showDefn(d) = if d is ValDefn(sym, rhs) then - "ValDefn(" + showSymbol(sym) + ", " + showPath(rhs) + ")" - FunDefn(sym, params, body) then - "FunDefn(" + showSymbol(sym) + ", " + - showParamList(params) + ", " + - showBlock(body) + ")" - ClsLikeDefn(sym, paramsOpt, companion) then - // minimal, since this is unused in your staged Block for now - "ClsLikeDefn(" + showSymbol(sym) + ")" - -fun showOptBlock(ob: Opt[Block]) = - if ob is Some(b) then showBlock(b) else "None" - -fun showArm(pair: Case -> Block) = - if pair is [cse, body] then showCase(cse) + " -> " + showBlock(body) else "" - -fun showBlock(b: Block): Str = + "let " + showSymbol(sym) + " = " + showPath(rhs) + FunDefn(sym, params, body, stage) then + "fun " + showSymbol(sym) + "(" + params.map(showSymbol) + ") =" + + (if body is Return(_, _) then " " else "\n ") + showBlock(body) + ClsLikeDefn(sym, paramsOpt, _) then + "class " + showSymbol(sym) + showParamsOpt(paramsOpt) + +fun showBlock(b) = if b is + Assign(lhs, rhs, rest) then + "let " + showSymbol(lhs) + " = " + showResult(rhs) + "\n" + showBlock(rest) + Define(d, rest) then + showDefn(d) + "\n" + showBlock(rest) + Return(res, _) then + showResult(res) Match(scrut, arms, dflt, rest) then - "Match(" + - showPath(scrut) + ", " + - "[" + arms.map(showArm).join(", ") + "], " + - showOptBlock(dflt) + ", " + - showBlock(rest) + ")" - Return(res, implct) then - "Return(" + showResult(res) + ", " + showBool(implct) + ")" - Assign(lhs, rhs, rest) then - "Assign(" + showSymbol(lhs) + ", " + showResult(rhs) + ", " + showBlock(rest) + ")" - Define(defn, rest) then - "Define(" + showDefn(defn) + ", " + showBlock(rest) + ")" - End() then "End" - -fun show(x) = - if x is - Symbol then showSymbol(x) - Path then showPath(x) - Result then showResult(x) - Case then showCase(x) - Defn then showDefn(x) - Block then showBlock(x) - else - "" - -fun printCode(x) = print(show(x)) - -fun compile(p: Block) = ??? \ No newline at end of file + "if " + showPath(scrut) + " is\n" + + arms.map(showArm).join("\n") + + (if dflt is Some(db) then "\nelse " + showBlock(db) else "") + + "\n" + showBlock(rest) + End() then "" + _ then "" + +fun printCode(p: Block) = + let s = showBlock(p) in + console.log(s) diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index a09ef4f3a2..1a3c7f27b9 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -3,12 +3,12 @@ //│ Block = class Block { //│ Symbol: fun Symbol { class: class Symbol }, -//│ Arg: fun Arg { class: class Arg }, //│ Path: class Path, //│ Select: fun Select { class: class Select }, //│ DynSelect: fun DynSelect { class: class DynSelect }, //│ ValueRef: fun ValueRef { class: class ValueRef }, //│ ValueLit: fun ValueLit { class: class ValueLit }, +//│ Arg: fun Arg { class: class Arg }, //│ Case: class Case, //│ Lit: fun Lit { class: class Lit }, //│ Cls: fun Cls { class: class Cls }, @@ -25,6 +25,7 @@ //│ ClsLikeDefn: fun ClsLikeDefn { class: class ClsLikeDefn }, //│ FunDefn: fun FunDefn { class: class FunDefn }, //│ ClsLikeBody: fun ClsLikeBody { class: class ClsLikeBody }, +//│ Arm: fun Arm { class: class Arm }, //│ Block: class Block, //│ Match: fun Match { class: class Match }, //│ Return: fun Return { class: class Return }, @@ -34,21 +35,37 @@ //│ } //│ Shape = class Shape { //│ Shape: class Shape, -//│ Dyn: class Dyn, +//│ Dyn: fun Dyn { class: class Dyn }, //│ Lit: fun Lit { class: class Lit }, //│ Arr: fun Arr { class: class Arr }, //│ Class: fun Class { class: class Class }, -//│ Unit: class Unit +//│ Unit: fun Unit { class: class Unit } //│ } -//│ Shape = class Shape { -//│ Shape: class Shape, -//│ Dyn: class Dyn, -//│ Lit: fun Lit { class: class Lit }, -//│ Arr: fun Arr { class: class Arr }, -//│ Class: fun Class { class: class Class }, -//│ Unit: class Unit -//│ } - -Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.TrivialResult(Block.ValueLit(1)), false))) -//│ > FunDefn(Symbol("f"), [Symbol("x")], Return(Lit(1), false)) +import "../../mlscript-compile/Option.mls" +open Option +Block.printCode(Block.Define(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.TrivialResult(Block.ValueRef(Block.Symbol("x"))), false)), Block.Return(Block.TrivialResult(Block.ValueRef(Block.Symbol("x"))), false))) +Block.printCode( + Block.Define( + Block.ClsLikeDefn(Block.Symbol("C"), Some([Block.Symbol("x"), Block.Symbol("y")]), None), + Block.Assign( + Block.Symbol("x"), + Block.Instantiate( + Block.ValueRef(Block.Symbol("C")), [Block.Arg(Some(false), Block.ValueLit("1")), Block.Arg(Some(false), Block.ValueLit("2"))] + ), + Block.Return( + Block.TrivialResult( + Block.Select(Block.ValueRef(Block.Symbol("x")), Block.Symbol("y")) + ), + false + ) + ) + ) +) +Block.printCode(Block.Return(Block.Tuple([Block.Arg(None, Block.ValueLit(1)), Block.Arg(None, Block.ValueLit(2))]), false)) +//│ > fun f(x) = x +//│ > x +//│ > class C(x, y) +//│ > let x = new C(1,2) +//│ > x.y +//│ > (1,2) From f1886ece519879bc2a008505bce81adbe2f49866 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 20 Nov 2025 19:20:30 +0800 Subject: [PATCH 111/654] refactor add back symName parameter to {block, shape}Ctor --- .../scala/hkmc2/codegen/Instrumentation.scala | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 0617675a75..5c51f26b76 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -35,6 +35,13 @@ class InstrumentationImpl(using State): case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) + def concat(b1: Block, b2: Block): Block = + b1.mapTail { + case _: Return => b2 + case _: End => b2 + case _ => ??? + } + // TODO: use BlockTransformer.applyListOf? extension [A](ls: Ls[(A => Block) => Block]) def collectApply(f: Ls[A] => Block): Block = @@ -69,9 +76,9 @@ class InstrumentationImpl(using State): def shapeMod(name: Str) = summon[State].shapeSymbol.asPath.selSN(name) def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - ctor(blockMod(name), args)(k) + ctor(blockMod(name), args, symName)(k) def shapeCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Shape => Block): Block = - ctor(shapeMod(name), args)(p => k(Shape(p))) + ctor(shapeMod(name), args, symName)(p => k(Shape(p))) def blockCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = call(blockMod(name), args, symName = symName)(k) @@ -217,10 +224,7 @@ class InstrumentationImpl(using State): blockCall("printCode", Ls(StagedPath(ret).code)): _ => // discard result, we only care about side effect End() - ( - f.copy(sym = genSym, body = transformBlock(f.body)(_.end)), - debug - ) + (f.copy(sym = genSym, body = transformBlock(f.body)(_.end)), debug) def transformDefine(d: Define)(using ctx: Context)(k: StagedPath => Block): Block = d.defn match @@ -237,8 +241,7 @@ class InstrumentationImpl(using State): case d: Define => transformDefine(d)(k) case End(_) => ruleEnd()(k) // temporary measure to accept returning an array - case Begin(b1, b2) => transformBlock(b1.mapTail { case _ => b2 })(k) - case _ => ??? // not supported + case Begin(b1, b2) => transformBlock(concat(b1, b2))(k) // TODO: rename as InstrumentationTransformer? class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): @@ -255,7 +258,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): .unzip val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods) val newModule = c.copy(sym = c.sym, companion = Some(newCompanion)) - val debugBlock = debugPrintCode.foldRight(rest)((b1, b2) => b1.mapTail { case _ => b2 }) + val debugBlock = debugPrintCode.foldRight(rest)(impl.concat) Define(newModule, debugBlock) case _ => d case b => b From d99eda9121083e416eab8a223881fbf2af0435ab Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 20 Nov 2025 19:21:03 +0800 Subject: [PATCH 112/654] follow JSBuilder pretty printing for DynSelect in Printer --- hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index 254442efdf..f8ac2202df 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -100,10 +100,10 @@ object Printer: case Select(qual, name) => val docQual = mkDocument(qual) doc"${docQual}.${name.name}" - case DynSelect(qual, fld, true) => - val docQual = mkDocument(qual) - val docFld = mkDocument(fld) - doc"${docQual}[${docFld}]" + case DynSelect(qual, fld, ai) => + if ai + then doc"${mkDocument(qual)}.at(${mkDocument(fld)})" + else doc"${mkDocument(qual)}[${mkDocument(fld)}]" case x: Value => mkDocument(x) case _ => TODO(path) From 02303a3ff97283b5e6692aeffe3c4b230848f143 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 20 Nov 2025 19:23:53 +0800 Subject: [PATCH 113/654] remove Field from Case this makes Block.Case line up with formalization of Pattern --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 2 -- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 1 - 2 files changed, 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 30fee28783..38ff2dffd0 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -35,7 +35,6 @@ class Case with Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) Tup(val len: Int, val inf: Bool) // TODO: remove inf? - Field(val name: Ident) Wildcard class Result with @@ -90,7 +89,6 @@ fun showCase(c: Case): Str = Lit(lit) then "Lit(" + showLiteral(lit) + ")" Cls(cls, path) then "Cls(" + showSymbol(cls) + ", " + showPath(path) + ")" Tup(len, inf) then "Tup(" + len + ", " + showBool(inf) + ")" - Field(name) then "Field(" + showIdent(name) + ")" Wildcard then "Wildcard" fun showResult(r: Result): Str = diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index b6ee6fa1d8..ab0e9aac11 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -89,7 +89,6 @@ fun silh(p: Case): Shape = if p is Cls(sym, path) then Class(sym, ???) // how to initialize array of Dyn? Tup(n, inf) then Arr(Array(n).fill(Dyn)) - Field(name) then ??? Wildcard then Dyn fun filter(s: Shape, p: Case): Shape = From d6dc21ec1e8e3988caf37d380689969a31b61222 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 20 Nov 2025 19:36:50 +0800 Subject: [PATCH 114/654] change transformBlock signature --- .../scala/hkmc2/codegen/Instrumentation.scala | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 5c51f26b76..1238d73dbc 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -233,14 +233,19 @@ class InstrumentationImpl(using State): case c: ClsLikeDefn => ??? // nested class? def transformBlock(b: Block)(using ctx: Context)(k: StagedPath => Block): Block = + transformBlock(b)((p, _) => k(p)) + + def transformBlock(b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = // ruleBlk? - val k2 = (p: StagedPath, ctx: Context) => k(p) + val k2 = k(_, ctx) b match - case r: Return => ruleReturn(r)(k2) - case a: Assign => ruleAssign(a)(k2) - case d: Define => transformDefine(d)(k) - case End(_) => ruleEnd()(k) + case r: Return => ruleReturn(r)(k) + case a: Assign => ruleAssign(a)(k) + case d: Define => transformDefine(d)(k2) + case End(_) => ruleEnd()(k2) + case _: Match => ??? // temporary measure to accept returning an array + // use BlockTransformer here? case Begin(b1, b2) => transformBlock(concat(b1, b2))(k) // TODO: rename as InstrumentationTransformer? From cde7a682a6d36ba6b801a1ef5ff58841deafee00 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 20 Nov 2025 20:09:22 +0800 Subject: [PATCH 115/654] implement more rules --- .../scala/hkmc2/codegen/Instrumentation.scala | 34 ++++++++++++------- .../src/test/mlscript/staging/Functions.mls | 2 ++ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 1238d73dbc..7d6466bfeb 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -114,11 +114,10 @@ class InstrumentationImpl(using State): // outdated def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = - // why assume it is already staged? - val sp = StagedPath(r) blockCtor("Symbol", Ls(toValue(r.l.nme))): sym => blockCtor("ValueRef", Ls(sym)): cde => - StagedPath.mk(sp.shape, cde, "var")(k) + shapeCtor("Dyn", Ls()): sp => // keep dynamic for now + StagedPath.mk(sp, cde, "var")(k) def ruleTup(t: Tuple)(using ctx: Context)(k: StagedPath => Block): Block = assert(!t.mut) @@ -132,21 +131,27 @@ class InstrumentationImpl(using State): def ruleSel(s: Select)(using ctx: Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => - // TODO: figure out actual shape - shapeCtor("Dyn", Ls()): n => + shapeCtor("Lit", Ls(toValue(name))): n => fnSel(x.shape, n): sp => blockCtor("Symbol", Ls(toValue(name))): name => blockCtor("Select", Ls(x.code, name)): cde => StagedPath.mk(sp, cde, "sel")(k) + def ruleDynSel(d: DynSelect)(using ctx: Context)(k: StagedPath => Block): Block = + val DynSelect(qual, fld, arrayIdx) = d + transformPath(qual): x => + transformPath(fld): y => + fnSel(x.shape, y.shape): sp => + blockCtor("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => + StagedPath.mk(sp, cde, "dynsel")(k) + def ruleInst(i: Instantiate)(using ctx: Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut) transformArgs(args): xs => tuple(xs.map(_.shape)): shapes => tuple(xs.map(_.code)): codes => - // NOTE: this was not needed in the formalization - // but it seems to be necessary to stage the path? + // reuse instrumentation logic, shape of cls is discarded transformPath(cls): cls => shapeCtor("Class", Ls(cls.code, shapes)): sp => blockCtor("Instantiate", Ls(cls.code, codes)): cde => @@ -162,7 +167,7 @@ class InstrumentationImpl(using State): val Assign(x, r, b) = a transformResult(r): y => (Assign(x, y.p, _)): - transformBlock(b): z => // have ctx here? + transformBlock(b): (z, ctx) => // have ctx here? blockCtor("Symbol", Ls(toValue(x.nme))): x => blockCtor("Assign", Ls(x, y.code, z.code)): cde => StagedPath.mk(z.shape, cde, "assign")(k(_, ctx)) @@ -189,11 +194,14 @@ class InstrumentationImpl(using State): // transformations of Block def transformPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = - p match - case r: Value.Ref => ruleVar(r)(k) - case l: Value.Lit => ruleLit(l)(k) - case s: Select => ruleSel(s)(k) - case _ => ??? // not supporteda + // rulePath + ctx.get(p).map(k).getOrElse: + p match + case r: Value.Ref => ruleVar(r)(k) + case l: Value.Lit => ruleLit(l)(k) + case s: Select => ruleSel(s)(k) + case d: DynSelect => ruleDynSel(d)(k) + case _ => ??? // not supported def transformResult(r: Result)(using ctx: Context)(k: StagedPath => Block): Block = r match diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index cd00dea636..5483b1db08 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -14,11 +14,13 @@ staged module A with x fun i() = [1, 2] fun j() = new B() + fun k() = [1].(0) //│ > Return(Lit(1), false) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) //│ > Define(ValDefn(Symbol("x"), Lit(1)), Return(Ref(Symbol("x")), false)) //│ > Return(Tuple([Lit(1), Lit(2)]), false) //│ > Return(Instantiate(Select(Ref(Symbol("B")), Symbol("class")), []), false) +//│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) // collision with class name? :js From 1f3ee7cda92a4fcd2ef5fa50812083b07b04d282 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 20 Nov 2025 20:13:23 +0800 Subject: [PATCH 116/654] remove import Option from Shape.mls --- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 3 --- 1 file changed, 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index ab0e9aac11..a0850f7227 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,12 +1,9 @@ import "./Predef.mls" -import "./Option.mls" import "./Block.mls" open Predef -open Option type Literal = null | undefined | Str | Int | Num | Bool -type Opt[A] = Option[A] module Shape with... From 0499166b9ac89a323abb191420c901470193bbe0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 20 Nov 2025 20:17:18 +0800 Subject: [PATCH 117/654] replace Multiple with ShapeSet we keep ShapeSet and Shape separate for now --- .../scala/hkmc2/codegen/Instrumentation.scala | 7 +++---- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 15 ++++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 7d6466bfeb..11256bf6fc 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -173,10 +173,9 @@ class InstrumentationImpl(using State): StagedPath.mk(z.shape, cde, "assign")(k(_, ctx)) def ruleEnd()(k: StagedPath => Block): Block = - assign(State.globalThisSymbol.asPath.selSN("Set")): newSet => - shapeCtor("Multiple", Ls(newSet)): sp => - blockCtor("End", Ls()): cde => - StagedPath.mk(sp, cde, "end")(k) + shapeCtor("Dyn", Ls()): sp => + blockCtor("End", Ls()): cde => + StagedPath.mk(sp, cde, "end")(k) // converted to ruleLet? // outdated diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index a0850f7227..65d8d90367 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -7,13 +7,17 @@ type Literal = null | undefined | Str | Int | Num | Bool module Shape with... +// TODO: implement ShapeSet +class ShapeSet(val s: Shape) + +fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(Dyn()) + class Shape with constructor Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape]) // is length parameter needed? Class(val sym: Symbol, val shapes: Array[Shape]) - Multiple(val shapes: Set) // empty represents bottom fun isPrimitiveType(sym: Str) = if sym is @@ -61,14 +65,12 @@ fun sel(s1: Shape, s2: Shape) = [Arr(shapes), Lit(n)] and n is Int then shapes.at(n) [Arr(shapes), Dyn] then - Multiple(new Set(shapes)) + Dyn // TODO [Dyn, Lit(n)] and n is Int then Dyn [Dyn, Dyn] then Dyn - [Multiple(shapes), s2] - then Multiple(new Set(shapes.values().map((s, _) => sel(s, s2)))) - _ then Dyn // temp, makes call not error + else Dyn // temp, makes call not error fun static(s: Shape) = if s is @@ -96,5 +98,4 @@ fun filter(s: Shape, p: Case): Shape = [Arr(ls), Tup(n, _)] and ls.length == n then s [Class(c1, _), Cls(c2, _)] and c1 == c2 then s [Dyn, _] then silh(p) - [Multiple(shapes), _] then Multiple(shapes.map((s, _, _) => filter(s, p))) - _ then Multiple(new Set()) + else Dyn // TODO From fbb869c070b28a21123b5238c9e474e8fdae3c9d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 20 Nov 2025 20:17:55 +0800 Subject: [PATCH 118/654] misc fixes to Shape.mls --- .../src/test/mlscript-compile/Shape.mls | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 65d8d90367..046ac5af08 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -33,10 +33,10 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = ["Int", i] and i is Int then true ["Num", n] and n is Num then true ["Bool", b] and b is Bool then true - _ then false + else false -fun zipMrg[A](a: Array[A], b: Array[A]): Array[[A, A]] = - [...Array(a.length).keys()].map((i, _, _) => mrg2(a.at(i), b.at(i))) +fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = + a.map((a, i, _) => mrg2(a, b.at(i))) // TODO: look at how Array is used fun mrg2(s1: Shape, s2: Shape) = if s1 @@ -51,7 +51,7 @@ fun mrg2(s1: Shape, s2: Shape) = if s1 Arr(s1) and s2 is Arr(s2) and s1.length == s2.length then Arr(zipMrg(s1, s2)) - else Dyn + else Dyn() fun mrg(s1: Array[Shape]) = s1.reduceRight((acc, s, _, _) => mrg2(s, acc)) @@ -61,16 +61,16 @@ fun sel(s1: Shape, s2: Shape) = [Class(c, shapes), Lit(n)] and n is Str then shapes.at(n) // field name election using Str? [Dyn, Lit(n)] and n is Str - then Dyn + then Dyn() [Arr(shapes), Lit(n)] and n is Int then shapes.at(n) [Arr(shapes), Dyn] then - Dyn // TODO + Dyn() // TODO [Dyn, Lit(n)] and n is Int - then Dyn + then Dyn() [Dyn, Dyn] - then Dyn - else Dyn // temp, makes call not error + then Dyn() + else Dyn() // temp, makes call not error fun static(s: Shape) = if s is @@ -88,14 +88,14 @@ fun silh(p: Case): Shape = if p is Cls(sym, path) then Class(sym, ???) // how to initialize array of Dyn? Tup(n, inf) then Arr(Array(n).fill(Dyn)) - Wildcard then Dyn + Wildcard then Dyn() fun filter(s: Shape, p: Case): Shape = if [s, p] is [_, Wildcard] then s - [Lit(l1), Lit(l2)] and l1 == l2 then l1 // typo? should be Lit(l1)? + [Lit(l1), Lit(l2)] and l1 == l2 then s [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then s [Arr(ls), Tup(n, _)] and ls.length == n then s [Class(c1, _), Cls(c2, _)] and c1 == c2 then s [Dyn, _] then silh(p) - else Dyn // TODO + else Dyn() // TODO From adf5590f81cc32b664753be14d87156514e6c9aa Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 20 Nov 2025 22:23:56 +0800 Subject: [PATCH 119/654] patch showLiteral for null and undefined --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 38ff2dffd0..e3060a23a5 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -63,7 +63,11 @@ class Block with fun showBool(b: Bool) = if b then "true" else "false" -fun showLiteral(l: Literal) = l.toString() +fun showLiteral(l: Literal) = + if l is + undefined then "undefined" + null then "null" + else l.toString() fun showSymbol(s: Symbol) = "Symbol(" + "\"" + s.name + "\"" + ")" From ada9c3aeff41028eabce41a351b4a09489948e5a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 21 Nov 2025 12:54:05 +0800 Subject: [PATCH 120/654] replace ruleVal --- .../scala/hkmc2/codegen/Instrumentation.scala | 66 ++++++++++++------- .../src/test/mlscript/staging/Functions.mls | 2 +- 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 11256bf6fc..9442869496 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -104,6 +104,8 @@ class InstrumentationImpl(using State): blockCall("printCode", Ls(p))(k) def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = shapeCall("sel", Ls(s1, s2))(s => k(Shape(s))) + def fnUnion(s1: Shape, s2: Shape)(k: Shape => Block): Block = + shapeCall("union", Ls(s1, s2))(s => k(Shape(s))) // instrumentation rules @@ -159,36 +161,52 @@ class InstrumentationImpl(using State): def ruleReturn(r: Return)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => - blockCtor("Return", Ls(x.code)): cde => + blockCtor("Return", Ls(x.code, toValue(false))): cde => StagedPath.mk(x.shape, cde, "return")(k(_, ctx)) - // outdated def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a - transformResult(r): y => - (Assign(x, y.p, _)): - transformBlock(b): (z, ctx) => // have ctx here? - blockCtor("Symbol", Ls(toValue(x.nme))): x => - blockCtor("Assign", Ls(x, y.code, z.code)): cde => - StagedPath.mk(z.shape, cde, "assign")(k(_, ctx)) + // if ctx contains x, x was defined earlier + // otherwise, x is defined here + ctx.get(x.asPath) match + case S(x1) => + transformResult(r): y => + fnUnion(y.shape, x1.shape): sp => + blockCtor("Symbol", Ls(toValue(x.nme))): xSym => + blockCtor("ValueRef", Ls(xSym)): xStaged => + StagedPath.mk(sp, xStaged, "assign_x2"): x2 => + (Assign(x, x2.p, _)): + given Context = ctx.clone() += x.asPath -> x2 + transformBlock(b): (z, ctx) => + blockCtor("Assign", Ls(xSym, y.code, z.code), "assign_cde"): cde => + StagedPath.mk(z.shape, cde, "assign")(k(_, summon)) + case N => + transformResult(r): y => + (Assign(x, y.p, _)): + transformBlock(b): (z, ctx) => + blockCtor("Symbol", Ls(toValue(x.nme))): x => + blockCtor("Assign", Ls(x, y.code, z.code)): cde => + StagedPath.mk(z.shape, cde, "assign")(k(_, ctx)) + + def ruleLet(x: BlockMemberSymbol, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + val y = TempSymbol(N, "tmp") + shapeCtor("Bot", Ls()): bot => + blockCtor("Symbol", Ls(toValue(x.nme))): xSym => + StagedPath.mk(bot, xSym, "let_y"): y => + (Assign(x, y.p, _)): + given Context = ctx.clone() += x.asPath -> y + transformBlock(b): (z, ctx) => + blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false))), "let_undef"): undefined => + blockCtor("TrivialResult", Ls(undefined)): undefined => + blockCtor("Assign", Ls(xSym, undefined, z.code), "let_code"): cde => + StagedPath.mk(z.shape, cde, "_let")(k(_, summon)) def ruleEnd()(k: StagedPath => Block): Block = shapeCtor("Dyn", Ls()): sp => blockCtor("End", Ls()): cde => StagedPath.mk(sp, cde, "end")(k) - // converted to ruleLet? - // outdated - def ruleVal(defn: ValDefn, b: Block)(using ctx: Context)(k: StagedPath => Block): Block = - val ValDefn(tsym, x, p) = defn - transformPath(p): y => - // y is StagedPath, not Path? - (Define(ValDefn(tsym, x, y.p), _)): - transformBlock(b): z => - blockCtor("Symbol", Ls(toValue(x.nme))): x => - blockCtor("ValDefn", Ls(x, y.code)): df => - blockCtor("Define", Ls(df, z.code)): cde => - StagedPath.mk(z.shape, cde, "val")(k) + // transformations of Block @@ -233,10 +251,12 @@ class InstrumentationImpl(using State): (f.copy(sym = genSym, body = transformBlock(f.body)(_.end)), debug) - def transformDefine(d: Define)(using ctx: Context)(k: StagedPath => Block): Block = + def transformDefine(d: Define)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = d.defn match case f: FunDefn => ??? - case v: ValDefn => ruleVal(v, d.rest)(k) + case v: ValDefn => + val ValDefn(t, x, r) = v + ruleLet(x, Assign(x, r, d.rest))(k) case c: ClsLikeDefn => ??? // nested class? def transformBlock(b: Block)(using ctx: Context)(k: StagedPath => Block): Block = @@ -248,7 +268,7 @@ class InstrumentationImpl(using State): b match case r: Return => ruleReturn(r)(k) case a: Assign => ruleAssign(a)(k) - case d: Define => transformDefine(d)(k2) + case d: Define => transformDefine(d)(k) case End(_) => ruleEnd()(k2) case _: Match => ??? // temporary measure to accept returning an array diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 5483b1db08..5d10b7c2a1 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -17,7 +17,7 @@ staged module A with fun k() = [1].(0) //│ > Return(Lit(1), false) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) -//│ > Define(ValDefn(Symbol("x"), Lit(1)), Return(Ref(Symbol("x")), false)) +//│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) //│ > Return(Tuple([Lit(1), Lit(2)]), false) //│ > Return(Instantiate(Select(Ref(Symbol("B")), Symbol("class")), []), false) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) From 9f6b1ab8a05b1feb8014d87488bda2e471737a5d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 21 Nov 2025 13:04:09 +0800 Subject: [PATCH 121/654] clean up --- .../scala/hkmc2/codegen/Instrumentation.scala | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 9442869496..c47dd15c25 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -166,39 +166,36 @@ class InstrumentationImpl(using State): def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a - // if ctx contains x, x was defined earlier - // otherwise, x is defined here - ctx.get(x.asPath) match - case S(x1) => - transformResult(r): y => - fnUnion(y.shape, x1.shape): sp => - blockCtor("Symbol", Ls(toValue(x.nme))): xSym => + transformResult(r): y => + blockCtor("Symbol", Ls(toValue(x.nme))): xSym => + // if ctx contains x, x was defined earlier + // otherwise, x is defined here + ctx.get(x.asPath) match + case S(x1) => + fnUnion(y.shape, x1.shape): sp => blockCtor("ValueRef", Ls(xSym)): xStaged => - StagedPath.mk(sp, xStaged, "assign_x2"): x2 => + StagedPath.mk(sp, xStaged): x2 => + given Context = ctx.clone() += x.asPath -> x2 (Assign(x, x2.p, _)): - given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y.code, z.code), "assign_cde"): cde => + blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => StagedPath.mk(z.shape, cde, "assign")(k(_, summon)) - case N => - transformResult(r): y => - (Assign(x, y.p, _)): - transformBlock(b): (z, ctx) => - blockCtor("Symbol", Ls(toValue(x.nme))): x => - blockCtor("Assign", Ls(x, y.code, z.code)): cde => - StagedPath.mk(z.shape, cde, "assign")(k(_, ctx)) + case N => + (Assign(x, y.p, _)): + transformBlock(b): (z, ctx) => + blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => + StagedPath.mk(z.shape, cde, "assign")(k(_, summon)) def ruleLet(x: BlockMemberSymbol, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = - val y = TempSymbol(N, "tmp") shapeCtor("Bot", Ls()): bot => blockCtor("Symbol", Ls(toValue(x.nme))): xSym => - StagedPath.mk(bot, xSym, "let_y"): y => + StagedPath.mk(bot, xSym): y => (Assign(x, y.p, _)): given Context = ctx.clone() += x.asPath -> y transformBlock(b): (z, ctx) => - blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false))), "let_undef"): undefined => + blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => blockCtor("TrivialResult", Ls(undefined)): undefined => - blockCtor("Assign", Ls(xSym, undefined, z.code), "let_code"): cde => + blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => StagedPath.mk(z.shape, cde, "_let")(k(_, summon)) def ruleEnd()(k: StagedPath => Block): Block = From ba80ea43fbe4caa3c794da25270d01f7aa2b0fb3 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 21 Nov 2025 13:16:50 +0800 Subject: [PATCH 122/654] add symbol to Class Shape for matching --- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 046ac5af08..a30235d03b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -17,7 +17,8 @@ class Shape with Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape]) // is length parameter needed? - Class(val sym: Symbol, val shapes: Array[Shape]) + Class(val sym: Symbol, val params: Array[[Symbol, Shape]]) + Bot() // temp stub for ShapeSet fun isPrimitiveType(sym: Str) = if sym is From 8efd61df1a2f7e9ce980c218b179319a39973f42 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 21 Nov 2025 21:49:59 +0800 Subject: [PATCH 123/654] add spread field to Arg this introduces a new Option symbol to Elaborator if paramsOpt and companion are unused for ClsLikeDefn in Block.mls, it might be possible to avoid using Option for defining Block.mls --- .../scala/hkmc2/codegen/Instrumentation.scala | 16 +++++++++++++++- .../main/scala/hkmc2/semantics/Elaborator.scala | 1 + hkmc2/shared/src/test/mlscript-compile/Block.mls | 9 +++++++-- .../test/scala/hkmc2/JSBackendDiffMaker.scala | 2 ++ .../src/test/scala/hkmc2/MLsDiffMaker.scala | 1 + 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index c47dd15c25..a610449472 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -74,11 +74,16 @@ class InstrumentationImpl(using State): def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) def shapeMod(name: Str) = summon[State].shapeSymbol.asPath.selSN(name) + def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = ctor(blockMod(name), args, symName)(k) def shapeCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Shape => Block): Block = ctor(shapeMod(name), args, symName)(p => k(Shape(p))) + def optionSome(arg: ArgWrappable, symName: Str = "tmp")(k: Path => Block): Block = + ctor(optionMod("Some"), Ls(arg), symName)(k) + def optionNone(symName: Str = "tmp")(k: Path => Block): Block = + assign(optionMod("None"), symName)(k) def blockCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = call(blockMod(name), args, symName = symName)(k) @@ -207,6 +212,12 @@ class InstrumentationImpl(using State): // transformations of Block + + def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = + xOpt match + case S(x) => f(x)(optionSome(_)(k)) + case N => optionNone()(k) + def transformPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = // rulePath ctx.get(p).map(k).getOrElse: @@ -229,7 +240,10 @@ class InstrumentationImpl(using State): def transformArg(a: Arg)(using ctx: Context)(k: StagedPath => Block): Block = val Arg(spread, value) = a - transformPath(value)(k) + optionNone(): opt => + transformPath(value): value => + blockCtor("Arg", Ls(opt, value.code)): cde => + StagedPath.mk(value.shape, cde)(k) // provides list of shapes and list of codes to continuation def transformArgs(args: Ls[Arg])(using ctx: Context)(k: Ls[StagedPath] => Block): Block = diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 92432e8c0d..d6e92ef237 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -235,6 +235,7 @@ object Elaborator: val termSymbol = TempSymbol(N, "Term") val blockSymbol = TempSymbol(N, "Block") val shapeSymbol = TempSymbol(N, "Shape") + val optionSymbol = TempSymbol(N, "Option") val wasmSymbol = TempSymbol(N, "wasm") val effectSigSymbol = ClassSymbol(DummyTypeDef(syntax.Cls), Ident("EffectSig")) val nonLocalRetHandlerTrm = diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index e3060a23a5..a441b233e5 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -16,12 +16,13 @@ class Symbol(val name: Str) type Ident = Symbol type Literal = null | undefined | Str | Int | Num | Bool -type Arg = Path type ParamList = Array[Symbol] // Classes defined in Block.scala +class Arg(val spread: Opt[Bool], val value: Path) + class Path with constructor Select(val qual: Path, val name: Ident) @@ -84,8 +85,12 @@ fun showPath(p: Path): Str = ValueLit(lit) then "Lit(" + showLiteral(lit) + ")" +fun showArg(arg: Arg) = + if arg.spread is Some(true) then "..." + showPath(arg.value) + else showPath(arg.value) + fun showArgs(args: Array[Arg]) = - "[" + args.map(showPath).join(", ") + "]" + "[" + args.map(showArg).join(", ") + "]" // Case (match arm patterns) fun showCase(c: Case): Str = diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 2bf32e5879..e86d5994df 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -34,6 +34,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val termNme = baseScp.allocateName(Elaborator.State.termSymbol) val blockNme = baseScp.allocateName(Elaborator.State.blockSymbol) val shapeNme = baseScp.allocateName(Elaborator.State.shapeSymbol) + val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) val definitionMetadataNme = baseScp.allocateName(Elaborator.State.definitionMetadataSymbol) val prettyPrintNme = baseScp.allocateName(Elaborator.State.prettyPrintSymbol) @@ -62,6 +63,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: if stageCode.isSet then importRuntimeModule(blockNme, blockFile) importRuntimeModule(shapeNme, shapeFile) + importRuntimeModule(optionNme, optionFile) h private var hostCreated = false diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index e748836b81..5bbb459cd7 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -22,6 +22,7 @@ abstract class MLsDiffMaker extends DiffMaker: val termFile: os.Path = predefFile/os.up/"Term.mjs" // * Contains MLscript runtime term definitions val blockFile: os.Path = predefFile/os.up/"Block.mjs" // * Contains MLscript runtime block definitions val shapeFile: os.Path = predefFile/os.up/"Shape.mjs" // * Contains MLscript runtime shape definitions + val optionFile: os.Path = predefFile/os.up/"Option.mjs" // * Contains MLscript runtime shape definitions val wd = file / os.up From e19dbd6b705a3c50a7126f55b7e8bcc3d93ebeea Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 21 Nov 2025 22:09:14 +0800 Subject: [PATCH 124/654] update PrintCode.mls --- hkmc2/shared/src/test/mlscript/staging/PrintCode.mls | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index fba1de4806..0314c3488d 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -3,6 +3,7 @@ //│ Block = class Block { //│ Symbol: fun Symbol { class: class Symbol }, +//│ Arg: fun Arg { class: class Arg }, //│ Path: class Path, //│ Select: fun Select { class: class Select }, //│ DynSelect: fun DynSelect { class: class DynSelect }, @@ -12,8 +13,7 @@ //│ Lit: fun Lit { class: class Lit }, //│ Cls: fun Cls { class: class Cls }, //│ Tup: fun Tup { class: class Tup }, -//│ Field: fun Field { class: class Field }, -//│ Wildcard: class Wildcard, +//│ Wildcard: fun Wildcard { class: class Wildcard }, //│ Result: class Result, //│ TrivialResult: fun TrivialResult { class: class TrivialResult }, //│ Call: fun Call { class: class Call }, @@ -32,12 +32,13 @@ //│ End: fun End { class: class End } //│ } //│ Shape = class Shape { +//│ ShapeSet: fun ShapeSet { class: class ShapeSet }, //│ Shape: class Shape, //│ Dyn: fun Dyn { class: class Dyn }, //│ Lit: fun Lit { class: class Lit }, //│ Arr: fun Arr { class: class Arr }, //│ Class: fun Class { class: class Class }, -//│ Unit: fun Unit { class: class Unit } +//│ Bot: fun Bot { class: class Bot } //│ } Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.TrivialResult(Block.ValueLit(1)), false))) From 146a1988fa450c50ddf6cda90dd63b68fd177a4b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 21 Nov 2025 22:20:13 +0800 Subject: [PATCH 125/654] add ruleCls --- .../scala/hkmc2/codegen/Instrumentation.scala | 36 ++++++++++++++----- .../src/test/mlscript/staging/Functions.mls | 27 +++++++++++--- 2 files changed, 51 insertions(+), 12 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index a610449472..e1093915de 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -106,6 +106,7 @@ class InstrumentationImpl(using State): // linking functions defined in MLscipt def fnPrintCode(p: Path)(k: Path => Block): Block = + // discard result, we only care about side effect blockCall("printCode", Ls(p))(k) def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = shapeCall("sel", Ls(s1, s2))(s => k(Shape(s))) @@ -208,6 +209,18 @@ class InstrumentationImpl(using State): blockCtor("End", Ls()): cde => StagedPath.mk(sp, cde, "end")(k) + def ruleCls(cls: ClsLikeDefn, rest: Block)(using ctx: Context)(k: Path => Block): Block = + (Define(cls, _)): + transformBlock(rest): p => + blockCtor("Symbol", Ls(toValue(cls.sym.nme))): c => + def stageParamList(ps: ParamList)(k: Path => Block) = + ps.params.map(p => transformSymbol(p.sym)).collectApply: params => + tuple(params)(k) + transformOption(cls.paramsOpt, stageParamList): paramsOpt => + assert(cls.companion.isEmpty) // does not support nested module + optionNone(): none => + blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => + blockCtor("Define", Ls(cls, p.code))(k) // transformations of Block @@ -251,15 +264,16 @@ class InstrumentationImpl(using State): // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead - def transformFunDefn(modSym: Symbol, f: FunDefn)(using ctx: Context): (FunDefn, Block) = + def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn)(using ctx: Context): (FunDefn, Block) = val genSym = BlockMemberSymbol(f.sym.nme + "_gen", Nil, true) // TODO: remove it. only for test // TODO: put correct parameters instead of Nil + val sym = modSym.asPath.selSN(genSym.nme) val debug = - call(modSym.asPath.selSN(genSym.nme), Nil): ret => - blockCall("printCode", Ls(StagedPath(ret).code)): _ => // discard result, we only care about side effect - End() + call(sym, Nil): ret => + fnPrintCode(StagedPath(ret).code)(_ => End()) + // NOTE: this debug printing only works for top-level modules, nested modules don't work (f.copy(sym = genSym, body = transformBlock(f.body)(_.end)), debug) def transformDefine(d: Define)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = @@ -268,7 +282,10 @@ class InstrumentationImpl(using State): case v: ValDefn => val ValDefn(t, x, r) = v ruleLet(x, Assign(x, r, d.rest))(k) - case c: ClsLikeDefn => ??? // nested class? + case c: ClsLikeDefn => + ruleCls(c, d.rest): p => + ruleEnd(): b => + fnPrintCode(p)(_ => k(b, ctx)) def transformBlock(b: Block)(using ctx: Context)(k: StagedPath => Block): Block = transformBlock(b)((p, _) => k(p)) @@ -295,12 +312,15 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): defn match // find modules with staged annotation case c: ClsLikeDefn if c.sym.defn.exists(_.hasStagedModifier.isDefined) && c.companion.isDefined => + val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods - .map(impl.transformFunDefn(c.sym, _)(using new HashMap())) // fold instead to retain env? + .map(impl.transformFunDefn(sym, _)(using new HashMap())) // fold instead to retain env? .unzip - val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods) - val newModule = c.copy(sym = c.sym, companion = Some(newCompanion)) + val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => End()) + val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) + val newModule = c.copy(sym = sym, companion = S(newCompanion)) + // debug is printed without calling the instrumented function val debugBlock = debugPrintCode.foldRight(rest)(impl.concat) Define(newModule, debugBlock) case _ => d diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 5d10b7c2a1..09516e0a77 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -2,8 +2,10 @@ :js :staging // :ssjs -class B() -staged module A with +class A() +staged module B with + class C(a, b) + class D fun f() = 1 fun g() = let x = 42 @@ -13,13 +15,15 @@ staged module A with val x = 1 x fun i() = [1, 2] - fun j() = new B() + fun j() = new A() fun k() = [1].(0) +//│ > Define(ClsLikeDefn(Symbol("D")), End) +//│ > Define(ClsLikeDefn(Symbol("C")), End) //│ > Return(Lit(1), false) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) //│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) //│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Return(Instantiate(Select(Ref(Symbol("B")), Symbol("class")), []), false) +//│ > Return(Instantiate(Select(Ref(Symbol("A")), Symbol("class")), []), false) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) // collision with class name? @@ -30,3 +34,18 @@ class A() staged module A with fun f() = 1 //│ ═══[RUNTIME ERROR] TypeError: A3.f_gen is not a function + +// unable to reference the class when calling the instrumented function for debugging +:js +:staging +:fixme +module A with + staged module B with + fun f() = 1 +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.43: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.44: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From e1aedc7501bf9c9e25c7220329beaab1833b5cb2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 21 Nov 2025 22:21:02 +0800 Subject: [PATCH 126/654] formatting --- .../scala/hkmc2/codegen/Instrumentation.scala | 58 ++++++++++--------- .../main/scala/hkmc2/codegen/Printer.scala | 1 - .../src/test/mlscript-compile/Block.mls | 2 +- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index e1093915de..8be72c6638 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -94,7 +94,7 @@ class InstrumentationImpl(using State): case class Shape(p: Path) // A StagedPath is a path that points to a (shape, code) tuple - class StagedPath(val p: Path): + case class StagedPath(p: Path): def shape: Shape = Shape(DynSelect(p, toValue(0), false)) def code: Path = DynSelect(p, toValue(1), false) def end: Block = Return(p, false) @@ -113,6 +113,15 @@ class InstrumentationImpl(using State): def fnUnion(s1: Shape, s2: Shape)(k: Shape => Block): Block = shapeCall("union", Ls(s1, s2))(s => k(Shape(s))) + // transformation helpers + + def transformSymbol(sym: Symbol)(k: Path => Block) = blockCtor("Symbol", Ls(toValue(sym.nme)))(k) + + def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = + xOpt match + case S(x) => f(x)(optionSome(_)(k)) + case N => optionNone()(k) + // instrumentation rules def ruleLit(l: Value.Lit)(k: StagedPath => Block): Block = @@ -127,7 +136,7 @@ class InstrumentationImpl(using State): shapeCtor("Dyn", Ls()): sp => // keep dynamic for now StagedPath.mk(sp, cde, "var")(k) - def ruleTup(t: Tuple)(using ctx: Context)(k: StagedPath => Block): Block = + def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = assert(!t.mut) transformArgs(t.elems): xs => tuple(xs.map(_.shape)): shapes => @@ -136,7 +145,7 @@ class InstrumentationImpl(using State): blockCtor("Tuple", Ls(codes)): cde => StagedPath.mk(sp, cde, "tup")(k) - def ruleSel(s: Select)(using ctx: Context)(k: StagedPath => Block): Block = + def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => shapeCtor("Lit", Ls(toValue(name))): n => @@ -145,7 +154,7 @@ class InstrumentationImpl(using State): blockCtor("Select", Ls(x.code, name)): cde => StagedPath.mk(sp, cde, "sel")(k) - def ruleDynSel(d: DynSelect)(using ctx: Context)(k: StagedPath => Block): Block = + def ruleDynSel(d: DynSelect)(using Context)(k: StagedPath => Block): Block = val DynSelect(qual, fld, arrayIdx) = d transformPath(qual): x => transformPath(fld): y => @@ -153,7 +162,7 @@ class InstrumentationImpl(using State): blockCtor("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => StagedPath.mk(sp, cde, "dynsel")(k) - def ruleInst(i: Instantiate)(using ctx: Context)(k: StagedPath => Block): Block = + def ruleInst(i: Instantiate)(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut) transformArgs(args): xs => @@ -165,15 +174,15 @@ class InstrumentationImpl(using State): blockCtor("Instantiate", Ls(cls.code, codes)): cde => StagedPath.mk(sp, cde, "inst")(k) - def ruleReturn(r: Return)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleReturn(r: Return)(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code, toValue(false))): cde => - StagedPath.mk(x.shape, cde, "return")(k(_, ctx)) + StagedPath.mk(x.shape, cde, "return")(k(_, summon)) def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a transformResult(r): y => - blockCtor("Symbol", Ls(toValue(x.nme))): xSym => + transformSymbol(x): xSym => // if ctx contains x, x was defined earlier // otherwise, x is defined here ctx.get(x.asPath) match @@ -188,13 +197,13 @@ class InstrumentationImpl(using State): StagedPath.mk(z.shape, cde, "assign")(k(_, summon)) case N => (Assign(x, y.p, _)): - transformBlock(b): (z, ctx) => + transformBlock(b): z => // ignore ctx blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => StagedPath.mk(z.shape, cde, "assign")(k(_, summon)) def ruleLet(x: BlockMemberSymbol, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = shapeCtor("Bot", Ls()): bot => - blockCtor("Symbol", Ls(toValue(x.nme))): xSym => + transformSymbol(x): xSym => StagedPath.mk(bot, xSym): y => (Assign(x, y.p, _)): given Context = ctx.clone() += x.asPath -> y @@ -209,15 +218,14 @@ class InstrumentationImpl(using State): blockCtor("End", Ls()): cde => StagedPath.mk(sp, cde, "end")(k) - def ruleCls(cls: ClsLikeDefn, rest: Block)(using ctx: Context)(k: Path => Block): Block = + def ruleCls(cls: ClsLikeDefn, rest: Block)(using Context)(k: Path => Block): Block = (Define(cls, _)): transformBlock(rest): p => - blockCtor("Symbol", Ls(toValue(cls.sym.nme))): c => + transformSymbol(cls.sym): c => def stageParamList(ps: ParamList)(k: Path => Block) = - ps.params.map(p => transformSymbol(p.sym)).collectApply: params => - tuple(params)(k) + ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) transformOption(cls.paramsOpt, stageParamList): paramsOpt => - assert(cls.companion.isEmpty) // does not support nested module + assert(cls.companion.isEmpty) // nested module not supported optionNone(): none => blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) @@ -225,12 +233,6 @@ class InstrumentationImpl(using State): // transformations of Block - - def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = - xOpt match - case S(x) => f(x)(optionSome(_)(k)) - case N => optionNone()(k) - def transformPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = // rulePath ctx.get(p).map(k).getOrElse: @@ -241,7 +243,7 @@ class InstrumentationImpl(using State): case d: DynSelect => ruleDynSel(d)(k) case _ => ??? // not supported - def transformResult(r: Result)(using ctx: Context)(k: StagedPath => Block): Block = + def transformResult(r: Result)(using Context)(k: StagedPath => Block): Block = r match case p: Path => transformPath(p): p => @@ -251,7 +253,7 @@ class InstrumentationImpl(using State): case i: Instantiate => ruleInst(i)(k) case _ => ??? // not supported - def transformArg(a: Arg)(using ctx: Context)(k: StagedPath => Block): Block = + def transformArg(a: Arg)(using Context)(k: StagedPath => Block): Block = val Arg(spread, value) = a optionNone(): opt => transformPath(value): value => @@ -259,12 +261,12 @@ class InstrumentationImpl(using State): StagedPath.mk(value.shape, cde)(k) // provides list of shapes and list of codes to continuation - def transformArgs(args: Ls[Arg])(using ctx: Context)(k: Ls[StagedPath] => Block): Block = + def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = args.map(transformArg).collectApply(k) // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead - def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn)(using ctx: Context): (FunDefn, Block) = + def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn)(using Context): (FunDefn, Block) = val genSym = BlockMemberSymbol(f.sym.nme + "_gen", Nil, true) // TODO: remove it. only for test // TODO: put correct parameters instead of Nil @@ -287,12 +289,12 @@ class InstrumentationImpl(using State): ruleEnd(): b => fnPrintCode(p)(_ => k(b, ctx)) - def transformBlock(b: Block)(using ctx: Context)(k: StagedPath => Block): Block = + def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = transformBlock(b)((p, _) => k(p)) - def transformBlock(b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def transformBlock(b: Block)(using Context)(k: (StagedPath, Context) => Block): Block = // ruleBlk? - val k2 = k(_, ctx) + val k2 = k(_, summon) b match case r: Return => ruleReturn(r)(k) case a: Assign => ruleAssign(a)(k) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index f8ac2202df..4f4a2b3f23 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -105,7 +105,6 @@ object Printer: then doc"${mkDocument(qual)}.at(${mkDocument(fld)})" else doc"${mkDocument(qual)}[${mkDocument(fld)}]" case x: Value => mkDocument(x) - case _ => TODO(path) def mkDocument(result: Result)(using Raise, Scope): Document = result match case Call(fun, args) => doc"${mkDocument(fun)}(${args.map(mkDocument).mkDocument(", ")})" diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index a441b233e5..402fd2b51a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -36,7 +36,7 @@ class Case with Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) Tup(val len: Int, val inf: Bool) // TODO: remove inf? - Wildcard + Wildcard() class Result with constructor From ed85e757b90ca19e48baca26d48017932fda6cef Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 21 Nov 2025 23:24:35 +0800 Subject: [PATCH 127/654] progress on rest of the rules removed Wildcard from Shape, as we already store the branch in dflt --- .../scala/hkmc2/codegen/Instrumentation.scala | 76 ++++++++++++++++++- .../src/test/mlscript-compile/Block.mls | 2 - 2 files changed, 75 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 8be72c6638..ca6a97446a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -53,6 +53,17 @@ class InstrumentationImpl(using State): k(head :: tail) )(f) + // possible to wrangle to the form above, but unweildy to do so in practice + extension [A, B](ls: Ls[B => ((A, B) => Block) => Block]) + def collectApply(b: B)(f: (Ls[A], B) => Block): Block = + ls.foldRight((b: B) => (f: (Ls[A], B) => Block) => f(Nil, b))((headCont, tailCont) => + b => + k => + headCont(b): (head, b) => + tailCont(b): (tail, b) => + k(head :: tail, b) + )(b)(f) + // helpers corresponding to constructors def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Assign = @@ -108,8 +119,12 @@ class InstrumentationImpl(using State): def fnPrintCode(p: Path)(k: Path => Block): Block = // discard result, we only care about side effect blockCall("printCode", Ls(p))(k) + def fnMrg(s1: Shape, s2: Shape)(k: Shape => Block): Block = + shapeCall("mrg", Ls(s1, s2))(s => k(Shape(s))) def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = shapeCall("sel", Ls(s1, s2))(s => k(Shape(s))) + def fnFilter(s1: Shape, s2: Path)(k: Shape => Block): Block = + shapeCall("filter", Ls(s1, s2))(s => k(Shape(s))) def fnUnion(s1: Shape, s2: Shape)(k: Shape => Block): Block = shapeCall("union", Ls(s1, s2))(s => k(Shape(s))) @@ -179,6 +194,16 @@ class InstrumentationImpl(using State): blockCtor("Return", Ls(x.code, toValue(false))): cde => StagedPath.mk(x.shape, cde, "return")(k(_, summon)) + def ruleMatch(m: Match)(using Context)(k: (StagedPath, Context) => Block): Block = + val Match(p, ks, dflt, rest) = m + transformPath(p): x => + ruleBranches(x, p, ks, dflt): (sp, scrut, arms, dflt, ctx1) => + transformBlock(rest)(using ctx1): (z, ctx2) => + fnMrg(sp, z.shape): sp => + transformOption(dflt, p => (_(p))): dflt => + blockCtor("Match", Ls(scrut, arms, dflt, z.code)): cde => + StagedPath.mk(sp, cde)(k(_, ctx2)) + def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a transformResult(r): y => @@ -214,10 +239,14 @@ class InstrumentationImpl(using State): StagedPath.mk(z.shape, cde, "_let")(k(_, summon)) def ruleEnd()(k: StagedPath => Block): Block = - shapeCtor("Dyn", Ls()): sp => + shapeCtor("Bot", Ls()): sp => blockCtor("End", Ls()): cde => StagedPath.mk(sp, cde, "end")(k) + def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = + transformBlock(b): x => + k(x.code) + def ruleCls(cls: ClsLikeDefn, rest: Block)(using Context)(k: Path => Block): Block = (Define(cls, _)): transformBlock(rest): p => @@ -230,6 +259,44 @@ class InstrumentationImpl(using State): blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) + // horrible abstraction boundary + def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block])(using + ctx: Context + )(k: (Shape, Path, Path, Opt[Path], Context) => Block): Block = + // TODO: do filtering + def f(arm: Case -> Block)(ctx: Context)(k: (StagedPath, Context) => Block): Block = + ruleBranch(x, p, arm._1, arm._2)(using ctx)(k) + + arms.map(f).collectApply(summon): (arms, ctx) => + shapeCtor("Dyn", Ls()): sp => // TODO + tuple(arms.map(_.code)): arms => + dflt match + case S(dflt) => + transformBlock(dflt)(using ctx): (dflt, ctx) => + k(sp, x.code, arms, S(dflt.code), ctx) + case N => k(sp, x.code, arms, N, ctx) + + def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + transformCase(cse): cse => + fnFilter(x.shape, cse): sp => + StagedPath.mk(sp, x.code): x0 => + // val bot = summon[State].shapeSymbol.asPath.selSN("Bot"). + // we want the ClassLikeSymbol for Shape.Bot +//│ _1 = Cls: +//│ cls = class:Bot +//│ path = Select{class:Bot}: +//│ qual = Select{member:Bot}: +//│ qual = Ref of member:Shape +//│ name = Ident of "Bot" +//│ name = Ident of "class" + val arm = Case.Cls(???, shapeMod("Bot").selSN("class")) -> ruleEnd()(k(_, ctx)) + (Match(x.shape.p, Ls(arm), N, _)): + given Context = ctx.clone() += p -> x0 + transformBlock(b): (y1, ctx) => + blockCtor("End", Ls()): end => + // TODO: use Arm type instead of Tup + blockCtor("Tup", Ls(cse, y1.code)): cde => + StagedPath.mk(y1.shape, cde)(k(_, ctx.clone() -= p)) // transformations of Block @@ -264,6 +331,13 @@ class InstrumentationImpl(using State): def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = args.map(transformArg).collectApply(k) + def transformCase(cse: Case)(k: Path => Block): Block = + cse match + case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) + case Case.Cls(cls, path) => blockCtor("Cls", Ls(cls, path))(k) + case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) + case Case.Field(name, safe) => ??? // not supported + // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn)(using Context): (FunDefn, Block) = diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 402fd2b51a..e0a0bb4cbc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -36,7 +36,6 @@ class Case with Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) Tup(val len: Int, val inf: Bool) // TODO: remove inf? - Wildcard() class Result with constructor @@ -98,7 +97,6 @@ fun showCase(c: Case): Str = Lit(lit) then "Lit(" + showLiteral(lit) + ")" Cls(cls, path) then "Cls(" + showSymbol(cls) + ", " + showPath(path) + ")" Tup(len, inf) then "Tup(" + len + ", " + showBool(inf) + ")" - Wildcard then "Wildcard" fun showResult(r: Result): Str = if r is From 53a0aa46944ea5912693b9485c97f565ad1eed2b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:28:44 +0800 Subject: [PATCH 128/654] replace Block.Case with Pattern they aren't the same thing --- .../src/test/mlscript-compile/Shape.mls | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index a30235d03b..cc47cad408 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -12,6 +12,13 @@ class ShapeSet(val s: Shape) fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(Dyn()) +class Pattern with + constructor + PLit(val lit: Literal) + Cls(val cls: Symbol) + Tup(val len: Int) + Wildcard() + class Shape with constructor Dyn() @@ -83,20 +90,20 @@ fun static(s: Shape) = type SLit = Lit open Block -fun silh(p: Case): Shape = if p is - Lit(l) then SLit(l) +fun silh(p: Pattern): Shape = if p is + PLit(l) then SLit(l) // where to store size of argument array? - Cls(sym, path) then Class(sym, ???) + Cls(sym) then Class(sym, ???) // how to initialize array of Dyn? - Tup(n, inf) then Arr(Array(n).fill(Dyn)) + Tup(n) then Arr(Array(n).fill(Dyn)) Wildcard then Dyn() -fun filter(s: Shape, p: Case): Shape = +fun filter(s: Shape, p: Pattern): Shape = if [s, p] is [_, Wildcard] then s - [Lit(l1), Lit(l2)] and l1 == l2 then s - [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then s - [Arr(ls), Tup(n, _)] and ls.length == n then s - [Class(c1, _), Cls(c2, _)] and c1 == c2 then s + [Lit(l1), PLit(l2)] and l1 == l2 then s + [Lit(l), Cls(c)] and isPrimitiveTypeOf(c, l) then s + [Arr(ls), Tup(n)] and ls.length == n then s + [Class(c1, _), Cls(c2)] and c1 == c2 then s [Dyn, _] then silh(p) else Dyn() // TODO From 3a992ad684fc11949ca6eb5795e34cec6dd0fdfb Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:29:54 +0800 Subject: [PATCH 129/654] implement ShapeSet and ShapeMap --- .../src/test/mlscript-compile/Shape.mls | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index cc47cad408..a9fa467e17 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -4,12 +4,10 @@ import "./Block.mls" open Predef type Literal = null | undefined | Str | Int | Num | Bool +type Symbol = Block.Symbol module Shape with... -// TODO: implement ShapeSet -class ShapeSet(val s: Shape) - fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(Dyn()) class Pattern with @@ -27,6 +25,26 @@ class Shape with Class(val sym: Symbol, val params: Array[[Symbol, Shape]]) Bot() // temp stub for ShapeSet +class ShapeSet(val m: Map) with + fun add(s: Shape) = m.set(hash(s), s) + fun contains(s: Shape) = m.get(hash(s)) != () + fun union(s: ShapeSet) = new Map([...m, ...s.m]) + fun isEmpty() = m.size == 0 + +class ShapeMap(val m: Map) with + fun add(s: ShapeSet, code: Block.Path) = m.set([...s.m.keys()].toSorted().join(", "), code) + // returns () if does not exist, change to Option? + fun get(s: ShapeSet) = m.get([...s.m.keys()].toSorted().join(", ")) + +fun show(s: Shape) = if s is + Dyn then "Dyn" + Lit(lit) then "Lit(" + Block.showLiteral(lit) + ")" + Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" + Class(sym, params) then "Class(" + sym.name + ", [" + params.map(p => p.0.name + ":" + show(p.1)).join(", ") + "])" + Bot() then "Bot()" + +fun hash(s: Shape) = show(s) + fun isPrimitiveType(sym: Str) = if sym is "Str" then true From 5840db4b67274ce664eb70ce8d666c9815542403 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 22 Nov 2025 12:17:38 +0800 Subject: [PATCH 130/654] fix equality checks for Symbol --- .../src/test/mlscript-compile/Shape.mls | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index a9fa467e17..5566ca2637 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -5,18 +5,10 @@ open Predef type Literal = null | undefined | Str | Int | Num | Bool type Symbol = Block.Symbol +type Shape = Shape.Shape module Shape with... -fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(Dyn()) - -class Pattern with - constructor - PLit(val lit: Literal) - Cls(val cls: Symbol) - Tup(val len: Int) - Wildcard() - class Shape with constructor Dyn() @@ -54,7 +46,7 @@ fun isPrimitiveType(sym: Str) = else false fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = - if [sym, l] is + if [sym.name, l] is ["Str", l] and l is Str then true ["Int", i] and i is Int then true ["Num", n] and n is Num then true @@ -64,7 +56,6 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = a.map((a, i, _) => mrg2(a, b.at(i))) -// TODO: look at how Array is used fun mrg2(s1: Shape, s2: Shape) = if s1 == s2 then s1 is @@ -72,7 +63,7 @@ fun mrg2(s1: Shape, s2: Shape) = if s1 and isPrimitiveTypeOf(sym, l) then Class(sym, shapes) Class(sym1, s1) and s2 is Class(sym2, s2) - and sym1 == sym2 + and sym1.name == sym2.name then Class(sym1, zipMrg(s1, s2)) Arr(s1) and s2 is Arr(s2) and s1.length == s2.length @@ -107,12 +98,22 @@ fun static(s: Shape) = type SLit = Lit open Block +type Pattern = Pattern.Pattern + +module Pattern with... + +class Pattern with + constructor + PLit(val lit: Literal) + Cls(val cls: Symbol, val n: Int) + Tup(val len: Int) + Wildcard() + fun silh(p: Pattern): Shape = if p is PLit(l) then SLit(l) // where to store size of argument array? - Cls(sym) then Class(sym, ???) - // how to initialize array of Dyn? + Cls(sym, n) then Class(sym, Array(n).fill(Dyn)) Tup(n) then Arr(Array(n).fill(Dyn)) Wildcard then Dyn() @@ -120,8 +121,8 @@ fun filter(s: Shape, p: Pattern): Shape = if [s, p] is [_, Wildcard] then s [Lit(l1), PLit(l2)] and l1 == l2 then s - [Lit(l), Cls(c)] and isPrimitiveTypeOf(c, l) then s + [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then s [Arr(ls), Tup(n)] and ls.length == n then s - [Class(c1, _), Cls(c2)] and c1 == c2 then s + [Class(c1, _), Cls(c2, _)] and c1.name == c2.name then s [Dyn, _] then silh(p) else Dyn() // TODO From bc2f62421aa1c1306c77346891ce2121d1d6ce8b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 22 Nov 2025 12:21:04 +0800 Subject: [PATCH 131/654] implement Shape{Map, Set} use pretty printing for the key for now --- .../src/test/mlscript-compile/Shape.mls | 17 ++---------- .../src/test/mlscript-compile/ShapeMap.mls | 19 +++++++++++++ .../src/test/mlscript-compile/ShapeSet.mls | 27 +++++++++++++++++++ 3 files changed, 48 insertions(+), 15 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 5566ca2637..a6fe3d6f76 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -17,17 +17,6 @@ class Shape with Class(val sym: Symbol, val params: Array[[Symbol, Shape]]) Bot() // temp stub for ShapeSet -class ShapeSet(val m: Map) with - fun add(s: Shape) = m.set(hash(s), s) - fun contains(s: Shape) = m.get(hash(s)) != () - fun union(s: ShapeSet) = new Map([...m, ...s.m]) - fun isEmpty() = m.size == 0 - -class ShapeMap(val m: Map) with - fun add(s: ShapeSet, code: Block.Path) = m.set([...s.m.keys()].toSorted().join(", "), code) - // returns () if does not exist, change to Option? - fun get(s: ShapeSet) = m.get([...s.m.keys()].toSorted().join(", ")) - fun show(s: Shape) = if s is Dyn then "Dyn" Lit(lit) then "Lit(" + Block.showLiteral(lit) + ")" @@ -35,8 +24,6 @@ fun show(s: Shape) = if s is Class(sym, params) then "Class(" + sym.name + ", [" + params.map(p => p.0.name + ":" + show(p.1)).join(", ") + "])" Bot() then "Bot()" -fun hash(s: Shape) = show(s) - fun isPrimitiveType(sym: Str) = if sym is "Str" then true @@ -93,8 +80,8 @@ fun static(s: Shape) = if s is Dyn then false Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? - Class(_, shapes) then shapes.every((s, _, _) => static(s)) - Arr(shapes) then shapes.every((s, _, _) => static(s)) + Class(_, shapes) then shapes.every(static) + Arr(shapes) then shapes.every(static) type SLit = Lit open Block diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls new file mode 100644 index 0000000000..32b4faf997 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls @@ -0,0 +1,19 @@ +import "./Option.mls" +import "./ShapeSet.mls" + +open Option { Some, None } +open ShapeSet + +type ShapeMap = ShapeMap.ShapeMap + +module ShapeMap with... + +class ShapeMap(val underlying: Map) with + fun hash(s: ShapeSet) = s.keys().join(", ") + + fun add(s: ShapeSet, code) = underlying.set(hash(s), code) + + fun get(s: ShapeSet) = + if underlying.get(hash(s)) + == () then None + is value then Some of value diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls new file mode 100644 index 0000000000..91faab3df5 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -0,0 +1,27 @@ +import "./Shape.mls" + +open Shape { show } + +type ShapeSet = ShapeSet.ShapeSet + +module ShapeSet with... + +fun hash(s: Shape) = show(s) + +class ShapeSet(val underlying: Map) with + set this.(Symbol.iterator) = + () => underlying.(Symbol.iterator)() + + fun keys() = [...underlying.keys()].toSorted() + + fun isEmpty() = underlying.size == 0 + + fun add(s: Shape) = underlying.set(hash(s), s) + + fun contains(s: Shape) = underlying.has(hash(s)) + +fun create() = ShapeSet(new Map) + +fun union(s1: ShapeSet, s2: ShapeSet) = new Map([...s1, ...s2]) + +fun unionArray(arr: Array[ShapeSet]) = arr.reduce(union) From e2454b4f92e528186a00ae352cc1e204d7a3d483 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 22 Nov 2025 17:41:08 +0800 Subject: [PATCH 132/654] fill out ShapeSet functionailty --- .../src/test/mlscript-compile/Shape.mls | 36 +++++------ .../src/test/mlscript-compile/ShapeMap.mls | 4 +- .../src/test/mlscript-compile/ShapeSet.mls | 59 ++++++++++++++++--- 3 files changed, 71 insertions(+), 28 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index a6fe3d6f76..0627e601c4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -60,21 +60,23 @@ fun mrg2(s1: Shape, s2: Shape) = if s1 fun mrg(s1: Array[Shape]) = s1.reduceRight((acc, s, _, _) => mrg2(s, acc)) -fun sel(s1: Shape, s2: Shape) = +fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is [Class(c, shapes), Lit(n)] and n is Str - then shapes.at(n) // field name election using Str? + then if shapes.find(_.0.name == n) + == () then [] + is param then [param.1] [Dyn, Lit(n)] and n is Str - then Dyn() + then [Dyn()] [Arr(shapes), Lit(n)] and n is Int - then shapes.at(n) + then [shapes.(n)] [Arr(shapes), Dyn] then - Dyn() // TODO + shapes [Dyn, Lit(n)] and n is Int - then Dyn() + then [Dyn()] [Dyn, Dyn] - then Dyn() - else Dyn() // temp, makes call not error + then [Dyn()] + else [] // TODO: return no possibility instead of err? fun static(s: Shape) = if s is @@ -84,7 +86,6 @@ fun static(s: Shape) = Arr(shapes) then shapes.every(static) type SLit = Lit -open Block type Pattern = Pattern.Pattern module Pattern with... @@ -96,7 +97,6 @@ class Pattern with Tup(val len: Int) Wildcard() - fun silh(p: Pattern): Shape = if p is PLit(l) then SLit(l) // where to store size of argument array? @@ -104,12 +104,12 @@ fun silh(p: Pattern): Shape = if p is Tup(n) then Arr(Array(n).fill(Dyn)) Wildcard then Dyn() -fun filter(s: Shape, p: Pattern): Shape = +fun filter(s: Shape, p: Pattern): Array[Shape] = if [s, p] is - [_, Wildcard] then s - [Lit(l1), PLit(l2)] and l1 == l2 then s - [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then s - [Arr(ls), Tup(n)] and ls.length == n then s - [Class(c1, _), Cls(c2, _)] and c1.name == c2.name then s - [Dyn, _] then silh(p) - else Dyn() // TODO + [_, Wildcard] then [s] + [Lit(l1), PLit(l2)] and l1 == l2 then [s] + [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] + [Arr(ls), Tup(n)] and ls.length == n then [s] + [Class(c1, _), Cls(c2, _)] and c1.name == c2.name then [s] + [Dyn, _] then [silh(p)] + else [] diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls index 32b4faf997..6b73d8f826 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls @@ -8,9 +8,9 @@ type ShapeMap = ShapeMap.ShapeMap module ShapeMap with... -class ShapeMap(val underlying: Map) with - fun hash(s: ShapeSet) = s.keys().join(", ") +fun hash(s: ShapeSet) = s.keys().join(", ") +class ShapeMap(val underlying: Map) with fun add(s: ShapeSet, code) = underlying.set(hash(s), code) fun get(s: ShapeSet) = diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 91faab3df5..4ef4c83d23 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -1,6 +1,10 @@ +import "./Predef.mls" import "./Shape.mls" +import "./Block.mls" -open Shape { show } +open Predef +open Shape { show, Pattern } +open Block { Symbol } type ShapeSet = ShapeSet.ShapeSet @@ -9,19 +13,58 @@ module ShapeSet with... fun hash(s: Shape) = show(s) class ShapeSet(val underlying: Map) with - set this.(Symbol.iterator) = - () => underlying.(Symbol.iterator)() - fun keys() = [...underlying.keys()].toSorted() + fun values() = underlying.values().toArray() + fun isEmpty() = underlying.size == 0 - fun add(s: Shape) = underlying.set(hash(s), s) - fun contains(s: Shape) = underlying.has(hash(s)) + fun flatMap(f) = liftMany(values().flatMap(f)) + + fun filter(p: Pattern) = flatMap(Pattern.filter(_, p)) + + fun sel(s: ShapeSet) = + prod(values(), s.values()) + .flatMap(pair => Shape.sel(pair.0, pair.1)) + |> liftMany + fun create() = ShapeSet(new Map) -fun union(s1: ShapeSet, s2: ShapeSet) = new Map([...s1, ...s2]) +fun lift(s: Shape) = ShapeSet(new Map([[hash(s), s]])) + +fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [hash(s), s]))) + +// combining ShapeSet + +fun union(s1: ShapeSet, s2: ShapeSet) = new Map([...s1.underlying, ...s2.underlying]) + +fun flat(arr: Array[ShapeSet]) = arr.reduce(union) + +// Cartesian product: https://stackoverflow.com/a/43053803 +fun prod(a, b) = a.flatMap(d => b.map(e => [d, e].flat())) + +open Shape + +// lifted constructors + +fun mkBot() = create() + +fun mkDyn() = lift(Dyn()) + +fun mkLit(l) = lift(Lit(l)) + +fun mkArr(shapes: Array[ShapeSet]) = + shapes + .map(_.underlying.values().toArray()) + .reduce(prod) + .map(Arr) + |> liftMany -fun unionArray(arr: Array[ShapeSet]) = arr.reduce(union) +fun mkClass(sym: Symbol, params: Array[[Symbol, ShapeSet]]) = + params + .map(p => p.1.underlying.values().map(s => [[p.0, s]]).toArray()) + .reduce(prod) + .map(Class(sym, _)) + |> liftMany From 746cbd38e6c5f2adbd30edc40e87f1341d6497b0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 00:54:57 +0800 Subject: [PATCH 133/654] link ShapeSet symbols for instrumentation --- hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala | 1 + hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala | 2 ++ hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 1 + 3 files changed, 4 insertions(+) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index d6e92ef237..21a6f7cd21 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -235,6 +235,7 @@ object Elaborator: val termSymbol = TempSymbol(N, "Term") val blockSymbol = TempSymbol(N, "Block") val shapeSymbol = TempSymbol(N, "Shape") + val shapeSetSymbol = TempSymbol(N, "ShapeSet") val optionSymbol = TempSymbol(N, "Option") val wasmSymbol = TempSymbol(N, "wasm") val effectSigSymbol = ClassSymbol(DummyTypeDef(syntax.Cls), Ident("EffectSig")) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index e86d5994df..398bcaeeb8 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -35,6 +35,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val blockNme = baseScp.allocateName(Elaborator.State.blockSymbol) val shapeNme = baseScp.allocateName(Elaborator.State.shapeSymbol) val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) + val shapeSetNme = baseScp.allocateName(Elaborator.State.shapeSetSymbol) val definitionMetadataNme = baseScp.allocateName(Elaborator.State.definitionMetadataSymbol) val prettyPrintNme = baseScp.allocateName(Elaborator.State.prettyPrintSymbol) @@ -64,6 +65,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: importRuntimeModule(blockNme, blockFile) importRuntimeModule(shapeNme, shapeFile) importRuntimeModule(optionNme, optionFile) + importRuntimeModule(shapeSetNme, shapeSetFile) h private var hostCreated = false diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index 5bbb459cd7..e4cd7543a1 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -23,6 +23,7 @@ abstract class MLsDiffMaker extends DiffMaker: val blockFile: os.Path = predefFile/os.up/"Block.mjs" // * Contains MLscript runtime block definitions val shapeFile: os.Path = predefFile/os.up/"Shape.mjs" // * Contains MLscript runtime shape definitions val optionFile: os.Path = predefFile/os.up/"Option.mjs" // * Contains MLscript runtime shape definitions + val shapeSetFile: os.Path = predefFile/os.up/"ShapeSet.mjs" // * Contains MLscript runtime shape definitions val wd = file / os.up From 9915656d871d857db70f4dd5e21e27a95ce29320 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 00:55:45 +0800 Subject: [PATCH 134/654] fix Shape, ShapeSet implementations --- .../src/test/mlscript-compile/Shape.mls | 17 +++++---- .../src/test/mlscript-compile/ShapeSet.mls | 35 ++++++++++++------- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 0627e601c4..de6be1fc18 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -46,12 +46,12 @@ fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = fun mrg2(s1: Shape, s2: Shape) = if s1 == s2 then s1 is - Lit(l) and s2 is Class(sym, shapes) + Lit(l) and s2 is Class(sym, params) and isPrimitiveTypeOf(sym, l) - then Class(sym, shapes) - Class(sym1, s1) and s2 is Class(sym2, s2) + then Class(sym, params) + Class(sym1, ps) and s2 is Class(sym2, s2) and sym1.name == sym2.name - then Class(sym1, zipMrg(s1, s2)) + then Class(sym1, ps.map(p => [p.0, zipMrg(p.1, s2)])) Arr(s1) and s2 is Arr(s2) and s1.length == s2.length then Arr(zipMrg(s1, s2)) @@ -62,8 +62,8 @@ fun mrg(s1: Array[Shape]) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is - [Class(c, shapes), Lit(n)] and n is Str - then if shapes.find(_.0.name == n) + [Class(c, params), Lit(n)] and n is Str + then if params.find(_.0.name == n) == () then [] is param then [param.1] [Dyn, Lit(n)] and n is Str @@ -82,7 +82,7 @@ fun static(s: Shape) = if s is Dyn then false Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? - Class(_, shapes) then shapes.every(static) + Class(_, params) then params.every(static(_.1)) Arr(shapes) then shapes.every(static) type SLit = Lit @@ -99,8 +99,7 @@ class Pattern with fun silh(p: Pattern): Shape = if p is PLit(l) then SLit(l) - // where to store size of argument array? - Cls(sym, n) then Class(sym, Array(n).fill(Dyn)) + Cls(sym, n) then Class(sym, Array(n).fill(["TODO", Dyn])) Tup(n) then Arr(Array(n).fill(Dyn)) Wildcard then Dyn() diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 4ef4c83d23..49ff84fddb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -12,6 +12,8 @@ module ShapeSet with... fun hash(s: Shape) = show(s) +fun printShapeSet(s: ShapeSet) = console.log([... s.keys()].join(", ")) + class ShapeSet(val underlying: Map) with fun keys() = [...underlying.keys()].toSorted() @@ -23,13 +25,6 @@ class ShapeSet(val underlying: Map) with fun flatMap(f) = liftMany(values().flatMap(f)) - fun filter(p: Pattern) = flatMap(Pattern.filter(_, p)) - - fun sel(s: ShapeSet) = - prod(values(), s.values()) - .flatMap(pair => Shape.sel(pair.0, pair.1)) - |> liftMany - fun create() = ShapeSet(new Map) fun lift(s: Shape) = ShapeSet(new Map([[hash(s), s]])) @@ -43,9 +38,13 @@ fun union(s1: ShapeSet, s2: ShapeSet) = new Map([...s1.underlying, ...s2.underly fun flat(arr: Array[ShapeSet]) = arr.reduce(union) // Cartesian product: https://stackoverflow.com/a/43053803 -fun prod(a, b) = a.flatMap(d => b.map(e => [d, e].flat())) +fun prod(xs) = + if xs.length == + 0 then [[]] + 1 then xs + else xs.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat()))) -open Shape +open Shape { Dyn, Lit, Arr, Class } // lifted constructors @@ -58,13 +57,25 @@ fun mkLit(l) = lift(Lit(l)) fun mkArr(shapes: Array[ShapeSet]) = shapes .map(_.underlying.values().toArray()) - .reduce(prod) - .map(Arr) + |> prod + .map(x => Arr(x)) |> liftMany fun mkClass(sym: Symbol, params: Array[[Symbol, ShapeSet]]) = params .map(p => p.1.underlying.values().map(s => [[p.0, s]]).toArray()) - .reduce(prod) + |> prod .map(Class(sym, _)) |> liftMany + +// helper functions + +fun filter(s: ShapeSet, p: Pattern) = s.flatMap(Pattern.filter(_, p)) + +fun sel(s1: ShapeSet, s2: ShapeSet) = + prod([s1.values(), s2.values()]) + .flatMap(pair => Shape.sel(pair.0, pair.1)) + |> liftMany + +fun mrg(s1: ShapeSet, s2: ShapeSet) = + mkDyn() // TODO From 49302529efdb5842007823c84d8f6c9688e22633 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 01:04:15 +0800 Subject: [PATCH 135/654] remove TrivialResult this helps avoid applying TrivialResult multiple times when retrieving a path from the Context --- .../scala/hkmc2/codegen/Instrumentation.scala | 10 +++------- .../src/test/mlscript-compile/Block.mls | 19 ++++++++----------- .../src/test/mlscript/staging/PrintCode.mls | 2 +- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index ca6a97446a..f9489baa7c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -234,9 +234,8 @@ class InstrumentationImpl(using State): given Context = ctx.clone() += x.asPath -> y transformBlock(b): (z, ctx) => blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => - blockCtor("TrivialResult", Ls(undefined)): undefined => - blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => - StagedPath.mk(z.shape, cde, "_let")(k(_, summon)) + blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => + StagedPath.mk(z.shape, cde, "_let")(k(_, summon)) def ruleEnd()(k: StagedPath => Block): Block = shapeCtor("Bot", Ls()): sp => @@ -312,10 +311,7 @@ class InstrumentationImpl(using State): def transformResult(r: Result)(using Context)(k: StagedPath => Block): Block = r match - case p: Path => - transformPath(p): p => - blockCtor("TrivialResult", Ls(p.code)): cde => - StagedPath.mk(p.shape, cde)(k) + case p: Path => transformPath(p)(k) case t: Tuple => ruleTup(t)(k) case i: Instantiate => ruleInst(i)(k) case _ => ??? // not supported diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index e0a0bb4cbc..60ce3c3db8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -23,14 +23,6 @@ type ParamList = Array[Symbol] class Arg(val spread: Opt[Bool], val value: Path) -class Path with - constructor - Select(val qual: Path, val name: Ident) - DynSelect(val qual: Path, val fld: Path, val arrayIdx: Bool) - ValueRef(val l: Symbol) - ValueLit(val lit: Literal) - -// Match pattern for staged code class Case with constructor Lit(val lit: Literal) @@ -39,12 +31,17 @@ class Case with class Result with constructor - // unused? - TrivialResult(val path: Path) // only Path extends TrivialResult Call(val _fun: Path, val args: Array[Arg]) Instantiate(val cls: Path, val args: Array[Arg]) // assume immutable Tuple(val elems: Array[Arg]) // assume immutable +class Path extends Result with + constructor + Select(val qual: Path, val name: Ident) + DynSelect(val qual: Path, val fld: Path, val arrayIdx: Bool) // is arrayIdx used? + ValueRef(val l: Symbol) + ValueLit(val lit: Literal) + class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) @@ -100,7 +97,7 @@ fun showCase(c: Case): Str = fun showResult(r: Result): Str = if r is - TrivialResult(path) then showPath(path) + Path then showPath(r) Call(f, args) then "Call(" + showPath(f) + ", " + showArgs(args) + ")" Instantiate(cls, args) then "Instantiate(" + showPath(cls) + ", " + showArgs(args) + ")" Tuple(elems) then "Tuple(" + showArgs(elems) + ")" diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index 0314c3488d..18be09c9c7 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -41,6 +41,6 @@ //│ Bot: fun Bot { class: class Bot } //│ } -Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.TrivialResult(Block.ValueLit(1)), false))) +Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.ValueLit(1), false))) //│ > FunDefn(Symbol("f"), [Symbol("x")], Return(Lit(1), false)) From b3c707f4b6e26c7484696725cfa0bb0df65bab28 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 10:42:14 +0800 Subject: [PATCH 136/654] replace Shape with ShapeSet during instrumentation --- .../scala/hkmc2/codegen/Instrumentation.scala | 176 ++++++++++-------- .../scala/hkmc2/semantics/Elaborator.scala | 1 - .../src/test/mlscript-compile/Shape.mls | 31 --- .../src/test/mlscript-compile/ShapeSet.mls | 35 +++- .../test/scala/hkmc2/JSBackendDiffMaker.scala | 2 - .../src/test/scala/hkmc2/MLsDiffMaker.scala | 7 +- 6 files changed, 136 insertions(+), 116 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f9489baa7c..2b7c9df40c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -17,14 +17,14 @@ import syntax.{Literal, Tree} // but it doesn't accept the current context, so applications seem limited class InstrumentationImpl(using State): - type ArgWrappable = Path | Symbol | Shape + type ArgWrappable = Path | Symbol | ShapeSet type Context = HashMap[Path, StagedPath] def asArg(x: ArgWrappable): Arg = x match case p: Path => p.asArg case l: Symbol => l.asPath.asArg - case Shape(p) => p.asArg + case ShapeSet(p) => p.asArg // null and undefined are missing def toValue(lit: Str | Int | BigDecimal | Bool): Value = @@ -84,13 +84,14 @@ class InstrumentationImpl(using State): // helper for staging the constructors def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) - def shapeMod(name: Str) = summon[State].shapeSymbol.asPath.selSN(name) def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) + def patternMod(name: Str) = summon[State].shapeSetSymbol.asPath.selSN("Pattern").selSN(name) + def shapeSetMod(name: Str) = summon[State].shapeSetSymbol.asPath.selSN(name) def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = ctor(blockMod(name), args, symName)(k) - def shapeCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Shape => Block): Block = - ctor(shapeMod(name), args, symName)(p => k(Shape(p))) + def patternCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + ctor(patternMod(name), args, symName)(k) def optionSome(arg: ArgWrappable, symName: Str = "tmp")(k: Path => Block): Block = ctor(optionMod("Some"), Ls(arg), symName)(k) def optionNone(symName: Str = "tmp")(k: Path => Block): Block = @@ -98,35 +99,55 @@ class InstrumentationImpl(using State): def blockCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = call(blockMod(name), args, symName = symName)(k) - def shapeCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - call(shapeMod(name), args, symName = symName)(k) + def shapeSetCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + call(shapeSetMod(name), args, symName = symName)(k) // helpers to create and access the components of a staged value - case class Shape(p: Path) + case class ShapeSet(p: Path) - // A StagedPath is a path that points to a (shape, code) tuple + // A StagedPath is a path that points to a (ShapeSet, code) tuple case class StagedPath(p: Path): - def shape: Shape = Shape(DynSelect(p, toValue(0), false)) + def shapes: ShapeSet = ShapeSet(DynSelect(p, toValue(0), false)) def code: Path = DynSelect(p, toValue(1), false) def end: Block = Return(p, false) object StagedPath: - def mk(shape: Shape, code: Path, symName: Str = "tmp")(k: StagedPath => Block): Block = - tuple(Ls(shape.p, code), symName)(p => k(StagedPath(p))) + def mk(shapeSet: ShapeSet, code: Path, symName: Str = "tmp")(k: StagedPath => Block): Block = + tuple(Ls(shapeSet.p, code), symName)(p => k(StagedPath(p))) // linking functions defined in MLscipt def fnPrintCode(p: Path)(k: Path => Block): Block = // discard result, we only care about side effect blockCall("printCode", Ls(p))(k) - def fnMrg(s1: Shape, s2: Shape)(k: Shape => Block): Block = - shapeCall("mrg", Ls(s1, s2))(s => k(Shape(s))) - def fnSel(s1: Shape, s2: Shape)(k: Shape => Block): Block = - shapeCall("sel", Ls(s1, s2))(s => k(Shape(s))) - def fnFilter(s1: Shape, s2: Path)(k: Shape => Block): Block = - shapeCall("filter", Ls(s1, s2))(s => k(Shape(s))) - def fnUnion(s1: Shape, s2: Shape)(k: Shape => Block): Block = - shapeCall("union", Ls(s1, s2))(s => k(Shape(s))) + + def shapeBot()(k: ShapeSet => Block): Block = + shapeSetCall("mkBot", Ls())(s => k(ShapeSet(s))) + def shapeDyn()(k: ShapeSet => Block): Block = + shapeSetCall("mkDyn", Ls())(s => k(ShapeSet(s))) + def shapeLit(p: Path)(k: ShapeSet => Block): Block = + shapeSetCall("mkLit", Ls(p))(s => k(ShapeSet(s))) + def shapeArr(ps: Ls[ShapeSet])(k: ShapeSet => Block): Block = + tuple(ps, "test"): tup => + shapeSetCall("mkArr", Ls(tup))(s => k(ShapeSet(s))) + def shapeClass(cls: Path, params: Ls[(Symbol, ShapeSet)])(k: ShapeSet => Block): Block = + params.map((n, s) => + (k: Path => Block) => + transformSymbol(n): n => + tuple(Ls(n, s)): tup => + k(tup) + ).collectApply: ls => + tuple(ls): params => + shapeSetCall("mkClass", Ls(cls, params))(s => k(ShapeSet(s))) + + def fnMrg(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = + shapeSetCall("mrg", Ls(s1, s2))(s => k(ShapeSet(s))) + def fnSel(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = + shapeSetCall("sel", Ls(s1, s2))(s => k(ShapeSet(s))) + def fnFilter(s1: ShapeSet, s2: Path)(k: ShapeSet => Block): Block = + shapeSetCall("filter", Ls(s1, s2))(s => k(ShapeSet(s))) + def fnUnion(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = + shapeSetCall("union", Ls(s1, s2))(s => k(ShapeSet(s))) // transformation helpers @@ -140,31 +161,31 @@ class InstrumentationImpl(using State): // instrumentation rules def ruleLit(l: Value.Lit)(k: StagedPath => Block): Block = - shapeCtor("Lit", Ls(l)): sp => + shapeLit(l): sp => blockCtor("ValueLit", Ls(l)): cde => StagedPath.mk(sp, cde, "lit")(k) - // outdated + // not in formalization def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = blockCtor("Symbol", Ls(toValue(r.l.nme))): sym => blockCtor("ValueRef", Ls(sym)): cde => - shapeCtor("Dyn", Ls()): sp => // keep dynamic for now + // variable defined outside of scope, may be a reference to a class + shapeDyn(): sp => StagedPath.mk(sp, cde, "var")(k) def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = assert(!t.mut) transformArgs(t.elems): xs => - tuple(xs.map(_.shape)): shapes => - shapeCtor("Arr", Ls(shapes)): sp => - tuple(xs.map(_.code)): codes => - blockCtor("Tuple", Ls(codes)): cde => - StagedPath.mk(sp, cde, "tup")(k) + shapeArr(xs.map(_.shapes)): sp => + tuple(xs.map(_.code)): codes => + blockCtor("Tuple", Ls(codes)): cde => + StagedPath.mk(sp, cde, "tup")(k) def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => - shapeCtor("Lit", Ls(toValue(name))): n => - fnSel(x.shape, n): sp => + shapeLit(toValue(name)): n => + fnSel(x.shapes, n): sp => blockCtor("Symbol", Ls(toValue(name))): name => blockCtor("Select", Ls(x.code, name)): cde => StagedPath.mk(sp, cde, "sel")(k) @@ -173,7 +194,7 @@ class InstrumentationImpl(using State): val DynSelect(qual, fld, arrayIdx) = d transformPath(qual): x => transformPath(fld): y => - fnSel(x.shape, y.shape): sp => + fnSel(x.shapes, y.shapes): sp => blockCtor("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => StagedPath.mk(sp, cde, "dynsel")(k) @@ -181,25 +202,32 @@ class InstrumentationImpl(using State): val Instantiate(mut, cls, args) = i assert(!mut) transformArgs(args): xs => - tuple(xs.map(_.shape)): shapes => - tuple(xs.map(_.code)): codes => - // reuse instrumentation logic, shape of cls is discarded - transformPath(cls): cls => - shapeCtor("Class", Ls(cls.code, shapes)): sp => - blockCtor("Instantiate", Ls(cls.code, codes)): cde => - StagedPath.mk(sp, cde, "inst")(k) + tuple(xs.map(_.shapes)): shapes => + // reuse instrumentation logic, shape of cls is discarded + // possible to skip this? this triggers unnecessary "out of context" Dyn shape thing + val sym = cls match + case Select(Value.Ref(l), _) => l + case _ => ??? + transformSymbol(sym): sym => + // TODO: add back class names + val fieldName = new TempSymbol(N, "TODO") + shapeClass(sym, xs.map(x => (fieldName, x.shapes))): sp => + transformPath(cls): cls => + tuple(xs.map(_.code)): codes => + blockCtor("Instantiate", Ls(cls.code, codes)): cde => + StagedPath.mk(sp, cde, "inst")(k) def ruleReturn(r: Return)(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code, toValue(false))): cde => - StagedPath.mk(x.shape, cde, "return")(k(_, summon)) + StagedPath.mk(x.shapes, cde, "return")(k(_, summon)) def ruleMatch(m: Match)(using Context)(k: (StagedPath, Context) => Block): Block = val Match(p, ks, dflt, rest) = m transformPath(p): x => ruleBranches(x, p, ks, dflt): (sp, scrut, arms, dflt, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => - fnMrg(sp, z.shape): sp => + fnMrg(sp, z.shapes): sp => transformOption(dflt, p => (_(p))): dflt => blockCtor("Match", Ls(scrut, arms, dflt, z.code)): cde => StagedPath.mk(sp, cde)(k(_, ctx2)) @@ -208,26 +236,29 @@ class InstrumentationImpl(using State): val Assign(x, r, b) = a transformResult(r): y => transformSymbol(x): xSym => - // if ctx contains x, x was defined earlier - // otherwise, x is defined here - ctx.get(x.asPath) match - case S(x1) => - fnUnion(y.shape, x1.shape): sp => - blockCtor("ValueRef", Ls(xSym)): xStaged => + blockCtor("ValueRef", Ls(xSym)): xStaged => + // if ctx contains x, x was defined earlier + // otherwise, x is defined here + ctx.get(x.asPath) match + case S(x1) => + fnUnion(y.shapes, x1.shapes): sp => StagedPath.mk(sp, xStaged): x2 => - given Context = ctx.clone() += x.asPath -> x2 (Assign(x, x2.p, _)): + given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath.mk(z.shape, cde, "assign")(k(_, summon)) - case N => - (Assign(x, y.p, _)): - transformBlock(b): z => // ignore ctx - blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath.mk(z.shape, cde, "assign")(k(_, summon)) + StagedPath.mk(z.shapes, cde, "assign")(k(_, ctx)) + case N => + StagedPath.mk(y.shapes, xStaged): x2 => + // propagate shape information for future references to x + (Assign(x, y.p, _)): + given Context = ctx.clone() += x.asPath -> x2 + transformBlock(b): (z, ctx) => + blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => + StagedPath.mk(z.shapes, cde, "assign")(k(_, ctx)) def ruleLet(x: BlockMemberSymbol, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = - shapeCtor("Bot", Ls()): bot => + shapeBot(): bot => transformSymbol(x): xSym => StagedPath.mk(bot, xSym): y => (Assign(x, y.p, _)): @@ -235,10 +266,10 @@ class InstrumentationImpl(using State): transformBlock(b): (z, ctx) => blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => - StagedPath.mk(z.shape, cde, "_let")(k(_, summon)) + StagedPath.mk(z.shapes, cde, "_let")(k(_, summon)) def ruleEnd()(k: StagedPath => Block): Block = - shapeCtor("Bot", Ls()): sp => + shapeBot(): sp => blockCtor("End", Ls()): cde => StagedPath.mk(sp, cde, "end")(k) @@ -261,13 +292,13 @@ class InstrumentationImpl(using State): // horrible abstraction boundary def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block])(using ctx: Context - )(k: (Shape, Path, Path, Opt[Path], Context) => Block): Block = + )(k: (ShapeSet, Path, Path, Opt[Path], Context) => Block): Block = // TODO: do filtering def f(arm: Case -> Block)(ctx: Context)(k: (StagedPath, Context) => Block): Block = ruleBranch(x, p, arm._1, arm._2)(using ctx)(k) arms.map(f).collectApply(summon): (arms, ctx) => - shapeCtor("Dyn", Ls()): sp => // TODO + shapeDyn(): sp => // TODO tuple(arms.map(_.code)): arms => dflt match case S(dflt) => @@ -277,25 +308,16 @@ class InstrumentationImpl(using State): def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformCase(cse): cse => - fnFilter(x.shape, cse): sp => + fnFilter(x.shapes, cse): sp => StagedPath.mk(sp, x.code): x0 => - // val bot = summon[State].shapeSymbol.asPath.selSN("Bot"). - // we want the ClassLikeSymbol for Shape.Bot -//│ _1 = Cls: -//│ cls = class:Bot -//│ path = Select{class:Bot}: -//│ qual = Select{member:Bot}: -//│ qual = Ref of member:Shape -//│ name = Ident of "Bot" -//│ name = Ident of "class" - val arm = Case.Cls(???, shapeMod("Bot").selSN("class")) -> ruleEnd()(k(_, ctx)) - (Match(x.shape.p, Ls(arm), N, _)): + val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(k(_, ctx)) + (Match(x0.shapes.p.selSN("isEmpty"), Ls(arm), N, _)): given Context = ctx.clone() += p -> x0 transformBlock(b): (y1, ctx) => blockCtor("End", Ls()): end => // TODO: use Arm type instead of Tup blockCtor("Tup", Ls(cse, y1.code)): cde => - StagedPath.mk(y1.shape, cde)(k(_, ctx.clone() -= p)) + StagedPath.mk(y1.shapes, cde)(k(_, ctx.clone() -= p)) // transformations of Block @@ -321,7 +343,7 @@ class InstrumentationImpl(using State): optionNone(): opt => transformPath(value): value => blockCtor("Arg", Ls(opt, value.code)): cde => - StagedPath.mk(value.shape, cde)(k) + StagedPath.mk(value.shapes, cde)(k) // provides list of shapes and list of codes to continuation def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = @@ -329,9 +351,13 @@ class InstrumentationImpl(using State): def transformCase(cse: Case)(k: Path => Block): Block = cse match - case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) - case Case.Cls(cls, path) => blockCtor("Cls", Ls(cls, path))(k) - case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) + case Case.Lit(lit) => patternCtor("Lit", Ls(Value.Lit(lit)))(k) + // wrong 2nd argument + case Case.Cls(cls, path) => + // TODO: retrieve argument names from symbol? + transformSymbol(cls): cls => + patternCtor("Cls", Ls(cls, toValue(0)))(k) + case Case.Tup(len, inf) => patternCtor("Tup", Ls(len, inf).map(toValue))(k) case Case.Field(name, safe) => ??? // not supported // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 21a6f7cd21..331e127ada 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -234,7 +234,6 @@ object Elaborator: val prettyPrintSymbol = TempSymbol(N, "prettyPrint") val termSymbol = TempSymbol(N, "Term") val blockSymbol = TempSymbol(N, "Block") - val shapeSymbol = TempSymbol(N, "Shape") val shapeSetSymbol = TempSymbol(N, "ShapeSet") val optionSymbol = TempSymbol(N, "Option") val wasmSymbol = TempSymbol(N, "wasm") diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index de6be1fc18..92634c2375 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,8 +1,5 @@ -import "./Predef.mls" import "./Block.mls" -open Predef - type Literal = null | undefined | Str | Int | Num | Bool type Symbol = Block.Symbol type Shape = Shape.Shape @@ -84,31 +81,3 @@ fun static(s: Shape) = Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? Class(_, params) then params.every(static(_.1)) Arr(shapes) then shapes.every(static) - -type SLit = Lit -type Pattern = Pattern.Pattern - -module Pattern with... - -class Pattern with - constructor - PLit(val lit: Literal) - Cls(val cls: Symbol, val n: Int) - Tup(val len: Int) - Wildcard() - -fun silh(p: Pattern): Shape = if p is - PLit(l) then SLit(l) - Cls(sym, n) then Class(sym, Array(n).fill(["TODO", Dyn])) - Tup(n) then Arr(Array(n).fill(Dyn)) - Wildcard then Dyn() - -fun filter(s: Shape, p: Pattern): Array[Shape] = - if [s, p] is - [_, Wildcard] then [s] - [Lit(l1), PLit(l2)] and l1 == l2 then [s] - [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] - [Arr(ls), Tup(n)] and ls.length == n then [s] - [Class(c1, _), Cls(c2, _)] and c1.name == c2.name then [s] - [Dyn, _] then [silh(p)] - else [] diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 49ff84fddb..fb98fec616 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -1,10 +1,10 @@ import "./Predef.mls" -import "./Shape.mls" import "./Block.mls" +import "./Shape.mls" open Predef -open Shape { show, Pattern } open Block { Symbol } +open Shape { show } type ShapeSet = ShapeSet.ShapeSet @@ -70,7 +70,7 @@ fun mkClass(sym: Symbol, params: Array[[Symbol, ShapeSet]]) = // helper functions -fun filter(s: ShapeSet, p: Pattern) = s.flatMap(Pattern.filter(_, p)) +fun filter(s: ShapeSet, p: Pattern.Pattern) = s.flatMap(Pattern.filter(_, p)) fun sel(s1: ShapeSet, s2: ShapeSet) = prod([s1.values(), s2.values()]) @@ -79,3 +79,32 @@ fun sel(s1: ShapeSet, s2: ShapeSet) = fun mrg(s1: ShapeSet, s2: ShapeSet) = mkDyn() // TODO + +open Block { Literal } +open Shape { isPrimitiveTypeOf } + +module Pattern with... + +class Pattern with + constructor + PLit(val lit: Literal) + Cls(val cls: Symbol, val n: Int) + Tup(val len: Int) + Wildcard() + +fun silh(p: Pattern): Shape = if p is + PLit(l) then Lit(l) + Cls(sym, n) then Class(sym, Array(n).fill(["TODO", Dyn])) + Tup(n) then Arr(Array(n).fill(Dyn)) + Wildcard then Dyn() + +fun filter(s: Shape, p: Pattern): Array[Shape] = + if [s, p] is + [_, Wildcard] then [s] + [Lit(l1), PLit(l2)] and l1 == l2 then [s] + [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] + [Arr(ls), Tup(n)] and ls.length == n then [s] + [Class(c1, _), Cls(c2, _)] and c1.name == c2.name then [s] + [Dyn, _] then [silh(p)] + else [] + diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 398bcaeeb8..6c83efc5f5 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -33,7 +33,6 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val runtimeNme = baseScp.allocateName(Elaborator.State.runtimeSymbol) val termNme = baseScp.allocateName(Elaborator.State.termSymbol) val blockNme = baseScp.allocateName(Elaborator.State.blockSymbol) - val shapeNme = baseScp.allocateName(Elaborator.State.shapeSymbol) val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) val shapeSetNme = baseScp.allocateName(Elaborator.State.shapeSetSymbol) val definitionMetadataNme = baseScp.allocateName(Elaborator.State.definitionMetadataSymbol) @@ -63,7 +62,6 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: if importQQ.isSet then importRuntimeModule(termNme, termFile) if stageCode.isSet then importRuntimeModule(blockNme, blockFile) - importRuntimeModule(shapeNme, shapeFile) importRuntimeModule(optionNme, optionFile) importRuntimeModule(shapeSetNme, shapeSetFile) h diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index e4cd7543a1..ff26bd1423 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -21,9 +21,8 @@ abstract class MLsDiffMaker extends DiffMaker: val runtimeFile: os.Path = predefFile/os.up/"Runtime.mjs" // * Contains MLscript runtime definitions val termFile: os.Path = predefFile/os.up/"Term.mjs" // * Contains MLscript runtime term definitions val blockFile: os.Path = predefFile/os.up/"Block.mjs" // * Contains MLscript runtime block definitions - val shapeFile: os.Path = predefFile/os.up/"Shape.mjs" // * Contains MLscript runtime shape definitions - val optionFile: os.Path = predefFile/os.up/"Option.mjs" // * Contains MLscript runtime shape definitions - val shapeSetFile: os.Path = predefFile/os.up/"ShapeSet.mjs" // * Contains MLscript runtime shape definitions + val optionFile: os.Path = predefFile/os.up/"Option.mjs" // * Contains MLscipt runtime option definition + val shapeSetFile: os.Path = predefFile/os.up/"ShapeSet.mjs" // * Contains MLscript runtime shapeset definitions val wd = file / os.up @@ -166,7 +165,7 @@ abstract class MLsDiffMaker extends DiffMaker: given Config = mkConfig processTrees( PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) - :: PrefixApp(Keywrd(`import`), StrLit(shapeFile.toString)) + :: PrefixApp(Keywrd(`import`), StrLit(shapeSetFile.toString)) :: Nil) super.init() From e76c1fd8c486e16ecb6eee1e11e6eccb04db5f54 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 11:13:43 +0800 Subject: [PATCH 137/654] add message to assertions --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 2b7c9df40c..6ffeddf32b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -174,7 +174,7 @@ class InstrumentationImpl(using State): StagedPath.mk(sp, cde, "var")(k) def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = - assert(!t.mut) + assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => shapeArr(xs.map(_.shapes)): sp => tuple(xs.map(_.code)): codes => @@ -200,7 +200,7 @@ class InstrumentationImpl(using State): def ruleInst(i: Instantiate)(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i - assert(!mut) + assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => tuple(xs.map(_.shapes)): shapes => // reuse instrumentation logic, shape of cls is discarded @@ -284,7 +284,7 @@ class InstrumentationImpl(using State): def stageParamList(ps: ParamList)(k: Path => Block) = ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) transformOption(cls.paramsOpt, stageParamList): paramsOpt => - assert(cls.companion.isEmpty) // nested module not supported + assert(cls.companion.isEmpty, "nested module not supported") optionNone(): none => blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) From d7925537baec64774a9a6168ebb1e1b804e81d11 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 11:18:11 +0800 Subject: [PATCH 138/654] refactor match rules --- .../scala/hkmc2/codegen/Instrumentation.scala | 54 ++++++++++--------- .../src/test/mlscript-compile/Block.mls | 7 +++ 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 6ffeddf32b..b05b45b504 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -119,7 +119,8 @@ class InstrumentationImpl(using State): def fnPrintCode(p: Path)(k: Path => Block): Block = // discard result, we only care about side effect - blockCall("printCode", Ls(p))(k) + def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = + blockCall("concat", Ls(p1, p2))(k) def shapeBot()(k: ShapeSet => Block): Block = shapeSetCall("mkBot", Ls())(s => k(ShapeSet(s))) @@ -225,12 +226,11 @@ class InstrumentationImpl(using State): def ruleMatch(m: Match)(using Context)(k: (StagedPath, Context) => Block): Block = val Match(p, ks, dflt, rest) = m transformPath(p): x => - ruleBranches(x, p, ks, dflt): (sp, scrut, arms, dflt, ctx1) => + ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => - fnMrg(sp, z.shapes): sp => - transformOption(dflt, p => (_(p))): dflt => - blockCtor("Match", Ls(scrut, arms, dflt, z.code)): cde => - StagedPath.mk(sp, cde)(k(_, ctx2)) + fnMrg(stagedMatch.shapes, z.shapes): sp => + fnConcat(stagedMatch.code, z.code): cde => + StagedPath.mk(sp, cde)(k(_, ctx2)) def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a @@ -289,35 +289,37 @@ class InstrumentationImpl(using State): blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) - // horrible abstraction boundary def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block])(using - ctx: Context - )(k: (ShapeSet, Path, Path, Opt[Path], Context) => Block): Block = - // TODO: do filtering - def f(arm: Case -> Block)(ctx: Context)(k: (StagedPath, Context) => Block): Block = - ruleBranch(x, p, arm._1, arm._2)(using ctx)(k) - - arms.map(f).collectApply(summon): (arms, ctx) => + Context + )(k: (StagedPath, Context) => Block): Block = + arms.map((cse, block) => ruleBranch(x, p, cse, block)(using _)).collectApply(summon): (arms, ctx) => shapeDyn(): sp => // TODO tuple(arms.map(_.code)): arms => - dflt match - case S(dflt) => - transformBlock(dflt)(using ctx): (dflt, ctx) => - k(sp, x.code, arms, S(dflt.code), ctx) - case N => k(sp, x.code, arms, N, ctx) + blockCtor("End", Ls()): e => + dflt match + case S(dflt) => + transformBlock(dflt)(using ctx): (dflt, ctx) => + optionSome(dflt.code): dflt => + blockCtor("Match", Ls(x.code, arms, dflt, e)): m => + StagedPath.mk(sp, m)(k(_, ctx)) + case N => + optionNone(): none => + blockCtor("Match", Ls(x.code, arms, none, e)): m => + StagedPath.mk(sp, m)(k(_, ctx)) def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformCase(cse): cse => fnFilter(x.shapes, cse): sp => StagedPath.mk(sp, x.code): x0 => val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(k(_, ctx)) - (Match(x0.shapes.p.selSN("isEmpty"), Ls(arm), N, _)): - given Context = ctx.clone() += p -> x0 - transformBlock(b): (y1, ctx) => - blockCtor("End", Ls()): end => - // TODO: use Arm type instead of Tup - blockCtor("Tup", Ls(cse, y1.code)): cde => - StagedPath.mk(y1.shapes, cde)(k(_, ctx.clone() -= p)) + call(x0.shapes.p.selSN("isEmpty"), Ls()): scrut => + (Match(scrut, Ls(arm), N, _)): + given Context = ctx.clone() += p -> x0 + transformBlock(b): (y1, ctx) => + blockCtor("End", Ls()): end => + // TODO: use Arm type instead of Tup + blockCtor("Tup", Ls(cse, y1.code)): cde => + StagedPath.mk(y1.shapes, cde)(k(_, ctx.clone() -= p)) // transformations of Block diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 60ce3c3db8..a22efc7179 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -57,6 +57,13 @@ class Block with Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) End() + +fun concat(b1: Block, b2: Block) = if b1 is + Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, concat(rest, b2)) + Return(res, implct) then b2 // discard return? + Assign(lhs, rhs, rest) then Assign(lhs, rhs, concat(rest, b2)) + Define(defn, rest) then Define(defn, concat(rest, b2)) + End() then b2 fun showBool(b: Bool) = if b then "true" else "false" From 1020d381776d3cabff0d4b780f21439aa3d3b62c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 11:29:34 +0800 Subject: [PATCH 139/654] add debug print Shape --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 11 ++++++++--- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 8 ++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b05b45b504..c15355d8b7 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -117,8 +117,11 @@ class InstrumentationImpl(using State): // linking functions defined in MLscipt - def fnPrintCode(p: Path)(k: Path => Block): Block = + def fnPrintCode(p: Path)(k: Block): Block = // discard result, we only care about side effect + blockCall("printCode", Ls(p))(_ => k) + def fnPrintShapeSet(p: ShapeSet)(rest: Block): Block = + shapeSetCall("printShapeSet", Ls(p.p))(_ => rest) def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = blockCall("concat", Ls(p1, p2))(k) @@ -371,7 +374,9 @@ class InstrumentationImpl(using State): val sym = modSym.asPath.selSN(genSym.nme) val debug = call(sym, Nil): ret => - fnPrintCode(StagedPath(ret).code)(_ => End()) + val p = StagedPath(ret) + (fnPrintShapeSet(p.shapes)(_)): + fnPrintCode(p.code)(End()) // NOTE: this debug printing only works for top-level modules, nested modules don't work (f.copy(sym = genSym, body = transformBlock(f.body)(_.end)), debug) @@ -385,7 +390,7 @@ class InstrumentationImpl(using State): case c: ClsLikeDefn => ruleCls(c, d.rest): p => ruleEnd(): b => - fnPrintCode(p)(_ => k(b, ctx)) + fnPrintCode(p)(k(b, ctx)) def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = transformBlock(b)((p, _) => k(p)) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 09516e0a77..ebe21b3992 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -17,13 +17,17 @@ staged module B with fun i() = [1, 2] fun j() = new A() fun k() = [1].(0) -//│ > Define(ClsLikeDefn(Symbol("D")), End) -//│ > Define(ClsLikeDefn(Symbol("C")), End) +//│ > Lit(1) //│ > Return(Lit(1), false) +//│ > Lit(42) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) +//│ > Lit(1) //│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) +//│ > Arr(Lit(1), Lit(2)) //│ > Return(Tuple([Lit(1), Lit(2)]), false) +//│ > Class(A, []) //│ > Return(Instantiate(Select(Ref(Symbol("A")), Symbol("class")), []), false) +//│ > Lit(1) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) // collision with class name? From eece7ac391949118b31ecbf775954341219d90fe Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 11:30:40 +0800 Subject: [PATCH 140/654] print more information for ClsLikeDefn --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 9 +++++++-- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 6 ++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index a22efc7179..fce01ebba4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -121,8 +121,13 @@ fun showDefn(d: Defn): Str = showParamList(params) + ", " + showBlock(body) + ")" ClsLikeDefn(sym, paramsOpt, companion) then - // minimal, since this is unused in your staged Block for now - "ClsLikeDefn(" + showSymbol(sym) + ")" + // TODO: print rest of the arguments + "ClsLikeDefn(" + showSymbol(sym) + ", " + + if paramsOpt is + Some(params) then "(" + showParamList(params) + ")" + None then "([])" + + ", " + + "TODO" + ")" fun showOptBlock(ob: Opt[Block]) = if ob is Some(b) then showBlock(b) else "None" diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index ebe21b3992..defe12a1c6 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -17,6 +17,8 @@ staged module B with fun i() = [1, 2] fun j() = new A() fun k() = [1].(0) +//│ > Define(ClsLikeDefn(Symbol("D"), ([]), TODO), End) +//│ > Define(ClsLikeDefn(Symbol("C"), ([Symbol("a"), Symbol("b")]), TODO), End) //│ > Lit(1) //│ > Return(Lit(1), false) //│ > Lit(42) @@ -48,8 +50,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.43: staged module B with +//│ ║ l.49: staged module B with //│ ║ ^^^^^^ -//│ ║ l.44: fun f() = 1 +//│ ║ l.50: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From df68b1d1e4702bc1c98334b62ff86eec65e85c0f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 15:40:19 +0800 Subject: [PATCH 141/654] combine Pattern with Case we transform Some(dflt) branch in a Match statement without calling the filter function at JS runtime --- .../scala/hkmc2/codegen/Instrumentation.scala | 39 +++++++++++-------- .../src/test/mlscript-compile/Block.mls | 4 +- .../src/test/mlscript-compile/Shape.mls | 16 ++++++++ .../src/test/mlscript-compile/ShapeSet.mls | 33 +--------------- 4 files changed, 43 insertions(+), 49 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index c15355d8b7..fc0cc58478 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -85,13 +85,10 @@ class InstrumentationImpl(using State): def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) - def patternMod(name: Str) = summon[State].shapeSetSymbol.asPath.selSN("Pattern").selSN(name) def shapeSetMod(name: Str) = summon[State].shapeSetSymbol.asPath.selSN(name) def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = ctor(blockMod(name), args, symName)(k) - def patternCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - ctor(patternMod(name), args, symName)(k) def optionSome(arg: ArgWrappable, symName: Str = "tmp")(k: Path => Block): Block = ctor(optionMod("Some"), Ls(arg), symName)(k) def optionNone(symName: Str = "tmp")(k: Path => Block): Block = @@ -299,9 +296,10 @@ class InstrumentationImpl(using State): shapeDyn(): sp => // TODO tuple(arms.map(_.code)): arms => blockCtor("End", Ls()): e => + // unable to use transformOption here because ctx is changed here dflt match case S(dflt) => - transformBlock(dflt)(using ctx): (dflt, ctx) => + ruleWildCard(x, p, dflt): (dflt, ctx) => optionSome(dflt.code): dflt => blockCtor("Match", Ls(x.code, arms, dflt, e)): m => StagedPath.mk(sp, m)(k(_, ctx)) @@ -314,15 +312,25 @@ class InstrumentationImpl(using State): transformCase(cse): cse => fnFilter(x.shapes, cse): sp => StagedPath.mk(sp, x.code): x0 => - val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(k(_, ctx)) call(x0.shapes.p.selSN("isEmpty"), Ls()): scrut => + val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(p => Return(p.p, false)) (Match(scrut, Ls(arm), N, _)): given Context = ctx.clone() += p -> x0 transformBlock(b): (y1, ctx) => - blockCtor("End", Ls()): end => - // TODO: use Arm type instead of Tup - blockCtor("Tup", Ls(cse, y1.code)): cde => - StagedPath.mk(y1.shapes, cde)(k(_, ctx.clone() -= p)) + // TODO: use Arm type instead of Tup + tuple(Ls(cse, y1.code)): cde => + StagedPath.mk(y1.shapes, cde)(k(_, ctx.clone() -= p)) + + // this partially performs rules from filter to account for difference in Block.Case and Match pattern in the formalization + // to avoid defining the `_` pattern in Block.Case, we use the fact that filter(s, _) = s + def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + // when pattern = _, x0 = x + call(x.shapes.p.selSN("isEmpty"), Ls()): scrut => + val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(p => Return(p.p, false)) + (Match(scrut, Ls(arm), N, _)): + given Context = ctx.clone() += p -> x + transformBlock(b): (y1, ctx) => + k(y1, ctx.clone() -= p) // transformations of Block @@ -354,15 +362,14 @@ class InstrumentationImpl(using State): def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = args.map(transformArg).collectApply(k) - def transformCase(cse: Case)(k: Path => Block): Block = + def transformCase(cse: Case)(using Context)(k: Path => Block): Block = cse match - case Case.Lit(lit) => patternCtor("Lit", Ls(Value.Lit(lit)))(k) - // wrong 2nd argument + case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) case Case.Cls(cls, path) => - // TODO: retrieve argument names from symbol? transformSymbol(cls): cls => - patternCtor("Cls", Ls(cls, toValue(0)))(k) - case Case.Tup(len, inf) => patternCtor("Tup", Ls(len, inf).map(toValue))(k) + transformPath(path): path => + blockCtor("Cls", Ls(cls, path.code))(k) + case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) case Case.Field(name, safe) => ??? // not supported // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function @@ -403,7 +410,7 @@ class InstrumentationImpl(using State): case a: Assign => ruleAssign(a)(k) case d: Define => transformDefine(d)(k) case End(_) => ruleEnd()(k2) - case _: Match => ??? + case m: Match => ruleMatch(m)(k) // temporary measure to accept returning an array // use BlockTransformer here? case Begin(b1, b2) => transformBlock(concat(b1, b2))(k) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index fce01ebba4..d0d3e36a50 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -27,7 +27,7 @@ class Case with constructor Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) - Tup(val len: Int, val inf: Bool) // TODO: remove inf? + Tup(val len: Int) // TODO: remove inf? class Result with constructor @@ -100,7 +100,7 @@ fun showCase(c: Case): Str = if c is Lit(lit) then "Lit(" + showLiteral(lit) + ")" Cls(cls, path) then "Cls(" + showSymbol(cls) + ", " + showPath(path) + ")" - Tup(len, inf) then "Tup(" + len + ", " + showBool(inf) + ")" + Tup(len) then "Tup(" + len + ")" fun showResult(r: Result): Str = if r is diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 92634c2375..a82d5ff13b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -81,3 +81,19 @@ fun static(s: Shape) = Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? Class(_, params) then params.every(static(_.1)) Arr(shapes) then shapes.every(static) + +open Block { Case } + +fun silh(p: Case): Shape = if p is + Block.Lit(l) then Lit(l) + Block.Cls(sym, path) then Class(sym, Array(1).fill(["TODO", Dyn])) + Block.Tup(n) then Arr(Array(n).fill(Dyn)) + +fun filter(s: Shape, p: Case): Array[Shape] = + if [s, p] is + [Lit(l1), Block.Lit(l2)] and l1 == l2 then [s] + [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] + [Arr(ls), Block.Tup(n)] and ls.length == n then [s] + [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [s] + [Dyn, _] then [silh(p)] + else [] diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index fb98fec616..a5d257bf31 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -35,7 +35,7 @@ fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [hash(s), s]))) fun union(s1: ShapeSet, s2: ShapeSet) = new Map([...s1.underlying, ...s2.underlying]) -fun flat(arr: Array[ShapeSet]) = arr.reduce(union) +fun flat(arr: Array[ShapeSet]) = new Map(arr.map(_.underlying).flat()) // Cartesian product: https://stackoverflow.com/a/43053803 fun prod(xs) = @@ -70,7 +70,7 @@ fun mkClass(sym: Symbol, params: Array[[Symbol, ShapeSet]]) = // helper functions -fun filter(s: ShapeSet, p: Pattern.Pattern) = s.flatMap(Pattern.filter(_, p)) +fun filter(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) fun sel(s1: ShapeSet, s2: ShapeSet) = prod([s1.values(), s2.values()]) @@ -79,32 +79,3 @@ fun sel(s1: ShapeSet, s2: ShapeSet) = fun mrg(s1: ShapeSet, s2: ShapeSet) = mkDyn() // TODO - -open Block { Literal } -open Shape { isPrimitiveTypeOf } - -module Pattern with... - -class Pattern with - constructor - PLit(val lit: Literal) - Cls(val cls: Symbol, val n: Int) - Tup(val len: Int) - Wildcard() - -fun silh(p: Pattern): Shape = if p is - PLit(l) then Lit(l) - Cls(sym, n) then Class(sym, Array(n).fill(["TODO", Dyn])) - Tup(n) then Arr(Array(n).fill(Dyn)) - Wildcard then Dyn() - -fun filter(s: Shape, p: Pattern): Array[Shape] = - if [s, p] is - [_, Wildcard] then [s] - [Lit(l1), PLit(l2)] and l1 == l2 then [s] - [Lit(l), Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] - [Arr(ls), Tup(n)] and ls.length == n then [s] - [Class(c1, _), Cls(c2, _)] and c1.name == c2.name then [s] - [Dyn, _] then [silh(p)] - else [] - From aa3b19a174c68809151aacfc5d185ee5722bf19a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 16:37:39 +0800 Subject: [PATCH 142/654] fill out more match instrumentation --- .../scala/hkmc2/codegen/Instrumentation.scala | 26 +++++++++++-------- .../src/test/mlscript/staging/Functions.mls | 14 ++++++++-- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index fc0cc58478..128c97fea7 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -37,7 +37,6 @@ class InstrumentationImpl(using State): def concat(b1: Block, b2: Block): Block = b1.mapTail { - case _: Return => b2 case _: End => b2 case _ => ??? } @@ -135,8 +134,7 @@ class InstrumentationImpl(using State): params.map((n, s) => (k: Path => Block) => transformSymbol(n): n => - tuple(Ls(n, s)): tup => - k(tup) + tuple(Ls(n, s))(k) ).collectApply: ls => tuple(ls): params => shapeSetCall("mkClass", Ls(cls, params))(s => k(ShapeSet(s))) @@ -149,6 +147,9 @@ class InstrumentationImpl(using State): shapeSetCall("filter", Ls(s1, s2))(s => k(ShapeSet(s))) def fnUnion(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("union", Ls(s1, s2))(s => k(ShapeSet(s))) + def fnFlat(s: Ls[ShapeSet])(k: ShapeSet => Block): Block = + tuple(s): tup => + shapeSetCall("flat", Ls(tup))(s => k(ShapeSet(s))) // transformation helpers @@ -293,7 +294,7 @@ class InstrumentationImpl(using State): Context )(k: (StagedPath, Context) => Block): Block = arms.map((cse, block) => ruleBranch(x, p, cse, block)(using _)).collectApply(summon): (arms, ctx) => - shapeDyn(): sp => // TODO + fnFlat(arms.map(_.shapes)): sp => tuple(arms.map(_.code)): arms => blockCtor("End", Ls()): e => // unable to use transformOption here because ctx is changed here @@ -313,13 +314,16 @@ class InstrumentationImpl(using State): fnFilter(x.shapes, cse): sp => StagedPath.mk(sp, x.code): x0 => call(x0.shapes.p.selSN("isEmpty"), Ls()): scrut => - val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(p => Return(p.p, false)) - (Match(scrut, Ls(arm), N, _)): - given Context = ctx.clone() += p -> x0 - transformBlock(b): (y1, ctx) => - // TODO: use Arm type instead of Tup - tuple(Ls(cse, y1.code)): cde => - StagedPath.mk(y1.shapes, cde)(k(_, ctx.clone() -= p)) + ruleEnd(): e => + tuple(Ls(cse, e.code)): armStaged => + StagedPath.mk(e.shapes, armStaged): badArm => + val arm = Case.Lit(Tree.BoolLit(true)) -> k(badArm, ctx) + (Match(scrut, Ls(arm), N, _)): + given Context = ctx.clone() += p -> x0 + transformBlock(b): (y1, ctx) => + // TODO: use Arm type instead of Tup + tuple(Ls(cse, y1.code)): cde => + StagedPath.mk(y1.shapes, cde)(k(_, ctx.clone() -= p)) // this partially performs rules from filter to account for difference in Block.Case and Match pattern in the formalization // to avoid defining the `_` pattern in Block.Case, we use the fact that filter(s, _) = s diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index defe12a1c6..a21b91a7dd 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -17,6 +17,14 @@ staged module B with fun i() = [1, 2] fun j() = new A() fun k() = [1].(0) + fun l() = + if 9 is + 8 then 1 + 9 then 2 + Int then 3 + Bool then 4 + // TODO: Case.Tup + else 0 //│ > Define(ClsLikeDefn(Symbol("D"), ([]), TODO), End) //│ > Define(ClsLikeDefn(Symbol("C"), ([Symbol("a"), Symbol("b")]), TODO), End) //│ > Lit(1) @@ -31,6 +39,8 @@ staged module B with //│ > Return(Instantiate(Select(Ref(Symbol("A")), Symbol("class")), []), false) //│ > Lit(1) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) +//│ > Dyn +//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(8) -> End, Lit(9) -> Return(Lit(2), false), Cls(Symbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false), Cls(Symbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> End], Return(Lit(0), false), End)) // collision with class name? :js @@ -50,8 +60,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.49: staged module B with +//│ ║ l.59: staged module B with //│ ║ ^^^^^^ -//│ ║ l.50: fun f() = 1 +//│ ║ l.60: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From 4af583909721a82ff3e045c651c5271b372cc70a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 16:44:55 +0800 Subject: [PATCH 143/654] update comments --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 128c97fea7..9fbda47efd 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -16,6 +16,9 @@ import syntax.{Literal, Tree} // it seems some logic should be deferred to BlockTransformer to dedup code // but it doesn't accept the current context, so applications seem limited +// it should be possible to cache some common constructions (End, Option) into the context +// this avoids having to rebuild the same structure everytime + class InstrumentationImpl(using State): type ArgWrappable = Path | Symbol | ShapeSet type Context = HashMap[Path, StagedPath] @@ -52,7 +55,7 @@ class InstrumentationImpl(using State): k(head :: tail) )(f) - // possible to wrangle to the form above, but unweildy to do so in practice + // possible to wrangle to the form above, but unwieldy to do so in practice extension [A, B](ls: Ls[B => ((A, B) => Block) => Block]) def collectApply(b: B)(f: (Ls[A], B) => Block): Block = ls.foldRight((b: B) => (f: (Ls[A], B) => Block) => f(Nil, b))((headCont, tailCont) => From 2c67c8e175935de3cf9326c81b5c7bad94451f3a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 16:47:40 +0800 Subject: [PATCH 144/654] update PrintCode.mls --- .../src/test/mlscript/staging/PrintCode.mls | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index 18be09c9c7..21e4d1e5aa 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -4,21 +4,19 @@ //│ Block = class Block { //│ Symbol: fun Symbol { class: class Symbol }, //│ Arg: fun Arg { class: class Arg }, -//│ Path: class Path, -//│ Select: fun Select { class: class Select }, -//│ DynSelect: fun DynSelect { class: class DynSelect }, -//│ ValueRef: fun ValueRef { class: class ValueRef }, -//│ ValueLit: fun ValueLit { class: class ValueLit }, //│ Case: class Case, //│ Lit: fun Lit { class: class Lit }, //│ Cls: fun Cls { class: class Cls }, //│ Tup: fun Tup { class: class Tup }, -//│ Wildcard: fun Wildcard { class: class Wildcard }, //│ Result: class Result, -//│ TrivialResult: fun TrivialResult { class: class TrivialResult }, //│ Call: fun Call { class: class Call }, //│ Instantiate: fun Instantiate { class: class Instantiate }, //│ Tuple: fun Tuple { class: class Tuple }, +//│ Path: class Path, +//│ Select: fun Select { class: class Select }, +//│ DynSelect: fun DynSelect { class: class DynSelect }, +//│ ValueRef: fun ValueRef { class: class ValueRef }, +//│ ValueLit: fun ValueLit { class: class ValueLit }, //│ Defn: class Defn, //│ ValDefn: fun ValDefn { class: class ValDefn }, //│ ClsLikeDefn: fun ClsLikeDefn { class: class ClsLikeDefn }, @@ -31,15 +29,7 @@ //│ Define: fun Define { class: class Define }, //│ End: fun End { class: class End } //│ } -//│ Shape = class Shape { -//│ ShapeSet: fun ShapeSet { class: class ShapeSet }, -//│ Shape: class Shape, -//│ Dyn: fun Dyn { class: class Dyn }, -//│ Lit: fun Lit { class: class Lit }, -//│ Arr: fun Arr { class: class Arr }, -//│ Class: fun Class { class: class Class }, -//│ Bot: fun Bot { class: class Bot } -//│ } +//│ ShapeSet = class ShapeSet { ShapeSet: fun ShapeSet { class: class ShapeSet } } Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.ValueLit(1), false))) //│ > FunDefn(Symbol("f"), [Symbol("x")], Return(Lit(1), false)) From c90118c54ac819133d4ae44016714730c2d1ae0f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 16:53:49 +0800 Subject: [PATCH 145/654] move optionNme inside stageCode scope this avoids renaming Option in test files that import Option separately, see ImportMLS.mls, Imports.mls, OpenWildcard.mls --- hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 6c83efc5f5..f2c62e7b5d 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -33,7 +33,6 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val runtimeNme = baseScp.allocateName(Elaborator.State.runtimeSymbol) val termNme = baseScp.allocateName(Elaborator.State.termSymbol) val blockNme = baseScp.allocateName(Elaborator.State.blockSymbol) - val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) val shapeSetNme = baseScp.allocateName(Elaborator.State.shapeSetSymbol) val definitionMetadataNme = baseScp.allocateName(Elaborator.State.definitionMetadataSymbol) val prettyPrintNme = baseScp.allocateName(Elaborator.State.prettyPrintSymbol) @@ -61,6 +60,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: h.execute(s"const $prettyPrintNme = Symbol.for(\"mlscript.prettyPrint\");") if importQQ.isSet then importRuntimeModule(termNme, termFile) if stageCode.isSet then + val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) importRuntimeModule(blockNme, blockFile) importRuntimeModule(optionNme, optionFile) importRuntimeModule(shapeSetNme, shapeSetFile) From aae0086c576f3af053909ef64b357de11d27bb0c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 17:30:03 +0800 Subject: [PATCH 146/654] Revert "move optionNme inside stageCode scope" This reverts commit c90118c54ac819133d4ae44016714730c2d1ae0f. this leads to Option not being available, updating the diff tests affected by the renaming --- hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls | 4 ++-- .../shared/src/test/mlscript/codegen/OpenWildcard.mls | 10 +++++----- hkmc2/shared/src/test/mlscript/lifter/Imports.mls | 2 +- .../src/test/scala/hkmc2/JSBackendDiffMaker.scala | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls b/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls index 07b13f5dfb..9b3f007882 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls @@ -20,7 +20,7 @@ open Option :sjs None isDefined() //│ JS (unsanitized): -//│ Option.isDefined(Option.None) +//│ Option1.isDefined(Option1.None) //│ = false case Some(x) then x @@ -39,7 +39,7 @@ Some(1) :sjs (new Some(1)) isDefined() //│ JS (unsanitized): -//│ let tmp3; tmp3 = globalThis.Object.freeze(new Option.Some.class(1)); Option.isDefined(tmp3) +//│ let tmp3; tmp3 = globalThis.Object.freeze(new Option1.Some.class(1)); Option1.isDefined(tmp3) //│ = true new Some(1) isDefined() diff --git a/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls b/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls index 59ec70080c..adcac476c6 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls @@ -15,7 +15,7 @@ open Option :sjs None isDefined() //│ JS (unsanitized): -//│ Option.isDefined(Option.None) +//│ Option1.isDefined(Option1.None) //│ = false Some(1) isDefined() @@ -52,13 +52,13 @@ none() :sjs val Option = "Oops" //│ JS (unsanitized): -//│ let Option1; Option1 = "Oops"; +//│ let Option2; Option2 = "Oops"; //│ Option = "Oops" :sjs Some(123) //│ JS (unsanitized): -//│ Option.Some(123) +//│ Option1.Some(123) //│ = Some(123) module Option with @@ -72,13 +72,13 @@ open Option :sjs Some //│ JS (unsanitized): -//│ Option.Some +//│ Option1.Some //│ = fun Some { class: class Some } :sjs None //│ JS (unsanitized): -//│ Option3.None +//│ Option4.None //│ = 123 diff --git a/hkmc2/shared/src/test/mlscript/lifter/Imports.mls b/hkmc2/shared/src/test/mlscript/lifter/Imports.mls index d5bc28e321..30f7c73d70 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/Imports.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/Imports.mls @@ -16,7 +16,7 @@ module A with //│ runtime.Unit; //│ } //│ static f(x) { -//│ if (x instanceof Option.Some.class) { +//│ if (x instanceof Option1.Some.class) { //│ return true //│ } else { //│ return false diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index f2c62e7b5d..6c83efc5f5 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -33,6 +33,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val runtimeNme = baseScp.allocateName(Elaborator.State.runtimeSymbol) val termNme = baseScp.allocateName(Elaborator.State.termSymbol) val blockNme = baseScp.allocateName(Elaborator.State.blockSymbol) + val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) val shapeSetNme = baseScp.allocateName(Elaborator.State.shapeSetSymbol) val definitionMetadataNme = baseScp.allocateName(Elaborator.State.definitionMetadataSymbol) val prettyPrintNme = baseScp.allocateName(Elaborator.State.prettyPrintSymbol) @@ -60,7 +61,6 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: h.execute(s"const $prettyPrintNme = Symbol.for(\"mlscript.prettyPrint\");") if importQQ.isSet then importRuntimeModule(termNme, termFile) if stageCode.isSet then - val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) importRuntimeModule(blockNme, blockFile) importRuntimeModule(optionNme, optionFile) importRuntimeModule(shapeSetNme, shapeSetFile) From 986ace7a5d038c3dfeb1aabf837ee2dd9f8eb7d9 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 17:46:28 +0800 Subject: [PATCH 147/654] use more meaningful names in Functions.mls --- .../src/test/mlscript/staging/Functions.mls | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index a21b91a7dd..32170cc0b5 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -1,23 +1,22 @@ :js :staging -// :ssjs class A() staged module B with - class C(a, b) - class D - fun f() = 1 - fun g() = + class Class(a, b) + class NoArg + fun lit() = 1 + fun assign() = let x = 42 let y = x y - fun h() = + fun _var() = val x = 1 x - fun i() = [1, 2] - fun j() = new A() - fun k() = [1].(0) - fun l() = + fun tup() = [1, 2] + fun inst() = new A() + fun dynsel() = [1].(0) + fun match() = if 9 is 8 then 1 9 then 2 @@ -25,8 +24,8 @@ staged module B with Bool then 4 // TODO: Case.Tup else 0 -//│ > Define(ClsLikeDefn(Symbol("D"), ([]), TODO), End) -//│ > Define(ClsLikeDefn(Symbol("C"), ([Symbol("a"), Symbol("b")]), TODO), End) +//│ > Define(ClsLikeDefn(Symbol("NoArg"), ([]), TODO), End) +//│ > Define(ClsLikeDefn(Symbol("Class"), ([Symbol("a"), Symbol("b")]), TODO), End) //│ > Lit(1) //│ > Return(Lit(1), false) //│ > Lit(42) @@ -60,8 +59,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.59: staged module B with +//│ ║ l.58: staged module B with //│ ║ ^^^^^^ -//│ ║ l.60: fun f() = 1 +//│ ║ l.59: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From f0456e13383acda8851698c8d868e321e2265acd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 23:03:03 +0800 Subject: [PATCH 148/654] refactor collectApply --- .../scala/hkmc2/codegen/Instrumentation.scala | 55 +++++++++---------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 9fbda47efd..1ae12102df 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -5,6 +5,7 @@ import utils.* import hkmc2.Message.MessageContext import scala.collection.mutable.HashMap +import scala.util.chaining._ import mlscript.utils.*, shorthands.* @@ -44,27 +45,18 @@ class InstrumentationImpl(using State): case _ => ??? } - // TODO: use BlockTransformer.applyListOf? - extension [A](ls: Ls[(A => Block) => Block]) - def collectApply(f: Ls[A] => Block): Block = - // defer applying k while prepending new paths to the list - ls.foldRight((_: Ls[A] => Block)(Nil))((headCont, tailCont) => + extension [A, B](ls: Ls[(A => B) => B]) + def collectApply(f: Ls[A] => B): B = + // defer applying k while prepending new elements to the list + ls.foldRight((_: Ls[A] => B)(Nil))((headCont, tailCont) => k => headCont: head => tailCont: tail => k(head :: tail) )(f) - // possible to wrangle to the form above, but unwieldy to do so in practice - extension [A, B](ls: Ls[B => ((A, B) => Block) => Block]) - def collectApply(b: B)(f: (Ls[A], B) => Block): Block = - ls.foldRight((b: B) => (f: (Ls[A], B) => Block) => f(Nil, b))((headCont, tailCont) => - b => - k => - headCont(b): (head, b) => - tailCont(b): (tail, b) => - k(head :: tail, b) - )(b)(f) + extension [A, B, C](f: A => B => C) + def flip: B => A => C = b => f(_)(b) // helpers corresponding to constructors @@ -296,21 +288,24 @@ class InstrumentationImpl(using State): def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block])(using Context )(k: (StagedPath, Context) => Block): Block = - arms.map((cse, block) => ruleBranch(x, p, cse, block)(using _)).collectApply(summon): (arms, ctx) => - fnFlat(arms.map(_.shapes)): sp => - tuple(arms.map(_.code)): arms => - blockCtor("End", Ls()): e => - // unable to use transformOption here because ctx is changed here - dflt match - case S(dflt) => - ruleWildCard(x, p, dflt): (dflt, ctx) => - optionSome(dflt.code): dflt => - blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath.mk(sp, m)(k(_, ctx)) - case N => - optionNone(): none => - blockCtor("Match", Ls(x.code, arms, none, e)): m => - StagedPath.mk(sp, m)(k(_, ctx)) + arms.map((cse, block) => (f: StagedPath => Context => Block) => (ruleBranch(x, p, cse, block)(using _)).flip(f(_)(_))) + .collectApply + .pipe(_.flip(summon)): arms => + ctx => + fnFlat(arms.map(_.shapes)): sp => + tuple(arms.map(_.code)): arms => + blockCtor("End", Ls()): e => + // unable to use transformOption here because ctx is changed here + dflt match + case S(dflt) => + ruleWildCard(x, p, dflt): (dflt, ctx) => + optionSome(dflt.code): dflt => + blockCtor("Match", Ls(x.code, arms, dflt, e)): m => + StagedPath.mk(sp, m)(k(_, ctx)) + case N => + optionNone(): none => + blockCtor("Match", Ls(x.code, arms, none, e)): m => + StagedPath.mk(sp, m)(k(_, ctx)) def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformCase(cse): cse => From d5104524379be4da3e41e698bc9cf7a65b0119c7 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 23:03:38 +0800 Subject: [PATCH 149/654] formatting --- .../scala/hkmc2/codegen/Instrumentation.scala | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 1ae12102df..f1e64ee5fa 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -188,11 +188,10 @@ class InstrumentationImpl(using State): StagedPath.mk(sp, cde, "sel")(k) def ruleDynSel(d: DynSelect)(using Context)(k: StagedPath => Block): Block = - val DynSelect(qual, fld, arrayIdx) = d - transformPath(qual): x => - transformPath(fld): y => + transformPath(d.qual): x => + transformPath(d.fld): y => fnSel(x.shapes, y.shapes): sp => - blockCtor("DynSelect", Ls(x.code, y.code, toValue(arrayIdx))): cde => + blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => StagedPath.mk(sp, cde, "dynsel")(k) def ruleInst(i: Instantiate)(using Context)(k: StagedPath => Block): Block = @@ -200,8 +199,6 @@ class InstrumentationImpl(using State): assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => tuple(xs.map(_.shapes)): shapes => - // reuse instrumentation logic, shape of cls is discarded - // possible to skip this? this triggers unnecessary "out of context" Dyn shape thing val sym = cls match case Select(Value.Ref(l), _) => l case _ => ??? @@ -209,6 +206,8 @@ class InstrumentationImpl(using State): // TODO: add back class names val fieldName = new TempSymbol(N, "TODO") shapeClass(sym, xs.map(x => (fieldName, x.shapes))): sp => + // reuse instrumentation logic, shape of cls is discarded + // possible to skip this? this uses ruleVar, which is not in formalization transformPath(cls): cls => tuple(xs.map(_.code)): codes => blockCtor("Instantiate", Ls(cls.code, codes)): cde => @@ -270,8 +269,7 @@ class InstrumentationImpl(using State): StagedPath.mk(sp, cde, "end")(k) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = - transformBlock(b): x => - k(x.code) + transformBlock(b)(k apply _.code) def ruleCls(cls: ClsLikeDefn, rest: Block)(using Context)(k: Path => Block): Block = (Define(cls, _)): @@ -285,9 +283,7 @@ class InstrumentationImpl(using State): blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) - def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block])(using - Context - )(k: (StagedPath, Context) => Block): Block = + def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block])(using Context)(k: (StagedPath, Context) => Block): Block = arms.map((cse, block) => (f: StagedPath => Context => Block) => (ruleBranch(x, p, cse, block)(using _)).flip(f(_)(_))) .collectApply .pipe(_.flip(summon)): arms => @@ -390,16 +386,16 @@ class InstrumentationImpl(using State): // NOTE: this debug printing only works for top-level modules, nested modules don't work (f.copy(sym = genSym, body = transformBlock(f.body)(_.end)), debug) - def transformDefine(d: Define)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def transformDefine(d: Define)(using Context)(k: (StagedPath, Context) => Block): Block = d.defn match case f: FunDefn => ??? case v: ValDefn => - val ValDefn(t, x, r) = v + val ValDefn(_, x, r) = v ruleLet(x, Assign(x, r, d.rest))(k) case c: ClsLikeDefn => ruleCls(c, d.rest): p => ruleEnd(): b => - fnPrintCode(p)(k(b, ctx)) + fnPrintCode(p)(k(b, summon)) def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = transformBlock(b)((p, _) => k(p)) @@ -416,6 +412,7 @@ class InstrumentationImpl(using State): // temporary measure to accept returning an array // use BlockTransformer here? case Begin(b1, b2) => transformBlock(concat(b1, b2))(k) + case _ => ??? // not supported // TODO: rename as InstrumentationTransformer? class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): From 0b2b7ea631dbf628d231162bc034b169ebd4b3be Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 23 Nov 2025 23:04:00 +0800 Subject: [PATCH 150/654] update comments and debug info --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f1e64ee5fa..30bcab2ddc 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -18,7 +18,7 @@ import syntax.{Literal, Tree} // but it doesn't accept the current context, so applications seem limited // it should be possible to cache some common constructions (End, Option) into the context -// this avoids having to rebuild the same structure everytime +// this avoids having to rebuild the same shapes everytime they are needed class InstrumentationImpl(using State): type ArgWrappable = Path | Symbol | ShapeSet @@ -297,11 +297,11 @@ class InstrumentationImpl(using State): ruleWildCard(x, p, dflt): (dflt, ctx) => optionSome(dflt.code): dflt => blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath.mk(sp, m)(k(_, ctx)) + StagedPath.mk(sp, m, "branches")(k(_, ctx)) case N => optionNone(): none => blockCtor("Match", Ls(x.code, arms, none, e)): m => - StagedPath.mk(sp, m)(k(_, ctx)) + StagedPath.mk(sp, m, "branches")(k(_, ctx)) def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformCase(cse): cse => @@ -310,6 +310,7 @@ class InstrumentationImpl(using State): call(x0.shapes.p.selSN("isEmpty"), Ls()): scrut => ruleEnd(): e => tuple(Ls(cse, e.code)): armStaged => + // returns Case -> Block, instead of End as in formalization StagedPath.mk(e.shapes, armStaged): badArm => val arm = Case.Lit(Tree.BoolLit(true)) -> k(badArm, ctx) (Match(scrut, Ls(arm), N, _)): @@ -317,9 +318,10 @@ class InstrumentationImpl(using State): transformBlock(b): (y1, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y1.code)): cde => - StagedPath.mk(y1.shapes, cde)(k(_, ctx.clone() -= p)) + StagedPath.mk(y1.shapes, cde, "branch")(k(_, ctx.clone() -= p)) - // this partially performs rules from filter to account for difference in Block.Case and Match pattern in the formalization + // not in formalization + // this partially applies rules from filter to account for difference in Block.Case and Match pattern in the formalization // to avoid defining the `_` pattern in Block.Case, we use the fact that filter(s, _) = s def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = // when pattern = _, x0 = x From b6c86e15f5a98f6b5bd4bd6291a41194a85f189a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 09:13:57 +0800 Subject: [PATCH 151/654] remove redundant import --- hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 2 -- 1 file changed, 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 1dd5a64505..6947d617ad 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -9,8 +9,6 @@ import sourcecode.Line import mlscript.utils.*, shorthands.* import utils.* -import hkmc2.codegen.Instrumentation - import hkmc2.Message.MessageContext import codegen.Instrumentation From 869c519741674d8afe623e49c637489c2fa69f76 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 09:21:38 +0800 Subject: [PATCH 152/654] match pretty printing syntax for DynSelect with formalization --- hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index 3bdcc636ce..ac1051ffe1 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -101,9 +101,7 @@ object Printer: val docQual = mkDocument(qual) doc"${docQual}.${name.name}" case DynSelect(qual, fld, ai) => - if ai - then doc"${mkDocument(qual)}.at(${mkDocument(fld)})" - else doc"${mkDocument(qual)}[${mkDocument(fld)}]" + doc"${mkDocument(qual)}.(${mkDocument(fld)})" case x: Value => mkDocument(x) def mkDocument(result: Result)(using Raise, Scope): Document = result match From cff8896a973590ddb5ccac9213063146a62e76b5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 10:06:23 +0800 Subject: [PATCH 153/654] fix mkClass --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 2 +- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index a5d257bf31..2d85496c8c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -63,7 +63,7 @@ fun mkArr(shapes: Array[ShapeSet]) = fun mkClass(sym: Symbol, params: Array[[Symbol, ShapeSet]]) = params - .map(p => p.1.underlying.values().map(s => [[p.0, s]]).toArray()) + .map(p => p.1.underlying.values().map(s => [p.0, s]).toArray()) |> prod .map(Class(sym, _)) |> liftMany diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 32170cc0b5..12d4d17c1e 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -1,7 +1,7 @@ :js :staging -class A() +class A(a) staged module B with class Class(a, b) class NoArg @@ -14,7 +14,7 @@ staged module B with val x = 1 x fun tup() = [1, 2] - fun inst() = new A() + fun inst() = new A(1) fun dynsel() = [1].(0) fun match() = if 9 is @@ -34,8 +34,8 @@ staged module B with //│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) //│ > Arr(Lit(1), Lit(2)) //│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Class(A, []) -//│ > Return(Instantiate(Select(Ref(Symbol("A")), Symbol("class")), []), false) +//│ > Class(A, [TODO:Lit(1)]) +//│ > Return(Instantiate(Select(Ref(Symbol("A")), Symbol("class")), [Lit(1)]), false) //│ > Lit(1) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) //│ > Dyn From 885337187cd6408926431f2437a3b54d20d4a7a2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 10:27:03 +0800 Subject: [PATCH 154/654] formatting --- .../scala/hkmc2/codegen/Instrumentation.scala | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 30bcab2ddc..26b9ce8d38 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -58,12 +58,12 @@ class InstrumentationImpl(using State): extension [A, B, C](f: A => B => C) def flip: B => A => C = b => f(_)(b) - // helpers corresponding to constructors + // helpers for constructing Block def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Assign = // TODO: skip assignment if res: Path? - val tmp = new TempSymbol(N, symName) - Assign(tmp, res, k(tmp.asPath)) + val sym = new TempSymbol(N, symName) + Assign(sym, res, k(sym.asPath)) def tuple(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = assign(Tuple(false, elems.map(asArg)), symName)(k) @@ -75,7 +75,7 @@ class InstrumentationImpl(using State): def call(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = assign(Call(fun, args.map(asArg))(isMlsFun, false), symName)(k) - // helper for staging the constructors + // helpers for instrumenting Block def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) @@ -113,8 +113,6 @@ class InstrumentationImpl(using State): blockCall("printCode", Ls(p))(_ => k) def fnPrintShapeSet(p: ShapeSet)(rest: Block): Block = shapeSetCall("printShapeSet", Ls(p.p))(_ => rest) - def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = - blockCall("concat", Ls(p1, p2))(k) def shapeBot()(k: ShapeSet => Block): Block = shapeSetCall("mkBot", Ls())(s => k(ShapeSet(s))) @@ -134,6 +132,8 @@ class InstrumentationImpl(using State): tuple(ls): params => shapeSetCall("mkClass", Ls(cls, params))(s => k(ShapeSet(s))) + def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = + blockCall("concat", Ls(p1, p2))(k) def fnMrg(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("mrg", Ls(s1, s2))(s => k(ShapeSet(s))) def fnSel(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = @@ -349,6 +349,7 @@ class InstrumentationImpl(using State): case p: Path => transformPath(p)(k) case t: Tuple => ruleTup(t)(k) case i: Instantiate => ruleInst(i)(k) + case c: Call => ??? case _ => ??? // not supported def transformArg(a: Arg)(using Context)(k: StagedPath => Block): Block = @@ -399,11 +400,11 @@ class InstrumentationImpl(using State): ruleEnd(): b => fnPrintCode(p)(k(b, summon)) + // ruleBlk? def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = transformBlock(b)((p, _) => k(p)) def transformBlock(b: Block)(using Context)(k: (StagedPath, Context) => Block): Block = - // ruleBlk? val k2 = k(_, summon) b match case r: Return => ruleReturn(r)(k) From a343c36a756adf6f1dd321dec612c8e4a1d46164 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 11:54:45 +0800 Subject: [PATCH 155/654] fix syntax errors the staged modifier is lost somewhere during lowering --- .../scala/hkmc2/codegen/Instrumentation.scala | 8 +++--- .../src/test/mlscript/staging/Functions.mls | 26 ++----------------- .../src/test/mlscript/staging/Syntax.mls | 4 ++- 3 files changed, 9 insertions(+), 29 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 26b9ce8d38..0b2005604a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -73,7 +73,7 @@ class InstrumentationImpl(using State): // isMlsFun is probably always true? def call(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = - assign(Call(fun, args.map(asArg))(isMlsFun, false), symName)(k) + assign(Call(fun, args.map(asArg))(isMlsFun, false, false), symName)(k) // helpers for instrumenting Block @@ -200,7 +200,7 @@ class InstrumentationImpl(using State): transformArgs(args): xs => tuple(xs.map(_.shapes)): shapes => val sym = cls match - case Select(Value.Ref(l), _) => l + case Select(Value.Ref(l, _), _) => l case _ => ??? transformSymbol(sym): sym => // TODO: add back class names @@ -387,7 +387,7 @@ class InstrumentationImpl(using State): fnPrintCode(p.code)(End()) // NOTE: this debug printing only works for top-level modules, nested modules don't work - (f.copy(sym = genSym, body = transformBlock(f.body)(_.end)), debug) + (f.copy(sym = genSym, body = transformBlock(f.body)(_.end))(false), debug) def transformDefine(d: Define)(using Context)(k: (StagedPath, Context) => Block): Block = d.defn match @@ -425,7 +425,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case d @ Define(defn, rest) => defn match // find modules with staged annotation - case c: ClsLikeDefn if c.sym.defn.exists(_.hasStagedModifier.isDefined) && c.companion.isDefined => + case c: ClsLikeDefn if c.isym.defn.exists(_.hasStagedModifier.isDefined) && c.companion.isDefined => val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 12d4d17c1e..3eae34c32c 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -24,22 +24,6 @@ staged module B with Bool then 4 // TODO: Case.Tup else 0 -//│ > Define(ClsLikeDefn(Symbol("NoArg"), ([]), TODO), End) -//│ > Define(ClsLikeDefn(Symbol("Class"), ([Symbol("a"), Symbol("b")]), TODO), End) -//│ > Lit(1) -//│ > Return(Lit(1), false) -//│ > Lit(42) -//│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) -//│ > Lit(1) -//│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) -//│ > Arr(Lit(1), Lit(2)) -//│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Class(A, [TODO:Lit(1)]) -//│ > Return(Instantiate(Select(Ref(Symbol("A")), Symbol("class")), [Lit(1)]), false) -//│ > Lit(1) -//│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) -//│ > Dyn -//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(8) -> End, Lit(9) -> Return(Lit(2), false), Cls(Symbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false), Cls(Symbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> End], Return(Lit(0), false), End)) // collision with class name? :js @@ -48,7 +32,7 @@ staged module B with class A() staged module A with fun f() = 1 -//│ ═══[RUNTIME ERROR] TypeError: A3.f_gen is not a function +//│ FAILURE: Unexpected lack of error to fix // unable to reference the class when calling the instrumented function for debugging :js @@ -57,10 +41,4 @@ staged module A with module A with staged module B with fun f() = 1 -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.58: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.59: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ -//│ ═══[RUNTIME ERROR] ReferenceError: B is not defined +//│ FAILURE: Unexpected lack of error to fix diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index 2f5c8aab11..fb996b71f6 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -1,5 +1,7 @@ :pt +:js +// :lot staged module A //│ Parsed tree: //│ Modified: @@ -21,4 +23,4 @@ staged fun f() = 0 :staging staged module A //│ Pretty Lowered: -//│ define staged class A in set block$res = undefined in end +//│ define class A in set block$res1 = undefined in end From 3c4faec660df12baae4a93f8abdb958c1034007e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 12:22:44 +0800 Subject: [PATCH 156/654] patch in instrumentation temporarily stage all modules until i can find where the staged modifier went --- .../scala/hkmc2/codegen/Instrumentation.scala | 10 +++++----- .../src/test/mlscript/staging/Functions.mls | 20 +++++++++++++++++-- .../src/test/mlscript/staging/Syntax.mls | 1 - 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 0b2005604a..452723575b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -199,10 +199,10 @@ class InstrumentationImpl(using State): assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => tuple(xs.map(_.shapes)): shapes => - val sym = cls match - case Select(Value.Ref(l, _), _) => l - case _ => ??? - transformSymbol(sym): sym => + // val sym = cls match + // case Select(Value.Ref(l, _), _) => l + // case _ => ??? + transformSymbol(TempSymbol(N, "TODO")): sym => // TODO: add back class names val fieldName = new TempSymbol(N, "TODO") shapeClass(sym, xs.map(x => (fieldName, x.shapes))): sp => @@ -425,7 +425,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case d @ Define(defn, rest) => defn match // find modules with staged annotation - case c: ClsLikeDefn if c.isym.defn.exists(_.hasStagedModifier.isDefined) && c.companion.isDefined => + case c: ClsLikeDefn if c.companion.isDefined => val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 3eae34c32c..8e4338e818 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -24,6 +24,22 @@ staged module B with Bool then 4 // TODO: Case.Tup else 0 +//│ > Define(ClsLikeDefn(Symbol("NoArg"), ([]), TODO), End) +//│ > Define(ClsLikeDefn(Symbol("Class"), ([Symbol("a"), Symbol("b")]), TODO), End) +//│ > Lit(1) +//│ > Return(Lit(1), false) +//│ > Lit(42) +//│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) +//│ > Dyn +//│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) +//│ > Arr(Lit(1), Lit(2)) +//│ > Return(Tuple([Lit(1), Lit(2)]), false) +//│ > Class(TODO, [TODO:Lit(1)]) +//│ > Return(Instantiate(Ref(Symbol("A")), [Lit(1)]), false) +//│ > Lit(1) +//│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) +//│ > Dyn +//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(8) -> End, Lit(9) -> Return(Lit(2), false), Cls(Symbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false), Cls(Symbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> End], Return(Lit(0), false), End)) // collision with class name? :js @@ -32,7 +48,7 @@ staged module B with class A() staged module A with fun f() = 1 -//│ FAILURE: Unexpected lack of error to fix +//│ ═══[RUNTIME ERROR] TypeError: A3.f_gen is not a function // unable to reference the class when calling the instrumented function for debugging :js @@ -41,4 +57,4 @@ staged module A with module A with staged module B with fun f() = 1 -//│ FAILURE: Unexpected lack of error to fix +//│ /!!!\ Uncaught error: scala.NotImplementedError: an implementation is missing diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index fb996b71f6..163193d6df 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -20,7 +20,6 @@ staged fun f() = 0 :js :slot -:staging staged module A //│ Pretty Lowered: //│ define class A in set block$res1 = undefined in end From b7c3698bd698c78f7110829af452ae506a6e0c67 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 12:27:07 +0800 Subject: [PATCH 157/654] unreserve Option in Elaborator --- .../src/main/scala/hkmc2/semantics/Elaborator.scala | 4 ++-- hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls | 4 ++-- .../shared/src/test/mlscript/codegen/OpenWildcard.mls | 10 +++++----- hkmc2/shared/src/test/mlscript/lifter/Imports.mls | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 84fcadb817..5357b8d01e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -237,8 +237,8 @@ object Elaborator: val prettyPrintSymbol = TempSymbol(N, "prettyPrint") val termSymbol = TempSymbol(N, "Term") val blockSymbol = TempSymbol(N, "Block") - val shapeSetSymbol = TempSymbol(N, "ShapeSet") - val optionSymbol = TempSymbol(N, "Option") + val shapeSetSymbol = TempSymbol(N, "shapeSet") + val optionSymbol = TempSymbol(N, "option") val wasmSymbol = TempSymbol(N, "wasm") val effectSigSymbol = ClassSymbol(DummyTypeDef(syntax.Cls), Ident("EffectSig")) val nonLocalRetHandlerTrm = diff --git a/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls b/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls index 9b3f007882..07b13f5dfb 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls @@ -20,7 +20,7 @@ open Option :sjs None isDefined() //│ JS (unsanitized): -//│ Option1.isDefined(Option1.None) +//│ Option.isDefined(Option.None) //│ = false case Some(x) then x @@ -39,7 +39,7 @@ Some(1) :sjs (new Some(1)) isDefined() //│ JS (unsanitized): -//│ let tmp3; tmp3 = globalThis.Object.freeze(new Option1.Some.class(1)); Option1.isDefined(tmp3) +//│ let tmp3; tmp3 = globalThis.Object.freeze(new Option.Some.class(1)); Option.isDefined(tmp3) //│ = true new Some(1) isDefined() diff --git a/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls b/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls index adcac476c6..59ec70080c 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls @@ -15,7 +15,7 @@ open Option :sjs None isDefined() //│ JS (unsanitized): -//│ Option1.isDefined(Option1.None) +//│ Option.isDefined(Option.None) //│ = false Some(1) isDefined() @@ -52,13 +52,13 @@ none() :sjs val Option = "Oops" //│ JS (unsanitized): -//│ let Option2; Option2 = "Oops"; +//│ let Option1; Option1 = "Oops"; //│ Option = "Oops" :sjs Some(123) //│ JS (unsanitized): -//│ Option1.Some(123) +//│ Option.Some(123) //│ = Some(123) module Option with @@ -72,13 +72,13 @@ open Option :sjs Some //│ JS (unsanitized): -//│ Option1.Some +//│ Option.Some //│ = fun Some { class: class Some } :sjs None //│ JS (unsanitized): -//│ Option4.None +//│ Option3.None //│ = 123 diff --git a/hkmc2/shared/src/test/mlscript/lifter/Imports.mls b/hkmc2/shared/src/test/mlscript/lifter/Imports.mls index 30f7c73d70..d5bc28e321 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/Imports.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/Imports.mls @@ -16,7 +16,7 @@ module A with //│ runtime.Unit; //│ } //│ static f(x) { -//│ if (x instanceof Option1.Some.class) { +//│ if (x instanceof Option.Some.class) { //│ return true //│ } else { //│ return false From c149a11f28d4ac6d54232b71447f90306da7cabb Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 14:44:55 +0800 Subject: [PATCH 158/654] remove argument names from class shape --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 14 ++++---------- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 12 +++++------- .../shared/src/test/mlscript-compile/ShapeSet.mls | 11 +++++------ .../shared/src/test/mlscript/staging/Functions.mls | 2 +- 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 452723575b..e22a4be303 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -123,14 +123,9 @@ class InstrumentationImpl(using State): def shapeArr(ps: Ls[ShapeSet])(k: ShapeSet => Block): Block = tuple(ps, "test"): tup => shapeSetCall("mkArr", Ls(tup))(s => k(ShapeSet(s))) - def shapeClass(cls: Path, params: Ls[(Symbol, ShapeSet)])(k: ShapeSet => Block): Block = - params.map((n, s) => - (k: Path => Block) => - transformSymbol(n): n => - tuple(Ls(n, s))(k) - ).collectApply: ls => - tuple(ls): params => - shapeSetCall("mkClass", Ls(cls, params))(s => k(ShapeSet(s))) + def shapeClass(cls: Path, params: Ls[ShapeSet])(k: ShapeSet => Block): Block = + tuple(params): params => + shapeSetCall("mkClass", Ls(cls, params))(s => k(ShapeSet(s))) def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = blockCall("concat", Ls(p1, p2))(k) @@ -204,8 +199,7 @@ class InstrumentationImpl(using State): // case _ => ??? transformSymbol(TempSymbol(N, "TODO")): sym => // TODO: add back class names - val fieldName = new TempSymbol(N, "TODO") - shapeClass(sym, xs.map(x => (fieldName, x.shapes))): sp => + shapeClass(sym, xs.map(_.shapes)): sp => // reuse instrumentation logic, shape of cls is discarded // possible to skip this? this uses ruleVar, which is not in formalization transformPath(cls): cls => diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index a82d5ff13b..b0654866fe 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -10,16 +10,14 @@ class Shape with constructor Dyn() Lit(val l: Literal) - Arr(val shapes: Array[Shape]) // is length parameter needed? - Class(val sym: Symbol, val params: Array[[Symbol, Shape]]) - Bot() // temp stub for ShapeSet + Arr(val shapes: Array[Shape]) + Class(val sym: Symbol, val params: Array[Shape]) fun show(s: Shape) = if s is Dyn then "Dyn" Lit(lit) then "Lit(" + Block.showLiteral(lit) + ")" Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" - Class(sym, params) then "Class(" + sym.name + ", [" + params.map(p => p.0.name + ":" + show(p.1)).join(", ") + "])" - Bot() then "Bot()" + Class(sym, params) then "Class(" + sym.name + ", [" + params.map(show).join(", ") + "])" fun isPrimitiveType(sym: Str) = if sym is @@ -60,7 +58,7 @@ fun mrg(s1: Array[Shape]) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is [Class(c, params), Lit(n)] and n is Str - then if params.find(_.0.name == n) + then if () // TODO: get parameter from context == () then [] is param then [param.1] [Dyn, Lit(n)] and n is Str @@ -86,7 +84,7 @@ open Block { Case } fun silh(p: Case): Shape = if p is Block.Lit(l) then Lit(l) - Block.Cls(sym, path) then Class(sym, Array(1).fill(["TODO", Dyn])) + Block.Cls(sym, path) then Class(sym, Array(1).fill(Dyn)) // TODO: find length of argument Block.Tup(n) then Arr(Array(n).fill(Dyn)) fun filter(s: Shape, p: Case): Array[Shape] = diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 2d85496c8c..a2012e80ea 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -33,9 +33,9 @@ fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [hash(s), s]))) // combining ShapeSet -fun union(s1: ShapeSet, s2: ShapeSet) = new Map([...s1.underlying, ...s2.underlying]) +fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(new Map([...s1.underlying, ...s2.underlying])) -fun flat(arr: Array[ShapeSet]) = new Map(arr.map(_.underlying).flat()) +fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.underlying.entries().toArray()).flat())) // Cartesian product: https://stackoverflow.com/a/43053803 fun prod(xs) = @@ -61,11 +61,10 @@ fun mkArr(shapes: Array[ShapeSet]) = .map(x => Arr(x)) |> liftMany -fun mkClass(sym: Symbol, params: Array[[Symbol, ShapeSet]]) = - params - .map(p => p.1.underlying.values().map(s => [p.0, s]).toArray()) +fun mkClass(sym: Symbol, params: Array[ShapeSet]) = + params.map((s, _, _) => s.underlying.values().toArray()) |> prod - .map(Class(sym, _)) + .map((s, _, _) => Class(sym, s)) |> liftMany // helper functions diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 8e4338e818..5313779c8b 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -34,7 +34,7 @@ staged module B with //│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) //│ > Arr(Lit(1), Lit(2)) //│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Class(TODO, [TODO:Lit(1)]) +//│ > Class(TODO, [Lit(1)]) //│ > Return(Instantiate(Ref(Symbol("A")), [Lit(1)]), false) //│ > Lit(1) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) From 1f5c8d7125c3735f3271e3551daac4bf75c0db53 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 20:12:00 +0800 Subject: [PATCH 159/654] move functions --- .../src/test/mlscript-compile/Block.mls | 16 ++++++++++++++++ .../src/test/mlscript-compile/Shape.mls | 19 ++++--------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d0d3e36a50..56e17e92da 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -17,6 +17,22 @@ type Ident = Symbol type Literal = null | undefined | Str | Int | Num | Bool +fun isPrimitiveType(sym: Str) = + if sym is + "Str" then true + "Int" then true + "Num" then true + "Bool" then true + else false + +fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = + if [sym.name, l] is + ["Str", l] and l is Str then true + ["Int", i] and i is Int then true + ["Num", n] and n is Num then true + ["Bool", b] and b is Bool then true + else false + type ParamList = Array[Symbol] // Classes defined in Block.scala diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index b0654866fe..12880b68fe 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,6 +1,8 @@ import "./Block.mls" type Literal = null | undefined | Str | Int | Num | Bool + +open Block { ClassSymbol, showSymbol, isPrimitiveType, isPrimitiveTypeOf } type Symbol = Block.Symbol type Shape = Shape.Shape @@ -19,21 +21,8 @@ fun show(s: Shape) = if s is Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" Class(sym, params) then "Class(" + sym.name + ", [" + params.map(show).join(", ") + "])" -fun isPrimitiveType(sym: Str) = - if sym is - "Str" then true - "Int" then true - "Num" then true - "Bool" then true - else false - -fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = - if [sym.name, l] is - ["Str", l] and l is Str then true - ["Int", i] and i is Int then true - ["Num", n] and n is Num then true - ["Bool", b] and b is Bool then true - else false + + fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = a.map((a, i, _) => mrg2(a, b.at(i))) From a6b01621796ade035314e29666e6f684bc2cd071 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 20:57:53 +0800 Subject: [PATCH 160/654] add ClassSymbol --- .../scala/hkmc2/codegen/Instrumentation.scala | 28 +++++++++--- .../src/test/mlscript-compile/Block.mls | 19 ++++++-- .../src/test/mlscript-compile/Shape.mls | 30 +++++++------ .../src/test/mlscript-compile/ShapeSet.mls | 4 +- .../src/test/mlscript/staging/Functions.mls | 43 +++++++++++-------- 5 files changed, 79 insertions(+), 45 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index e22a4be303..7a71e6ca68 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -143,7 +143,19 @@ class InstrumentationImpl(using State): // transformation helpers - def transformSymbol(sym: Symbol)(k: Path => Block) = blockCtor("Symbol", Ls(toValue(sym.nme)))(k) + def transformSymbol[S <: Symbol](sym: S)(k: Path => Block): Block = + sym match + case clsSym: ClassSymbol => + clsSym.defn.get.paramsOpt match + case S(ps) => + ps.params.map(p => transformSymbol(p.sym)).collectApply: params => + tuple(params): params => + optionSome(params): paramsOpt => + blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt))(k) + case N => + optionNone(): none => + blockCtor("ClassSymbol", Ls(toValue(sym.nme), none))(k) + case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), "sym")(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match @@ -159,7 +171,8 @@ class InstrumentationImpl(using State): // not in formalization def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = - blockCtor("Symbol", Ls(toValue(r.l.nme))): sym => + val Value.Ref(l, disamb) = r + transformSymbol(disamb.getOrElse(l)): sym => blockCtor("ValueRef", Ls(sym)): cde => // variable defined outside of scope, may be a reference to a class shapeDyn(): sp => @@ -194,11 +207,12 @@ class InstrumentationImpl(using State): assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => tuple(xs.map(_.shapes)): shapes => - // val sym = cls match - // case Select(Value.Ref(l, _), _) => l - // case _ => ??? - transformSymbol(TempSymbol(N, "TODO")): sym => - // TODO: add back class names + val sym = cls match + // TODO: if class is staged, we can just use Symbol without storing the arguments + case Value.Ref(l, S(disamb)) => transformSymbol(disamb) + case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) + case _ => transformSymbol(TempSymbol(N, "TODO")) + sym: sym => shapeClass(sym, xs.map(_.shapes)): sp => // reuse instrumentation logic, shape of cls is discarded // possible to skip this? this uses ruleVar, which is not in formalization diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 56e17e92da..a0756ec9d2 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -14,11 +14,13 @@ type Opt[A] = Option[A] class Symbol(val name: Str) type Ident = Symbol +// this is so that we're able to retrieve information about the class from the symbol +class ClassSymbol(val name: Str, val args: Opt[Array[Symbol]]) extends Symbol(name) type Literal = null | undefined | Str | Int | Num | Bool -fun isPrimitiveType(sym: Str) = - if sym is +fun isPrimitiveType(sym: Symbol) = + if sym.name is "Str" then true "Int" then true "Num" then true @@ -89,7 +91,16 @@ fun showLiteral(l: Literal) = null then "null" else l.toString() -fun showSymbol(s: Symbol) = "Symbol(" + "\"" + s.name + "\"" + ")" +fun showSymbol(s: Symbol) = + // console.log("printing " + s) + if s is + ClassSymbol(name, args) then + "ClassSymbol(" + "\"" + name + "\"" + + if args + is Some(args) then ":[" + args.map(showSymbol).join(", ") + "]" + is None then "" + + ")" + _ then "Symbol(" + "\"" + s.name + "\"" + ")" fun showIdent(i: Ident) = showSymbol(i) @@ -141,7 +152,7 @@ fun showDefn(d: Defn): Str = "ClsLikeDefn(" + showSymbol(sym) + ", " + if paramsOpt is Some(params) then "(" + showParamList(params) + ")" - None then "([])" + None then "()" + ", " + "TODO" + ")" diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 12880b68fe..9805553afc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,9 +1,10 @@ import "./Block.mls" +import "./Option.mls" type Literal = null | undefined | Str | Int | Num | Bool open Block { ClassSymbol, showSymbol, isPrimitiveType, isPrimitiveTypeOf } -type Symbol = Block.Symbol +open Option type Shape = Shape.Shape module Shape with... @@ -13,16 +14,14 @@ class Shape with Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape]) - Class(val sym: Symbol, val params: Array[Shape]) - -fun show(s: Shape) = if s is - Dyn then "Dyn" - Lit(lit) then "Lit(" + Block.showLiteral(lit) + ")" - Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" - Class(sym, params) then "Class(" + sym.name + ", [" + params.map(show).join(", ") + "])" - - + Class(val sym: ClassSymbol, val params: Array[Shape]) +fun show(s: Shape) = + if s is + Dyn then "Dyn" + Lit(lit) then "Lit(" + Block.showLiteral(lit) + ")" + Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" + Class(sym, params) then "Class(" + showSymbol(sym) + ", [" + params.map(show).join(", ") + "])" fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = a.map((a, i, _) => mrg2(a, b.at(i))) @@ -46,10 +45,11 @@ fun mrg(s1: Array[Shape]) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is - [Class(c, params), Lit(n)] and n is Str - then if () // TODO: get parameter from context + [Class(sym, params), Lit(n)] and n is Str + and sym.args is Some(args) + and args.find(_ == n) == () then [] - is param then [param.1] + is i then [params.(i)] [Dyn, Lit(n)] and n is Str then [Dyn()] [Arr(shapes), Lit(n)] and n is Int @@ -73,7 +73,9 @@ open Block { Case } fun silh(p: Case): Shape = if p is Block.Lit(l) then Lit(l) - Block.Cls(sym, path) then Class(sym, Array(1).fill(Dyn)) // TODO: find length of argument + Block.Cls(sym, path) then + val size = if sym.args is Some(i) then i else 0 + Class(sym, Array(size).fill(Dyn)) Block.Tup(n) then Arr(Array(n).fill(Dyn)) fun filter(s: Shape, p: Case): Array[Shape] = diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index a2012e80ea..1fef324ee2 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -3,7 +3,7 @@ import "./Block.mls" import "./Shape.mls" open Predef -open Block { Symbol } +open Block { ClassSymbol } open Shape { show } type ShapeSet = ShapeSet.ShapeSet @@ -61,7 +61,7 @@ fun mkArr(shapes: Array[ShapeSet]) = .map(x => Arr(x)) |> liftMany -fun mkClass(sym: Symbol, params: Array[ShapeSet]) = +fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = params.map((s, _, _) => s.underlying.values().toArray()) |> prod .map((s, _, _) => Class(sym, s)) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 5313779c8b..a60188442e 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -1,10 +1,7 @@ :js :staging -class A(a) -staged module B with - class Class(a, b) - class NoArg +staged module Expressions with fun lit() = 1 fun assign() = let x = 42 @@ -14,18 +11,15 @@ staged module B with val x = 1 x fun tup() = [1, 2] - fun inst() = new A(1) fun dynsel() = [1].(0) fun match() = if 9 is - 8 then 1 - 9 then 2 - Int then 3 - Bool then 4 - // TODO: Case.Tup - else 0 -//│ > Define(ClsLikeDefn(Symbol("NoArg"), ([]), TODO), End) -//│ > Define(ClsLikeDefn(Symbol("Class"), ([Symbol("a"), Symbol("b")]), TODO), End) + 8 then 1 + 9 then 2 + Int then 3 + Bool then 4 + // [1, 2] then 5 // TODO: Case.Tup, needs handling for Label, Break + else 0 //│ > Lit(1) //│ > Return(Lit(1), false) //│ > Lit(42) @@ -34,12 +28,25 @@ staged module B with //│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) //│ > Arr(Lit(1), Lit(2)) //│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Class(TODO, [Lit(1)]) -//│ > Return(Instantiate(Ref(Symbol("A")), [Lit(1)]), false) //│ > Lit(1) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) //│ > Dyn -//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(8) -> End, Lit(9) -> Return(Lit(2), false), Cls(Symbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false), Cls(Symbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> End], Return(Lit(0), false), End)) +//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(8) -> End, Lit(9) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false), Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> End], Return(Lit(0), false), End)) + +:js +:staging +class Outside(a) +staged module ClassInstrumentation with + class Class(a, b) + class NoArg + fun inst1() = new Outside(1) + fun inst2() = new NoArg +//│ > Define(ClsLikeDefn(Symbol("NoArg"), (), TODO), End) +//│ > Define(ClsLikeDefn(Symbol("Class"), ([Symbol("a"), Symbol("b")]), TODO), End) +//│ > Class(ClassSymbol("Outside":[Symbol("a")]), [Lit(1)]) +//│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) +//│ > Class(ClassSymbol("NoArg"), []) +//│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), Symbol("NoArg")), []), false) // collision with class name? :js @@ -48,7 +55,7 @@ staged module B with class A() staged module A with fun f() = 1 -//│ ═══[RUNTIME ERROR] TypeError: A3.f_gen is not a function +//│ ═══[RUNTIME ERROR] TypeError: A1.f_gen is not a function // unable to reference the class when calling the instrumented function for debugging :js @@ -57,4 +64,4 @@ staged module A with module A with staged module B with fun f() = 1 -//│ /!!!\ Uncaught error: scala.NotImplementedError: an implementation is missing +//│ /!!!\ Uncaught error: java.lang.AssertionError: assertion failed: nested module not supported From c9f3c6a7a45ec1f89334af4d4605ad558a5622de Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 21:06:27 +0800 Subject: [PATCH 161/654] formatting --- .../scala/hkmc2/codegen/Instrumentation.scala | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 7a71e6ca68..fc98b9a5de 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -103,7 +103,7 @@ class InstrumentationImpl(using State): def end: Block = Return(p, false) object StagedPath: - def mk(shapeSet: ShapeSet, code: Path, symName: Str = "tmp")(k: StagedPath => Block): Block = + def apply(shapeSet: ShapeSet, code: Path, symName: Str = "tmp")(k: StagedPath => Block): Block = tuple(Ls(shapeSet.p, code), symName)(p => k(StagedPath(p))) // linking functions defined in MLscipt @@ -167,7 +167,7 @@ class InstrumentationImpl(using State): def ruleLit(l: Value.Lit)(k: StagedPath => Block): Block = shapeLit(l): sp => blockCtor("ValueLit", Ls(l)): cde => - StagedPath.mk(sp, cde, "lit")(k) + StagedPath(sp, cde, "lit")(k) // not in formalization def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = @@ -176,7 +176,7 @@ class InstrumentationImpl(using State): blockCtor("ValueRef", Ls(sym)): cde => // variable defined outside of scope, may be a reference to a class shapeDyn(): sp => - StagedPath.mk(sp, cde, "var")(k) + StagedPath(sp, cde, "var")(k) def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") @@ -184,7 +184,7 @@ class InstrumentationImpl(using State): shapeArr(xs.map(_.shapes)): sp => tuple(xs.map(_.code)): codes => blockCtor("Tuple", Ls(codes)): cde => - StagedPath.mk(sp, cde, "tup")(k) + StagedPath(sp, cde, "tup")(k) def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s @@ -193,14 +193,14 @@ class InstrumentationImpl(using State): fnSel(x.shapes, n): sp => blockCtor("Symbol", Ls(toValue(name))): name => blockCtor("Select", Ls(x.code, name)): cde => - StagedPath.mk(sp, cde, "sel")(k) + StagedPath(sp, cde, "sel")(k) def ruleDynSel(d: DynSelect)(using Context)(k: StagedPath => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => fnSel(x.shapes, y.shapes): sp => blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => - StagedPath.mk(sp, cde, "dynsel")(k) + StagedPath(sp, cde, "dynsel")(k) def ruleInst(i: Instantiate)(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i @@ -219,12 +219,12 @@ class InstrumentationImpl(using State): transformPath(cls): cls => tuple(xs.map(_.code)): codes => blockCtor("Instantiate", Ls(cls.code, codes)): cde => - StagedPath.mk(sp, cde, "inst")(k) + StagedPath(sp, cde, "inst")(k) def ruleReturn(r: Return)(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code, toValue(false))): cde => - StagedPath.mk(x.shapes, cde, "return")(k(_, summon)) + StagedPath(x.shapes, cde, "return")(k(_, summon)) def ruleMatch(m: Match)(using Context)(k: (StagedPath, Context) => Block): Block = val Match(p, ks, dflt, rest) = m @@ -233,7 +233,7 @@ class InstrumentationImpl(using State): transformBlock(rest)(using ctx1): (z, ctx2) => fnMrg(stagedMatch.shapes, z.shapes): sp => fnConcat(stagedMatch.code, z.code): cde => - StagedPath.mk(sp, cde)(k(_, ctx2)) + StagedPath(sp, cde)(k(_, ctx2)) def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a @@ -245,49 +245,49 @@ class InstrumentationImpl(using State): ctx.get(x.asPath) match case S(x1) => fnUnion(y.shapes, x1.shapes): sp => - StagedPath.mk(sp, xStaged): x2 => + StagedPath(sp, xStaged): x2 => (Assign(x, x2.p, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath.mk(z.shapes, cde, "assign")(k(_, ctx)) + StagedPath(z.shapes, cde, "assign")(k(_, ctx)) case N => - StagedPath.mk(y.shapes, xStaged): x2 => + StagedPath(y.shapes, xStaged): x2 => // propagate shape information for future references to x (Assign(x, y.p, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath.mk(z.shapes, cde, "assign")(k(_, ctx)) + StagedPath(z.shapes, cde, "assign")(k(_, ctx)) def ruleLet(x: BlockMemberSymbol, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = shapeBot(): bot => transformSymbol(x): xSym => - StagedPath.mk(bot, xSym): y => + StagedPath(bot, xSym): y => (Assign(x, y.p, _)): given Context = ctx.clone() += x.asPath -> y transformBlock(b): (z, ctx) => blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => - StagedPath.mk(z.shapes, cde, "_let")(k(_, summon)) + StagedPath(z.shapes, cde, "_let")(k(_, summon)) def ruleEnd()(k: StagedPath => Block): Block = shapeBot(): sp => blockCtor("End", Ls()): cde => - StagedPath.mk(sp, cde, "end")(k) + StagedPath(sp, cde, "end")(k) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) def ruleCls(cls: ClsLikeDefn, rest: Block)(using Context)(k: Path => Block): Block = + assert(cls.companion.isEmpty, "nested module not supported") (Define(cls, _)): transformBlock(rest): p => transformSymbol(cls.sym): c => def stageParamList(ps: ParamList)(k: Path => Block) = ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) transformOption(cls.paramsOpt, stageParamList): paramsOpt => - assert(cls.companion.isEmpty, "nested module not supported") - optionNone(): none => + optionNone(): none => // TODO: companion object blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) @@ -305,28 +305,28 @@ class InstrumentationImpl(using State): ruleWildCard(x, p, dflt): (dflt, ctx) => optionSome(dflt.code): dflt => blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath.mk(sp, m, "branches")(k(_, ctx)) + StagedPath(sp, m, "branches")(k(_, ctx)) case N => optionNone(): none => blockCtor("Match", Ls(x.code, arms, none, e)): m => - StagedPath.mk(sp, m, "branches")(k(_, ctx)) + StagedPath(sp, m, "branches")(k(_, ctx)) def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformCase(cse): cse => fnFilter(x.shapes, cse): sp => - StagedPath.mk(sp, x.code): x0 => + StagedPath(sp, x.code): x0 => call(x0.shapes.p.selSN("isEmpty"), Ls()): scrut => ruleEnd(): e => tuple(Ls(cse, e.code)): armStaged => // returns Case -> Block, instead of End as in formalization - StagedPath.mk(e.shapes, armStaged): badArm => + StagedPath(e.shapes, armStaged): badArm => val arm = Case.Lit(Tree.BoolLit(true)) -> k(badArm, ctx) (Match(scrut, Ls(arm), N, _)): given Context = ctx.clone() += p -> x0 transformBlock(b): (y1, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y1.code)): cde => - StagedPath.mk(y1.shapes, cde, "branch")(k(_, ctx.clone() -= p)) + StagedPath(y1.shapes, cde, "branch")(k(_, ctx.clone() -= p)) // not in formalization // this partially applies rules from filter to account for difference in Block.Case and Match pattern in the formalization @@ -365,7 +365,7 @@ class InstrumentationImpl(using State): optionNone(): opt => transformPath(value): value => blockCtor("Arg", Ls(opt, value.code)): cde => - StagedPath.mk(value.shapes, cde)(k) + StagedPath(value.shapes, cde)(k) // provides list of shapes and list of codes to continuation def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = From db7395d51dbc3990c4d8696dcfc0b1393d94aede Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 23:24:41 +0800 Subject: [PATCH 162/654] clean up --- .../scala/hkmc2/codegen/Instrumentation.scala | 44 ++++++++----------- .../src/test/mlscript-compile/ShapeSet.mls | 4 +- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index fc98b9a5de..6b0d15f74c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -146,15 +146,8 @@ class InstrumentationImpl(using State): def transformSymbol[S <: Symbol](sym: S)(k: Path => Block): Block = sym match case clsSym: ClassSymbol => - clsSym.defn.get.paramsOpt match - case S(ps) => - ps.params.map(p => transformSymbol(p.sym)).collectApply: params => - tuple(params): params => - optionSome(params): paramsOpt => - blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt))(k) - case N => - optionNone(): none => - blockCtor("ClassSymbol", Ls(toValue(sym.nme), none))(k) + stageParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => + blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt))(k) case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), "sym")(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = @@ -284,10 +277,8 @@ class InstrumentationImpl(using State): (Define(cls, _)): transformBlock(rest): p => transformSymbol(cls.sym): c => - def stageParamList(ps: ParamList)(k: Path => Block) = - ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) - transformOption(cls.paramsOpt, stageParamList): paramsOpt => - optionNone(): none => // TODO: companion object + stageParamsOpt(cls.paramsOpt): paramsOpt => + optionNone(): none => // TODO: handle companion object blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) @@ -299,17 +290,14 @@ class InstrumentationImpl(using State): fnFlat(arms.map(_.shapes)): sp => tuple(arms.map(_.code)): arms => blockCtor("End", Ls()): e => - // unable to use transformOption here because ctx is changed here - dflt match - case S(dflt) => - ruleWildCard(x, p, dflt): (dflt, ctx) => - optionSome(dflt.code): dflt => - blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath(sp, m, "branches")(k(_, ctx)) - case N => - optionNone(): none => - blockCtor("Match", Ls(x.code, arms, none, e)): m => - StagedPath(sp, m, "branches")(k(_, ctx)) + // TODO: use transformOption here + def dfltStaged(k: (Path, Context) => Block) = dflt match + case S(dflt) => ruleWildCard(x, p, dflt): (dflt, ctx) => + optionSome(dflt.code)(k(_, ctx)) + case N => optionNone()(k(_, ctx)) + dfltStaged: (dflt, ctx) => + blockCtor("Match", Ls(x.code, arms, dflt, e)): m => + StagedPath(sp, m, "branches")(k(_, ctx)) def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformCase(cse): cse => @@ -371,6 +359,12 @@ class InstrumentationImpl(using State): def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = args.map(transformArg).collectApply(k) + def stageParamList(ps: ParamList)(k: Path => Block) = + ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) + + def stageParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = + transformOption(pOpt, stageParamList)(k) + def transformCase(cse: Case)(using Context)(k: Path => Block): Block = cse match case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) @@ -442,7 +436,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => End()) val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) val newModule = c.copy(sym = sym, companion = S(newCompanion)) - // debug is printed without calling the instrumented function + // debug is printed after definition val debugBlock = debugPrintCode.foldRight(rest)(impl.concat) Define(newModule, debugBlock) case _ => d diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 1fef324ee2..ed97d00cb1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -62,9 +62,9 @@ fun mkArr(shapes: Array[ShapeSet]) = |> liftMany fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = - params.map((s, _, _) => s.underlying.values().toArray()) + params.map(_.underlying.values().toArray()) |> prod - .map((s, _, _) => Class(sym, s)) + .map(Class(sym, _)) |> liftMany // helper functions From af3f436620fb25fb72267b0990f283a764626102 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 24 Nov 2025 23:32:27 +0800 Subject: [PATCH 163/654] Revert "move functions" This reverts commit 1f5c8d7125c3735f3271e3551daac4bf75c0db53. --- .../src/test/mlscript-compile/Block.mls | 16 -------------- .../src/test/mlscript-compile/Shape.mls | 21 ++++++++++++++++--- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index a0756ec9d2..ea54c8b3f6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -19,22 +19,6 @@ class ClassSymbol(val name: Str, val args: Opt[Array[Symbol]]) extends Symbol(na type Literal = null | undefined | Str | Int | Num | Bool -fun isPrimitiveType(sym: Symbol) = - if sym.name is - "Str" then true - "Int" then true - "Num" then true - "Bool" then true - else false - -fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = - if [sym.name, l] is - ["Str", l] and l is Str then true - ["Int", i] and i is Int then true - ["Num", n] and n is Num then true - ["Bool", b] and b is Bool then true - else false - type ParamList = Array[Symbol] // Classes defined in Block.scala diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 9805553afc..223940c38c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,12 +1,27 @@ import "./Block.mls" import "./Option.mls" -type Literal = null | undefined | Str | Int | Num | Bool - -open Block { ClassSymbol, showSymbol, isPrimitiveType, isPrimitiveTypeOf } +open Block { Literal, Symbol, ClassSymbol, showSymbol } open Option + type Shape = Shape.Shape +fun isPrimitiveType(sym: Symbol) = + if sym.name is + "Str" then true + "Int" then true + "Num" then true + "Bool" then true + else false + +fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = + if [sym.name, l] is + ["Str", l] and l is Str then true + ["Int", i] and i is Int then true + ["Num", n] and n is Num then true + ["Bool", b] and b is Bool then true + else false + module Shape with... class Shape with From 89f414ccc088878a6a35c81e465e440092d64c47 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 25 Nov 2025 18:03:47 +0800 Subject: [PATCH 164/654] update diff output --- .../src/test/mlscript/staging/Functions.mls | 95 ++++++++++++++++--- 1 file changed, 80 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index cd00dea636..adbdc935e1 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -1,24 +1,88 @@ :js :staging -// :ssjs +:ssjs class B() staged module A with - fun f() = 1 - fun g() = - let x = 42 - let y = x - y - fun h() = - val x = 1 - x + // fun f() = 1 + // fun g() = + // let x = 42 + // let y = x + // y + // fun h() = + // val x = 1 + // x fun i() = [1, 2] - fun j() = new B() -//│ > Return(Lit(1), false) -//│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) -//│ > Define(ValDefn(Symbol("x"), Lit(1)), Return(Ref(Symbol("x")), false)) -//│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Return(Instantiate(Select(Ref(Symbol("B")), Symbol("class")), []), false) + // fun j() = new B() +//│ JS: +//│ B1 = function B(...args) { +//│ return globalThis.Object.freeze(new B.class(...args)); +//│ }; +//│ globalThis.Object.freeze(class B { +//│ static { +//│ B1.class = this +//│ } +//│ constructor() {} +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "B", []]; +//│ }); +//│ globalThis.Object.freeze(class A { +//│ static { +//│ A1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static i(...args) { +//│ runtime.checkArgs("i", 0, true, args.length); +//│ return globalThis.Object.freeze([ +//│ 1, +//│ 2 +//│ ]) +//│ } +//│ static i_gen(...args) { +//│ runtime.checkArgs("i_gen", 0, true, args.length); +//│ let tmp2, tmp3, lit, tmp4, tmp5, lit1, tmp6, tmp7, tmp8, tmp9, tup, tmp10, ret; +//│ tmp2 = globalThis.Object.freeze(new Shape.Lit(1)); +//│ tmp3 = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ lit = globalThis.Object.freeze([ +//│ tmp2, +//│ tmp3 +//│ ]); +//│ tmp4 = globalThis.Object.freeze(new Shape.Lit(2)); +//│ tmp5 = globalThis.Object.freeze(new Block.ValueLit(2)); +//│ lit1 = globalThis.Object.freeze([ +//│ tmp4, +//│ tmp5 +//│ ]); +//│ tmp6 = globalThis.Object.freeze([ +//│ lit[0], +//│ lit1[0] +//│ ]); +//│ tmp7 = globalThis.Object.freeze(new Shape.Arr(tmp6)); +//│ tmp8 = globalThis.Object.freeze([ +//│ lit[1], +//│ lit1[1] +//│ ]); +//│ tmp9 = globalThis.Object.freeze(new Block.Tuple(tmp8)); +//│ tup = globalThis.Object.freeze([ +//│ tmp7, +//│ tmp9 +//│ ]); +//│ tmp10 = globalThis.Object.freeze(new Block.Return(tup[1])); +//│ ret = globalThis.Object.freeze([ +//│ tup[0], +//│ tmp10 +//│ ]); +//│ return ret +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "A"]; +//│ }); +//│ tmp = runtime.checkCall(A1.i_gen()); +//│ tmp1 = runtime.checkCall(Block.printCode(tmp[1])); +//│ block$res = undefined; +//│ > (,) // collision with class name? :js @@ -28,3 +92,4 @@ class A() staged module A with fun f() = 1 //│ ═══[RUNTIME ERROR] TypeError: A3.f_gen is not a function + From 6db62ea9eb7b0bc84dc75add1a2928e235becb99 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 14:16:17 +0800 Subject: [PATCH 165/654] pass staged annotation in lowering --- hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 7 +++++-- hkmc2/shared/src/test/mlscript/staging/Syntax.mls | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index d4922ec4c2..23c1d0301a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -211,14 +211,17 @@ class Lowering()(using Config, TL, Raise, State, Ctx): mod.classCompanion match case S(comp) => comp.defn.getOrElse(wat("Module companion without definition", mod.companion)) case N => - ClassDef.Plain(mod.owner, syntax.Cls, new ClassSymbol(Tree.DummyTypeDef(syntax.Cls), mod.sym.id), + val clsSymb = new ClassSymbol(Tree.DummyTypeDef(syntax.Cls), mod.sym.id) + val newDefn = ClassDef.Plain(mod.owner, syntax.Cls, clsSymb, mod.bsym, Nil, N, ObjBody(Blk(Nil, UnitVal())), S(mod.sym), - Nil, + mod.annotations, ) + clsSymb.defn = S(newDefn) + newDefn case _ => _defn reportAnnotations(defn, defn.extraAnnotations) val bufferableAnnots = defn.annotations.flatMap: diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index 163193d6df..e5c4b86216 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -22,4 +22,4 @@ staged fun f() = 0 :slot staged module A //│ Pretty Lowered: -//│ define class A in set block$res1 = undefined in end +//│ define staged class A in set block$res1 = undefined in end From c1f00e8b86832f9749c5022a72999825d35b521d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 26 Nov 2025 15:26:51 +0800 Subject: [PATCH 166/654] Revert "patch in instrumentation" This reverts commit 3c4faec660df12baae4a93f8abdb958c1034007e. --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 2 +- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 6b0d15f74c..b51c61ed37 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -427,7 +427,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case d @ Define(defn, rest) => defn match // find modules with staged annotation - case c: ClsLikeDefn if c.companion.isDefined => + case c: ClsLikeDefn if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index a60188442e..cd244ddb9f 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -48,7 +48,7 @@ staged module ClassInstrumentation with //│ > Class(ClassSymbol("NoArg"), []) //│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), Symbol("NoArg")), []), false) -// collision with class name? +// debug printing fails, collision with class name? :js :staging :fixme @@ -57,11 +57,17 @@ staged module A with fun f() = 1 //│ ═══[RUNTIME ERROR] TypeError: A1.f_gen is not a function -// unable to reference the class when calling the instrumented function for debugging +// debug printing fails, unable to reference the class when calling the instrumented function :js :staging :fixme module A with staged module B with fun f() = 1 -//│ /!!!\ Uncaught error: java.lang.AssertionError: assertion failed: nested module not supported +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.65: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.66: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From 143ce9bf38b550f9f139c6ad17d42510355eb47f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 25 Nov 2025 00:28:50 +0800 Subject: [PATCH 167/654] rename functions --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b51c61ed37..267b264025 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -146,7 +146,7 @@ class InstrumentationImpl(using State): def transformSymbol[S <: Symbol](sym: S)(k: Path => Block): Block = sym match case clsSym: ClassSymbol => - stageParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => + transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt))(k) case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), "sym")(k) @@ -277,7 +277,7 @@ class InstrumentationImpl(using State): (Define(cls, _)): transformBlock(rest): p => transformSymbol(cls.sym): c => - stageParamsOpt(cls.paramsOpt): paramsOpt => + transformParamsOpt(cls.paramsOpt): paramsOpt => optionNone(): none => // TODO: handle companion object blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) @@ -359,11 +359,11 @@ class InstrumentationImpl(using State): def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = args.map(transformArg).collectApply(k) - def stageParamList(ps: ParamList)(k: Path => Block) = + def transformParamList(ps: ParamList)(k: Path => Block) = ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) - def stageParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = - transformOption(pOpt, stageParamList)(k) + def transformParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = + transformOption(pOpt, transformParamList)(k) def transformCase(cse: Case)(using Context)(k: Path => Block): Block = cse match From fcbe8c91dc9e35930169a55da4aa9e744133336e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 25 Nov 2025 00:30:38 +0800 Subject: [PATCH 168/654] add debug information to rules --- .../scala/hkmc2/codegen/Instrumentation.scala | 97 +++++++++---------- 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 267b264025..556ff88f69 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -157,78 +157,77 @@ class InstrumentationImpl(using State): // instrumentation rules - def ruleLit(l: Value.Lit)(k: StagedPath => Block): Block = + def ruleLit(l: Value.Lit, symName: String = "lit")(k: StagedPath => Block): Block = shapeLit(l): sp => blockCtor("ValueLit", Ls(l)): cde => - StagedPath(sp, cde, "lit")(k) + StagedPath(sp, cde, symName)(k) // not in formalization - def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = + def ruleVar(r: Value.Ref, symName: String = "var")(k: StagedPath => Block): Block = val Value.Ref(l, disamb) = r transformSymbol(disamb.getOrElse(l)): sym => blockCtor("ValueRef", Ls(sym)): cde => // variable defined outside of scope, may be a reference to a class shapeDyn(): sp => - StagedPath(sp, cde, "var")(k) + StagedPath(sp, cde, symName)(k) - def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = + def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => shapeArr(xs.map(_.shapes)): sp => tuple(xs.map(_.code)): codes => blockCtor("Tuple", Ls(codes)): cde => - StagedPath(sp, cde, "tup")(k) + StagedPath(sp, cde, symName)(k) - def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = + def ruleSel(s: Select, symName: String = "sel")(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => shapeLit(toValue(name)): n => fnSel(x.shapes, n): sp => blockCtor("Symbol", Ls(toValue(name))): name => blockCtor("Select", Ls(x.code, name)): cde => - StagedPath(sp, cde, "sel")(k) + StagedPath(sp, cde, symName)(k) - def ruleDynSel(d: DynSelect)(using Context)(k: StagedPath => Block): Block = + def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: StagedPath => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => fnSel(x.shapes, y.shapes): sp => blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => - StagedPath(sp, cde, "dynsel")(k) + StagedPath(sp, cde, symName)(k) - def ruleInst(i: Instantiate)(using Context)(k: StagedPath => Block): Block = + def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => - tuple(xs.map(_.shapes)): shapes => - val sym = cls match - // TODO: if class is staged, we can just use Symbol without storing the arguments - case Value.Ref(l, S(disamb)) => transformSymbol(disamb) - case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) - case _ => transformSymbol(TempSymbol(N, "TODO")) - sym: sym => - shapeClass(sym, xs.map(_.shapes)): sp => - // reuse instrumentation logic, shape of cls is discarded - // possible to skip this? this uses ruleVar, which is not in formalization - transformPath(cls): cls => - tuple(xs.map(_.code)): codes => - blockCtor("Instantiate", Ls(cls.code, codes)): cde => - StagedPath(sp, cde, "inst")(k) - - def ruleReturn(r: Return)(using Context)(k: (StagedPath, Context) => Block): Block = + val sym = cls match + // TODO: if class is staged, we can just use Symbol without storing the arguments + case Value.Ref(l, S(disamb)) => transformSymbol(disamb) + case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) + case _ => transformSymbol(TempSymbol(N, "TODO")) + sym: sym => + shapeClass(sym, xs.map(_.shapes)): sp => + // reuse instrumentation logic, shape of cls is discarded + // possible to skip this? this uses ruleVar, which is not in formalization + transformPath(cls): cls => + tuple(xs.map(_.code)): codes => + blockCtor("Instantiate", Ls(cls.code, codes)): cde => + StagedPath(sp, cde, symName)(k) + + def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code, toValue(false))): cde => - StagedPath(x.shapes, cde, "return")(k(_, summon)) + StagedPath(x.shapes, cde, symName)(k(_, summon)) - def ruleMatch(m: Match)(using Context)(k: (StagedPath, Context) => Block): Block = + def ruleMatch(m: Match, symName: String = "match")(using Context)(k: (StagedPath, Context) => Block): Block = val Match(p, ks, dflt, rest) = m transformPath(p): x => ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => fnMrg(stagedMatch.shapes, z.shapes): sp => fnConcat(stagedMatch.code, z.code): cde => - StagedPath(sp, cde)(k(_, ctx2)) + StagedPath(sp, cde, symName)(k(_, ctx2)) - def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a transformResult(r): y => transformSymbol(x): xSym => @@ -243,7 +242,7 @@ class InstrumentationImpl(using State): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath(z.shapes, cde, "assign")(k(_, ctx)) + StagedPath(z.shapes, cde, symName)(k(_, ctx)) case N => StagedPath(y.shapes, xStaged): x2 => // propagate shape information for future references to x @@ -251,9 +250,9 @@ class InstrumentationImpl(using State): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath(z.shapes, cde, "assign")(k(_, ctx)) + StagedPath(z.shapes, cde, symName)(k(_, ctx)) - def ruleLet(x: BlockMemberSymbol, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = shapeBot(): bot => transformSymbol(x): xSym => StagedPath(bot, xSym): y => @@ -262,12 +261,12 @@ class InstrumentationImpl(using State): transformBlock(b): (z, ctx) => blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => - StagedPath(z.shapes, cde, "_let")(k(_, summon)) + StagedPath(z.shapes, cde, symName)(k(_, summon)) - def ruleEnd()(k: StagedPath => Block): Block = + def ruleEnd(symName: String = "inst")(k: StagedPath => Block): Block = shapeBot(): sp => blockCtor("End", Ls()): cde => - StagedPath(sp, cde, "end")(k) + StagedPath(sp, cde, symName)(k) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) @@ -282,7 +281,7 @@ class InstrumentationImpl(using State): blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) - def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block])(using Context)(k: (StagedPath, Context) => Block): Block = + def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (StagedPath, Context) => Block): Block = arms.map((cse, block) => (f: StagedPath => Context => Block) => (ruleBranch(x, p, cse, block)(using _)).flip(f(_)(_))) .collectApply .pipe(_.flip(summon)): arms => @@ -297,24 +296,24 @@ class InstrumentationImpl(using State): case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath(sp, m, "branches")(k(_, ctx)) + StagedPath(sp, m, symName)(k(_, ctx)) - def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformCase(cse): cse => fnFilter(x.shapes, cse): sp => - StagedPath(sp, x.code): x0 => - call(x0.shapes.p.selSN("isEmpty"), Ls()): scrut => - ruleEnd(): e => - tuple(Ls(cse, e.code)): armStaged => - // returns Case -> Block, instead of End as in formalization - StagedPath(e.shapes, armStaged): badArm => - val arm = Case.Lit(Tree.BoolLit(true)) -> k(badArm, ctx) - (Match(scrut, Ls(arm), N, _)): + call(sp.p.selSN("isEmpty"), Ls()): scrut => + ruleEnd(): e => + tuple(Ls(cse, e.code)): armStaged => + // returns Case -> Block, instead of End as in formalization + StagedPath(e.shapes, armStaged): badArm => + val arm = Case.Lit(Tree.BoolLit(true)) -> k(badArm, ctx) + (Match(scrut, Ls(arm), N, _)): + StagedPath(sp, x.code): x0 => given Context = ctx.clone() += p -> x0 transformBlock(b): (y1, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y1.code)): cde => - StagedPath(y1.shapes, cde, "branch")(k(_, ctx.clone() -= p)) + StagedPath(y1.shapes, cde, symName)(k(_, ctx.clone() -= p)) // not in formalization // this partially applies rules from filter to account for difference in Block.Case and Match pattern in the formalization From 87b545798b0c9ccab9e428957a5e4a492bdbb4bc Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 25 Nov 2025 10:25:58 +0800 Subject: [PATCH 169/654] move paramsOpt into ClassSymbol --- .../scala/hkmc2/codegen/Instrumentation.scala | 6 ++--- .../src/test/mlscript-compile/Block.mls | 27 ++++++++----------- .../src/test/mlscript/staging/Functions.mls | 6 ++--- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 556ff88f69..33c7827081 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -275,10 +275,10 @@ class InstrumentationImpl(using State): assert(cls.companion.isEmpty, "nested module not supported") (Define(cls, _)): transformBlock(rest): p => - transformSymbol(cls.sym): c => - transformParamsOpt(cls.paramsOpt): paramsOpt => + transformParamsOpt(cls.paramsOpt): paramsOpt => + transformSymbol(cls.isym): c => optionNone(): none => // TODO: handle companion object - blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => + blockCtor("ClsLikeDefn", Ls(c, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (StagedPath, Context) => Block): Block = diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index ea54c8b3f6..356f1da481 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -12,15 +12,15 @@ type Opt[A] = Option[A] // dependancies referenced in Block classes, referencing implementation in Term.mls -class Symbol(val name: Str) -type Ident = Symbol -// this is so that we're able to retrieve information about the class from the symbol -class ClassSymbol(val name: Str, val args: Opt[Array[Symbol]]) extends Symbol(name) - type Literal = null | undefined | Str | Int | Num | Bool type ParamList = Array[Symbol] +class Symbol(val name: Str) +type Ident = Symbol +// this is so that we're able to retrieve information about the class from the symbol +class ClassSymbol(val name: Str, val paramsOpt: Opt[ParamList]) extends Symbol(name) + // Classes defined in Block.scala class Arg(val spread: Opt[Bool], val value: Path) @@ -47,7 +47,7 @@ class Path extends Result with class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) - ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused + ClsLikeDefn(val sym: Symbol, val companion: Opt[ClsLikeBody]) // companion unused FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused @@ -78,10 +78,10 @@ fun showLiteral(l: Literal) = fun showSymbol(s: Symbol) = // console.log("printing " + s) if s is - ClassSymbol(name, args) then + ClassSymbol(name, paramsOpt) then "ClassSymbol(" + "\"" + name + "\"" + - if args - is Some(args) then ":[" + args.map(showSymbol).join(", ") + "]" + if paramsOpt + is Some(paramsOpt) then ":[" + paramsOpt.map(showSymbol).join(", ") + "]" is None then "" + ")" _ then "Symbol(" + "\"" + s.name + "\"" + ")" @@ -131,14 +131,9 @@ fun showDefn(d: Defn): Str = "FunDefn(" + showSymbol(sym) + ", " + showParamList(params) + ", " + showBlock(body) + ")" - ClsLikeDefn(sym, paramsOpt, companion) then + ClsLikeDefn(sym, companion) then // TODO: print rest of the arguments - "ClsLikeDefn(" + showSymbol(sym) + ", " + - if paramsOpt is - Some(params) then "(" + showParamList(params) + ")" - None then "()" - + ", " + - "TODO" + ")" + "ClsLikeDefn(" + showSymbol(sym) + ", " + "TODO" + ")" fun showOptBlock(ob: Opt[Block]) = if ob is Some(b) then showBlock(b) else "None" diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index cd244ddb9f..ed8152c15b 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -37,12 +37,12 @@ staged module Expressions with :staging class Outside(a) staged module ClassInstrumentation with - class Class(a, b) + class Inside(a, b) class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg -//│ > Define(ClsLikeDefn(Symbol("NoArg"), (), TODO), End) -//│ > Define(ClsLikeDefn(Symbol("Class"), ([Symbol("a"), Symbol("b")]), TODO), End) +//│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) +//│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) //│ > Class(ClassSymbol("Outside":[Symbol("a")]), [Lit(1)]) //│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) //│ > Class(ClassSymbol("NoArg"), []) From 67a099c9dfa95d067e2ce3f0a8ad40899d751928 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 26 Nov 2025 13:36:32 +0800 Subject: [PATCH 170/654] implement pruning of bad arms from Match statement --- .../scala/hkmc2/codegen/Instrumentation.scala | 39 +++++++++---------- .../src/test/mlscript-compile/Block.mls | 5 ++- .../src/test/mlscript-compile/ShapeSet.mls | 6 +++ .../src/test/mlscript/staging/Functions.mls | 2 +- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 33c7827081..ebb6cc5034 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -129,6 +129,8 @@ class InstrumentationImpl(using State): def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = blockCall("concat", Ls(p1, p2))(k) + def fnPruneBadArms(arms: Path)(k: Path => Block): Block = + shapeSetCall("pruneBadArms", Ls(arms))(k) def fnMrg(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("mrg", Ls(s1, s2))(s => k(ShapeSet(s))) def fnSel(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = @@ -137,9 +139,6 @@ class InstrumentationImpl(using State): shapeSetCall("filter", Ls(s1, s2))(s => k(ShapeSet(s))) def fnUnion(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("union", Ls(s1, s2))(s => k(ShapeSet(s))) - def fnFlat(s: Ls[ShapeSet])(k: ShapeSet => Block): Block = - tuple(s): tup => - shapeSetCall("flat", Ls(tup))(s => k(ShapeSet(s))) // transformation helpers @@ -286,8 +285,11 @@ class InstrumentationImpl(using State): .collectApply .pipe(_.flip(summon)): arms => ctx => - fnFlat(arms.map(_.shapes)): sp => - tuple(arms.map(_.code)): arms => + tuple(arms.map(_.p)): tup => + fnPruneBadArms(tup): res => + val result = StagedPath(res) + val sp = result.shapes + val arms = result.code blockCtor("End", Ls()): e => // TODO: use transformOption here def dfltStaged(k: (Path, Context) => Block) = dflt match @@ -303,23 +305,18 @@ class InstrumentationImpl(using State): fnFilter(x.shapes, cse): sp => call(sp.p.selSN("isEmpty"), Ls()): scrut => ruleEnd(): e => - tuple(Ls(cse, e.code)): armStaged => - // returns Case -> Block, instead of End as in formalization - StagedPath(e.shapes, armStaged): badArm => - val arm = Case.Lit(Tree.BoolLit(true)) -> k(badArm, ctx) - (Match(scrut, Ls(arm), N, _)): - StagedPath(sp, x.code): x0 => - given Context = ctx.clone() += p -> x0 - transformBlock(b): (y1, ctx) => - // TODO: use Arm type instead of Tup - tuple(Ls(cse, y1.code)): cde => - StagedPath(y1.shapes, cde, symName)(k(_, ctx.clone() -= p)) - - // not in formalization - // this partially applies rules from filter to account for difference in Block.Case and Match pattern in the formalization - // to avoid defining the `_` pattern in Block.Case, we use the fact that filter(s, _) = s + val arm = Case.Lit(Tree.BoolLit(true)) -> k(e, ctx) + (Match(scrut, Ls(arm), N, _)): + StagedPath(sp, x.code): x0 => + given Context = ctx.clone() += p -> x0 + transformBlock(b): (y1, ctx) => + // TODO: use Arm type instead of Tup + tuple(Ls(cse, y1.code)): cde => + StagedPath(y1.shapes, cde, symName)(k(_, ctx.clone() -= p)) + + // this partially applies rules from filter to account for difference between Block.Case and Match pattern in the formalization + // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = - // when pattern = _, x0 = x call(x.shapes.p.selSN("isEmpty"), Ls()): scrut => val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(p => Return(p.p, false)) (Match(scrut, Ls(arm), N, _)): diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 356f1da481..85e0ce45ad 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -29,7 +29,7 @@ class Case with constructor Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) - Tup(val len: Int) // TODO: remove inf? + Tup(val len: Int) class Result with constructor @@ -158,6 +158,7 @@ fun showBlock(b: Block): Str = End() then "End" fun show(x) = + // console.log("debug block: " + x) if x is Symbol then showSymbol(x) Path then showPath(x) @@ -166,7 +167,7 @@ fun show(x) = Defn then showDefn(x) Block then showBlock(x) else - "" + "" fun printCode(x) = print(show(x)) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index ed97d00cb1..7ed0f5c60e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -78,3 +78,9 @@ fun sel(s1: ShapeSet, s2: ShapeSet) = fun mrg(s1: ShapeSet, s2: ShapeSet) = mkDyn() // TODO + +open Block { Block } + +fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = + val rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) + [flat(rem.map(_.0)), rem.map(_.1)] diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index ed8152c15b..b24202260e 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -31,7 +31,7 @@ staged module Expressions with //│ > Lit(1) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) //│ > Dyn -//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(8) -> End, Lit(9) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false), Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> End], Return(Lit(0), false), End)) +//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(9) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End)) :js :staging From 9f148afb071cdc519c580666b7bc0d2b1fa9c4d8 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 26 Nov 2025 14:59:32 +0800 Subject: [PATCH 171/654] add debug name to transformSymbol --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index ebb6cc5034..53d689afb3 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -142,12 +142,12 @@ class InstrumentationImpl(using State): // transformation helpers - def transformSymbol[S <: Symbol](sym: S)(k: Path => Block): Block = + def transformSymbol[S <: Symbol](sym: S, symName: Str = "sym")(k: Path => Block): Block = sym match case clsSym: ClassSymbol => transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => - blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt))(k) - case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), "sym")(k) + blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt), symName)(k) + case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match From cd26ae105d32f595eaa2c75c5316eab4eb4873dd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 26 Nov 2025 15:08:24 +0800 Subject: [PATCH 172/654] remove code duplication from ruleBranch --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 53d689afb3..7d4ec0dcaf 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -305,14 +305,18 @@ class InstrumentationImpl(using State): fnFilter(x.shapes, cse): sp => call(sp.p.selSN("isEmpty"), Ls()): scrut => ruleEnd(): e => - val arm = Case.Lit(Tree.BoolLit(true)) -> k(e, ctx) - (Match(scrut, Ls(arm), N, _)): + val res = new TempSymbol(N, "tmp") + val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) + val dflt = StagedPath(sp, x.code): x0 => given Context = ctx.clone() += p -> x0 transformBlock(b): (y1, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y1.code)): cde => - StagedPath(y1.shapes, cde, symName)(k(_, ctx.clone() -= p)) + StagedPath(y1.shapes, cde, symName): ret => + Assign(res, ret.p, End()) + (Match(scrut, Ls(arm), S(dflt), _)): + k(StagedPath(Value.Ref(res)), ctx.clone() -= p) // this partially applies rules from filter to account for difference between Block.Case and Match pattern in the formalization // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s From 2b5b30a5697024ed9581fb2ded3e981a3e050390 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 26 Nov 2025 15:09:16 +0800 Subject: [PATCH 173/654] fix typo --- hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 7d4ec0dcaf..f6ffb6fde5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -262,7 +262,7 @@ class InstrumentationImpl(using State): blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => StagedPath(z.shapes, cde, symName)(k(_, summon)) - def ruleEnd(symName: String = "inst")(k: StagedPath => Block): Block = + def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = shapeBot(): sp => blockCtor("End", Ls()): cde => StagedPath(sp, cde, symName)(k) From 5d63091e0d1e91de74d0601fc8bf2ad5155f2c59 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 18:09:30 +0800 Subject: [PATCH 174/654] update pretty printing to print actual mlscript --- .../src/test/mlscript-compile/Block.mls | 175 +++++++----------- .../src/test/mlscript/staging/PrintCode.mls | 41 +++- 2 files changed, 108 insertions(+), 108 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index ea54c8b3f6..e6e4906d4b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -1,9 +1,6 @@ -import "./Predef.mls" import "./Option.mls" import "./StrOps.mls" -open Predef -open StrOps open Option module Block with... @@ -21,10 +18,8 @@ type Literal = null | undefined | Str | Int | Num | Bool type ParamList = Array[Symbol] -// Classes defined in Block.scala - -class Arg(val spread: Opt[Bool], val value: Path) - +class Arg(val spread: Opt[Bool], val value: Path) + class Case with constructor Lit(val lit: Literal) @@ -48,18 +43,20 @@ class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused - FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) + FunDefn(val sym: Symbol, val params: ParamList, val body: Block, val stage: Bool) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused +class Arm(val cse: Case, val body: Block) + class Block with constructor - Match(val scrut: Path, val arms: Array[[Case, Block]], val dflt: Opt[Block], val rest: Block) + Match(val scrut: Path, val arms: Array[Arm], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) End() - + fun concat(b1: Block, b2: Block) = if b1 is Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, concat(rest, b2)) Return(res, implct) then b2 // discard return? @@ -67,112 +64,78 @@ fun concat(b1: Block, b2: Block) = if b1 is Define(defn, rest) then Define(defn, concat(rest, b2)) End() then b2 -fun showBool(b: Bool) = if b then "true" else "false" +fun showSymbol(s) = s.name -fun showLiteral(l: Literal) = +fun showLiteral(l) = if l is undefined then "undefined" - null then "null" - else l.toString() - -fun showSymbol(s: Symbol) = - // console.log("printing " + s) - if s is - ClassSymbol(name, args) then - "ClassSymbol(" + "\"" + name + "\"" + - if args - is Some(args) then ":[" + args.map(showSymbol).join(", ") + "]" - is None then "" - + ")" - _ then "Symbol(" + "\"" + s.name + "\"" + ")" - -fun showIdent(i: Ident) = showSymbol(i) - -fun showPath(p: Path): Str = + _ then l.toString() + +fun showPath(p) = if p is - Select(qual, name) then - "Select(" + showPath(qual) + ", " + showIdent(name) + ")" - DynSelect(qual, fld, arrayIdx) then - "DynSelect(" + showPath(qual) + ", " + showPath(fld) + ", " + showBool(arrayIdx) + ")" - ValueRef(l) then - "Ref(" + showSymbol(l) + ")" - ValueLit(lit) then - "Lit(" + showLiteral(lit) + ")" - -fun showArg(arg: Arg) = - if arg.spread is Some(true) then "..." + showPath(arg.value) - else showPath(arg.value) - -fun showArgs(args: Array[Arg]) = - "[" + args.map(showArg).join(", ") + "]" - -// Case (match arm patterns) -fun showCase(c: Case): Str = - if c is - Lit(lit) then "Lit(" + showLiteral(lit) + ")" - Cls(cls, path) then "Cls(" + showSymbol(cls) + ", " + showPath(path) + ")" - Tup(len) then "Tup(" + len + ")" + Select(qual, name) then showPath(qual) + "." + showSymbol(name) + DynSelect(qual, fld, idx) then showPath(qual) + "[" + showPath(fld) + "]" + ValueRef(s) then showSymbol(s) + ValueLit(l) then showLiteral(l) + _ then "" -fun showResult(r: Result): Str = +fun showArg(a) = + (if a.spread is Some(true) then "..." else "") + showPath(a.value) + +fun showArgs(args) = + args.map(showArg) + +fun showResult(r) = if r is + Call(f, args) then showPath(f) + "(" + showArgs(args) + ")" + Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" + Tuple(elems) then "[" + showArgs(elems) + "]" Path then showPath(r) - Call(f, args) then "Call(" + showPath(f) + ", " + showArgs(args) + ")" - Instantiate(cls, args) then "Instantiate(" + showPath(cls) + ", " + showArgs(args) + ")" - Tuple(elems) then "Tuple(" + showArgs(elems) + ")" -fun showParamList(ps: ParamList) = - "[" + ps.map(s => showSymbol(s)).join(", ") + "]" +fun showCase(c) = + if c is + Lit(l) then showLiteral(l) + Cls(cls, p) then showSymbol(cls) + "(" + showPath(p) + ")" + Tup(len) then "Tuple" + _ then "_" + +fun showArm(a) = + showCase(a.cse) + " then " + showBlock(a.body) + +fun showParamsOpt(p) = + if p is + Some(s) then showParams(s) + None then "()" + +fun showParams(p: ParamList) = + "(" + p.map(showSymbol).join(", ") + ")" -fun showDefn(d: Defn): Str = +fun showDefn(d) = if d is ValDefn(sym, rhs) then - "ValDefn(" + showSymbol(sym) + ", " + showPath(rhs) + ")" - FunDefn(sym, params, body) then - "FunDefn(" + showSymbol(sym) + ", " + - showParamList(params) + ", " + - showBlock(body) + ")" - ClsLikeDefn(sym, paramsOpt, companion) then - // TODO: print rest of the arguments - "ClsLikeDefn(" + showSymbol(sym) + ", " + - if paramsOpt is - Some(params) then "(" + showParamList(params) + ")" - None then "()" - + ", " + - "TODO" + ")" - -fun showOptBlock(ob: Opt[Block]) = - if ob is Some(b) then showBlock(b) else "None" - -fun showArm(pair: Case -> Block) = - if pair is [cse, body] then showCase(cse) + " -> " + showBlock(body) else "" - -fun showBlock(b: Block): Str = + "let " + showSymbol(sym) + " = " + showPath(rhs) + FunDefn(sym, params, body, stage) then + "fun " + showSymbol(sym) + "(" + params.map(showSymbol) + ") =" + + (if body is Return(_, _) then " " else "\n ") + showBlock(body) + ClsLikeDefn(sym, paramsOpt, _) then + "class " + showSymbol(sym) + showParamsOpt(paramsOpt) + +fun showBlock(b) = if b is + Assign(lhs, rhs, rest) then + "let " + showSymbol(lhs) + " = " + showResult(rhs) + "\n" + showBlock(rest) + Define(d, rest) then + showDefn(d) + "\n" + showBlock(rest) + Return(res, _) then + showResult(res) Match(scrut, arms, dflt, rest) then - "Match(" + - showPath(scrut) + ", " + - "[" + arms.map(showArm).join(", ") + "], " + - showOptBlock(dflt) + ", " + - showBlock(rest) + ")" - Return(res, implct) then - "Return(" + showResult(res) + ", " + showBool(implct) + ")" - Assign(lhs, rhs, rest) then - "Assign(" + showSymbol(lhs) + ", " + showResult(rhs) + ", " + showBlock(rest) + ")" - Define(defn, rest) then - "Define(" + showDefn(defn) + ", " + showBlock(rest) + ")" - End() then "End" - -fun show(x) = - if x is - Symbol then showSymbol(x) - Path then showPath(x) - Result then showResult(x) - Case then showCase(x) - Defn then showDefn(x) - Block then showBlock(x) - else - "" - -fun printCode(x) = print(show(x)) - -fun compile(p: Block) = ??? \ No newline at end of file + "if " + showPath(scrut) + " is\n" + + arms.map(showArm).join("\n") + + (if dflt is Some(db) then "\nelse " + showBlock(db) else "") + + "\n" + showBlock(rest) + End() then "" + x then x + +fun printCode(p: Block) = + let s = showBlock(p) in + console.log(s) diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index 21e4d1e5aa..a907b98bc4 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -3,6 +3,7 @@ //│ Block = class Block { //│ Symbol: fun Symbol { class: class Symbol }, +//│ ClassSymbol: fun ClassSymbol { class: class ClassSymbol }, //│ Arg: fun Arg { class: class Arg }, //│ Case: class Case, //│ Lit: fun Lit { class: class Lit }, @@ -22,6 +23,7 @@ //│ ClsLikeDefn: fun ClsLikeDefn { class: class ClsLikeDefn }, //│ FunDefn: fun FunDefn { class: class FunDefn }, //│ ClsLikeBody: fun ClsLikeBody { class: class ClsLikeBody }, +//│ Arm: fun Arm { class: class Arm }, //│ Block: class Block, //│ Match: fun Match { class: class Match }, //│ Return: fun Return { class: class Return }, @@ -30,7 +32,42 @@ //│ End: fun End { class: class End } //│ } //│ ShapeSet = class ShapeSet { ShapeSet: fun ShapeSet { class: class ShapeSet } } +import "../../mlscript-compile/Option.mls" +open Option -Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.ValueLit(1), false))) -//│ > FunDefn(Symbol("f"), [Symbol("x")], Return(Lit(1), false)) +Block.printCode(Block.Return(Block.ValueLit(1),false)) +//│ > 1 + +Block.printCode(Block.Define(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.ValueRef(Block.Symbol("x"))), false), Block.Return(Block.ValueRef(Block.Symbol("x"))), false)) +//│ > fun f(x) = x +//│ > x + +Block.printCode( + Block.Define( + Block.ClsLikeDefn(Block.Symbol("C"), Some([Block.Symbol("x"), Block.Symbol("y")]), None), + Block.Assign( + Block.Symbol("x"), + Block.Instantiate( + Block.ValueRef(Block.Symbol("C")), [Block.Arg(Some(false), Block.ValueLit("1")), Block.Arg(Some(false), Block.ValueLit("2"))] + ), + Block.Return( + Block.Select(Block.ValueRef(Block.Symbol("x")), Block.Symbol("y")) + false + ) + ) + ) +) +//│ > class C(x, y) +//│ > let x = new C(1,2) +//│ > x.y + +Block.printCode(Block.Return(Block.Tuple([Block.Arg(None, Block.ValueLit(1)), Block.Arg(None, Block.ValueLit(2))]), false)) +//│ > [1,2] + +Block.printCode(Block.Match(Block.ValueLit(2), [Block.Arm(Block.Lit(1), Block.Return(Block.ValueLit(1), false)), Block.Arm(Block.Lit(2), Block.Return(Block.ValueLit(2), false))], Some(Block.Return(Block.ValueLit(3), false)), Block.End())) +//│ > if 2 is +//│ > 1 then 1 +//│ > 2 then 2 +//│ > else 3 +//│ > From cc24cae44e234f6f43c8c3638ad754a1a3ca3742 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 18:14:20 +0800 Subject: [PATCH 175/654] only pass the "staged" annotation for non-companion module --- hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 23c1d0301a..eba434ddfa 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -20,7 +20,7 @@ import semantics.Term.{Throw => _, *} import semantics.Elaborator.{State, Ctx, ctx} import syntax.{Literal, Tree} -import hkmc2.syntax.Fun +import hkmc2.syntax.{Fun, Keyword} abstract class TailOp extends (Result => Block) @@ -212,13 +212,16 @@ class Lowering()(using Config, TL, Raise, State, Ctx): case S(comp) => comp.defn.getOrElse(wat("Module companion without definition", mod.companion)) case N => val clsSymb = new ClassSymbol(Tree.DummyTypeDef(syntax.Cls), mod.sym.id) + val stagedAnnots = mod.annotations.collect { + case Annot.Modifier(Keyword.`staged`) => Annot.Modifier(Keyword.`staged`) + } val newDefn = ClassDef.Plain(mod.owner, syntax.Cls, clsSymb, mod.bsym, Nil, N, ObjBody(Blk(Nil, UnitVal())), S(mod.sym), - mod.annotations, + stagedAnnots ) clsSymb.defn = S(newDefn) newDefn From bcafb989b0dd5be7ab2aa0afd3ca003681684423 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 19:15:41 +0800 Subject: [PATCH 176/654] reduce test cases --- hkmc2/shared/src/test/mlscript/staging/PrintCode.mls | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index a907b98bc4..2ba27f5247 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -61,10 +61,13 @@ Block.printCode( //│ > let x = new C(1,2) //│ > x.y -Block.printCode(Block.Return(Block.Tuple([Block.Arg(None, Block.ValueLit(1)), Block.Arg(None, Block.ValueLit(2))]), false)) -//│ > [1,2] - -Block.printCode(Block.Match(Block.ValueLit(2), [Block.Arm(Block.Lit(1), Block.Return(Block.ValueLit(1), false)), Block.Arm(Block.Lit(2), Block.Return(Block.ValueLit(2), false))], Some(Block.Return(Block.ValueLit(3), false)), Block.End())) +Block.printCode( + Block.Match( + Block.ValueLit(2), + [Block.Arm(Block.Lit(1), Block.Return(Block.ValueLit(1), false)), Block.Arm(Block.Lit(2), Block.Return(Block.ValueLit(2), false))], + Some(Block.Return(Block.ValueLit(3), false)), Block.End() + ) +) //│ > if 2 is //│ > 1 then 1 //│ > 2 then 2 From b9eee38286fcc3533be7b7ef0e10902cd73a7f36 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 19:30:10 +0800 Subject: [PATCH 177/654] fix class definition printing --- .../src/test/mlscript-compile/Block.mls | 13 +++--- .../src/test/mlscript/staging/Functions.mls | 44 +++++-------------- 2 files changed, 19 insertions(+), 38 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 8b208e99ec..6e7b48937b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -85,7 +85,7 @@ fun showArg(a) = (if a.spread is Some(true) then "..." else "") + showPath(a.value) fun showArgs(args) = - args.map(showArg) + args.map(showArg).join(", ") fun showResult(r) = if r is @@ -97,7 +97,7 @@ fun showResult(r) = fun showCase(c) = if c is Lit(l) then showLiteral(l) - Cls(cls, p) then showSymbol(cls) + "(" + showPath(p) + ")" + Cls(cls, p) then showSymbol(cls) Tup(len) then "Tuple" _ then "_" @@ -117,10 +117,11 @@ fun showDefn(d) = ValDefn(sym, rhs) then "let " + showSymbol(sym) + " = " + showPath(rhs) FunDefn(sym, params, body) then - "fun " + showSymbol(sym) + "(" + params.map(showSymbol) + ") =" + + "fun " + showSymbol(sym) + params.map(showParams).join("") + " =" + (if body is Return(_, _) then " " else "\n ") + showBlock(body) - ClsLikeDefn(sym, paramsOpt) then - "class " + showSymbol(sym) + showParamsOpt(paramsOpt) + ClsLikeDefn(sym, _) then + if sym is + ClassSymbol(n, paramsOpt) then "class " + n + showParamsOpt(paramsOpt) fun showBlock(b) = if b is @@ -136,7 +137,7 @@ fun showBlock(b) = (if dflt is Some(db) then "\nelse " + showBlock(db) else "") + "\n" + showBlock(rest) End() then "" - x then x + _ then "" fun printCode(p: Block) = let s = showBlock(p) in diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index cdfd7583c8..71c29ef69b 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -33,9 +33,8 @@ //│ } //│ ShapeSet = class ShapeSet { ShapeSet: fun ShapeSet { class: class ShapeSet } } -:slot :js -staged module Expressions with +staged module Expressions with fun lit() = 1 fun assign() = let x = 42 @@ -54,29 +53,6 @@ staged module Expressions with Bool then 4 // [1, 2] then 5 // TODO: Case.Tup, needs handling for Label, Break else 0 -//│ Pretty Lowered: -//│ -//│ define staged class Expressions in -//│ set tmp = Expressions.lit_gen() in -//│ set tmp1 = shapeSet.printShapeSet(tmp.(0)) in -//│ set tmp2 = Block.printCode(tmp.(1)) in -//│ set tmp3 = Expressions.assign_gen() in -//│ set tmp4 = shapeSet.printShapeSet(tmp3.(0)) in -//│ set tmp5 = Block.printCode(tmp3.(1)) in -//│ set tmp6 = Expressions._var_gen() in -//│ set tmp7 = shapeSet.printShapeSet(tmp6.(0)) in -//│ set tmp8 = Block.printCode(tmp6.(1)) in -//│ set tmp9 = Expressions.tup_gen() in -//│ set tmp10 = shapeSet.printShapeSet(tmp9.(0)) in -//│ set tmp11 = Block.printCode(tmp9.(1)) in -//│ set tmp12 = Expressions.dynsel_gen() in -//│ set tmp13 = shapeSet.printShapeSet(tmp12.(0)) in -//│ set tmp14 = Block.printCode(tmp12.(1)) in -//│ set tmp15 = Expressions.match_gen() in -//│ set tmp16 = shapeSet.printShapeSet(tmp15.(0)) in -//│ set tmp17 = Block.printCode(tmp15.(1)) in -//│ set block$res2 = undefined in -//│ end //│ > Lit(1) //│ > 1 //│ > Lit(42) @@ -88,17 +64,15 @@ staged module Expressions with //│ > let x = 1 //│ > x //│ > Arr(Lit(1), Lit(2)) -//│ > [1,2] +//│ > [1, 2] //│ > Lit(1) //│ > let tmp = [1] //│ > tmp[0] //│ > Dyn //│ > let scrut = 9 //│ > if scrut is -//│ > _ then undefined -//│ > _ then undefined -//│ > _ then undefined -//│ > _ then undefined +//│ > _ then +//│ > _ then //│ > else 0 //│ > @@ -106,7 +80,7 @@ staged module Expressions with :staging class Outside(a) staged module ClassInstrumentation with - class Inside(a, b) + class Inside(a, b) // not printed correctly class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg @@ -135,4 +109,10 @@ staged module A with module A with staged module B with fun f() = 1 -//│ /!!!\ Uncaught error: java.lang.AssertionError: assertion failed: nested module not supported +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.110: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.111: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From 50f07ca1ad8a419bbe267f6eaf3924eaa8286262 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 19:34:06 +0800 Subject: [PATCH 178/654] add match error on pretty printing --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 8 +++++--- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 6e7b48937b..d02bd793e6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -79,7 +79,7 @@ fun showPath(p) = DynSelect(qual, fld, idx) then showPath(qual) + "[" + showPath(fld) + "]" ValueRef(s) then showSymbol(s) ValueLit(l) then showLiteral(l) - _ then "" + _ then "" fun showArg(a) = (if a.spread is Some(true) then "..." else "") + showPath(a.value) @@ -93,13 +93,14 @@ fun showResult(r) = Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" Tuple(elems) then "[" + showArgs(elems) + "]" Path then showPath(r) + _ then "" fun showCase(c) = if c is Lit(l) then showLiteral(l) Cls(cls, p) then showSymbol(cls) Tup(len) then "Tuple" - _ then "_" + _ then "" fun showArm(a) = showCase(a.cse) + " then " + showBlock(a.body) @@ -122,6 +123,7 @@ fun showDefn(d) = ClsLikeDefn(sym, _) then if sym is ClassSymbol(n, paramsOpt) then "class " + n + showParamsOpt(paramsOpt) + _ then "" fun showBlock(b) = if b is @@ -137,7 +139,7 @@ fun showBlock(b) = (if dflt is Some(db) then "\nelse " + showBlock(db) else "") + "\n" + showBlock(rest) End() then "" - _ then "" + _ then "" fun printCode(p: Block) = let s = showBlock(p) in diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 71c29ef69b..6513a03596 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -71,8 +71,8 @@ staged module Expressions with //│ > Dyn //│ > let scrut = 9 //│ > if scrut is -//│ > _ then -//│ > _ then +//│ > then +//│ > then //│ > else 0 //│ > From 678dbc9be0855e2ced8bf76cdb2774401c783824 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 19:37:36 +0800 Subject: [PATCH 179/654] fix test cases --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 6 +++--- hkmc2/shared/src/test/mlscript/staging/PrintCode.mls | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d02bd793e6..80955b8b57 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -85,7 +85,7 @@ fun showArg(a) = (if a.spread is Some(true) then "..." else "") + showPath(a.value) fun showArgs(args) = - args.map(showArg).join(", ") + args.map(showArg).join(",") fun showResult(r) = if r is @@ -117,8 +117,8 @@ fun showDefn(d) = if d is ValDefn(sym, rhs) then "let " + showSymbol(sym) + " = " + showPath(rhs) - FunDefn(sym, params, body) then - "fun " + showSymbol(sym) + params.map(showParams).join("") + " =" + + FunDefn(sym, p, body) then + "fun " + showSymbol(sym) + showParams(p) + " =" + (if body is Return(_, _) then " " else "\n ") + showBlock(body) ClsLikeDefn(sym, _) then if sym is diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index 2ba27f5247..d1cf0c3721 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -44,7 +44,7 @@ Block.printCode(Block.Define(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x") Block.printCode( Block.Define( - Block.ClsLikeDefn(Block.Symbol("C"), Some([Block.Symbol("x"), Block.Symbol("y")]), None), + Block.ClsLikeDefn(Block.ClassSymbol("C", Some([Block.Symbol("x"), Block.Symbol("y")])), None), Block.Assign( Block.Symbol("x"), Block.Instantiate( @@ -73,4 +73,3 @@ Block.printCode( //│ > 2 then 2 //│ > else 3 //│ > - From 71a8918d6b2be212b9961d992148ca7a67e41615 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 19:43:51 +0800 Subject: [PATCH 180/654] some unimportant change --- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 6513a03596..495ddb8e37 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -64,7 +64,7 @@ staged module Expressions with //│ > let x = 1 //│ > x //│ > Arr(Lit(1), Lit(2)) -//│ > [1, 2] +//│ > [1,2] //│ > Lit(1) //│ > let tmp = [1] //│ > tmp[0] From 7151735a72a4b7dd86217743fe2c96191e912d9b Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 19:52:21 +0800 Subject: [PATCH 181/654] some more unimportant change --- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index cdfd7583c8..d6c2be7340 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -97,8 +97,6 @@ staged module Expressions with //│ > if scrut is //│ > _ then undefined //│ > _ then undefined -//│ > _ then undefined -//│ > _ then undefined //│ > else 0 //│ > @@ -112,7 +110,7 @@ staged module ClassInstrumentation with fun inst2() = new NoArg //│ > class NoArg() //│ > -//│ > class Inside(a, b) +//│ > class Inside() //│ > //│ > Class(Outside, [Lit(1)]) //│ > new Outside(1) @@ -135,4 +133,10 @@ staged module A with module A with staged module B with fun f() = 1 -//│ /!!!\ Uncaught error: java.lang.AssertionError: assertion failed: nested module not supported +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.134: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.135: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From f582fa5119763e1d66484b6959d9581de63b58a7 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 20:00:56 +0800 Subject: [PATCH 182/654] printed correctly now --- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 495ddb8e37..1427e1e99c 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -80,7 +80,7 @@ staged module Expressions with :staging class Outside(a) staged module ClassInstrumentation with - class Inside(a, b) // not printed correctly + class Inside(a, b) class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg From 182d1bd61fd241dd43d7a6c943c39c69a99e960e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 26 Nov 2025 22:00:22 +0800 Subject: [PATCH 183/654] fix some printing errors --- .../scala/hkmc2/codegen/Instrumentation.scala | 3 +- .../src/test/mlscript-compile/Block.mls | 30 ++++++-- .../src/test/mlscript-compile/Shape.mls | 18 +---- .../src/test/mlscript/staging/Functions.mls | 68 +++++++------------ 4 files changed, 50 insertions(+), 69 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f6ffb6fde5..9912fd5128 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -311,8 +311,7 @@ class InstrumentationImpl(using State): StagedPath(sp, x.code): x0 => given Context = ctx.clone() += p -> x0 transformBlock(b): (y1, ctx) => - // TODO: use Arm type instead of Tup - tuple(Ls(cse, y1.code)): cde => + blockCtor("Arm", Ls(cse, y1.code)): cde => StagedPath(y1.shapes, cde, symName): ret => Assign(res, ret.p, End()) (Match(scrut, Ls(arm), S(dflt), _)): diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 80955b8b57..f653c2866e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -18,6 +18,22 @@ type Ident = Symbol // this is so that we're able to retrieve information about the class from the symbol class ClassSymbol(val name: Str, val paramsOpt: Opt[ParamList]) extends Symbol(name) +fun isPrimitiveType(sym: Symbol) = + if sym.name is + "Str" then true + "Int" then true + "Num" then true + "Bool" then true + else false + +fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = + if [sym.name, l] is + ["Str", l] and l is Str then true + ["Int", i] and i is Int then true + ["Num", n] and n is Num then true + ["Bool", b] and b is Bool then true + else false + // Classes defined in Block.scala class Arg(val spread: Opt[Bool], val value: Path) @@ -25,7 +41,7 @@ class Arg(val spread: Opt[Bool], val value: Path) class Case with constructor Lit(val lit: Literal) - Cls(val cls: Symbol, val path: Path) + Cls(val cls: ClassSymbol, val path: Path) Tup(val len: Int) class Result with @@ -44,7 +60,7 @@ class Path extends Result with class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) - ClsLikeDefn(val sym: Symbol, val companion: Opt[ClsLikeBody]) // companion unused + ClsLikeDefn(val sym: ClassSymbol, val companion: Opt[ClsLikeBody]) // companion unused FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused @@ -98,7 +114,9 @@ fun showResult(r) = fun showCase(c) = if c is Lit(l) then showLiteral(l) - Cls(cls, p) then showSymbol(cls) + Cls(cls, p) then showSymbol(cls) + + if isPrimitiveType(cls) then "" + else showParamsOpt(cls.paramsOpt) Tup(len) then "Tuple" _ then "" @@ -108,7 +126,7 @@ fun showArm(a) = fun showParamsOpt(p) = if p is Some(s) then showParams(s) - None then "()" + None then "" fun showParams(p: ParamList) = "(" + p.map(showSymbol).join(", ") + ")" @@ -120,9 +138,7 @@ fun showDefn(d) = FunDefn(sym, p, body) then "fun " + showSymbol(sym) + showParams(p) + " =" + (if body is Return(_, _) then " " else "\n ") + showBlock(body) - ClsLikeDefn(sym, _) then - if sym is - ClassSymbol(n, paramsOpt) then "class " + n + showParamsOpt(paramsOpt) + ClsLikeDefn(sym, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) _ then "" fun showBlock(b) = diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 223940c38c..c086a1cc9b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,27 +1,11 @@ import "./Block.mls" import "./Option.mls" -open Block { Literal, Symbol, ClassSymbol, showSymbol } +open Block { Literal, ClassSymbol, showSymbol, isPrimitiveType, isPrimitiveTypeOf } open Option type Shape = Shape.Shape -fun isPrimitiveType(sym: Symbol) = - if sym.name is - "Str" then true - "Int" then true - "Num" then true - "Bool" then true - else false - -fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = - if [sym.name, l] is - ["Str", l] and l is Str then true - ["Int", i] and i is Int then true - ["Num", n] and n is Num then true - ["Bool", b] and b is Bool then true - else false - module Shape with... class Shape with diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 495ddb8e37..8e28e851ab 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -1,40 +1,7 @@ -:js -:staging - -//│ Block = class Block { -//│ Symbol: fun Symbol { class: class Symbol }, -//│ ClassSymbol: fun ClassSymbol { class: class ClassSymbol }, -//│ Arg: fun Arg { class: class Arg }, -//│ Case: class Case, -//│ Lit: fun Lit { class: class Lit }, -//│ Cls: fun Cls { class: class Cls }, -//│ Tup: fun Tup { class: class Tup }, -//│ Result: class Result, -//│ Call: fun Call { class: class Call }, -//│ Instantiate: fun Instantiate { class: class Instantiate }, -//│ Tuple: fun Tuple { class: class Tuple }, -//│ Path: class Path, -//│ Select: fun Select { class: class Select }, -//│ DynSelect: fun DynSelect { class: class DynSelect }, -//│ ValueRef: fun ValueRef { class: class ValueRef }, -//│ ValueLit: fun ValueLit { class: class ValueLit }, -//│ Defn: class Defn, -//│ ValDefn: fun ValDefn { class: class ValDefn }, -//│ ClsLikeDefn: fun ClsLikeDefn { class: class ClsLikeDefn }, -//│ FunDefn: fun FunDefn { class: class FunDefn }, -//│ ClsLikeBody: fun ClsLikeBody { class: class ClsLikeBody }, -//│ Arm: fun Arm { class: class Arm }, -//│ Block: class Block, -//│ Match: fun Match { class: class Match }, -//│ Return: fun Return { class: class Return }, -//│ Assign: fun Assign { class: class Assign }, -//│ Define: fun Define { class: class Define }, -//│ End: fun End { class: class End } -//│ } -//│ ShapeSet = class ShapeSet { ShapeSet: fun ShapeSet { class: class ShapeSet } } :js -staged module Expressions with +:staging +staged module Expressions with fun lit() = 1 fun assign() = let x = 42 @@ -71,20 +38,25 @@ staged module Expressions with //│ > Dyn //│ > let scrut = 9 //│ > if scrut is -//│ > then -//│ > then +//│ > 9 then 2 +//│ > Int then 3 //│ > else 0 //│ > :js :staging -class Outside(a) +class Outside(val a, val b) +let x = Outside(1, 2) staged module ClassInstrumentation with class Inside(a, b) // not printed correctly class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg -//│ > class NoArg() + fun match() = + if x is + Outside(x, y) then 1 + else 2 +//│ > class NoArg //│ > //│ > class Inside(a, b) //│ > @@ -92,6 +64,16 @@ staged module ClassInstrumentation with //│ > new Outside(1) //│ > Class(NoArg, []) //│ > new ClassInstrumentation.NoArg() +//│ > Dyn +//│ > if x is +//│ > Outside(a, b) then let argument0$ = x.a +//│ > let argument1$ = x.b +//│ > let y = argument1$ +//│ > let x = argument0$ +//│ > 1 +//│ > else 2 +//│ > +//│ x = Outside(1, 2) // debug printing fails, collision with class name? :js @@ -111,8 +93,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.110: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.111: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ +//│ ║ l.92: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.93: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From 7d3e09a4f2725a519841a87e8807c6d9a033bf36 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 26 Nov 2025 22:20:51 +0800 Subject: [PATCH 184/654] minor nit --- hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index eba434ddfa..7bc2da5f91 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -212,8 +212,8 @@ class Lowering()(using Config, TL, Raise, State, Ctx): case S(comp) => comp.defn.getOrElse(wat("Module companion without definition", mod.companion)) case N => val clsSymb = new ClassSymbol(Tree.DummyTypeDef(syntax.Cls), mod.sym.id) - val stagedAnnots = mod.annotations.collect { - case Annot.Modifier(Keyword.`staged`) => Annot.Modifier(Keyword.`staged`) + val stagedAnnots = mod.annotations.filter { + case Annot.Modifier(Keyword.`staged`) => true } val newDefn = ClassDef.Plain(mod.owner, syntax.Cls, clsSymb, mod.bsym, From 0a6087fc861e8ba162e06ce42f3b926e11ba57cd Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 23:18:05 +0800 Subject: [PATCH 185/654] Revert "printed correctly now" This reverts commit f582fa5119763e1d66484b6959d9581de63b58a7. --- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 1427e1e99c..495ddb8e37 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -80,7 +80,7 @@ staged module Expressions with :staging class Outside(a) staged module ClassInstrumentation with - class Inside(a, b) + class Inside(a, b) // not printed correctly class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg From cd7f7bc939bc03d5b6ec3f5249fbaee88bb9a5c1 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 23:18:36 +0800 Subject: [PATCH 186/654] Revert "Merge branch 'instrument-with-pretty-print' into instrument" This reverts commit 2548c78417bb38a3be76ecc43579a0365cb6fb60, reversing changes made to 7151735a72a4b7dd86217743fe2c96191e912d9b. --- .../src/test/mlscript-compile/Block.mls | 21 +++++----- .../src/test/mlscript/staging/Functions.mls | 38 +++++++++++++++---- .../src/test/mlscript/staging/PrintCode.mls | 14 +++---- 3 files changed, 46 insertions(+), 27 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 80955b8b57..8b208e99ec 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -79,13 +79,13 @@ fun showPath(p) = DynSelect(qual, fld, idx) then showPath(qual) + "[" + showPath(fld) + "]" ValueRef(s) then showSymbol(s) ValueLit(l) then showLiteral(l) - _ then "" + _ then "" fun showArg(a) = (if a.spread is Some(true) then "..." else "") + showPath(a.value) fun showArgs(args) = - args.map(showArg).join(",") + args.map(showArg) fun showResult(r) = if r is @@ -93,14 +93,13 @@ fun showResult(r) = Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" Tuple(elems) then "[" + showArgs(elems) + "]" Path then showPath(r) - _ then "" fun showCase(c) = if c is Lit(l) then showLiteral(l) - Cls(cls, p) then showSymbol(cls) + Cls(cls, p) then showSymbol(cls) + "(" + showPath(p) + ")" Tup(len) then "Tuple" - _ then "" + _ then "_" fun showArm(a) = showCase(a.cse) + " then " + showBlock(a.body) @@ -117,13 +116,11 @@ fun showDefn(d) = if d is ValDefn(sym, rhs) then "let " + showSymbol(sym) + " = " + showPath(rhs) - FunDefn(sym, p, body) then - "fun " + showSymbol(sym) + showParams(p) + " =" + + FunDefn(sym, params, body) then + "fun " + showSymbol(sym) + "(" + params.map(showSymbol) + ") =" + (if body is Return(_, _) then " " else "\n ") + showBlock(body) - ClsLikeDefn(sym, _) then - if sym is - ClassSymbol(n, paramsOpt) then "class " + n + showParamsOpt(paramsOpt) - _ then "" + ClsLikeDefn(sym, paramsOpt) then + "class " + showSymbol(sym) + showParamsOpt(paramsOpt) fun showBlock(b) = if b is @@ -139,7 +136,7 @@ fun showBlock(b) = (if dflt is Some(db) then "\nelse " + showBlock(db) else "") + "\n" + showBlock(rest) End() then "" - _ then "" + x then x fun printCode(p: Block) = let s = showBlock(p) in diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 495ddb8e37..d6c2be7340 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -33,8 +33,9 @@ //│ } //│ ShapeSet = class ShapeSet { ShapeSet: fun ShapeSet { class: class ShapeSet } } +:slot :js -staged module Expressions with +staged module Expressions with fun lit() = 1 fun assign() = let x = 42 @@ -53,6 +54,29 @@ staged module Expressions with Bool then 4 // [1, 2] then 5 // TODO: Case.Tup, needs handling for Label, Break else 0 +//│ Pretty Lowered: +//│ +//│ define staged class Expressions in +//│ set tmp = Expressions.lit_gen() in +//│ set tmp1 = shapeSet.printShapeSet(tmp.(0)) in +//│ set tmp2 = Block.printCode(tmp.(1)) in +//│ set tmp3 = Expressions.assign_gen() in +//│ set tmp4 = shapeSet.printShapeSet(tmp3.(0)) in +//│ set tmp5 = Block.printCode(tmp3.(1)) in +//│ set tmp6 = Expressions._var_gen() in +//│ set tmp7 = shapeSet.printShapeSet(tmp6.(0)) in +//│ set tmp8 = Block.printCode(tmp6.(1)) in +//│ set tmp9 = Expressions.tup_gen() in +//│ set tmp10 = shapeSet.printShapeSet(tmp9.(0)) in +//│ set tmp11 = Block.printCode(tmp9.(1)) in +//│ set tmp12 = Expressions.dynsel_gen() in +//│ set tmp13 = shapeSet.printShapeSet(tmp12.(0)) in +//│ set tmp14 = Block.printCode(tmp12.(1)) in +//│ set tmp15 = Expressions.match_gen() in +//│ set tmp16 = shapeSet.printShapeSet(tmp15.(0)) in +//│ set tmp17 = Block.printCode(tmp15.(1)) in +//│ set block$res2 = undefined in +//│ end //│ > Lit(1) //│ > 1 //│ > Lit(42) @@ -71,8 +95,8 @@ staged module Expressions with //│ > Dyn //│ > let scrut = 9 //│ > if scrut is -//│ > then -//│ > then +//│ > _ then undefined +//│ > _ then undefined //│ > else 0 //│ > @@ -80,13 +104,13 @@ staged module Expressions with :staging class Outside(a) staged module ClassInstrumentation with - class Inside(a, b) // not printed correctly + class Inside(a, b) class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg //│ > class NoArg() //│ > -//│ > class Inside(a, b) +//│ > class Inside() //│ > //│ > Class(Outside, [Lit(1)]) //│ > new Outside(1) @@ -111,8 +135,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.110: staged module B with +//│ ║ l.134: staged module B with //│ ║ ^^^^^^ -//│ ║ l.111: fun f() = 1 +//│ ║ l.135: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index d1cf0c3721..a907b98bc4 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -44,7 +44,7 @@ Block.printCode(Block.Define(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x") Block.printCode( Block.Define( - Block.ClsLikeDefn(Block.ClassSymbol("C", Some([Block.Symbol("x"), Block.Symbol("y")])), None), + Block.ClsLikeDefn(Block.Symbol("C"), Some([Block.Symbol("x"), Block.Symbol("y")]), None), Block.Assign( Block.Symbol("x"), Block.Instantiate( @@ -61,15 +61,13 @@ Block.printCode( //│ > let x = new C(1,2) //│ > x.y -Block.printCode( - Block.Match( - Block.ValueLit(2), - [Block.Arm(Block.Lit(1), Block.Return(Block.ValueLit(1), false)), Block.Arm(Block.Lit(2), Block.Return(Block.ValueLit(2), false))], - Some(Block.Return(Block.ValueLit(3), false)), Block.End() - ) -) +Block.printCode(Block.Return(Block.Tuple([Block.Arg(None, Block.ValueLit(1)), Block.Arg(None, Block.ValueLit(2))]), false)) +//│ > [1,2] + +Block.printCode(Block.Match(Block.ValueLit(2), [Block.Arm(Block.Lit(1), Block.Return(Block.ValueLit(1), false)), Block.Arm(Block.Lit(2), Block.Return(Block.ValueLit(2), false))], Some(Block.Return(Block.ValueLit(3), false)), Block.End())) //│ > if 2 is //│ > 1 then 1 //│ > 2 then 2 //│ > else 3 //│ > + From 34d0914f3f111c508570ff9003facb13444bf2a3 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 23:26:59 +0800 Subject: [PATCH 187/654] Revert "some more unimportant change" This reverts commit 7151735a72a4b7dd86217743fe2c96191e912d9b. --- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index d6c2be7340..cdfd7583c8 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -97,6 +97,8 @@ staged module Expressions with //│ > if scrut is //│ > _ then undefined //│ > _ then undefined +//│ > _ then undefined +//│ > _ then undefined //│ > else 0 //│ > @@ -110,7 +112,7 @@ staged module ClassInstrumentation with fun inst2() = new NoArg //│ > class NoArg() //│ > -//│ > class Inside() +//│ > class Inside(a, b) //│ > //│ > Class(Outside, [Lit(1)]) //│ > new Outside(1) @@ -133,10 +135,4 @@ staged module A with module A with staged module B with fun f() = 1 -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.134: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.135: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ -//│ ═══[RUNTIME ERROR] ReferenceError: B is not defined +//│ /!!!\ Uncaught error: java.lang.AssertionError: assertion failed: nested module not supported From a3925e5da38dfbb0b92d9a0ddf59aee45ccabedf Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 23:27:50 +0800 Subject: [PATCH 188/654] Revert "Merge remote-tracking branch 'origin/instrument' into instrument" This reverts commit 2b1d1576279f2d8aca058036f8671f6d92deb161, reversing changes made to cc24cae44e234f6f43c8c3638ad754a1a3ca3742. --- .../scala/hkmc2/codegen/Instrumentation.scala | 148 +++++++++--------- .../src/test/mlscript-compile/Block.mls | 20 ++- .../src/test/mlscript-compile/ShapeSet.mls | 6 - .../src/test/mlscript/staging/Functions.mls | 8 +- 4 files changed, 87 insertions(+), 95 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f6ffb6fde5..6b0d15f74c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -129,8 +129,6 @@ class InstrumentationImpl(using State): def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = blockCall("concat", Ls(p1, p2))(k) - def fnPruneBadArms(arms: Path)(k: Path => Block): Block = - shapeSetCall("pruneBadArms", Ls(arms))(k) def fnMrg(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("mrg", Ls(s1, s2))(s => k(ShapeSet(s))) def fnSel(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = @@ -139,15 +137,18 @@ class InstrumentationImpl(using State): shapeSetCall("filter", Ls(s1, s2))(s => k(ShapeSet(s))) def fnUnion(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("union", Ls(s1, s2))(s => k(ShapeSet(s))) + def fnFlat(s: Ls[ShapeSet])(k: ShapeSet => Block): Block = + tuple(s): tup => + shapeSetCall("flat", Ls(tup))(s => k(ShapeSet(s))) // transformation helpers - def transformSymbol[S <: Symbol](sym: S, symName: Str = "sym")(k: Path => Block): Block = + def transformSymbol[S <: Symbol](sym: S)(k: Path => Block): Block = sym match case clsSym: ClassSymbol => - transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => - blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt), symName)(k) - case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) + stageParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => + blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt))(k) + case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), "sym")(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match @@ -156,77 +157,78 @@ class InstrumentationImpl(using State): // instrumentation rules - def ruleLit(l: Value.Lit, symName: String = "lit")(k: StagedPath => Block): Block = + def ruleLit(l: Value.Lit)(k: StagedPath => Block): Block = shapeLit(l): sp => blockCtor("ValueLit", Ls(l)): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(sp, cde, "lit")(k) // not in formalization - def ruleVar(r: Value.Ref, symName: String = "var")(k: StagedPath => Block): Block = + def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = val Value.Ref(l, disamb) = r transformSymbol(disamb.getOrElse(l)): sym => blockCtor("ValueRef", Ls(sym)): cde => // variable defined outside of scope, may be a reference to a class shapeDyn(): sp => - StagedPath(sp, cde, symName)(k) + StagedPath(sp, cde, "var")(k) - def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = + def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => shapeArr(xs.map(_.shapes)): sp => tuple(xs.map(_.code)): codes => blockCtor("Tuple", Ls(codes)): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(sp, cde, "tup")(k) - def ruleSel(s: Select, symName: String = "sel")(using Context)(k: StagedPath => Block): Block = + def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => shapeLit(toValue(name)): n => fnSel(x.shapes, n): sp => blockCtor("Symbol", Ls(toValue(name))): name => blockCtor("Select", Ls(x.code, name)): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(sp, cde, "sel")(k) - def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: StagedPath => Block): Block = + def ruleDynSel(d: DynSelect)(using Context)(k: StagedPath => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => fnSel(x.shapes, y.shapes): sp => blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(sp, cde, "dynsel")(k) - def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = + def ruleInst(i: Instantiate)(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => - val sym = cls match - // TODO: if class is staged, we can just use Symbol without storing the arguments - case Value.Ref(l, S(disamb)) => transformSymbol(disamb) - case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) - case _ => transformSymbol(TempSymbol(N, "TODO")) - sym: sym => - shapeClass(sym, xs.map(_.shapes)): sp => - // reuse instrumentation logic, shape of cls is discarded - // possible to skip this? this uses ruleVar, which is not in formalization - transformPath(cls): cls => - tuple(xs.map(_.code)): codes => - blockCtor("Instantiate", Ls(cls.code, codes)): cde => - StagedPath(sp, cde, symName)(k) - - def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (StagedPath, Context) => Block): Block = + tuple(xs.map(_.shapes)): shapes => + val sym = cls match + // TODO: if class is staged, we can just use Symbol without storing the arguments + case Value.Ref(l, S(disamb)) => transformSymbol(disamb) + case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) + case _ => transformSymbol(TempSymbol(N, "TODO")) + sym: sym => + shapeClass(sym, xs.map(_.shapes)): sp => + // reuse instrumentation logic, shape of cls is discarded + // possible to skip this? this uses ruleVar, which is not in formalization + transformPath(cls): cls => + tuple(xs.map(_.code)): codes => + blockCtor("Instantiate", Ls(cls.code, codes)): cde => + StagedPath(sp, cde, "inst")(k) + + def ruleReturn(r: Return)(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code, toValue(false))): cde => - StagedPath(x.shapes, cde, symName)(k(_, summon)) + StagedPath(x.shapes, cde, "return")(k(_, summon)) - def ruleMatch(m: Match, symName: String = "match")(using Context)(k: (StagedPath, Context) => Block): Block = + def ruleMatch(m: Match)(using Context)(k: (StagedPath, Context) => Block): Block = val Match(p, ks, dflt, rest) = m transformPath(p): x => ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => fnMrg(stagedMatch.shapes, z.shapes): sp => fnConcat(stagedMatch.code, z.code): cde => - StagedPath(sp, cde, symName)(k(_, ctx2)) + StagedPath(sp, cde)(k(_, ctx2)) - def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a transformResult(r): y => transformSymbol(x): xSym => @@ -241,7 +243,7 @@ class InstrumentationImpl(using State): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath(z.shapes, cde, symName)(k(_, ctx)) + StagedPath(z.shapes, cde, "assign")(k(_, ctx)) case N => StagedPath(y.shapes, xStaged): x2 => // propagate shape information for future references to x @@ -249,9 +251,9 @@ class InstrumentationImpl(using State): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath(z.shapes, cde, symName)(k(_, ctx)) + StagedPath(z.shapes, cde, "assign")(k(_, ctx)) - def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleLet(x: BlockMemberSymbol, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = shapeBot(): bot => transformSymbol(x): xSym => StagedPath(bot, xSym): y => @@ -260,12 +262,12 @@ class InstrumentationImpl(using State): transformBlock(b): (z, ctx) => blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => - StagedPath(z.shapes, cde, symName)(k(_, summon)) + StagedPath(z.shapes, cde, "_let")(k(_, summon)) - def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = + def ruleEnd()(k: StagedPath => Block): Block = shapeBot(): sp => blockCtor("End", Ls()): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(sp, cde, "end")(k) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) @@ -274,22 +276,19 @@ class InstrumentationImpl(using State): assert(cls.companion.isEmpty, "nested module not supported") (Define(cls, _)): transformBlock(rest): p => - transformParamsOpt(cls.paramsOpt): paramsOpt => - transformSymbol(cls.isym): c => + transformSymbol(cls.sym): c => + stageParamsOpt(cls.paramsOpt): paramsOpt => optionNone(): none => // TODO: handle companion object - blockCtor("ClsLikeDefn", Ls(c, none)): cls => + blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) - def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (StagedPath, Context) => Block): Block = + def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block])(using Context)(k: (StagedPath, Context) => Block): Block = arms.map((cse, block) => (f: StagedPath => Context => Block) => (ruleBranch(x, p, cse, block)(using _)).flip(f(_)(_))) .collectApply .pipe(_.flip(summon)): arms => ctx => - tuple(arms.map(_.p)): tup => - fnPruneBadArms(tup): res => - val result = StagedPath(res) - val sp = result.shapes - val arms = result.code + fnFlat(arms.map(_.shapes)): sp => + tuple(arms.map(_.code)): arms => blockCtor("End", Ls()): e => // TODO: use transformOption here def dfltStaged(k: (Path, Context) => Block) = dflt match @@ -298,29 +297,30 @@ class InstrumentationImpl(using State): case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath(sp, m, symName)(k(_, ctx)) + StagedPath(sp, m, "branches")(k(_, ctx)) - def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformCase(cse): cse => fnFilter(x.shapes, cse): sp => - call(sp.p.selSN("isEmpty"), Ls()): scrut => - ruleEnd(): e => - val res = new TempSymbol(N, "tmp") - val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) - val dflt = - StagedPath(sp, x.code): x0 => - given Context = ctx.clone() += p -> x0 - transformBlock(b): (y1, ctx) => - // TODO: use Arm type instead of Tup - tuple(Ls(cse, y1.code)): cde => - StagedPath(y1.shapes, cde, symName): ret => - Assign(res, ret.p, End()) - (Match(scrut, Ls(arm), S(dflt), _)): - k(StagedPath(Value.Ref(res)), ctx.clone() -= p) - - // this partially applies rules from filter to account for difference between Block.Case and Match pattern in the formalization - // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s + StagedPath(sp, x.code): x0 => + call(x0.shapes.p.selSN("isEmpty"), Ls()): scrut => + ruleEnd(): e => + tuple(Ls(cse, e.code)): armStaged => + // returns Case -> Block, instead of End as in formalization + StagedPath(e.shapes, armStaged): badArm => + val arm = Case.Lit(Tree.BoolLit(true)) -> k(badArm, ctx) + (Match(scrut, Ls(arm), N, _)): + given Context = ctx.clone() += p -> x0 + transformBlock(b): (y1, ctx) => + // TODO: use Arm type instead of Tup + tuple(Ls(cse, y1.code)): cde => + StagedPath(y1.shapes, cde, "branch")(k(_, ctx.clone() -= p)) + + // not in formalization + // this partially applies rules from filter to account for difference in Block.Case and Match pattern in the formalization + // to avoid defining the `_` pattern in Block.Case, we use the fact that filter(s, _) = s def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + // when pattern = _, x0 = x call(x.shapes.p.selSN("isEmpty"), Ls()): scrut => val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(p => Return(p.p, false)) (Match(scrut, Ls(arm), N, _)): @@ -359,11 +359,11 @@ class InstrumentationImpl(using State): def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = args.map(transformArg).collectApply(k) - def transformParamList(ps: ParamList)(k: Path => Block) = + def stageParamList(ps: ParamList)(k: Path => Block) = ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) - def transformParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = - transformOption(pOpt, transformParamList)(k) + def stageParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = + transformOption(pOpt, stageParamList)(k) def transformCase(cse: Case)(using Context)(k: Path => Block): Block = cse match @@ -427,7 +427,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case d @ Define(defn, rest) => defn match // find modules with staged annotation - case c: ClsLikeDefn if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => + case c: ClsLikeDefn if c.companion.isDefined => val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 8b208e99ec..e6e4906d4b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -9,16 +9,14 @@ type Opt[A] = Option[A] // dependancies referenced in Block classes, referencing implementation in Term.mls -type Literal = null | undefined | Str | Int | Num | Bool - -type ParamList = Array[Symbol] - class Symbol(val name: Str) type Ident = Symbol // this is so that we're able to retrieve information about the class from the symbol -class ClassSymbol(val name: Str, val paramsOpt: Opt[ParamList]) extends Symbol(name) +class ClassSymbol(val name: Str, val args: Opt[Array[Symbol]]) extends Symbol(name) -// Classes defined in Block.scala +type Literal = null | undefined | Str | Int | Num | Bool + +type ParamList = Array[Symbol] class Arg(val spread: Opt[Bool], val value: Path) @@ -26,7 +24,7 @@ class Case with constructor Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) - Tup(val len: Int) + Tup(val len: Int) // TODO: remove inf? class Result with constructor @@ -44,8 +42,8 @@ class Path extends Result with class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) - ClsLikeDefn(val sym: Symbol, val companion: Opt[ClsLikeBody]) // companion unused - FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) + ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused + FunDefn(val sym: Symbol, val params: ParamList, val body: Block, val stage: Bool) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused @@ -116,10 +114,10 @@ fun showDefn(d) = if d is ValDefn(sym, rhs) then "let " + showSymbol(sym) + " = " + showPath(rhs) - FunDefn(sym, params, body) then + FunDefn(sym, params, body, stage) then "fun " + showSymbol(sym) + "(" + params.map(showSymbol) + ") =" + (if body is Return(_, _) then " " else "\n ") + showBlock(body) - ClsLikeDefn(sym, paramsOpt) then + ClsLikeDefn(sym, paramsOpt, _) then "class " + showSymbol(sym) + showParamsOpt(paramsOpt) fun showBlock(b) = diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 7ed0f5c60e..ed97d00cb1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -78,9 +78,3 @@ fun sel(s1: ShapeSet, s2: ShapeSet) = fun mrg(s1: ShapeSet, s2: ShapeSet) = mkDyn() // TODO - -open Block { Block } - -fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = - val rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) - [flat(rem.map(_.0)), rem.map(_.1)] diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index cdfd7583c8..6db1604147 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -106,20 +106,20 @@ staged module Expressions with :staging class Outside(a) staged module ClassInstrumentation with - class Inside(a, b) + class Class(a, b) class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg //│ > class NoArg() //│ > -//│ > class Inside(a, b) +//│ > class Class(a, b) //│ > //│ > Class(Outside, [Lit(1)]) //│ > new Outside(1) //│ > Class(NoArg, []) //│ > new ClassInstrumentation.NoArg() -// debug printing fails, collision with class name? +// collision with class name? :js :staging :fixme @@ -128,7 +128,7 @@ staged module A with fun f() = 1 //│ ═══[RUNTIME ERROR] TypeError: A1.f_gen is not a function -// debug printing fails, unable to reference the class when calling the instrumented function +// unable to reference the class when calling the instrumented function for debugging :js :staging :fixme From 79c90eed2010d25599a665659c99b4a10192ce27 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 26 Nov 2025 23:28:23 +0800 Subject: [PATCH 189/654] Revert "update pretty printing to print actual mlscript" This reverts commit 5d63091e0d1e91de74d0601fc8bf2ad5155f2c59. --- .../src/test/mlscript-compile/Block.mls | 175 +++++++++++------- .../src/test/mlscript/staging/PrintCode.mls | 41 +--- 2 files changed, 108 insertions(+), 108 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index e6e4906d4b..ea54c8b3f6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -1,6 +1,9 @@ +import "./Predef.mls" import "./Option.mls" import "./StrOps.mls" +open Predef +open StrOps open Option module Block with... @@ -18,8 +21,10 @@ type Literal = null | undefined | Str | Int | Num | Bool type ParamList = Array[Symbol] -class Arg(val spread: Opt[Bool], val value: Path) - +// Classes defined in Block.scala + +class Arg(val spread: Opt[Bool], val value: Path) + class Case with constructor Lit(val lit: Literal) @@ -43,20 +48,18 @@ class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused - FunDefn(val sym: Symbol, val params: ParamList, val body: Block, val stage: Bool) + FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused -class Arm(val cse: Case, val body: Block) - class Block with constructor - Match(val scrut: Path, val arms: Array[Arm], val dflt: Opt[Block], val rest: Block) + Match(val scrut: Path, val arms: Array[[Case, Block]], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) End() - + fun concat(b1: Block, b2: Block) = if b1 is Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, concat(rest, b2)) Return(res, implct) then b2 // discard return? @@ -64,78 +67,112 @@ fun concat(b1: Block, b2: Block) = if b1 is Define(defn, rest) then Define(defn, concat(rest, b2)) End() then b2 -fun showSymbol(s) = s.name +fun showBool(b: Bool) = if b then "true" else "false" -fun showLiteral(l) = +fun showLiteral(l: Literal) = if l is undefined then "undefined" - _ then l.toString() - -fun showPath(p) = + null then "null" + else l.toString() + +fun showSymbol(s: Symbol) = + // console.log("printing " + s) + if s is + ClassSymbol(name, args) then + "ClassSymbol(" + "\"" + name + "\"" + + if args + is Some(args) then ":[" + args.map(showSymbol).join(", ") + "]" + is None then "" + + ")" + _ then "Symbol(" + "\"" + s.name + "\"" + ")" + +fun showIdent(i: Ident) = showSymbol(i) + +fun showPath(p: Path): Str = if p is - Select(qual, name) then showPath(qual) + "." + showSymbol(name) - DynSelect(qual, fld, idx) then showPath(qual) + "[" + showPath(fld) + "]" - ValueRef(s) then showSymbol(s) - ValueLit(l) then showLiteral(l) - _ then "" - -fun showArg(a) = - (if a.spread is Some(true) then "..." else "") + showPath(a.value) - -fun showArgs(args) = - args.map(showArg) + Select(qual, name) then + "Select(" + showPath(qual) + ", " + showIdent(name) + ")" + DynSelect(qual, fld, arrayIdx) then + "DynSelect(" + showPath(qual) + ", " + showPath(fld) + ", " + showBool(arrayIdx) + ")" + ValueRef(l) then + "Ref(" + showSymbol(l) + ")" + ValueLit(lit) then + "Lit(" + showLiteral(lit) + ")" + +fun showArg(arg: Arg) = + if arg.spread is Some(true) then "..." + showPath(arg.value) + else showPath(arg.value) + +fun showArgs(args: Array[Arg]) = + "[" + args.map(showArg).join(", ") + "]" + +// Case (match arm patterns) +fun showCase(c: Case): Str = + if c is + Lit(lit) then "Lit(" + showLiteral(lit) + ")" + Cls(cls, path) then "Cls(" + showSymbol(cls) + ", " + showPath(path) + ")" + Tup(len) then "Tup(" + len + ")" -fun showResult(r) = +fun showResult(r: Result): Str = if r is - Call(f, args) then showPath(f) + "(" + showArgs(args) + ")" - Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" - Tuple(elems) then "[" + showArgs(elems) + "]" Path then showPath(r) + Call(f, args) then "Call(" + showPath(f) + ", " + showArgs(args) + ")" + Instantiate(cls, args) then "Instantiate(" + showPath(cls) + ", " + showArgs(args) + ")" + Tuple(elems) then "Tuple(" + showArgs(elems) + ")" -fun showCase(c) = - if c is - Lit(l) then showLiteral(l) - Cls(cls, p) then showSymbol(cls) + "(" + showPath(p) + ")" - Tup(len) then "Tuple" - _ then "_" - -fun showArm(a) = - showCase(a.cse) + " then " + showBlock(a.body) - -fun showParamsOpt(p) = - if p is - Some(s) then showParams(s) - None then "()" - -fun showParams(p: ParamList) = - "(" + p.map(showSymbol).join(", ") + ")" +fun showParamList(ps: ParamList) = + "[" + ps.map(s => showSymbol(s)).join(", ") + "]" -fun showDefn(d) = +fun showDefn(d: Defn): Str = if d is ValDefn(sym, rhs) then - "let " + showSymbol(sym) + " = " + showPath(rhs) - FunDefn(sym, params, body, stage) then - "fun " + showSymbol(sym) + "(" + params.map(showSymbol) + ") =" + - (if body is Return(_, _) then " " else "\n ") + showBlock(body) - ClsLikeDefn(sym, paramsOpt, _) then - "class " + showSymbol(sym) + showParamsOpt(paramsOpt) - -fun showBlock(b) = + "ValDefn(" + showSymbol(sym) + ", " + showPath(rhs) + ")" + FunDefn(sym, params, body) then + "FunDefn(" + showSymbol(sym) + ", " + + showParamList(params) + ", " + + showBlock(body) + ")" + ClsLikeDefn(sym, paramsOpt, companion) then + // TODO: print rest of the arguments + "ClsLikeDefn(" + showSymbol(sym) + ", " + + if paramsOpt is + Some(params) then "(" + showParamList(params) + ")" + None then "()" + + ", " + + "TODO" + ")" + +fun showOptBlock(ob: Opt[Block]) = + if ob is Some(b) then showBlock(b) else "None" + +fun showArm(pair: Case -> Block) = + if pair is [cse, body] then showCase(cse) + " -> " + showBlock(body) else "" + +fun showBlock(b: Block): Str = if b is - Assign(lhs, rhs, rest) then - "let " + showSymbol(lhs) + " = " + showResult(rhs) + "\n" + showBlock(rest) - Define(d, rest) then - showDefn(d) + "\n" + showBlock(rest) - Return(res, _) then - showResult(res) Match(scrut, arms, dflt, rest) then - "if " + showPath(scrut) + " is\n" - + arms.map(showArm).join("\n") + - (if dflt is Some(db) then "\nelse " + showBlock(db) else "") + - "\n" + showBlock(rest) - End() then "" - x then x - -fun printCode(p: Block) = - let s = showBlock(p) in - console.log(s) + "Match(" + + showPath(scrut) + ", " + + "[" + arms.map(showArm).join(", ") + "], " + + showOptBlock(dflt) + ", " + + showBlock(rest) + ")" + Return(res, implct) then + "Return(" + showResult(res) + ", " + showBool(implct) + ")" + Assign(lhs, rhs, rest) then + "Assign(" + showSymbol(lhs) + ", " + showResult(rhs) + ", " + showBlock(rest) + ")" + Define(defn, rest) then + "Define(" + showDefn(defn) + ", " + showBlock(rest) + ")" + End() then "End" + +fun show(x) = + if x is + Symbol then showSymbol(x) + Path then showPath(x) + Result then showResult(x) + Case then showCase(x) + Defn then showDefn(x) + Block then showBlock(x) + else + "" + +fun printCode(x) = print(show(x)) + +fun compile(p: Block) = ??? \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index a907b98bc4..21e4d1e5aa 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -3,7 +3,6 @@ //│ Block = class Block { //│ Symbol: fun Symbol { class: class Symbol }, -//│ ClassSymbol: fun ClassSymbol { class: class ClassSymbol }, //│ Arg: fun Arg { class: class Arg }, //│ Case: class Case, //│ Lit: fun Lit { class: class Lit }, @@ -23,7 +22,6 @@ //│ ClsLikeDefn: fun ClsLikeDefn { class: class ClsLikeDefn }, //│ FunDefn: fun FunDefn { class: class FunDefn }, //│ ClsLikeBody: fun ClsLikeBody { class: class ClsLikeBody }, -//│ Arm: fun Arm { class: class Arm }, //│ Block: class Block, //│ Match: fun Match { class: class Match }, //│ Return: fun Return { class: class Return }, @@ -32,42 +30,7 @@ //│ End: fun End { class: class End } //│ } //│ ShapeSet = class ShapeSet { ShapeSet: fun ShapeSet { class: class ShapeSet } } -import "../../mlscript-compile/Option.mls" -open Option -Block.printCode(Block.Return(Block.ValueLit(1),false)) -//│ > 1 - -Block.printCode(Block.Define(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.ValueRef(Block.Symbol("x"))), false), Block.Return(Block.ValueRef(Block.Symbol("x"))), false)) -//│ > fun f(x) = x -//│ > x - -Block.printCode( - Block.Define( - Block.ClsLikeDefn(Block.Symbol("C"), Some([Block.Symbol("x"), Block.Symbol("y")]), None), - Block.Assign( - Block.Symbol("x"), - Block.Instantiate( - Block.ValueRef(Block.Symbol("C")), [Block.Arg(Some(false), Block.ValueLit("1")), Block.Arg(Some(false), Block.ValueLit("2"))] - ), - Block.Return( - Block.Select(Block.ValueRef(Block.Symbol("x")), Block.Symbol("y")) - false - ) - ) - ) -) -//│ > class C(x, y) -//│ > let x = new C(1,2) -//│ > x.y - -Block.printCode(Block.Return(Block.Tuple([Block.Arg(None, Block.ValueLit(1)), Block.Arg(None, Block.ValueLit(2))]), false)) -//│ > [1,2] - -Block.printCode(Block.Match(Block.ValueLit(2), [Block.Arm(Block.Lit(1), Block.Return(Block.ValueLit(1), false)), Block.Arm(Block.Lit(2), Block.Return(Block.ValueLit(2), false))], Some(Block.Return(Block.ValueLit(3), false)), Block.End())) -//│ > if 2 is -//│ > 1 then 1 -//│ > 2 then 2 -//│ > else 3 -//│ > +Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.ValueLit(1), false))) +//│ > FunDefn(Symbol("f"), [Symbol("x")], Return(Lit(1), false)) From ff58a1ab503b365a7c209f8fe0ab843315bec107 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 27 Nov 2025 22:03:46 +0800 Subject: [PATCH 190/654] Reapply "Merge remote-tracking branch 'origin/instrument' into instrument" This reverts commit a3925e5da38dfbb0b92d9a0ddf59aee45ccabedf. --- .../scala/hkmc2/codegen/Instrumentation.scala | 148 +++++++++--------- .../src/test/mlscript-compile/Block.mls | 16 +- .../src/test/mlscript-compile/ShapeSet.mls | 6 + .../src/test/mlscript/staging/Functions.mls | 8 +- 4 files changed, 91 insertions(+), 87 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 6b0d15f74c..f6ffb6fde5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -129,6 +129,8 @@ class InstrumentationImpl(using State): def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = blockCall("concat", Ls(p1, p2))(k) + def fnPruneBadArms(arms: Path)(k: Path => Block): Block = + shapeSetCall("pruneBadArms", Ls(arms))(k) def fnMrg(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("mrg", Ls(s1, s2))(s => k(ShapeSet(s))) def fnSel(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = @@ -137,18 +139,15 @@ class InstrumentationImpl(using State): shapeSetCall("filter", Ls(s1, s2))(s => k(ShapeSet(s))) def fnUnion(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("union", Ls(s1, s2))(s => k(ShapeSet(s))) - def fnFlat(s: Ls[ShapeSet])(k: ShapeSet => Block): Block = - tuple(s): tup => - shapeSetCall("flat", Ls(tup))(s => k(ShapeSet(s))) // transformation helpers - def transformSymbol[S <: Symbol](sym: S)(k: Path => Block): Block = + def transformSymbol[S <: Symbol](sym: S, symName: Str = "sym")(k: Path => Block): Block = sym match case clsSym: ClassSymbol => - stageParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => - blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt))(k) - case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), "sym")(k) + transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => + blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt), symName)(k) + case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match @@ -157,78 +156,77 @@ class InstrumentationImpl(using State): // instrumentation rules - def ruleLit(l: Value.Lit)(k: StagedPath => Block): Block = + def ruleLit(l: Value.Lit, symName: String = "lit")(k: StagedPath => Block): Block = shapeLit(l): sp => blockCtor("ValueLit", Ls(l)): cde => - StagedPath(sp, cde, "lit")(k) + StagedPath(sp, cde, symName)(k) // not in formalization - def ruleVar(r: Value.Ref)(k: StagedPath => Block): Block = + def ruleVar(r: Value.Ref, symName: String = "var")(k: StagedPath => Block): Block = val Value.Ref(l, disamb) = r transformSymbol(disamb.getOrElse(l)): sym => blockCtor("ValueRef", Ls(sym)): cde => // variable defined outside of scope, may be a reference to a class shapeDyn(): sp => - StagedPath(sp, cde, "var")(k) + StagedPath(sp, cde, symName)(k) - def ruleTup(t: Tuple)(using Context)(k: StagedPath => Block): Block = + def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => shapeArr(xs.map(_.shapes)): sp => tuple(xs.map(_.code)): codes => blockCtor("Tuple", Ls(codes)): cde => - StagedPath(sp, cde, "tup")(k) + StagedPath(sp, cde, symName)(k) - def ruleSel(s: Select)(using Context)(k: StagedPath => Block): Block = + def ruleSel(s: Select, symName: String = "sel")(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => shapeLit(toValue(name)): n => fnSel(x.shapes, n): sp => blockCtor("Symbol", Ls(toValue(name))): name => blockCtor("Select", Ls(x.code, name)): cde => - StagedPath(sp, cde, "sel")(k) + StagedPath(sp, cde, symName)(k) - def ruleDynSel(d: DynSelect)(using Context)(k: StagedPath => Block): Block = + def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: StagedPath => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => fnSel(x.shapes, y.shapes): sp => blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => - StagedPath(sp, cde, "dynsel")(k) + StagedPath(sp, cde, symName)(k) - def ruleInst(i: Instantiate)(using Context)(k: StagedPath => Block): Block = + def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => - tuple(xs.map(_.shapes)): shapes => - val sym = cls match - // TODO: if class is staged, we can just use Symbol without storing the arguments - case Value.Ref(l, S(disamb)) => transformSymbol(disamb) - case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) - case _ => transformSymbol(TempSymbol(N, "TODO")) - sym: sym => - shapeClass(sym, xs.map(_.shapes)): sp => - // reuse instrumentation logic, shape of cls is discarded - // possible to skip this? this uses ruleVar, which is not in formalization - transformPath(cls): cls => - tuple(xs.map(_.code)): codes => - blockCtor("Instantiate", Ls(cls.code, codes)): cde => - StagedPath(sp, cde, "inst")(k) - - def ruleReturn(r: Return)(using Context)(k: (StagedPath, Context) => Block): Block = + val sym = cls match + // TODO: if class is staged, we can just use Symbol without storing the arguments + case Value.Ref(l, S(disamb)) => transformSymbol(disamb) + case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) + case _ => transformSymbol(TempSymbol(N, "TODO")) + sym: sym => + shapeClass(sym, xs.map(_.shapes)): sp => + // reuse instrumentation logic, shape of cls is discarded + // possible to skip this? this uses ruleVar, which is not in formalization + transformPath(cls): cls => + tuple(xs.map(_.code)): codes => + blockCtor("Instantiate", Ls(cls.code, codes)): cde => + StagedPath(sp, cde, symName)(k) + + def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code, toValue(false))): cde => - StagedPath(x.shapes, cde, "return")(k(_, summon)) + StagedPath(x.shapes, cde, symName)(k(_, summon)) - def ruleMatch(m: Match)(using Context)(k: (StagedPath, Context) => Block): Block = + def ruleMatch(m: Match, symName: String = "match")(using Context)(k: (StagedPath, Context) => Block): Block = val Match(p, ks, dflt, rest) = m transformPath(p): x => ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => fnMrg(stagedMatch.shapes, z.shapes): sp => fnConcat(stagedMatch.code, z.code): cde => - StagedPath(sp, cde)(k(_, ctx2)) + StagedPath(sp, cde, symName)(k(_, ctx2)) - def ruleAssign(a: Assign)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a transformResult(r): y => transformSymbol(x): xSym => @@ -243,7 +241,7 @@ class InstrumentationImpl(using State): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath(z.shapes, cde, "assign")(k(_, ctx)) + StagedPath(z.shapes, cde, symName)(k(_, ctx)) case N => StagedPath(y.shapes, xStaged): x2 => // propagate shape information for future references to x @@ -251,9 +249,9 @@ class InstrumentationImpl(using State): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath(z.shapes, cde, "assign")(k(_, ctx)) + StagedPath(z.shapes, cde, symName)(k(_, ctx)) - def ruleLet(x: BlockMemberSymbol, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = shapeBot(): bot => transformSymbol(x): xSym => StagedPath(bot, xSym): y => @@ -262,12 +260,12 @@ class InstrumentationImpl(using State): transformBlock(b): (z, ctx) => blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => - StagedPath(z.shapes, cde, "_let")(k(_, summon)) + StagedPath(z.shapes, cde, symName)(k(_, summon)) - def ruleEnd()(k: StagedPath => Block): Block = + def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = shapeBot(): sp => blockCtor("End", Ls()): cde => - StagedPath(sp, cde, "end")(k) + StagedPath(sp, cde, symName)(k) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) @@ -276,19 +274,22 @@ class InstrumentationImpl(using State): assert(cls.companion.isEmpty, "nested module not supported") (Define(cls, _)): transformBlock(rest): p => - transformSymbol(cls.sym): c => - stageParamsOpt(cls.paramsOpt): paramsOpt => + transformParamsOpt(cls.paramsOpt): paramsOpt => + transformSymbol(cls.isym): c => optionNone(): none => // TODO: handle companion object - blockCtor("ClsLikeDefn", Ls(c, paramsOpt, none)): cls => + blockCtor("ClsLikeDefn", Ls(c, none)): cls => blockCtor("Define", Ls(cls, p.code))(k) - def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block])(using Context)(k: (StagedPath, Context) => Block): Block = + def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (StagedPath, Context) => Block): Block = arms.map((cse, block) => (f: StagedPath => Context => Block) => (ruleBranch(x, p, cse, block)(using _)).flip(f(_)(_))) .collectApply .pipe(_.flip(summon)): arms => ctx => - fnFlat(arms.map(_.shapes)): sp => - tuple(arms.map(_.code)): arms => + tuple(arms.map(_.p)): tup => + fnPruneBadArms(tup): res => + val result = StagedPath(res) + val sp = result.shapes + val arms = result.code blockCtor("End", Ls()): e => // TODO: use transformOption here def dfltStaged(k: (Path, Context) => Block) = dflt match @@ -297,30 +298,29 @@ class InstrumentationImpl(using State): case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath(sp, m, "branches")(k(_, ctx)) + StagedPath(sp, m, symName)(k(_, ctx)) - def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformCase(cse): cse => fnFilter(x.shapes, cse): sp => - StagedPath(sp, x.code): x0 => - call(x0.shapes.p.selSN("isEmpty"), Ls()): scrut => - ruleEnd(): e => - tuple(Ls(cse, e.code)): armStaged => - // returns Case -> Block, instead of End as in formalization - StagedPath(e.shapes, armStaged): badArm => - val arm = Case.Lit(Tree.BoolLit(true)) -> k(badArm, ctx) - (Match(scrut, Ls(arm), N, _)): - given Context = ctx.clone() += p -> x0 - transformBlock(b): (y1, ctx) => - // TODO: use Arm type instead of Tup - tuple(Ls(cse, y1.code)): cde => - StagedPath(y1.shapes, cde, "branch")(k(_, ctx.clone() -= p)) - - // not in formalization - // this partially applies rules from filter to account for difference in Block.Case and Match pattern in the formalization - // to avoid defining the `_` pattern in Block.Case, we use the fact that filter(s, _) = s + call(sp.p.selSN("isEmpty"), Ls()): scrut => + ruleEnd(): e => + val res = new TempSymbol(N, "tmp") + val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) + val dflt = + StagedPath(sp, x.code): x0 => + given Context = ctx.clone() += p -> x0 + transformBlock(b): (y1, ctx) => + // TODO: use Arm type instead of Tup + tuple(Ls(cse, y1.code)): cde => + StagedPath(y1.shapes, cde, symName): ret => + Assign(res, ret.p, End()) + (Match(scrut, Ls(arm), S(dflt), _)): + k(StagedPath(Value.Ref(res)), ctx.clone() -= p) + + // this partially applies rules from filter to account for difference between Block.Case and Match pattern in the formalization + // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = - // when pattern = _, x0 = x call(x.shapes.p.selSN("isEmpty"), Ls()): scrut => val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(p => Return(p.p, false)) (Match(scrut, Ls(arm), N, _)): @@ -359,11 +359,11 @@ class InstrumentationImpl(using State): def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = args.map(transformArg).collectApply(k) - def stageParamList(ps: ParamList)(k: Path => Block) = + def transformParamList(ps: ParamList)(k: Path => Block) = ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) - def stageParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = - transformOption(pOpt, stageParamList)(k) + def transformParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = + transformOption(pOpt, transformParamList)(k) def transformCase(cse: Case)(using Context)(k: Path => Block): Block = cse match @@ -427,7 +427,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case d @ Define(defn, rest) => defn match // find modules with staged annotation - case c: ClsLikeDefn if c.companion.isDefined => + case c: ClsLikeDefn if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index ea54c8b3f6..dd02e04171 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -12,16 +12,14 @@ type Opt[A] = Option[A] // dependancies referenced in Block classes, referencing implementation in Term.mls -class Symbol(val name: Str) -type Ident = Symbol -// this is so that we're able to retrieve information about the class from the symbol -class ClassSymbol(val name: Str, val args: Opt[Array[Symbol]]) extends Symbol(name) - type Literal = null | undefined | Str | Int | Num | Bool type ParamList = Array[Symbol] -// Classes defined in Block.scala +class Symbol(val name: Str) +type Ident = Symbol +// this is so that we're able to retrieve information about the class from the symbol +class ClassSymbol(val name: Str, val paramsOpt: Opt[ParamList]) extends Symbol(name) class Arg(val spread: Opt[Bool], val value: Path) @@ -29,7 +27,7 @@ class Case with constructor Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) - Tup(val len: Int) // TODO: remove inf? + Tup(val len: Int) class Result with constructor @@ -47,8 +45,8 @@ class Path extends Result with class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) - ClsLikeDefn(val sym: Symbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused - FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) + ClsLikeDefn(val sym: ClassSymbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused + FunDefn(val sym: Symbol, val params: ParamList, val body: Block, val stage: Bool) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index ed97d00cb1..7ed0f5c60e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -78,3 +78,9 @@ fun sel(s1: ShapeSet, s2: ShapeSet) = fun mrg(s1: ShapeSet, s2: ShapeSet) = mkDyn() // TODO + +open Block { Block } + +fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = + val rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) + [flat(rem.map(_.0)), rem.map(_.1)] diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 6db1604147..cdfd7583c8 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -106,20 +106,20 @@ staged module Expressions with :staging class Outside(a) staged module ClassInstrumentation with - class Class(a, b) + class Inside(a, b) class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg //│ > class NoArg() //│ > -//│ > class Class(a, b) +//│ > class Inside(a, b) //│ > //│ > Class(Outside, [Lit(1)]) //│ > new Outside(1) //│ > Class(NoArg, []) //│ > new ClassInstrumentation.NoArg() -// collision with class name? +// debug printing fails, collision with class name? :js :staging :fixme @@ -128,7 +128,7 @@ staged module A with fun f() = 1 //│ ═══[RUNTIME ERROR] TypeError: A1.f_gen is not a function -// unable to reference the class when calling the instrumented function for debugging +// debug printing fails, unable to reference the class when calling the instrumented function :js :staging :fixme From 50b6fd531421a550eae1600c804f7460e189d546 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 27 Nov 2025 22:04:31 +0800 Subject: [PATCH 191/654] fix static impl --- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 223940c38c..4d67c40aa4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -81,7 +81,7 @@ fun static(s: Shape) = if s is Dyn then false Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? - Class(_, params) then params.every(static(_.1)) + Class(_, params) then params.every(static) Arr(shapes) then shapes.every(static) open Block { Case } From 087c9604653b50b6d95cfbe15188f4b49a2645da Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 26 Nov 2025 23:09:28 +0800 Subject: [PATCH 192/654] add inf back to Tup still need a test case for it --- .../scala/hkmc2/codegen/Instrumentation.scala | 24 ++-- .../src/test/mlscript-compile/Block.mls | 4 +- .../src/test/mlscript-compile/Shape.mls | 33 +++-- .../src/test/mlscript-compile/ShapeSet.mls | 4 +- .../src/test/mlscript/staging/Functions.mls | 120 +++++------------- 5 files changed, 68 insertions(+), 117 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f6ffb6fde5..f7fe3c7631 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -120,9 +120,9 @@ class InstrumentationImpl(using State): shapeSetCall("mkDyn", Ls())(s => k(ShapeSet(s))) def shapeLit(p: Path)(k: ShapeSet => Block): Block = shapeSetCall("mkLit", Ls(p))(s => k(ShapeSet(s))) - def shapeArr(ps: Ls[ShapeSet])(k: ShapeSet => Block): Block = + def shapeArr(ps: Ls[ShapeSet], inf: Bool)(k: ShapeSet => Block): Block = tuple(ps, "test"): tup => - shapeSetCall("mkArr", Ls(tup))(s => k(ShapeSet(s))) + shapeSetCall("mkArr", Ls(tup, toValue(inf)))(s => k(ShapeSet(s))) def shapeClass(cls: Path, params: Ls[ShapeSet])(k: ShapeSet => Block): Block = tuple(params): params => shapeSetCall("mkClass", Ls(cls, params))(s => k(ShapeSet(s))) @@ -173,8 +173,8 @@ class InstrumentationImpl(using State): def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => - shapeArr(xs.map(_.shapes)): sp => - tuple(xs.map(_.code)): codes => + shapeArr(xs.map(_._1.shapes), xs.exists(_._2)): sp => + tuple(xs.map(_._1.code)): codes => blockCtor("Tuple", Ls(codes)): cde => StagedPath(sp, cde, symName)(k) @@ -204,11 +204,11 @@ class InstrumentationImpl(using State): case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) case _ => transformSymbol(TempSymbol(N, "TODO")) sym: sym => - shapeClass(sym, xs.map(_.shapes)): sp => + shapeClass(sym, xs.map(_._1.shapes)): sp => // reuse instrumentation logic, shape of cls is discarded // possible to skip this? this uses ruleVar, which is not in formalization transformPath(cls): cls => - tuple(xs.map(_.code)): codes => + tuple(xs.map(_._1.code)): codes => blockCtor("Instantiate", Ls(cls.code, codes)): cde => StagedPath(sp, cde, symName)(k) @@ -348,15 +348,15 @@ class InstrumentationImpl(using State): case c: Call => ??? case _ => ??? // not supported - def transformArg(a: Arg)(using Context)(k: StagedPath => Block): Block = + def transformArg(a: Arg)(using Context)(k: ((StagedPath, Bool)) => Block): Block = val Arg(spread, value) = a - optionNone(): opt => + transformOption(spread, bool => assign(toValue(bool))): spreadStaged => transformPath(value): value => - blockCtor("Arg", Ls(opt, value.code)): cde => - StagedPath(value.shapes, cde)(k) + blockCtor("Arg", Ls(spreadStaged, value.code)): cde => + StagedPath(value.shapes, cde): res => + k(res, spread.isDefined) - // provides list of shapes and list of codes to continuation - def transformArgs(args: Ls[Arg])(using Context)(k: Ls[StagedPath] => Block): Block = + def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(StagedPath, Bool)] => Block): Block = args.map(transformArg).collectApply(k) def transformParamList(ps: ParamList)(k: Path => Block) = diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index dd02e04171..9fd280b9ff 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -27,7 +27,7 @@ class Case with constructor Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) - Tup(val len: Int) + Tup(val len: Int, val inf: Bool) class Result with constructor @@ -109,7 +109,7 @@ fun showCase(c: Case): Str = if c is Lit(lit) then "Lit(" + showLiteral(lit) + ")" Cls(cls, path) then "Cls(" + showSymbol(cls) + ", " + showPath(path) + ")" - Tup(len) then "Tup(" + len + ")" + Tup(len, inf) then "Tup(" + len + ", " + inf + ")" fun showResult(r: Result): Str = if r is diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 4d67c40aa4..ed1e3483fe 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -28,31 +28,32 @@ class Shape with constructor Dyn() Lit(val l: Literal) - Arr(val shapes: Array[Shape]) + Arr(val shapes: Array[Shape], val inf: Bool) Class(val sym: ClassSymbol, val params: Array[Shape]) fun show(s: Shape) = if s is Dyn then "Dyn" Lit(lit) then "Lit(" + Block.showLiteral(lit) + ")" - Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" + Arr(shapes, inf) then "Arr([" + shapes.map(show).join(", ") + "], " + inf + ")" Class(sym, params) then "Class(" + showSymbol(sym) + ", [" + params.map(show).join(", ") + "])" fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = a.map((a, i, _) => mrg2(a, b.at(i))) -fun mrg2(s1: Shape, s2: Shape) = if s1 - == s2 then s1 - is - Lit(l) and s2 is Class(sym, params) +fun mrg2(s1: Shape, s2: Shape) = + // we want different objects with same parameters to be equal + if show(s1) == show(s2) then s1 + else if [s1, s2] is + [Lit(l), Class(sym, params)] and isPrimitiveTypeOf(sym, l) then Class(sym, params) - Class(sym1, ps) and s2 is Class(sym2, s2) + [Class(sym1, ps), Class(sym2, s2)] and sym1.name == sym2.name then Class(sym1, ps.map(p => [p.0, zipMrg(p.1, s2)])) - Arr(s1) and s2 is Arr(s2) + [Arr(s1, false), Arr(s2, false)] and s1.length == s2.length - then Arr(zipMrg(s1, s2)) + then Arr(zipMrg(s1, s2), false) else Dyn() fun mrg(s1: Array[Shape]) = @@ -67,10 +68,11 @@ fun sel(s1: Shape, s2: Shape): Array[Shape] = is i then [params.(i)] [Dyn, Lit(n)] and n is Str then [Dyn()] - [Arr(shapes), Lit(n)] and n is Int + [Arr(shapes, false), Lit(n)] and n is Int then [shapes.(n)] - [Arr(shapes), Dyn] then + [Arr(shapes, false), Dyn] then shapes + [Arr(shapes, true), _] then [Dyn()] // TODO [Dyn, Lit(n)] and n is Int then [Dyn()] [Dyn, Dyn] @@ -82,7 +84,8 @@ fun static(s: Shape) = Dyn then false Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? Class(_, params) then params.every(static) - Arr(shapes) then shapes.every(static) + Arr(shapes, false) then shapes.every(static) + Arr(shapes, true) then false // TODO open Block { Case } @@ -91,13 +94,15 @@ fun silh(p: Case): Shape = if p is Block.Cls(sym, path) then val size = if sym.args is Some(i) then i else 0 Class(sym, Array(size).fill(Dyn)) - Block.Tup(n) then Arr(Array(n).fill(Dyn)) + Block.Tup(n, inf) then Arr(Array(n).fill(Dyn), inf) fun filter(s: Shape, p: Case): Array[Shape] = if [s, p] is [Lit(l1), Block.Lit(l2)] and l1 == l2 then [s] [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] - [Arr(ls), Block.Tup(n)] and ls.length == n then [s] + [Arr(ls, false), Block.Tup(n, false)] and ls.length == n then [s] + [Arr(ls, true), _] then [s] // TODO + [_, Block.Tup(ls, true)] then [s] // TODO [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [s] [Dyn, _] then [silh(p)] else [] diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 7ed0f5c60e..f11d334b50 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -54,11 +54,11 @@ fun mkDyn() = lift(Dyn()) fun mkLit(l) = lift(Lit(l)) -fun mkArr(shapes: Array[ShapeSet]) = +fun mkArr(shapes: Array[ShapeSet], inf: Bool) = shapes .map(_.underlying.values().toArray()) |> prod - .map(x => Arr(x)) + .map(x => Arr(x, inf)) |> liftMany fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index cdfd7583c8..74f7239fe9 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -1,40 +1,7 @@ -:js -:staging - -//│ Block = class Block { -//│ Symbol: fun Symbol { class: class Symbol }, -//│ ClassSymbol: fun ClassSymbol { class: class ClassSymbol }, -//│ Arg: fun Arg { class: class Arg }, -//│ Case: class Case, -//│ Lit: fun Lit { class: class Lit }, -//│ Cls: fun Cls { class: class Cls }, -//│ Tup: fun Tup { class: class Tup }, -//│ Result: class Result, -//│ Call: fun Call { class: class Call }, -//│ Instantiate: fun Instantiate { class: class Instantiate }, -//│ Tuple: fun Tuple { class: class Tuple }, -//│ Path: class Path, -//│ Select: fun Select { class: class Select }, -//│ DynSelect: fun DynSelect { class: class DynSelect }, -//│ ValueRef: fun ValueRef { class: class ValueRef }, -//│ ValueLit: fun ValueLit { class: class ValueLit }, -//│ Defn: class Defn, -//│ ValDefn: fun ValDefn { class: class ValDefn }, -//│ ClsLikeDefn: fun ClsLikeDefn { class: class ClsLikeDefn }, -//│ FunDefn: fun FunDefn { class: class FunDefn }, -//│ ClsLikeBody: fun ClsLikeBody { class: class ClsLikeBody }, -//│ Arm: fun Arm { class: class Arm }, -//│ Block: class Block, -//│ Match: fun Match { class: class Match }, -//│ Return: fun Return { class: class Return }, -//│ Assign: fun Assign { class: class Assign }, -//│ Define: fun Define { class: class Define }, -//│ End: fun End { class: class End } -//│ } -//│ ShapeSet = class ShapeSet { ShapeSet: fun ShapeSet { class: class ShapeSet } } -:slot :js +:staging +val x = [1, 2, 3] staged module Expressions with fun lit() = 1 fun assign() = @@ -44,63 +11,38 @@ staged module Expressions with fun _var() = val x = 1 x - fun tup() = [1, 2] + fun tup1() = [1, 2] + fun tup2() = [1, ..x] fun dynsel() = [1].(0) - fun match() = + fun match1() = if 9 is 8 then 1 9 then 2 Int then 3 Bool then 4 + else 0 + fun match2() = + if [...x] is + [] then 1 // [1, 2] then 5 // TODO: Case.Tup, needs handling for Label, Break else 0 -//│ Pretty Lowered: -//│ -//│ define staged class Expressions in -//│ set tmp = Expressions.lit_gen() in -//│ set tmp1 = shapeSet.printShapeSet(tmp.(0)) in -//│ set tmp2 = Block.printCode(tmp.(1)) in -//│ set tmp3 = Expressions.assign_gen() in -//│ set tmp4 = shapeSet.printShapeSet(tmp3.(0)) in -//│ set tmp5 = Block.printCode(tmp3.(1)) in -//│ set tmp6 = Expressions._var_gen() in -//│ set tmp7 = shapeSet.printShapeSet(tmp6.(0)) in -//│ set tmp8 = Block.printCode(tmp6.(1)) in -//│ set tmp9 = Expressions.tup_gen() in -//│ set tmp10 = shapeSet.printShapeSet(tmp9.(0)) in -//│ set tmp11 = Block.printCode(tmp9.(1)) in -//│ set tmp12 = Expressions.dynsel_gen() in -//│ set tmp13 = shapeSet.printShapeSet(tmp12.(0)) in -//│ set tmp14 = Block.printCode(tmp12.(1)) in -//│ set tmp15 = Expressions.match_gen() in -//│ set tmp16 = shapeSet.printShapeSet(tmp15.(0)) in -//│ set tmp17 = Block.printCode(tmp15.(1)) in -//│ set block$res2 = undefined in -//│ end //│ > Lit(1) -//│ > 1 +//│ > Return(Lit(1), false) //│ > Lit(42) -//│ > let x = 42 -//│ > let y = x -//│ > y +//│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) //│ > Dyn -//│ > let x = undefined -//│ > let x = 1 -//│ > x +//│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) //│ > Arr(Lit(1), Lit(2)) -//│ > [1,2] +//│ > Return(Tuple([Lit(1), Lit(2)]), false) +//│ > Arr(Lit(1), Dyn) +//│ > Return(Tuple([Lit(1), Ref(Symbol("x"))]), false) //│ > Lit(1) -//│ > let tmp = [1] -//│ > tmp[0] +//│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) +//│ > Dyn +//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(9) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End)) //│ > Dyn -//│ > let scrut = 9 -//│ > if scrut is -//│ > _ then undefined -//│ > _ then undefined -//│ > _ then undefined -//│ > _ then undefined -//│ > else 0 -//│ > +//│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [], Return(Lit(0), false), End)) +//│ x = [1, 2, 3] :js :staging @@ -110,14 +52,12 @@ staged module ClassInstrumentation with class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg -//│ > class NoArg() -//│ > -//│ > class Inside(a, b) -//│ > -//│ > Class(Outside, [Lit(1)]) -//│ > new Outside(1) -//│ > Class(NoArg, []) -//│ > new ClassInstrumentation.NoArg() +//│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), (), TODO), End) +//│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), (), TODO), End) +//│ > Class(ClassSymbol("Outside":[Symbol("a")]), [Lit(1)]) +//│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) +//│ > Class(ClassSymbol("NoArg"), []) +//│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), Symbol("NoArg")), []), false) // debug printing fails, collision with class name? :js @@ -135,4 +75,10 @@ staged module A with module A with staged module B with fun f() = 1 -//│ /!!!\ Uncaught error: java.lang.AssertionError: assertion failed: nested module not supported +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.76: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.77: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From 302e3103a2b40297dad252d8bb73e386b5e7f527 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 27 Nov 2025 01:02:31 +0800 Subject: [PATCH 193/654] fix showArg printing --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 9fd280b9ff..6f528ed2ec 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -98,8 +98,12 @@ fun showPath(p: Path): Str = "Lit(" + showLiteral(lit) + ")" fun showArg(arg: Arg) = - if arg.spread is Some(true) then "..." + showPath(arg.value) - else showPath(arg.value) + if arg.spread is + Some(true) then "..." + Some(false) then ".." + else "" + + showPath(arg.value) + fun showArgs(args: Array[Arg]) = "[" + args.map(showArg).join(", ") + "]" From 4d8e46c0fa9613c754b9ec487c38a6c5bfec82c6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 27 Nov 2025 01:35:25 +0800 Subject: [PATCH 194/654] add more Tup test cases --- .../scala/hkmc2/codegen/Instrumentation.scala | 22 +++++++++++++++++-- .../src/test/mlscript/staging/Functions.mls | 13 ++++++----- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f7fe3c7631..2e34cd3e75 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -194,6 +194,15 @@ class InstrumentationImpl(using State): blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => StagedPath(sp, cde, symName)(k) + // TODO + def ruleApp(c: Call, symName: String = "app")(using Context)(k: StagedPath => Block): Block = + transformPath(c.fun): fun => + transformArgs(c.args): args => + tuple(args.map(_._1.code)): tup => + shapeDyn(): dyn => + blockCtor("Call", Ls(fun.code, tup)): res => + StagedPath(dyn, res, symName)(k) + def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut, "mutable instantiation not supported") @@ -345,7 +354,7 @@ class InstrumentationImpl(using State): case p: Path => transformPath(p)(k) case t: Tuple => ruleTup(t)(k) case i: Instantiate => ruleInst(i)(k) - case c: Call => ??? + case c: Call => ruleApp(c)(k) case _ => ??? // not supported def transformArg(a: Arg)(using Context)(k: ((StagedPath, Bool)) => Block): Block = @@ -402,6 +411,14 @@ class InstrumentationImpl(using State): ruleEnd(): b => fnPrintCode(p)(k(b, summon)) + // TODO + // discards result of sub + def transformBegin(b: Begin)(using Context)(k: (StagedPath, Context) => Block): Block = + transformBlock(b.sub): (sub, ctx) => + transformBlock(b.rest): (rest, ctx) => + fnConcat(sub.code, rest.code): block => + StagedPath(rest.shapes, block)(k(_, ctx)) + // ruleBlk? def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = transformBlock(b)((p, _) => k(p)) @@ -416,7 +433,8 @@ class InstrumentationImpl(using State): case m: Match => ruleMatch(m)(k) // temporary measure to accept returning an array // use BlockTransformer here? - case Begin(b1, b2) => transformBlock(concat(b1, b2))(k) + case b: Begin => transformBegin(b)(k) + // case Begin(b1, b2) => transformBlock(concat(b1, b2))(k) case _ => ??? // not supported // TODO: rename as InstrumentationTransformer? diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 74f7239fe9..0240b5b0e1 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -24,7 +24,8 @@ staged module Expressions with fun match2() = if [...x] is [] then 1 - // [1, 2] then 5 // TODO: Case.Tup, needs handling for Label, Break + [a, ...] then 2 + // [1, 2] then 5 // TODO: needs handling for Label, Break else 0 //│ > Lit(1) //│ > Return(Lit(1), false) @@ -32,16 +33,16 @@ staged module Expressions with //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) //│ > Dyn //│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) -//│ > Arr(Lit(1), Lit(2)) +//│ > Arr([Lit(1), Lit(2)], false) //│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Arr(Lit(1), Dyn) +//│ > Arr([Lit(1), Dyn], true) //│ > Return(Tuple([Lit(1), Ref(Symbol("x"))]), false) //│ > Lit(1) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) //│ > Dyn //│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(9) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End)) //│ > Dyn -//│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [], Return(Lit(0), false), End)) +//│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Return(Lit(1), false), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Return(Lit(2), false))))], Return(Lit(0), false), End)) //│ x = [1, 2, 3] :js @@ -77,8 +78,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.76: staged module B with +//│ ║ l.77: staged module B with //│ ║ ^^^^^^ -//│ ║ l.77: fun f() = 1 +//│ ║ l.78: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From f3ee1c696f7aa68d74d6d96f67026b4d3f1eadb7 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 27 Nov 2025 01:36:20 +0800 Subject: [PATCH 195/654] formatting --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 1 - 1 file changed, 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 6f528ed2ec..033349c0f2 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -103,7 +103,6 @@ fun showArg(arg: Arg) = Some(false) then ".." else "" + showPath(arg.value) - fun showArgs(args: Array[Arg]) = "[" + args.map(showArg).join(", ") + "]" From c7037957e6bd903723b0a65c1d6ec636d5701bf9 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 27 Nov 2025 22:16:46 +0800 Subject: [PATCH 196/654] fix params type in FunDefn --- .../src/test/mlscript-compile/Block.mls | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 033349c0f2..614936b509 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -45,8 +45,8 @@ class Path extends Result with class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) - ClsLikeDefn(val sym: ClassSymbol, val paramsOpt: Opt[ParamList], val companion: Opt[ClsLikeBody]) // unused - FunDefn(val sym: Symbol, val params: ParamList, val body: Block, val stage: Bool) + ClsLikeDefn(val sym: ClassSymbol, val companion: Opt[ClsLikeBody]) // companion unused + FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block, val stage: Bool) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused @@ -128,18 +128,14 @@ fun showDefn(d: Defn): Str = if d is ValDefn(sym, rhs) then "ValDefn(" + showSymbol(sym) + ", " + showPath(rhs) + ")" - FunDefn(sym, params, body) then + FunDefn(sym, params, body, stage) then "FunDefn(" + showSymbol(sym) + ", " + - showParamList(params) + ", " + - showBlock(body) + ")" - ClsLikeDefn(sym, paramsOpt, companion) then + "(" + params.map(showParamList) + "), " + + showBlock(body) + ", " + + stage + ")" + ClsLikeDefn(sym, companion) then // TODO: print rest of the arguments - "ClsLikeDefn(" + showSymbol(sym) + ", " + - if paramsOpt is - Some(params) then "(" + showParamList(params) + ")" - None then "()" - + ", " + - "TODO" + ")" + "ClsLikeDefn(" + showSymbol(sym) + ", " + "TODO" + ")" fun showOptBlock(ob: Opt[Block]) = if ob is Some(b) then showBlock(b) else "None" From c124135f1ecb7fbc4240f32ae635b698f185f91b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 28 Nov 2025 14:10:38 +0800 Subject: [PATCH 197/654] add Context to ruleEnd --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 2e34cd3e75..3d67daed62 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -271,10 +271,10 @@ class InstrumentationImpl(using State): blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => StagedPath(z.shapes, cde, symName)(k(_, summon)) - def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = + def ruleEnd(symName: String = "end")(using Context)(k: (StagedPath, Context) => Block): Block = shapeBot(): sp => blockCtor("End", Ls()): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(sp, cde, symName)(k(_, summon)) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) @@ -313,7 +313,7 @@ class InstrumentationImpl(using State): transformCase(cse): cse => fnFilter(x.shapes, cse): sp => call(sp.p.selSN("isEmpty"), Ls()): scrut => - ruleEnd(): e => + ruleEnd(): (e, ctx) => val res = new TempSymbol(N, "tmp") val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) val dflt = @@ -331,7 +331,7 @@ class InstrumentationImpl(using State): // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = call(x.shapes.p.selSN("isEmpty"), Ls()): scrut => - val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()(p => Return(p.p, false)) + val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()((p, _) => Return(p.p, false)) (Match(scrut, Ls(arm), N, _)): given Context = ctx.clone() += p -> x transformBlock(b): (y1, ctx) => @@ -408,8 +408,8 @@ class InstrumentationImpl(using State): ruleLet(x, Assign(x, r, d.rest))(k) case c: ClsLikeDefn => ruleCls(c, d.rest): p => - ruleEnd(): b => - fnPrintCode(p)(k(b, summon)) + ruleEnd(): (b, ctx) => + fnPrintCode(p)(k(b, ctx)) // TODO // discards result of sub @@ -429,7 +429,7 @@ class InstrumentationImpl(using State): case r: Return => ruleReturn(r)(k) case a: Assign => ruleAssign(a)(k) case d: Define => transformDefine(d)(k) - case End(_) => ruleEnd()(k2) + case End(_) => ruleEnd()(k) case m: Match => ruleMatch(m)(k) // temporary measure to accept returning an array // use BlockTransformer here? From 45b7b5e71baaba260250061bd5bbbc35b2d97e67 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 28 Nov 2025 16:15:30 +0800 Subject: [PATCH 198/654] uppdate Match rules this implements the rest function that narrows the shape as more match statements are processed --- .../scala/hkmc2/codegen/Instrumentation.scala | 92 ++++++++++--------- .../src/test/mlscript-compile/Shape.mls | 12 +++ .../src/test/mlscript-compile/ShapeSet.mls | 2 + .../src/test/mlscript/staging/Functions.mls | 18 ++-- 4 files changed, 72 insertions(+), 52 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 3d67daed62..c4d8810093 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -137,6 +137,8 @@ class InstrumentationImpl(using State): shapeSetCall("sel", Ls(s1, s2))(s => k(ShapeSet(s))) def fnFilter(s1: ShapeSet, s2: Path)(k: ShapeSet => Block): Block = shapeSetCall("filter", Ls(s1, s2))(s => k(ShapeSet(s))) + def fnRest(s1: ShapeSet, s2: Path)(k: ShapeSet => Block): Block = + shapeSetCall("rest", Ls(s1, s2))(s => k(ShapeSet(s))) def fnUnion(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("union", Ls(s1, s2))(s => k(ShapeSet(s))) @@ -231,7 +233,7 @@ class InstrumentationImpl(using State): transformPath(p): x => ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => - fnMrg(stagedMatch.shapes, z.shapes): sp => + fnUnion(stagedMatch.shapes, z.shapes): sp => fnConcat(stagedMatch.code, z.code): cde => StagedPath(sp, cde, symName)(k(_, ctx2)) @@ -290,52 +292,56 @@ class InstrumentationImpl(using State): blockCtor("Define", Ls(cls, p.code))(k) def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (StagedPath, Context) => Block): Block = - arms.map((cse, block) => (f: StagedPath => Context => Block) => (ruleBranch(x, p, cse, block)(using _)).flip(f(_)(_))) - .collectApply - .pipe(_.flip(summon)): arms => - ctx => - tuple(arms.map(_.p)): tup => - fnPruneBadArms(tup): res => - val result = StagedPath(res) - val sp = result.shapes - val arms = result.code - blockCtor("End", Ls()): e => - // TODO: use transformOption here - def dfltStaged(k: (Path, Context) => Block) = dflt match - case S(dflt) => ruleWildCard(x, p, dflt): (dflt, ctx) => - optionSome(dflt.code)(k(_, ctx)) - case N => optionNone()(k(_, ctx)) - dfltStaged: (dflt, ctx) => - blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath(sp, m, symName)(k(_, ctx)) - - def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def applyRuleBranch(cse: Case, block: Block)(f: StagedPath => (Context, StagedPath) => Block)(ctx: Context, x: StagedPath): Block = + ruleBranch(x, p, cse, block)(using ctx)((y, ctx, x) => f(y)(ctx, x)) + + val a = arms.map(applyRuleBranch).collectApply + ((f: (Ls[StagedPath], Context) => Block) => a(ys => (ctx, _) => f(ys, ctx))(summon, x)): (arms, ctx) => + tuple(arms.map(_.p)): tup => + fnPruneBadArms(tup): res => + val result = StagedPath(res) + val sp = result.shapes + val arms = result.code + blockCtor("End", Ls()): e => + // TODO: use transformOption here + def dfltStaged(k: (Path, Context) => Block) = dflt match + case S(dflt) => ruleWildCard(x, p, dflt): (dflt, ctx) => + optionSome(dflt.code)(k(_, ctx)) + case N => optionNone()(k(_, ctx)) + dfltStaged: (dflt, ctx) => + blockCtor("Match", Ls(x.code, arms, dflt, e)): m => + StagedPath(sp, m, symName)(k(_, ctx)) + + def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using Context)(k: (StagedPath, Context, StagedPath) => Block): Block = transformCase(cse): cse => - fnFilter(x.shapes, cse): sp => - call(sp.p.selSN("isEmpty"), Ls()): scrut => - ruleEnd(): (e, ctx) => - val res = new TempSymbol(N, "tmp") - val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) - val dflt = - StagedPath(sp, x.code): x0 => - given Context = ctx.clone() += p -> x0 - transformBlock(b): (y1, ctx) => - // TODO: use Arm type instead of Tup - tuple(Ls(cse, y1.code)): cde => - StagedPath(y1.shapes, cde, symName): ret => - Assign(res, ret.p, End()) - (Match(scrut, Ls(arm), S(dflt), _)): - k(StagedPath(Value.Ref(res)), ctx.clone() -= p) - - // this partially applies rules from filter to account for difference between Block.Case and Match pattern in the formalization - // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s + fnFilter(x.shapes, cse): filtered => + StagedPath(filtered, x.code): x0 => + fnRest(x.shapes, cse): rest => + StagedPath(rest, x.code): x1 => + call(filtered.p.selSN("isEmpty"), Ls()): scrut => + ruleEnd(): (e, ctx) => + val res = new TempSymbol(N, "tmp") + val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) + transformBlock(b)(using ctx.clone() += p -> x0): (y, ctx) => + // TODO: use Arm type instead of Tup + tuple(Ls(cse, y.code)): cde => + StagedPath(y.shapes, cde, symName): ret => + val dflt = Assign(res, ret.p, End()) + (Match(scrut, Ls(arm), S(dflt), _)): + k(StagedPath(Value.Ref(res)), ctx.clone() -= p, x1) + + // this partially applies rules to account for difference between Block.Case and Match pattern in the formalization + // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s and rest(s, _) = bot def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = call(x.shapes.p.selSN("isEmpty"), Ls()): scrut => - val arm = Case.Lit(Tree.BoolLit(true)) -> ruleEnd()((p, _) => Return(p.p, false)) - (Match(scrut, Ls(arm), N, _)): + ruleEnd(): (e, ctx) => + val res = new TempSymbol(N, "tmp") + val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) given Context = ctx.clone() += p -> x - transformBlock(b): (y1, ctx) => - k(y1, ctx.clone() -= p) + transformBlock(b): (y, ctx) => + val dflt = Assign(res, y.p, End()) + (Match(scrut, Ls(arm), S(dflt), _)): + k(StagedPath(Value.Ref(res)), ctx.clone() -= p) // transformations of Block diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index ed1e3483fe..3f3a34aac1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -96,6 +96,7 @@ fun silh(p: Case): Shape = if p is Class(sym, Array(size).fill(Dyn)) Block.Tup(n, inf) then Arr(Array(n).fill(Dyn), inf) +// TODO: use Option instead, since all of them return at most one shape fun filter(s: Shape, p: Case): Array[Shape] = if [s, p] is [Lit(l1), Block.Lit(l2)] and l1 == l2 then [s] @@ -106,3 +107,14 @@ fun filter(s: Shape, p: Case): Array[Shape] = [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [s] [Dyn, _] then [silh(p)] else [] + +fun rest(s: Shape, p: Case): Array[Shape] = + if [s, p] is + [Lit(l1), Block.Lit(l2)] and l1 == l2 then [] + [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [] + [Arr(ls, false), Block.Tup(n, false)] and ls.length == n then [] + [Arr(ls, true), _] then [s] // TODO + [_, Block.Tup(ls, true)] then [s] // TODO + [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [] + [Dyn, _] then [s] + else [s] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index f11d334b50..195284ebf4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -71,6 +71,8 @@ fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = fun filter(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) +fun rest(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.rest(_, p)) + fun sel(s1: ShapeSet, s2: ShapeSet) = prod([s1.values(), s2.values()]) .flatMap(pair => Shape.sel(pair.0, pair.1)) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 0240b5b0e1..43956160f1 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -16,10 +16,10 @@ staged module Expressions with fun dynsel() = [1].(0) fun match1() = if 9 is - 8 then 1 - 9 then 2 + Bool then 1 + 8 then 2 Int then 3 - Bool then 4 + 9 then 4 else 0 fun match2() = if [...x] is @@ -36,12 +36,12 @@ staged module Expressions with //│ > Arr([Lit(1), Lit(2)], false) //│ > Return(Tuple([Lit(1), Lit(2)]), false) //│ > Arr([Lit(1), Dyn], true) -//│ > Return(Tuple([Lit(1), Ref(Symbol("x"))]), false) +//│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) //│ > Lit(1) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) -//│ > Dyn -//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Lit(9) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End)) -//│ > Dyn +//│ > Lit(3) +//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End)) +//│ > Lit(1), Lit(2) //│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Return(Lit(1), false), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Return(Lit(2), false))))], Return(Lit(0), false), End)) //│ x = [1, 2, 3] @@ -53,8 +53,8 @@ staged module ClassInstrumentation with class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg -//│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), (), TODO), End) -//│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), (), TODO), End) +//│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) +//│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) //│ > Class(ClassSymbol("Outside":[Symbol("a")]), [Lit(1)]) //│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) //│ > Class(ClassSymbol("NoArg"), []) From 408733a318954caa55f9531017a75950461ba60c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 28 Nov 2025 18:13:58 +0800 Subject: [PATCH 199/654] mark pretty printing equality as fixme --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 2 -- hkmc2/shared/src/test/mlscript-compile/Block.mls | 1 + hkmc2/shared/src/test/mlscript-compile/Shape.mls | 6 ++++-- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index c4d8810093..a06231fa29 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -131,8 +131,6 @@ class InstrumentationImpl(using State): blockCall("concat", Ls(p1, p2))(k) def fnPruneBadArms(arms: Path)(k: Path => Block): Block = shapeSetCall("pruneBadArms", Ls(arms))(k) - def fnMrg(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = - shapeSetCall("mrg", Ls(s1, s2))(s => k(ShapeSet(s))) def fnSel(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = shapeSetCall("sel", Ls(s1, s2))(s => k(ShapeSet(s))) def fnFilter(s1: ShapeSet, s2: Path)(k: ShapeSet => Block): Block = diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 614936b509..d8ec8b1b3f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -71,6 +71,7 @@ fun showLiteral(l: Literal) = if l is undefined then "undefined" null then "null" + String then "\"" + l.toString() + "\"" else l.toString() fun showSymbol(s: Symbol) = diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 3f3a34aac1..c6ef68ad74 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -31,6 +31,9 @@ class Shape with Arr(val shapes: Array[Shape], val inf: Bool) Class(val sym: ClassSymbol, val params: Array[Shape]) +// FIXME: hack to check equality of classes if they have the same paramters +fun equals(a: Shape, b: Shape) = show(a) == show(b) + fun show(s: Shape) = if s is Dyn then "Dyn" @@ -42,8 +45,7 @@ fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = a.map((a, i, _) => mrg2(a, b.at(i))) fun mrg2(s1: Shape, s2: Shape) = - // we want different objects with same parameters to be equal - if show(s1) == show(s2) then s1 + if equals(s1, s2) then s1 else if [s1, s2] is [Lit(l), Class(sym, params)] and isPrimitiveTypeOf(sym, l) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 195284ebf4..89b0554d89 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -10,6 +10,7 @@ type ShapeSet = ShapeSet.ShapeSet module ShapeSet with... +// FIXME: hash is based on uniqueness of pretty printing fun hash(s: Shape) = show(s) fun printShapeSet(s: ShapeSet) = console.log([... s.keys()].join(", ")) From 0e2fec8ead49d0acf3d7b201e7e419d9e8170ab2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:03:18 +0800 Subject: [PATCH 200/654] progress: deprecate ShapeSet from StagedPath --- .../scala/hkmc2/codegen/Instrumentation.scala | 60 ++++++++++--------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index a06231fa29..9ef9bab9b8 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -20,6 +20,7 @@ import syntax.{Literal, Tree} // it should be possible to cache some common constructions (End, Option) into the context // this avoids having to rebuild the same shapes everytime they are needed +// transform Block to Block IR so that it can be instrumented in mlscript class InstrumentationImpl(using State): type ArgWrappable = Path | Symbol | ShapeSet type Context = HashMap[Path, StagedPath] @@ -94,17 +95,20 @@ class InstrumentationImpl(using State): call(shapeSetMod(name), args, symName = symName)(k) // helpers to create and access the components of a staged value + @deprecated case class ShapeSet(p: Path) // A StagedPath is a path that points to a (ShapeSet, code) tuple - case class StagedPath(p: Path): - def shapes: ShapeSet = ShapeSet(DynSelect(p, toValue(0), false)) - def code: Path = DynSelect(p, toValue(1), false) - def end: Block = Return(p, false) + case class StagedPath(code: Path): + @deprecated + def shapes: ShapeSet = ??? + @deprecated + def p: Path = ??? + def end: Block = Return(code, false) object StagedPath: - def apply(shapeSet: ShapeSet, code: Path, symName: Str = "tmp")(k: StagedPath => Block): Block = - tuple(Ls(shapeSet.p, code), symName)(p => k(StagedPath(p))) + def apply(code: Path, symName: Str = "tmp")(k: StagedPath => Block): Block = + k(StagedPath(code)) // linking functions defined in MLscipt @@ -159,7 +163,7 @@ class InstrumentationImpl(using State): def ruleLit(l: Value.Lit, symName: String = "lit")(k: StagedPath => Block): Block = shapeLit(l): sp => blockCtor("ValueLit", Ls(l)): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(cde, symName)(k) // not in formalization def ruleVar(r: Value.Ref, symName: String = "var")(k: StagedPath => Block): Block = @@ -168,7 +172,7 @@ class InstrumentationImpl(using State): blockCtor("ValueRef", Ls(sym)): cde => // variable defined outside of scope, may be a reference to a class shapeDyn(): sp => - StagedPath(sp, cde, symName)(k) + StagedPath(cde, symName)(k) def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") @@ -176,7 +180,7 @@ class InstrumentationImpl(using State): shapeArr(xs.map(_._1.shapes), xs.exists(_._2)): sp => tuple(xs.map(_._1.code)): codes => blockCtor("Tuple", Ls(codes)): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(cde, symName)(k) def ruleSel(s: Select, symName: String = "sel")(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s @@ -185,14 +189,14 @@ class InstrumentationImpl(using State): fnSel(x.shapes, n): sp => blockCtor("Symbol", Ls(toValue(name))): name => blockCtor("Select", Ls(x.code, name)): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(cde, symName)(k) def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: StagedPath => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => fnSel(x.shapes, y.shapes): sp => blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(cde, symName)(k) // TODO def ruleApp(c: Call, symName: String = "app")(using Context)(k: StagedPath => Block): Block = @@ -201,7 +205,7 @@ class InstrumentationImpl(using State): tuple(args.map(_._1.code)): tup => shapeDyn(): dyn => blockCtor("Call", Ls(fun.code, tup)): res => - StagedPath(dyn, res, symName)(k) + StagedPath(res, symName)(k) def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i @@ -219,12 +223,12 @@ class InstrumentationImpl(using State): transformPath(cls): cls => tuple(xs.map(_._1.code)): codes => blockCtor("Instantiate", Ls(cls.code, codes)): cde => - StagedPath(sp, cde, symName)(k) + StagedPath(cde, symName)(k) def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code, toValue(false))): cde => - StagedPath(x.shapes, cde, symName)(k(_, summon)) + StagedPath(cde, symName)(k(_, summon)) def ruleMatch(m: Match, symName: String = "match")(using Context)(k: (StagedPath, Context) => Block): Block = val Match(p, ks, dflt, rest) = m @@ -233,7 +237,7 @@ class InstrumentationImpl(using State): transformBlock(rest)(using ctx1): (z, ctx2) => fnUnion(stagedMatch.shapes, z.shapes): sp => fnConcat(stagedMatch.code, z.code): cde => - StagedPath(sp, cde, symName)(k(_, ctx2)) + StagedPath(cde, symName)(k(_, ctx2)) def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a @@ -245,36 +249,36 @@ class InstrumentationImpl(using State): ctx.get(x.asPath) match case S(x1) => fnUnion(y.shapes, x1.shapes): sp => - StagedPath(sp, xStaged): x2 => + StagedPath(xStaged, "tmp"): x2 => (Assign(x, x2.p, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath(z.shapes, cde, symName)(k(_, ctx)) + StagedPath(cde, symName)(k(_, ctx)) case N => - StagedPath(y.shapes, xStaged): x2 => + StagedPath(xStaged, "tmp"): x2 => // propagate shape information for future references to x (Assign(x, y.p, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath(z.shapes, cde, symName)(k(_, ctx)) + StagedPath(cde, symName)(k(_, ctx)) def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = shapeBot(): bot => transformSymbol(x): xSym => - StagedPath(bot, xSym): y => + StagedPath(xSym, "tmp"): y => (Assign(x, y.p, _)): given Context = ctx.clone() += x.asPath -> y transformBlock(b): (z, ctx) => blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => - StagedPath(z.shapes, cde, symName)(k(_, summon)) + StagedPath(cde, symName)(k(_, summon)) def ruleEnd(symName: String = "end")(using Context)(k: (StagedPath, Context) => Block): Block = shapeBot(): sp => blockCtor("End", Ls()): cde => - StagedPath(sp, cde, symName)(k(_, summon)) + StagedPath(cde, symName)(k(_, summon)) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) @@ -308,14 +312,14 @@ class InstrumentationImpl(using State): case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath(sp, m, symName)(k(_, ctx)) + StagedPath(m, symName)(k(_, ctx)) def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using Context)(k: (StagedPath, Context, StagedPath) => Block): Block = transformCase(cse): cse => fnFilter(x.shapes, cse): filtered => - StagedPath(filtered, x.code): x0 => + StagedPath(x.code, "tmp"): x0 => fnRest(x.shapes, cse): rest => - StagedPath(rest, x.code): x1 => + StagedPath(x.code, "tmp"): x1 => call(filtered.p.selSN("isEmpty"), Ls()): scrut => ruleEnd(): (e, ctx) => val res = new TempSymbol(N, "tmp") @@ -323,7 +327,7 @@ class InstrumentationImpl(using State): transformBlock(b)(using ctx.clone() += p -> x0): (y, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y.code)): cde => - StagedPath(y.shapes, cde, symName): ret => + StagedPath(cde, symName): ret => val dflt = Assign(res, ret.p, End()) (Match(scrut, Ls(arm), S(dflt), _)): k(StagedPath(Value.Ref(res)), ctx.clone() -= p, x1) @@ -366,7 +370,7 @@ class InstrumentationImpl(using State): transformOption(spread, bool => assign(toValue(bool))): spreadStaged => transformPath(value): value => blockCtor("Arg", Ls(spreadStaged, value.code)): cde => - StagedPath(value.shapes, cde): res => + StagedPath(cde, "tmp"): res => k(res, spread.isDefined) def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(StagedPath, Bool)] => Block): Block = @@ -421,7 +425,7 @@ class InstrumentationImpl(using State): transformBlock(b.sub): (sub, ctx) => transformBlock(b.rest): (rest, ctx) => fnConcat(sub.code, rest.code): block => - StagedPath(rest.shapes, block)(k(_, ctx)) + StagedPath(block, "tmp")(k(_, ctx)) // ruleBlk? def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = From 97ede408fdee41c44b01e31412063695be020411 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:06:39 +0800 Subject: [PATCH 201/654] progress: strip shape logic from rules --- .../scala/hkmc2/codegen/Instrumentation.scala | 161 +++++++----------- 1 file changed, 60 insertions(+), 101 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 9ef9bab9b8..726ed513e6 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -100,8 +100,6 @@ class InstrumentationImpl(using State): // A StagedPath is a path that points to a (ShapeSet, code) tuple case class StagedPath(code: Path): - @deprecated - def shapes: ShapeSet = ??? @deprecated def p: Path = ??? def end: Block = Return(code, false) @@ -115,34 +113,11 @@ class InstrumentationImpl(using State): def fnPrintCode(p: Path)(k: Block): Block = // discard result, we only care about side effect blockCall("printCode", Ls(p))(_ => k) - def fnPrintShapeSet(p: ShapeSet)(rest: Block): Block = - shapeSetCall("printShapeSet", Ls(p.p))(_ => rest) - - def shapeBot()(k: ShapeSet => Block): Block = - shapeSetCall("mkBot", Ls())(s => k(ShapeSet(s))) - def shapeDyn()(k: ShapeSet => Block): Block = - shapeSetCall("mkDyn", Ls())(s => k(ShapeSet(s))) - def shapeLit(p: Path)(k: ShapeSet => Block): Block = - shapeSetCall("mkLit", Ls(p))(s => k(ShapeSet(s))) - def shapeArr(ps: Ls[ShapeSet], inf: Bool)(k: ShapeSet => Block): Block = - tuple(ps, "test"): tup => - shapeSetCall("mkArr", Ls(tup, toValue(inf)))(s => k(ShapeSet(s))) - def shapeClass(cls: Path, params: Ls[ShapeSet])(k: ShapeSet => Block): Block = - tuple(params): params => - shapeSetCall("mkClass", Ls(cls, params))(s => k(ShapeSet(s))) def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = blockCall("concat", Ls(p1, p2))(k) def fnPruneBadArms(arms: Path)(k: Path => Block): Block = shapeSetCall("pruneBadArms", Ls(arms))(k) - def fnSel(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = - shapeSetCall("sel", Ls(s1, s2))(s => k(ShapeSet(s))) - def fnFilter(s1: ShapeSet, s2: Path)(k: ShapeSet => Block): Block = - shapeSetCall("filter", Ls(s1, s2))(s => k(ShapeSet(s))) - def fnRest(s1: ShapeSet, s2: Path)(k: ShapeSet => Block): Block = - shapeSetCall("rest", Ls(s1, s2))(s => k(ShapeSet(s))) - def fnUnion(s1: ShapeSet, s2: ShapeSet)(k: ShapeSet => Block): Block = - shapeSetCall("union", Ls(s1, s2))(s => k(ShapeSet(s))) // transformation helpers @@ -161,9 +136,8 @@ class InstrumentationImpl(using State): // instrumentation rules def ruleLit(l: Value.Lit, symName: String = "lit")(k: StagedPath => Block): Block = - shapeLit(l): sp => - blockCtor("ValueLit", Ls(l)): cde => - StagedPath(cde, symName)(k) + blockCtor("ValueLit", Ls(l)): cde => + StagedPath(cde, symName)(k) // not in formalization def ruleVar(r: Value.Ref, symName: String = "var")(k: StagedPath => Block): Block = @@ -171,41 +145,35 @@ class InstrumentationImpl(using State): transformSymbol(disamb.getOrElse(l)): sym => blockCtor("ValueRef", Ls(sym)): cde => // variable defined outside of scope, may be a reference to a class - shapeDyn(): sp => - StagedPath(cde, symName)(k) + StagedPath(cde, symName)(k) def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => - shapeArr(xs.map(_._1.shapes), xs.exists(_._2)): sp => - tuple(xs.map(_._1.code)): codes => - blockCtor("Tuple", Ls(codes)): cde => - StagedPath(cde, symName)(k) + tuple(xs.map(_._1.code)): codes => + blockCtor("Tuple", Ls(codes)): cde => + StagedPath(cde, symName)(k) def ruleSel(s: Select, symName: String = "sel")(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => - shapeLit(toValue(name)): n => - fnSel(x.shapes, n): sp => - blockCtor("Symbol", Ls(toValue(name))): name => - blockCtor("Select", Ls(x.code, name)): cde => - StagedPath(cde, symName)(k) + blockCtor("Symbol", Ls(toValue(name))): name => + blockCtor("Select", Ls(x.code, name)): cde => + StagedPath(cde, symName)(k) def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: StagedPath => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => - fnSel(x.shapes, y.shapes): sp => - blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => - StagedPath(cde, symName)(k) + blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => + StagedPath(cde, symName)(k) // TODO def ruleApp(c: Call, symName: String = "app")(using Context)(k: StagedPath => Block): Block = transformPath(c.fun): fun => transformArgs(c.args): args => tuple(args.map(_._1.code)): tup => - shapeDyn(): dyn => - blockCtor("Call", Ls(fun.code, tup)): res => - StagedPath(res, symName)(k) + blockCtor("Call", Ls(fun.code, tup)): res => + StagedPath(res, symName)(k) def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i @@ -217,13 +185,12 @@ class InstrumentationImpl(using State): case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) case _ => transformSymbol(TempSymbol(N, "TODO")) sym: sym => - shapeClass(sym, xs.map(_._1.shapes)): sp => - // reuse instrumentation logic, shape of cls is discarded - // possible to skip this? this uses ruleVar, which is not in formalization - transformPath(cls): cls => - tuple(xs.map(_._1.code)): codes => - blockCtor("Instantiate", Ls(cls.code, codes)): cde => - StagedPath(cde, symName)(k) + // reuse instrumentation logic, shape of cls is discarded + // possible to skip this? this uses ruleVar, which is not in formalization + transformPath(cls): cls => + tuple(xs.map(_._1.code)): codes => + blockCtor("Instantiate", Ls(cls.code, codes)): cde => + StagedPath(cde, symName)(k) def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => @@ -235,9 +202,8 @@ class InstrumentationImpl(using State): transformPath(p): x => ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => - fnUnion(stagedMatch.shapes, z.shapes): sp => - fnConcat(stagedMatch.code, z.code): cde => - StagedPath(cde, symName)(k(_, ctx2)) + fnConcat(stagedMatch.code, z.code): cde => + StagedPath(cde, symName)(k(_, ctx2)) def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a @@ -248,13 +214,12 @@ class InstrumentationImpl(using State): // otherwise, x is defined here ctx.get(x.asPath) match case S(x1) => - fnUnion(y.shapes, x1.shapes): sp => - StagedPath(xStaged, "tmp"): x2 => - (Assign(x, x2.p, _)): - given Context = ctx.clone() += x.asPath -> x2 - transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => - StagedPath(cde, symName)(k(_, ctx)) + StagedPath(xStaged, "tmp"): x2 => + (Assign(x, x2.p, _)): + given Context = ctx.clone() += x.asPath -> x2 + transformBlock(b): (z, ctx) => + blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => + StagedPath(cde, symName)(k(_, ctx)) case N => StagedPath(xStaged, "tmp"): x2 => // propagate shape information for future references to x @@ -265,20 +230,18 @@ class InstrumentationImpl(using State): StagedPath(cde, symName)(k(_, ctx)) def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = - shapeBot(): bot => - transformSymbol(x): xSym => - StagedPath(xSym, "tmp"): y => - (Assign(x, y.p, _)): - given Context = ctx.clone() += x.asPath -> y - transformBlock(b): (z, ctx) => - blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => - blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => - StagedPath(cde, symName)(k(_, summon)) + transformSymbol(x): xSym => + StagedPath(xSym, "tmp"): y => + (Assign(x, y.p, _)): + given Context = ctx.clone() += x.asPath -> y + transformBlock(b): (z, ctx) => + blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => + blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => + StagedPath(cde, symName)(k(_, summon)) def ruleEnd(symName: String = "end")(using Context)(k: (StagedPath, Context) => Block): Block = - shapeBot(): sp => - blockCtor("End", Ls()): cde => - StagedPath(cde, symName)(k(_, summon)) + blockCtor("End", Ls()): cde => + StagedPath(cde, symName)(k(_, summon)) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) @@ -302,7 +265,6 @@ class InstrumentationImpl(using State): tuple(arms.map(_.p)): tup => fnPruneBadArms(tup): res => val result = StagedPath(res) - val sp = result.shapes val arms = result.code blockCtor("End", Ls()): e => // TODO: use transformOption here @@ -316,34 +278,32 @@ class InstrumentationImpl(using State): def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using Context)(k: (StagedPath, Context, StagedPath) => Block): Block = transformCase(cse): cse => - fnFilter(x.shapes, cse): filtered => - StagedPath(x.code, "tmp"): x0 => - fnRest(x.shapes, cse): rest => - StagedPath(x.code, "tmp"): x1 => - call(filtered.p.selSN("isEmpty"), Ls()): scrut => - ruleEnd(): (e, ctx) => - val res = new TempSymbol(N, "tmp") - val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) - transformBlock(b)(using ctx.clone() += p -> x0): (y, ctx) => - // TODO: use Arm type instead of Tup - tuple(Ls(cse, y.code)): cde => - StagedPath(cde, symName): ret => - val dflt = Assign(res, ret.p, End()) - (Match(scrut, Ls(arm), S(dflt), _)): - k(StagedPath(Value.Ref(res)), ctx.clone() -= p, x1) + StagedPath(x.code, "tmp"): x0 => + StagedPath(x.code, "tmp"): x1 => + val scrut = ??? + ruleEnd(): (e, ctx) => + val res = new TempSymbol(N, "tmp") + val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) + transformBlock(b)(using ctx.clone() += p -> x0): (y, ctx) => + // TODO: use Arm type instead of Tup + tuple(Ls(cse, y.code)): cde => + StagedPath(cde, symName): ret => + val dflt = Assign(res, ret.p, End()) + (Match(scrut, Ls(arm), S(dflt), _)): + k(StagedPath(Value.Ref(res)), ctx.clone() -= p, x1) // this partially applies rules to account for difference between Block.Case and Match pattern in the formalization // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s and rest(s, _) = bot def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = - call(x.shapes.p.selSN("isEmpty"), Ls()): scrut => - ruleEnd(): (e, ctx) => - val res = new TempSymbol(N, "tmp") - val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) - given Context = ctx.clone() += p -> x - transformBlock(b): (y, ctx) => - val dflt = Assign(res, y.p, End()) - (Match(scrut, Ls(arm), S(dflt), _)): - k(StagedPath(Value.Ref(res)), ctx.clone() -= p) + val scrut = ??? + ruleEnd(): (e, ctx) => + val res = new TempSymbol(N, "tmp") + val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) + given Context = ctx.clone() += p -> x + transformBlock(b): (y, ctx) => + val dflt = Assign(res, y.p, End()) + (Match(scrut, Ls(arm), S(dflt), _)): + k(StagedPath(Value.Ref(res)), ctx.clone() -= p) // transformations of Block @@ -402,8 +362,7 @@ class InstrumentationImpl(using State): val debug = call(sym, Nil): ret => val p = StagedPath(ret) - (fnPrintShapeSet(p.shapes)(_)): - fnPrintCode(p.code)(End()) + fnPrintCode(p.code)(End()) // NOTE: this debug printing only works for top-level modules, nested modules don't work (f.copy(sym = genSym, body = transformBlock(f.body)(_.end))(false), debug) From d507d3fe3f6655a9c225fd59ede6b2518e8a630f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:21:29 +0800 Subject: [PATCH 202/654] remove inferring shape from Instrumentation as discussed in the meeting, we will perform the within mlscript to reduce complexity --- .../scala/hkmc2/codegen/Instrumentation.scala | 59 ++++++++----------- .../src/test/mlscript/staging/Functions.mls | 16 +---- 2 files changed, 27 insertions(+), 48 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 726ed513e6..a38c0ea861 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -22,14 +22,13 @@ import syntax.{Literal, Tree} // transform Block to Block IR so that it can be instrumented in mlscript class InstrumentationImpl(using State): - type ArgWrappable = Path | Symbol | ShapeSet + type ArgWrappable = Path | Symbol type Context = HashMap[Path, StagedPath] def asArg(x: ArgWrappable): Arg = x match case p: Path => p.asArg case l: Symbol => l.asPath.asArg - case ShapeSet(p) => p.asArg // null and undefined are missing def toValue(lit: Str | Int | BigDecimal | Bool): Value = @@ -100,8 +99,6 @@ class InstrumentationImpl(using State): // A StagedPath is a path that points to a (ShapeSet, code) tuple case class StagedPath(code: Path): - @deprecated - def p: Path = ??? def end: Block = Return(code, false) object StagedPath: @@ -116,8 +113,6 @@ class InstrumentationImpl(using State): def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = blockCall("concat", Ls(p1, p2))(k) - def fnPruneBadArms(arms: Path)(k: Path => Block): Block = - shapeSetCall("pruneBadArms", Ls(arms))(k) // transformation helpers @@ -215,7 +210,7 @@ class InstrumentationImpl(using State): ctx.get(x.asPath) match case S(x1) => StagedPath(xStaged, "tmp"): x2 => - (Assign(x, x2.p, _)): + (Assign(x, x2.code, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => @@ -223,7 +218,7 @@ class InstrumentationImpl(using State): case N => StagedPath(xStaged, "tmp"): x2 => // propagate shape information for future references to x - (Assign(x, y.p, _)): + (Assign(x, y.code, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => @@ -232,7 +227,7 @@ class InstrumentationImpl(using State): def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformSymbol(x): xSym => StagedPath(xSym, "tmp"): y => - (Assign(x, y.p, _)): + (Assign(x, y.code, _)): given Context = ctx.clone() += x.asPath -> y transformBlock(b): (z, ctx) => blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => @@ -262,48 +257,42 @@ class InstrumentationImpl(using State): val a = arms.map(applyRuleBranch).collectApply ((f: (Ls[StagedPath], Context) => Block) => a(ys => (ctx, _) => f(ys, ctx))(summon, x)): (arms, ctx) => - tuple(arms.map(_.p)): tup => - fnPruneBadArms(tup): res => - val result = StagedPath(res) - val arms = result.code - blockCtor("End", Ls()): e => - // TODO: use transformOption here - def dfltStaged(k: (Path, Context) => Block) = dflt match - case S(dflt) => ruleWildCard(x, p, dflt): (dflt, ctx) => - optionSome(dflt.code)(k(_, ctx)) - case N => optionNone()(k(_, ctx)) - dfltStaged: (dflt, ctx) => - blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath(m, symName)(k(_, ctx)) + tuple(arms.map(_.code)): tup => + val res = tup + val result = StagedPath(res) + val arms = result.code + blockCtor("End", Ls()): e => + // TODO: use transformOption here + def dfltStaged(k: (Path, Context) => Block) = dflt match + case S(dflt) => ruleWildCard(x, p, dflt): (dflt, ctx) => + optionSome(dflt.code)(k(_, ctx)) + case N => optionNone()(k(_, ctx)) + dfltStaged: (dflt, ctx) => + blockCtor("Match", Ls(x.code, arms, dflt, e)): m => + StagedPath(m, symName)(k(_, ctx)) def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using Context)(k: (StagedPath, Context, StagedPath) => Block): Block = transformCase(cse): cse => StagedPath(x.code, "tmp"): x0 => StagedPath(x.code, "tmp"): x1 => - val scrut = ??? ruleEnd(): (e, ctx) => val res = new TempSymbol(N, "tmp") - val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) transformBlock(b)(using ctx.clone() += p -> x0): (y, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y.code)): cde => StagedPath(cde, symName): ret => - val dflt = Assign(res, ret.p, End()) - (Match(scrut, Ls(arm), S(dflt), _)): + val dflt = Assign(res, ret.code, _) + dflt: k(StagedPath(Value.Ref(res)), ctx.clone() -= p, x1) // this partially applies rules to account for difference between Block.Case and Match pattern in the formalization // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s and rest(s, _) = bot def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = - val scrut = ??? - ruleEnd(): (e, ctx) => - val res = new TempSymbol(N, "tmp") - val arm = Case.Lit(Tree.BoolLit(true)) -> Assign(res, e.p, End()) - given Context = ctx.clone() += p -> x - transformBlock(b): (y, ctx) => - val dflt = Assign(res, y.p, End()) - (Match(scrut, Ls(arm), S(dflt), _)): - k(StagedPath(Value.Ref(res)), ctx.clone() -= p) + val res = new TempSymbol(N, "tmp") + given Context = ctx.clone() += p -> x + transformBlock(b): (y, ctx) => + val dflt = Assign(res, y.code, _) + dflt(k(StagedPath(Value.Ref(res)), ctx.clone() -= p)) // transformations of Block diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 43956160f1..c3eeb06081 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -27,21 +27,13 @@ staged module Expressions with [a, ...] then 2 // [1, 2] then 5 // TODO: needs handling for Label, Break else 0 -//│ > Lit(1) //│ > Return(Lit(1), false) -//│ > Lit(42) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) -//│ > Dyn //│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) -//│ > Arr([Lit(1), Lit(2)], false) //│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Arr([Lit(1), Dyn], true) //│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) -//│ > Lit(1) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) -//│ > Lit(3) -//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End)) -//│ > Lit(1), Lit(2) +//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End)) //│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Return(Lit(1), false), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Return(Lit(2), false))))], Return(Lit(0), false), End)) //│ x = [1, 2, 3] @@ -55,9 +47,7 @@ staged module ClassInstrumentation with fun inst2() = new NoArg //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) //│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) -//│ > Class(ClassSymbol("Outside":[Symbol("a")]), [Lit(1)]) //│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) -//│ > Class(ClassSymbol("NoArg"), []) //│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), Symbol("NoArg")), []), false) // debug printing fails, collision with class name? @@ -78,8 +68,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.77: staged module B with +//│ ║ l.67: staged module B with //│ ║ ^^^^^^ -//│ ║ l.78: fun f() = 1 +//│ ║ l.68: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From ff7385d4f4b96cac0d3fc599e000a3be3302347d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:30:48 +0800 Subject: [PATCH 203/654] progress: add StagedPath to ArgWrappable --- .../scala/hkmc2/codegen/Instrumentation.scala | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index a38c0ea861..7b44328f91 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -22,12 +22,13 @@ import syntax.{Literal, Tree} // transform Block to Block IR so that it can be instrumented in mlscript class InstrumentationImpl(using State): - type ArgWrappable = Path | Symbol + type ArgWrappable = Path | StagedPath | Symbol type Context = HashMap[Path, StagedPath] def asArg(x: ArgWrappable): Arg = x match case p: Path => p.asArg + case s: StagedPath => s.code.asArg case l: Symbol => l.asPath.asArg // null and undefined are missing @@ -93,10 +94,6 @@ class InstrumentationImpl(using State): def shapeSetCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = call(shapeSetMod(name), args, symName = symName)(k) - // helpers to create and access the components of a staged value - @deprecated - case class ShapeSet(p: Path) - // A StagedPath is a path that points to a (ShapeSet, code) tuple case class StagedPath(code: Path): def end: Block = Return(code, false) @@ -145,7 +142,7 @@ class InstrumentationImpl(using State): def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => - tuple(xs.map(_._1.code)): codes => + tuple(xs.map(_._1)): codes => blockCtor("Tuple", Ls(codes)): cde => StagedPath(cde, symName)(k) @@ -153,21 +150,21 @@ class InstrumentationImpl(using State): val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => blockCtor("Symbol", Ls(toValue(name))): name => - blockCtor("Select", Ls(x.code, name)): cde => + blockCtor("Select", Ls(x, name)): cde => StagedPath(cde, symName)(k) def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: StagedPath => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => - blockCtor("DynSelect", Ls(x.code, y.code, toValue(d.arrayIdx))): cde => + blockCtor("DynSelect", Ls(x, y, toValue(d.arrayIdx))): cde => StagedPath(cde, symName)(k) // TODO def ruleApp(c: Call, symName: String = "app")(using Context)(k: StagedPath => Block): Block = transformPath(c.fun): fun => transformArgs(c.args): args => - tuple(args.map(_._1.code)): tup => - blockCtor("Call", Ls(fun.code, tup)): res => + tuple(args.map(_._1)): tup => + blockCtor("Call", Ls(fun, tup)): res => StagedPath(res, symName)(k) def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = @@ -183,8 +180,8 @@ class InstrumentationImpl(using State): // reuse instrumentation logic, shape of cls is discarded // possible to skip this? this uses ruleVar, which is not in formalization transformPath(cls): cls => - tuple(xs.map(_._1.code)): codes => - blockCtor("Instantiate", Ls(cls.code, codes)): cde => + tuple(xs.map(_._1)): codes => + blockCtor("Instantiate", Ls(cls, codes)): cde => StagedPath(cde, symName)(k) def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (StagedPath, Context) => Block): Block = @@ -213,7 +210,7 @@ class InstrumentationImpl(using State): (Assign(x, x2.code, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => + blockCtor("Assign", Ls(xSym, y, z)): cde => StagedPath(cde, symName)(k(_, ctx)) case N => StagedPath(xStaged, "tmp"): x2 => @@ -221,7 +218,7 @@ class InstrumentationImpl(using State): (Assign(x, y.code, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y.code, z.code)): cde => + blockCtor("Assign", Ls(xSym, y, z)): cde => StagedPath(cde, symName)(k(_, ctx)) def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = @@ -231,7 +228,7 @@ class InstrumentationImpl(using State): given Context = ctx.clone() += x.asPath -> y transformBlock(b): (z, ctx) => blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => - blockCtor("Assign", Ls(xSym, undefined, z.code)): cde => + blockCtor("Assign", Ls(xSym, undefined, z)): cde => StagedPath(cde, symName)(k(_, summon)) def ruleEnd(symName: String = "end")(using Context)(k: (StagedPath, Context) => Block): Block = @@ -249,7 +246,7 @@ class InstrumentationImpl(using State): transformSymbol(cls.isym): c => optionNone(): none => // TODO: handle companion object blockCtor("ClsLikeDefn", Ls(c, none)): cls => - blockCtor("Define", Ls(cls, p.code))(k) + blockCtor("Define", Ls(cls, p))(k) def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (StagedPath, Context) => Block): Block = def applyRuleBranch(cse: Case, block: Block)(f: StagedPath => (Context, StagedPath) => Block)(ctx: Context, x: StagedPath): Block = @@ -257,7 +254,7 @@ class InstrumentationImpl(using State): val a = arms.map(applyRuleBranch).collectApply ((f: (Ls[StagedPath], Context) => Block) => a(ys => (ctx, _) => f(ys, ctx))(summon, x)): (arms, ctx) => - tuple(arms.map(_.code)): tup => + tuple(arms): tup => val res = tup val result = StagedPath(res) val arms = result.code @@ -279,7 +276,7 @@ class InstrumentationImpl(using State): val res = new TempSymbol(N, "tmp") transformBlock(b)(using ctx.clone() += p -> x0): (y, ctx) => // TODO: use Arm type instead of Tup - tuple(Ls(cse, y.code)): cde => + tuple(Ls(cse, y)): cde => StagedPath(cde, symName): ret => val dflt = Assign(res, ret.code, _) dflt: @@ -318,7 +315,7 @@ class InstrumentationImpl(using State): val Arg(spread, value) = a transformOption(spread, bool => assign(toValue(bool))): spreadStaged => transformPath(value): value => - blockCtor("Arg", Ls(spreadStaged, value.code)): cde => + blockCtor("Arg", Ls(spreadStaged, value)): cde => StagedPath(cde, "tmp"): res => k(res, spread.isDefined) @@ -337,7 +334,7 @@ class InstrumentationImpl(using State): case Case.Cls(cls, path) => transformSymbol(cls): cls => transformPath(path): path => - blockCtor("Cls", Ls(cls, path.code))(k) + blockCtor("Cls", Ls(cls, path))(k) case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) case Case.Field(name, safe) => ??? // not supported From 6db1ee796887aba3174d5fbfe5c69579e45b64c2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:50:09 +0800 Subject: [PATCH 204/654] progress: simplify impl --- .../scala/hkmc2/codegen/Instrumentation.scala | 34 +++++++------------ 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 7b44328f91..81527d0032 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -94,9 +94,7 @@ class InstrumentationImpl(using State): def shapeSetCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = call(shapeSetMod(name), args, symName = symName)(k) - // A StagedPath is a path that points to a (ShapeSet, code) tuple - case class StagedPath(code: Path): - def end: Block = Return(code, false) + case class StagedPath(code: Path) object StagedPath: def apply(code: Path, symName: Str = "tmp")(k: StagedPath => Block): Block = @@ -223,13 +221,13 @@ class InstrumentationImpl(using State): def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformSymbol(x): xSym => - StagedPath(xSym, "tmp"): y => - (Assign(x, y.code, _)): - given Context = ctx.clone() += x.asPath -> y - transformBlock(b): (z, ctx) => - blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => - blockCtor("Assign", Ls(xSym, undefined, z)): cde => - StagedPath(cde, symName)(k(_, summon)) + val y = StagedPath(xSym) + (Assign(x, y.code, _)): + given Context = ctx.clone() += x.asPath -> y + transformBlock(b): (z, ctx) => + blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => + blockCtor("Assign", Ls(xSym, undefined, z)): cde => + StagedPath(cde, symName)(k(_, summon)) def ruleEnd(symName: String = "end")(using Context)(k: (StagedPath, Context) => Block): Block = blockCtor("End", Ls()): cde => @@ -254,10 +252,7 @@ class InstrumentationImpl(using State): val a = arms.map(applyRuleBranch).collectApply ((f: (Ls[StagedPath], Context) => Block) => a(ys => (ctx, _) => f(ys, ctx))(summon, x)): (arms, ctx) => - tuple(arms): tup => - val res = tup - val result = StagedPath(res) - val arms = result.code + tuple(arms): arms => blockCtor("End", Ls()): e => // TODO: use transformOption here def dfltStaged(k: (Path, Context) => Block) = dflt match @@ -273,23 +268,18 @@ class InstrumentationImpl(using State): StagedPath(x.code, "tmp"): x0 => StagedPath(x.code, "tmp"): x1 => ruleEnd(): (e, ctx) => - val res = new TempSymbol(N, "tmp") transformBlock(b)(using ctx.clone() += p -> x0): (y, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y)): cde => StagedPath(cde, symName): ret => - val dflt = Assign(res, ret.code, _) - dflt: - k(StagedPath(Value.Ref(res)), ctx.clone() -= p, x1) + k(ret, ctx.clone() -= p, x1) // this partially applies rules to account for difference between Block.Case and Match pattern in the formalization // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s and rest(s, _) = bot def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = - val res = new TempSymbol(N, "tmp") given Context = ctx.clone() += p -> x transformBlock(b): (y, ctx) => - val dflt = Assign(res, y.code, _) - dflt(k(StagedPath(Value.Ref(res)), ctx.clone() -= p)) + k(y, ctx.clone() -= p) // transformations of Block @@ -351,7 +341,7 @@ class InstrumentationImpl(using State): fnPrintCode(p.code)(End()) // NOTE: this debug printing only works for top-level modules, nested modules don't work - (f.copy(sym = genSym, body = transformBlock(f.body)(_.end))(false), debug) + (f.copy(sym = genSym, body = transformBlock(f.body)(p => Return(p.code, false)))(false), debug) def transformDefine(d: Define)(using Context)(k: (StagedPath, Context) => Block): Block = d.defn match From 977433a7567b28be9b2e236ab683832ba4202b8e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 13 Dec 2025 01:01:31 +0800 Subject: [PATCH 205/654] progress: formatting --- .../scala/hkmc2/codegen/Instrumentation.scala | 56 ++++++++----------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 81527d0032..8b9d5af367 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -56,9 +56,6 @@ class InstrumentationImpl(using State): k(head :: tail) )(f) - extension [A, B, C](f: A => B => C) - def flip: B => A => C = b => f(_)(b) - // helpers for constructing Block def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Assign = @@ -80,7 +77,6 @@ class InstrumentationImpl(using State): def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) - def shapeSetMod(name: Str) = summon[State].shapeSetSymbol.asPath.selSN(name) def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = ctor(blockMod(name), args, symName)(k) @@ -91,8 +87,6 @@ class InstrumentationImpl(using State): def blockCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = call(blockMod(name), args, symName = symName)(k) - def shapeSetCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - call(shapeSetMod(name), args, symName = symName)(k) case class StagedPath(code: Path) @@ -134,7 +128,6 @@ class InstrumentationImpl(using State): val Value.Ref(l, disamb) = r transformSymbol(disamb.getOrElse(l)): sym => blockCtor("ValueRef", Ls(sym)): cde => - // variable defined outside of scope, may be a reference to a class StagedPath(cde, symName)(k) def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = @@ -204,20 +197,20 @@ class InstrumentationImpl(using State): // otherwise, x is defined here ctx.get(x.asPath) match case S(x1) => - StagedPath(xStaged, "tmp"): x2 => - (Assign(x, x2.code, _)): - given Context = ctx.clone() += x.asPath -> x2 - transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y, z)): cde => - StagedPath(cde, symName)(k(_, ctx)) + val x2 = StagedPath(xStaged) + (Assign(x, x2.code, _)): + given Context = ctx.clone() += x.asPath -> x2 + transformBlock(b): (z, ctx) => + blockCtor("Assign", Ls(xSym, y, z)): cde => + StagedPath(cde, symName)(k(_, ctx)) case N => - StagedPath(xStaged, "tmp"): x2 => - // propagate shape information for future references to x - (Assign(x, y.code, _)): - given Context = ctx.clone() += x.asPath -> x2 - transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y, z)): cde => - StagedPath(cde, symName)(k(_, ctx)) + val x2 = StagedPath(xStaged) + // propagate shape information for future references to x + (Assign(x, y.code, _)): + given Context = ctx.clone() += x.asPath -> x2 + transformBlock(b): (z, ctx) => + blockCtor("Assign", Ls(xSym, y, z)): cde => + StagedPath(cde, symName)(k(_, ctx)) def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = transformSymbol(x): xSym => @@ -263,19 +256,14 @@ class InstrumentationImpl(using State): blockCtor("Match", Ls(x.code, arms, dflt, e)): m => StagedPath(m, symName)(k(_, ctx)) - def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using Context)(k: (StagedPath, Context, StagedPath) => Block): Block = + def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (StagedPath, Context, StagedPath) => Block): Block = transformCase(cse): cse => - StagedPath(x.code, "tmp"): x0 => - StagedPath(x.code, "tmp"): x1 => - ruleEnd(): (e, ctx) => - transformBlock(b)(using ctx.clone() += p -> x0): (y, ctx) => - // TODO: use Arm type instead of Tup - tuple(Ls(cse, y)): cde => - StagedPath(cde, symName): ret => - k(ret, ctx.clone() -= p, x1) - - // this partially applies rules to account for difference between Block.Case and Match pattern in the formalization - // to avoid defining the `_` pattern in Block.Case, we apply filter(s, _) = s and rest(s, _) = bot + transformBlock(b)(using ctx.clone() += p -> x): (y, ctx) => + // TODO: use Arm type instead of Tup + tuple(Ls(cse, y)): cde => + StagedPath(cde, symName): ret => + k(ret, ctx.clone() -= p, x) + def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = given Context = ctx.clone() += p -> x transformBlock(b): (y, ctx) => @@ -306,8 +294,8 @@ class InstrumentationImpl(using State): transformOption(spread, bool => assign(toValue(bool))): spreadStaged => transformPath(value): value => blockCtor("Arg", Ls(spreadStaged, value)): cde => - StagedPath(cde, "tmp"): res => - k(res, spread.isDefined) + val res = StagedPath(cde) + k(res, spread.isDefined) def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(StagedPath, Bool)] => Block): Block = args.map(transformArg).collectApply(k) From e21bff2ac304e7b1a1dd97a3abbcd58f22943ddf Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 12:57:23 +0800 Subject: [PATCH 206/654] fix printCode syntax --- hkmc2/shared/src/test/mlscript/staging/PrintCode.mls | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls index 21e4d1e5aa..aac4722e59 100644 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls @@ -3,6 +3,7 @@ //│ Block = class Block { //│ Symbol: fun Symbol { class: class Symbol }, +//│ ClassSymbol: fun ClassSymbol { class: class ClassSymbol }, //│ Arg: fun Arg { class: class Arg }, //│ Case: class Case, //│ Lit: fun Lit { class: class Lit }, @@ -31,6 +32,7 @@ //│ } //│ ShapeSet = class ShapeSet { ShapeSet: fun ShapeSet { class: class ShapeSet } } -Block.printCode(Block.FunDefn(Block.Symbol("f"), [Block.Symbol("x")], Block.Return(Block.ValueLit(1), false))) -//│ > FunDefn(Symbol("f"), [Symbol("x")], Return(Lit(1), false)) +Block.printCode(Block.FunDefn(Block.Symbol("f"), [[Block.Symbol("x")]], Block.Return(Block.ValueLit(1), false))) +//│ > [ Symbol { name: 'x' } ] +//│ > FunDefn(Symbol("f"), ([Symbol("x")]), Return(Lit(1), false), undefined) From 55e10756a23b28e68b971893ac251dc54f3dac23 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 13:10:56 +0800 Subject: [PATCH 207/654] remove equality hack in Shape.mls --- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index c6ef68ad74..0b724cfcd7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -31,9 +31,6 @@ class Shape with Arr(val shapes: Array[Shape], val inf: Bool) Class(val sym: ClassSymbol, val params: Array[Shape]) -// FIXME: hack to check equality of classes if they have the same paramters -fun equals(a: Shape, b: Shape) = show(a) == show(b) - fun show(s: Shape) = if s is Dyn then "Dyn" @@ -44,8 +41,9 @@ fun show(s: Shape) = fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = a.map((a, i, _) => mrg2(a, b.at(i))) +// TODO: remove, this is no longer in use fun mrg2(s1: Shape, s2: Shape) = - if equals(s1, s2) then s1 + if s1 == s2 then s1 else if [s1, s2] is [Lit(l), Class(sym, params)] and isPrimitiveTypeOf(sym, l) From aa72ded2aaee6bfb8d0fe30f0914605ec8b8db81 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 14:39:20 +0800 Subject: [PATCH 208/654] switch from ValDefn to Scoped --- .../scala/hkmc2/codegen/Instrumentation.scala | 26 +++++++------------ .../src/test/mlscript/staging/Functions.mls | 4 --- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 8b9d5af367..b036dc411e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -58,7 +58,7 @@ class InstrumentationImpl(using State): // helpers for constructing Block - def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Assign = + def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = // TODO: skip assignment if res: Path? val sym = new TempSymbol(N, symName) Assign(sym, res, k(sym.asPath)) @@ -212,16 +212,6 @@ class InstrumentationImpl(using State): blockCtor("Assign", Ls(xSym, y, z)): cde => StagedPath(cde, symName)(k(_, ctx)) - def ruleLet(x: BlockMemberSymbol, b: Block, symName: String = "_let")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = - transformSymbol(x): xSym => - val y = StagedPath(xSym) - (Assign(x, y.code, _)): - given Context = ctx.clone() += x.asPath -> y - transformBlock(b): (z, ctx) => - blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undefined => - blockCtor("Assign", Ls(xSym, undefined, z)): cde => - StagedPath(cde, symName)(k(_, summon)) - def ruleEnd(symName: String = "end")(using Context)(k: (StagedPath, Context) => Block): Block = blockCtor("End", Ls()): cde => StagedPath(cde, symName)(k(_, summon)) @@ -333,14 +323,11 @@ class InstrumentationImpl(using State): def transformDefine(d: Define)(using Context)(k: (StagedPath, Context) => Block): Block = d.defn match - case f: FunDefn => ??? - case v: ValDefn => - val ValDefn(_, x, r) = v - ruleLet(x, Assign(x, r, d.rest))(k) case c: ClsLikeDefn => ruleCls(c, d.rest): p => ruleEnd(): (b, ctx) => fnPrintCode(p)(k(b, ctx)) + case _: FunDefn | _: ValDefn => ??? // TODO // discards result of sub @@ -350,12 +337,18 @@ class InstrumentationImpl(using State): fnConcat(sub.code, rest.code): block => StagedPath(block, "tmp")(k(_, ctx)) + def transformScoped(s: Scoped)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + val Scoped(syms, body) = s + blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => + val newCtx = ctx.clone() ++ syms.map(Value.Ref(_, N) -> StagedPath(undef)) + transformBlock(body)(using newCtx): (p, ctx) => + k(p, ctx) + // ruleBlk? def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = transformBlock(b)((p, _) => k(p)) def transformBlock(b: Block)(using Context)(k: (StagedPath, Context) => Block): Block = - val k2 = k(_, summon) b match case r: Return => ruleReturn(r)(k) case a: Assign => ruleAssign(a)(k) @@ -366,6 +359,7 @@ class InstrumentationImpl(using State): // use BlockTransformer here? case b: Begin => transformBegin(b)(k) // case Begin(b1, b2) => transformBlock(concat(b1, b2))(k) + case s: Scoped => transformScoped(s)(k) case _ => ??? // not supported // TODO: rename as InstrumentationTransformer? diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index c3eeb06081..5b92dacfa5 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -8,9 +8,6 @@ staged module Expressions with let x = 42 let y = x y - fun _var() = - val x = 1 - x fun tup1() = [1, 2] fun tup2() = [1, ..x] fun dynsel() = [1].(0) @@ -29,7 +26,6 @@ staged module Expressions with else 0 //│ > Return(Lit(1), false) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) -//│ > Assign(Symbol("x"), Lit(undefined), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false))) //│ > Return(Tuple([Lit(1), Lit(2)]), false) //│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) From 326ac69100e29141e0d296c0985fbda8d8be922f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 15:07:21 +0800 Subject: [PATCH 209/654] fix: make new dSym when cloning FunDefn --- .../shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b036dc411e..dbb2f0265e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -319,7 +319,9 @@ class InstrumentationImpl(using State): fnPrintCode(p.code)(End()) // NOTE: this debug printing only works for top-level modules, nested modules don't work - (f.copy(sym = genSym, body = transformBlock(f.body)(p => Return(p.code, false)))(false), debug) + val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) + val newFun = f.copy(sym = genSym, dSym = dSym, body = transformBlock(f.body)(p => Return(p.code, false)))(false) + (newFun, debug) def transformDefine(d: Define)(using Context)(k: (StagedPath, Context) => Block): Block = d.defn match From 77acb045d5ec78df5829360a099114a6f13f474d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 15:20:44 +0800 Subject: [PATCH 210/654] remove context from ruleEnd --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index dbb2f0265e..05b83f9a08 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -212,9 +212,9 @@ class InstrumentationImpl(using State): blockCtor("Assign", Ls(xSym, y, z)): cde => StagedPath(cde, symName)(k(_, ctx)) - def ruleEnd(symName: String = "end")(using Context)(k: (StagedPath, Context) => Block): Block = + def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = blockCtor("End", Ls()): cde => - StagedPath(cde, symName)(k(_, summon)) + StagedPath(cde, symName)(k) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) @@ -327,8 +327,8 @@ class InstrumentationImpl(using State): d.defn match case c: ClsLikeDefn => ruleCls(c, d.rest): p => - ruleEnd(): (b, ctx) => - fnPrintCode(p)(k(b, ctx)) + ruleEnd(): b => + fnPrintCode(p)(k(b, summon)) case _: FunDefn | _: ValDefn => ??? // TODO @@ -355,7 +355,7 @@ class InstrumentationImpl(using State): case r: Return => ruleReturn(r)(k) case a: Assign => ruleAssign(a)(k) case d: Define => transformDefine(d)(k) - case End(_) => ruleEnd()(k) + case End(_) => ruleEnd()(k(_, summon)) case m: Match => ruleMatch(m)(k) // temporary measure to accept returning an array // use BlockTransformer here? From ccc950d165ba3be5f9ec23a2178c7ce741c6a9b2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 16:44:01 +0800 Subject: [PATCH 211/654] add staging for functions with arguments --- .../scala/hkmc2/codegen/Instrumentation.scala | 60 +++++++++---------- .../src/test/mlscript/staging/Functions.mls | 10 ++++ 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 05b83f9a08..68a068cea5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -193,24 +193,14 @@ class InstrumentationImpl(using State): transformResult(r): y => transformSymbol(x): xSym => blockCtor("ValueRef", Ls(xSym)): xStaged => - // if ctx contains x, x was defined earlier - // otherwise, x is defined here - ctx.get(x.asPath) match - case S(x1) => - val x2 = StagedPath(xStaged) - (Assign(x, x2.code, _)): - given Context = ctx.clone() += x.asPath -> x2 - transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y, z)): cde => - StagedPath(cde, symName)(k(_, ctx)) - case N => - val x2 = StagedPath(xStaged) - // propagate shape information for future references to x - (Assign(x, y.code, _)): - given Context = ctx.clone() += x.asPath -> x2 - transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y, z)): cde => - StagedPath(cde, symName)(k(_, ctx)) + // x should always be defined, either as an argument to the function or in a Scope Block + assert(ctx.get(x.asPath).isDefined) + val x2 = StagedPath(xStaged) + (Assign(x, x2.code, _)): + given Context = ctx.clone() += x.asPath -> x2 + transformBlock(b): (z, ctx) => + blockCtor("Assign", Ls(xSym, y, z)): cde => + StagedPath(cde, symName)(k(_, ctx)) def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = blockCtor("End", Ls()): cde => @@ -236,7 +226,7 @@ class InstrumentationImpl(using State): val a = arms.map(applyRuleBranch).collectApply ((f: (Ls[StagedPath], Context) => Block) => a(ys => (ctx, _) => f(ys, ctx))(summon, x)): (arms, ctx) => tuple(arms): arms => - blockCtor("End", Ls()): e => + ruleEnd(): e => // TODO: use transformOption here def dfltStaged(k: (Path, Context) => Block) = dflt match case S(dflt) => ruleWildCard(x, p, dflt): (dflt, ctx) => @@ -308,19 +298,29 @@ class InstrumentationImpl(using State): // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead - def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn)(using Context): (FunDefn, Block) = + def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, Block) = val genSym = BlockMemberSymbol(f.sym.nme + "_gen", Nil, true) - // TODO: remove it. only for test - // TODO: put correct parameters instead of Nil val sym = modSym.asPath.selSN(genSym.nme) + // NOTE: this debug printing only works for top-level modules, nested modules don't work + // TODO: remove it. only for test val debug = - call(sym, Nil): ret => - val p = StagedPath(ret) - fnPrintCode(p.code)(End()) + blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => + // TODO: put correct parameters instead of End + // TODO: handle curried arguments + val argsList = f.params.map(ps => List.fill(ps.params.length)(undef)) + def makeCalls(k: Path => Block) = + argsList.foldRight(k)((args, cont) => res => call(res, args)(cont))(sym) + makeCalls: ret => + val p = StagedPath(ret) + fnPrintCode(p.code)(End()) - // NOTE: this debug printing only works for top-level modules, nested modules don't work val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) - val newFun = f.copy(sym = genSym, dSym = dSym, body = transformBlock(f.body)(p => Return(p.code, false)))(false) + val args = f.params.flatMap(_.params).map(_.sym) + val newBody = + ruleEnd(): end => + given Context = HashMap(args.map(s => Value.Ref(s, N) -> StagedPath(Value.Ref(s, N)))*) + transformBlock(f.body)(p => Return(p.code, false)) + val newFun = f.copy(sym = genSym, dSym = dSym, body = newBody)(false) (newFun, debug) def transformDefine(d: Define)(using Context)(k: (StagedPath, Context) => Block): Block = @@ -335,14 +335,14 @@ class InstrumentationImpl(using State): // discards result of sub def transformBegin(b: Begin)(using Context)(k: (StagedPath, Context) => Block): Block = transformBlock(b.sub): (sub, ctx) => - transformBlock(b.rest): (rest, ctx) => + transformBlock(b.rest)(using ctx): (rest, ctx) => fnConcat(sub.code, rest.code): block => StagedPath(block, "tmp")(k(_, ctx)) def transformScoped(s: Scoped)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Scoped(syms, body) = s blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => - val newCtx = ctx.clone() ++ syms.map(Value.Ref(_, N) -> StagedPath(undef)) + val newCtx = ctx.clone() ++ syms.map(_.asPath -> StagedPath(undef)) transformBlock(body)(using newCtx): (p, ctx) => k(p, ctx) @@ -376,7 +376,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods - .map(impl.transformFunDefn(sym, _)(using new HashMap())) // fold instead to retain env? + .map(impl.transformFunDefn(sym, _)) .unzip val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => End()) val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 5b92dacfa5..4955cb1749 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -46,6 +46,16 @@ staged module ClassInstrumentation with //│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) //│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), Symbol("NoArg")), []), false) +:js +:staging +staged module Arguments with + fun f(x) = + x = 1 + x + fun g(x)(y, z)() = z +//│ > Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)) +//│ > Return(Lit(undefined), false) + // debug printing fails, collision with class name? :js :staging From dee92b143c1727d5cf7a069c6bce4967e622ddb6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 16:53:30 +0800 Subject: [PATCH 212/654] progress: simplify StagedPath --- .../scala/hkmc2/codegen/Instrumentation.scala | 64 +++++++++---------- .../src/test/mlscript/staging/Functions.mls | 4 +- 2 files changed, 32 insertions(+), 36 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 68a068cea5..df0c15aeb2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -90,18 +90,14 @@ class InstrumentationImpl(using State): case class StagedPath(code: Path) - object StagedPath: - def apply(code: Path, symName: Str = "tmp")(k: StagedPath => Block): Block = - k(StagedPath(code)) - // linking functions defined in MLscipt def fnPrintCode(p: Path)(k: Block): Block = // discard result, we only care about side effect blockCall("printCode", Ls(p))(_ => k) - def fnConcat(p1: Path, p2: Path)(k: Path => Block): Block = - blockCall("concat", Ls(p1, p2))(k) + def fnConcat(p1: Path, p2: Path, symName: String = "concat")(k: Path => Block): Block = + blockCall("concat", Ls(p1, p2), symName)(k) // transformation helpers @@ -120,43 +116,43 @@ class InstrumentationImpl(using State): // instrumentation rules def ruleLit(l: Value.Lit, symName: String = "lit")(k: StagedPath => Block): Block = - blockCtor("ValueLit", Ls(l)): cde => - StagedPath(cde, symName)(k) + blockCtor("ValueLit", Ls(l), symName): cde => + k(StagedPath(cde)) // not in formalization def ruleVar(r: Value.Ref, symName: String = "var")(k: StagedPath => Block): Block = val Value.Ref(l, disamb) = r transformSymbol(disamb.getOrElse(l)): sym => - blockCtor("ValueRef", Ls(sym)): cde => - StagedPath(cde, symName)(k) + blockCtor("ValueRef", Ls(sym), symName): cde => + k(StagedPath(cde)) def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => tuple(xs.map(_._1)): codes => - blockCtor("Tuple", Ls(codes)): cde => - StagedPath(cde, symName)(k) + blockCtor("Tuple", Ls(codes), symName): cde => + k(StagedPath(cde)) def ruleSel(s: Select, symName: String = "sel")(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => blockCtor("Symbol", Ls(toValue(name))): name => - blockCtor("Select", Ls(x, name)): cde => - StagedPath(cde, symName)(k) + blockCtor("Select", Ls(x, name), symName): cde => + k(StagedPath(cde)) def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: StagedPath => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => - blockCtor("DynSelect", Ls(x, y, toValue(d.arrayIdx))): cde => - StagedPath(cde, symName)(k) + blockCtor("DynSelect", Ls(x, y, toValue(d.arrayIdx)), symName): cde => + k(StagedPath(cde)) // TODO def ruleApp(c: Call, symName: String = "app")(using Context)(k: StagedPath => Block): Block = transformPath(c.fun): fun => transformArgs(c.args): args => tuple(args.map(_._1)): tup => - blockCtor("Call", Ls(fun, tup)): res => - StagedPath(res, symName)(k) + blockCtor("Call", Ls(fun, tup), symName): res => + k(StagedPath(res)) def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i @@ -172,21 +168,21 @@ class InstrumentationImpl(using State): // possible to skip this? this uses ruleVar, which is not in formalization transformPath(cls): cls => tuple(xs.map(_._1)): codes => - blockCtor("Instantiate", Ls(cls, codes)): cde => - StagedPath(cde, symName)(k) + blockCtor("Instantiate", Ls(cls, codes), symName): cde => + k(StagedPath(cde)) def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => - blockCtor("Return", Ls(x.code, toValue(false))): cde => - StagedPath(cde, symName)(k(_, summon)) + blockCtor("Return", Ls(x.code, toValue(false)), symName): cde => + k(StagedPath(cde), summon) def ruleMatch(m: Match, symName: String = "match")(using Context)(k: (StagedPath, Context) => Block): Block = val Match(p, ks, dflt, rest) = m transformPath(p): x => ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => - fnConcat(stagedMatch.code, z.code): cde => - StagedPath(cde, symName)(k(_, ctx2)) + fnConcat(stagedMatch.code, z.code, symName): cde => + k(StagedPath(cde), ctx2) def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Assign(x, r, b) = a @@ -199,12 +195,12 @@ class InstrumentationImpl(using State): (Assign(x, x2.code, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y, z)): cde => - StagedPath(cde, symName)(k(_, ctx)) + blockCtor("Assign", Ls(xSym, y, z), symName): cde => + k(StagedPath(cde), ctx) def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = - blockCtor("End", Ls()): cde => - StagedPath(cde, symName)(k) + blockCtor("End", Ls(), symName): cde => + k(StagedPath(cde)) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) @@ -233,16 +229,16 @@ class InstrumentationImpl(using State): optionSome(dflt.code)(k(_, ctx)) case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => - blockCtor("Match", Ls(x.code, arms, dflt, e)): m => - StagedPath(m, symName)(k(_, ctx)) + blockCtor("Match", Ls(x.code, arms, dflt, e), symName): m => + k(StagedPath(m), ctx) def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (StagedPath, Context, StagedPath) => Block): Block = transformCase(cse): cse => transformBlock(b)(using ctx.clone() += p -> x): (y, ctx) => // TODO: use Arm type instead of Tup - tuple(Ls(cse, y)): cde => - StagedPath(cde, symName): ret => - k(ret, ctx.clone() -= p, x) + tuple(Ls(cse, y), symName): cde => + val ret = StagedPath(cde) + k(ret, ctx.clone() -= p, x) def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = given Context = ctx.clone() += p -> x @@ -337,7 +333,7 @@ class InstrumentationImpl(using State): transformBlock(b.sub): (sub, ctx) => transformBlock(b.rest)(using ctx): (rest, ctx) => fnConcat(sub.code, rest.code): block => - StagedPath(block, "tmp")(k(_, ctx)) + k(StagedPath(block), ctx) def transformScoped(s: Scoped)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Scoped(syms, body) = s diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 4955cb1749..c33981860c 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -74,8 +74,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.67: staged module B with +//│ ║ l.73: staged module B with //│ ║ ^^^^^^ -//│ ║ l.68: fun f() = 1 +//│ ║ l.74: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From e6fd90ab13bb0e55dd63b0fc0a585528c5e6d905 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 17:02:09 +0800 Subject: [PATCH 213/654] progress: Make blockCtor produce StagedPath --- .../scala/hkmc2/codegen/Instrumentation.scala | 52 ++++++++----------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index df0c15aeb2..f1b4fa79f1 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -78,8 +78,8 @@ class InstrumentationImpl(using State): def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) - def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - ctor(blockMod(name), args, symName)(k) + def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: StagedPath => Block): Block = + ctor(blockMod(name), args, symName)(p => k(StagedPath(p))) def optionSome(arg: ArgWrappable, symName: Str = "tmp")(k: Path => Block): Block = ctor(optionMod("Some"), Ls(arg), symName)(k) def optionNone(symName: Str = "tmp")(k: Path => Block): Block = @@ -92,7 +92,7 @@ class InstrumentationImpl(using State): // linking functions defined in MLscipt - def fnPrintCode(p: Path)(k: Block): Block = + def fnPrintCode(p: StagedPath)(k: Block): Block = // discard result, we only care about side effect blockCall("printCode", Ls(p))(_ => k) @@ -101,7 +101,7 @@ class InstrumentationImpl(using State): // transformation helpers - def transformSymbol[S <: Symbol](sym: S, symName: Str = "sym")(k: Path => Block): Block = + def transformSymbol[S <: Symbol](sym: S, symName: Str = "sym")(k: StagedPath => Block): Block = sym match case clsSym: ClassSymbol => transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => @@ -116,43 +116,37 @@ class InstrumentationImpl(using State): // instrumentation rules def ruleLit(l: Value.Lit, symName: String = "lit")(k: StagedPath => Block): Block = - blockCtor("ValueLit", Ls(l), symName): cde => - k(StagedPath(cde)) + blockCtor("ValueLit", Ls(l), symName)(k) // not in formalization def ruleVar(r: Value.Ref, symName: String = "var")(k: StagedPath => Block): Block = val Value.Ref(l, disamb) = r transformSymbol(disamb.getOrElse(l)): sym => - blockCtor("ValueRef", Ls(sym), symName): cde => - k(StagedPath(cde)) + blockCtor("ValueRef", Ls(sym), symName)(k) def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => tuple(xs.map(_._1)): codes => - blockCtor("Tuple", Ls(codes), symName): cde => - k(StagedPath(cde)) + blockCtor("Tuple", Ls(codes), symName)(k) def ruleSel(s: Select, symName: String = "sel")(using Context)(k: StagedPath => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => blockCtor("Symbol", Ls(toValue(name))): name => - blockCtor("Select", Ls(x, name), symName): cde => - k(StagedPath(cde)) + blockCtor("Select", Ls(x, name), symName)(k) def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: StagedPath => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => - blockCtor("DynSelect", Ls(x, y, toValue(d.arrayIdx)), symName): cde => - k(StagedPath(cde)) + blockCtor("DynSelect", Ls(x, y, toValue(d.arrayIdx)), symName)(k) // TODO def ruleApp(c: Call, symName: String = "app")(using Context)(k: StagedPath => Block): Block = transformPath(c.fun): fun => transformArgs(c.args): args => tuple(args.map(_._1)): tup => - blockCtor("Call", Ls(fun, tup), symName): res => - k(StagedPath(res)) + blockCtor("Call", Ls(fun, tup), symName)(k) def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = val Instantiate(mut, cls, args) = i @@ -168,13 +162,12 @@ class InstrumentationImpl(using State): // possible to skip this? this uses ruleVar, which is not in formalization transformPath(cls): cls => tuple(xs.map(_._1)): codes => - blockCtor("Instantiate", Ls(cls, codes), symName): cde => - k(StagedPath(cde)) + blockCtor("Instantiate", Ls(cls, codes), symName)(k) def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (StagedPath, Context) => Block): Block = transformResult(r.res): x => blockCtor("Return", Ls(x.code, toValue(false)), symName): cde => - k(StagedPath(cde), summon) + k(cde, summon) def ruleMatch(m: Match, symName: String = "match")(using Context)(k: (StagedPath, Context) => Block): Block = val Match(p, ks, dflt, rest) = m @@ -191,21 +184,20 @@ class InstrumentationImpl(using State): blockCtor("ValueRef", Ls(xSym)): xStaged => // x should always be defined, either as an argument to the function or in a Scope Block assert(ctx.get(x.asPath).isDefined) - val x2 = StagedPath(xStaged) + val x2 = xStaged (Assign(x, x2.code, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y, z), symName): cde => - k(StagedPath(cde), ctx) + k(cde, ctx) def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = - blockCtor("End", Ls(), symName): cde => - k(StagedPath(cde)) + blockCtor("End", Ls(), symName)(k) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)(k apply _.code) - def ruleCls(cls: ClsLikeDefn, rest: Block)(using Context)(k: Path => Block): Block = + def ruleCls(cls: ClsLikeDefn, rest: Block)(using Context)(k: StagedPath => Block): Block = assert(cls.companion.isEmpty, "nested module not supported") (Define(cls, _)): transformBlock(rest): p => @@ -229,8 +221,7 @@ class InstrumentationImpl(using State): optionSome(dflt.code)(k(_, ctx)) case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => - blockCtor("Match", Ls(x.code, arms, dflt, e), symName): m => - k(StagedPath(m), ctx) + blockCtor("Match", Ls(x.code, arms, dflt, e), symName)(k(_, ctx)) def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (StagedPath, Context, StagedPath) => Block): Block = transformCase(cse): cse => @@ -270,8 +261,7 @@ class InstrumentationImpl(using State): transformOption(spread, bool => assign(toValue(bool))): spreadStaged => transformPath(value): value => blockCtor("Arg", Ls(spreadStaged, value)): cde => - val res = StagedPath(cde) - k(res, spread.isDefined) + k(cde, spread.isDefined) def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(StagedPath, Bool)] => Block): Block = args.map(transformArg).collectApply(k) @@ -282,7 +272,7 @@ class InstrumentationImpl(using State): def transformParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = transformOption(pOpt, transformParamList)(k) - def transformCase(cse: Case)(using Context)(k: Path => Block): Block = + def transformCase(cse: Case)(using Context)(k: StagedPath => Block): Block = cse match case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) case Case.Cls(cls, path) => @@ -308,7 +298,7 @@ class InstrumentationImpl(using State): argsList.foldRight(k)((args, cont) => res => call(res, args)(cont))(sym) makeCalls: ret => val p = StagedPath(ret) - fnPrintCode(p.code)(End()) + fnPrintCode(p)(End()) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) val args = f.params.flatMap(_.params).map(_.sym) @@ -338,7 +328,7 @@ class InstrumentationImpl(using State): def transformScoped(s: Scoped)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = val Scoped(syms, body) = s blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => - val newCtx = ctx.clone() ++ syms.map(_.asPath -> StagedPath(undef)) + val newCtx = ctx.clone() ++ syms.map(_.asPath -> undef) transformBlock(body)(using newCtx): (p, ctx) => k(p, ctx) From 59a4af21a4c108cb1e590f75626ac75108f55870 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 18:21:37 +0800 Subject: [PATCH 214/654] use ClassSymbol for ruleApp --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 5 +++-- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f1b4fa79f1..2e6467d654 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -101,11 +101,13 @@ class InstrumentationImpl(using State): // transformation helpers - def transformSymbol[S <: Symbol](sym: S, symName: Str = "sym")(k: StagedPath => Block): Block = + def transformSymbol(sym: Symbol, symName: Str = "sym")(k: StagedPath => Block): Block = sym match case clsSym: ClassSymbol => transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt), symName)(k) + case t: TermSymbol if t.defn.exists(_.sym.asCls.isDefined) => + transformSymbol(t.defn.get.sym.asCls.get, symName)(k) case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = @@ -141,7 +143,6 @@ class InstrumentationImpl(using State): transformPath(d.fld): y => blockCtor("DynSelect", Ls(x, y, toValue(d.arrayIdx)), symName)(k) - // TODO def ruleApp(c: Call, symName: String = "app")(using Context)(k: StagedPath => Block): Block = transformPath(c.fun): fun => transformArgs(c.args): args => diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index c33981860c..a9de261955 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -41,10 +41,12 @@ staged module ClassInstrumentation with class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg + fun app() = Outside(1) //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) //│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) //│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) //│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), Symbol("NoArg")), []), false) +//│ > Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) :js :staging From 5adcfa39aba77e55773be1ac0e792b92ec5e6d56 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 18:30:27 +0800 Subject: [PATCH 215/654] formatting --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 9 ++++----- hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 2e6467d654..355c8fc475 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -96,7 +96,7 @@ class InstrumentationImpl(using State): // discard result, we only care about side effect blockCall("printCode", Ls(p))(_ => k) - def fnConcat(p1: Path, p2: Path, symName: String = "concat")(k: Path => Block): Block = + def fnConcat(p1: StagedPath, p2: StagedPath, symName: String = "concat")(k: Path => Block): Block = blockCall("concat", Ls(p1, p2), symName)(k) // transformation helpers @@ -175,7 +175,7 @@ class InstrumentationImpl(using State): transformPath(p): x => ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => - fnConcat(stagedMatch.code, z.code, symName): cde => + fnConcat(stagedMatch, z, symName): cde => k(StagedPath(cde), ctx2) def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = @@ -189,8 +189,7 @@ class InstrumentationImpl(using State): (Assign(x, x2.code, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y, z), symName): cde => - k(cde, ctx) + blockCtor("Assign", Ls(xSym, y, z), symName)(k(_, ctx)) def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = blockCtor("End", Ls(), symName)(k) @@ -323,7 +322,7 @@ class InstrumentationImpl(using State): def transformBegin(b: Begin)(using Context)(k: (StagedPath, Context) => Block): Block = transformBlock(b.sub): (sub, ctx) => transformBlock(b.rest)(using ctx): (rest, ctx) => - fnConcat(sub.code, rest.code): block => + fnConcat(sub, rest): block => k(StagedPath(block), ctx) def transformScoped(s: Scoped)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index bfa47c79be..50a9e50b9b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -1065,7 +1065,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): val merged = MergeMatchArmTransformer.applyBlock(bufferable) val staged = - if config.stageCode then Instrumentation(using summon).applyBlock(merged) + if config.stageCode then Instrumentation().applyBlock(merged) else merged val res = From a4c8df09f3aa9bc29d47ac9178ce5aa9ba6b982c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 18 Dec 2025 18:44:42 +0800 Subject: [PATCH 216/654] update tests --- .../src/test/mlscript/staging/Functions.mls | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index a9de261955..509fa8423f 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -21,8 +21,8 @@ staged module Expressions with fun match2() = if [...x] is [] then 1 - [a, ...] then 2 - // [1, 2] then 5 // TODO: needs handling for Label, Break + // [1, 2] then 2 // TODO: needs handling for Label, Break + [a, ...] then 3 else 0 //│ > Return(Lit(1), false) //│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) @@ -30,9 +30,20 @@ staged module Expressions with //│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) //│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) //│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End)) -//│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Return(Lit(1), false), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Return(Lit(2), false))))], Return(Lit(0), false), End)) +//│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Return(Lit(1), false), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Return(Lit(3), false))))], Return(Lit(0), false), End)) //│ x = [1, 2, 3] +:js +:staging +:fixme +staged module OtherBlocks with + fun breakAndLabel() = + if 1 is + 2 then 0 + 3 then 0 + else 0 +//│ /!!!\ Uncaught error: scala.NotImplementedError: an implementation is missing + :js :staging class Outside(a) @@ -41,12 +52,14 @@ staged module ClassInstrumentation with class NoArg fun inst1() = new Outside(1) fun inst2() = new NoArg - fun app() = Outside(1) + fun app1() = Outside(1) + fun app2() = Inside(1, 2) //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) //│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) //│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) //│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), Symbol("NoArg")), []), false) //│ > Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) +//│ > Return(Call(Select(Ref(Symbol("ClassInstrumentation")), Symbol("Inside")), [Lit(1), Lit(2)]), false) :js :staging @@ -76,8 +89,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.73: staged module B with +//│ ║ l.88: staged module B with //│ ║ ^^^^^^ -//│ ║ l.74: fun f() = 1 +//│ ║ l.89: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From 7abddf95ac7211d47aee38f07e46c3949fcdea51 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 22 Dec 2025 23:06:27 +0800 Subject: [PATCH 217/654] remove StagedPath after shape information is removed, the extra typechecking is no longer helpful --- .../scala/hkmc2/codegen/Instrumentation.scala | 127 ++++++++---------- 1 file changed, 57 insertions(+), 70 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 355c8fc475..0dd49eacab 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -22,13 +22,12 @@ import syntax.{Literal, Tree} // transform Block to Block IR so that it can be instrumented in mlscript class InstrumentationImpl(using State): - type ArgWrappable = Path | StagedPath | Symbol - type Context = HashMap[Path, StagedPath] + type ArgWrappable = Path | Symbol + type Context = HashMap[Path, Path] def asArg(x: ArgWrappable): Arg = x match case p: Path => p.asArg - case s: StagedPath => s.code.asArg case l: Symbol => l.asPath.asArg // null and undefined are missing @@ -40,12 +39,6 @@ class InstrumentationImpl(using State): case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) - def concat(b1: Block, b2: Block): Block = - b1.mapTail { - case _: End => b2 - case _ => ??? - } - extension [A, B](ls: Ls[(A => B) => B]) def collectApply(f: Ls[A] => B): B = // defer applying k while prepending new elements to the list @@ -78,8 +71,8 @@ class InstrumentationImpl(using State): def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) - def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: StagedPath => Block): Block = - ctor(blockMod(name), args, symName)(p => k(StagedPath(p))) + def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + ctor(blockMod(name), args, symName)(k) def optionSome(arg: ArgWrappable, symName: Str = "tmp")(k: Path => Block): Block = ctor(optionMod("Some"), Ls(arg), symName)(k) def optionNone(symName: Str = "tmp")(k: Path => Block): Block = @@ -88,20 +81,18 @@ class InstrumentationImpl(using State): def blockCall(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = call(blockMod(name), args, symName = symName)(k) - case class StagedPath(code: Path) - // linking functions defined in MLscipt - def fnPrintCode(p: StagedPath)(k: Block): Block = + def fnPrintCode(p: Path)(k: Block): Block = // discard result, we only care about side effect blockCall("printCode", Ls(p))(_ => k) - def fnConcat(p1: StagedPath, p2: StagedPath, symName: String = "concat")(k: Path => Block): Block = + def fnConcat(p1: Path, p2: Path, symName: String = "concat")(k: Path => Block): Block = blockCall("concat", Ls(p1, p2), symName)(k) // transformation helpers - def transformSymbol(sym: Symbol, symName: Str = "sym")(k: StagedPath => Block): Block = + def transformSymbol(sym: Symbol, symName: Str = "sym")(k: Path => Block): Block = sym match case clsSym: ClassSymbol => transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => @@ -117,68 +108,60 @@ class InstrumentationImpl(using State): // instrumentation rules - def ruleLit(l: Value.Lit, symName: String = "lit")(k: StagedPath => Block): Block = + def ruleLit(l: Value.Lit, symName: String = "lit")(k: Path => Block): Block = blockCtor("ValueLit", Ls(l), symName)(k) // not in formalization - def ruleVar(r: Value.Ref, symName: String = "var")(k: StagedPath => Block): Block = + def ruleVar(r: Value.Ref, symName: String = "var")(k: Path => Block): Block = val Value.Ref(l, disamb) = r transformSymbol(disamb.getOrElse(l)): sym => blockCtor("ValueRef", Ls(sym), symName)(k) - def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: StagedPath => Block): Block = + def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: Path => Block): Block = assert(!t.mut, "mutable tuple not supported") transformArgs(t.elems): xs => tuple(xs.map(_._1)): codes => blockCtor("Tuple", Ls(codes), symName)(k) - def ruleSel(s: Select, symName: String = "sel")(using Context)(k: StagedPath => Block): Block = + def ruleSel(s: Select, symName: String = "sel")(using Context)(k: Path => Block): Block = val Select(p, i @ Tree.Ident(name)) = s transformPath(p): x => blockCtor("Symbol", Ls(toValue(name))): name => blockCtor("Select", Ls(x, name), symName)(k) - def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: StagedPath => Block): Block = + def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: Path => Block): Block = transformPath(d.qual): x => transformPath(d.fld): y => blockCtor("DynSelect", Ls(x, y, toValue(d.arrayIdx)), symName)(k) - def ruleApp(c: Call, symName: String = "app")(using Context)(k: StagedPath => Block): Block = + def ruleApp(c: Call, symName: String = "app")(using Context)(k: Path => Block): Block = transformPath(c.fun): fun => transformArgs(c.args): args => tuple(args.map(_._1)): tup => blockCtor("Call", Ls(fun, tup), symName)(k) - def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: StagedPath => Block): Block = + def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: Path => Block): Block = val Instantiate(mut, cls, args) = i assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => - val sym = cls match - // TODO: if class is staged, we can just use Symbol without storing the arguments - case Value.Ref(l, S(disamb)) => transformSymbol(disamb) - case s: Select if s.symbol.isDefined => transformSymbol(s.symbol.get) - case _ => transformSymbol(TempSymbol(N, "TODO")) - sym: sym => - // reuse instrumentation logic, shape of cls is discarded - // possible to skip this? this uses ruleVar, which is not in formalization - transformPath(cls): cls => - tuple(xs.map(_._1)): codes => - blockCtor("Instantiate", Ls(cls, codes), symName)(k) - - def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (StagedPath, Context) => Block): Block = + transformPath(cls): cls => + tuple(xs.map(_._1)): codes => + blockCtor("Instantiate", Ls(cls, codes), "inst")(k) + + def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (Path, Context) => Block): Block = transformResult(r.res): x => - blockCtor("Return", Ls(x.code, toValue(false)), symName): cde => + blockCtor("Return", Ls(x, toValue(false)), symName): cde => k(cde, summon) - def ruleMatch(m: Match, symName: String = "match")(using Context)(k: (StagedPath, Context) => Block): Block = + def ruleMatch(m: Match, symName: String = "match")(using Context)(k: (Path, Context) => Block): Block = val Match(p, ks, dflt, rest) = m transformPath(p): x => ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => transformBlock(rest)(using ctx1): (z, ctx2) => fnConcat(stagedMatch, z, symName): cde => - k(StagedPath(cde), ctx2) + k(cde, ctx2) - def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (Path, Context) => Block): Block = val Assign(x, r, b) = a transformResult(r): y => transformSymbol(x): xSym => @@ -186,18 +169,18 @@ class InstrumentationImpl(using State): // x should always be defined, either as an argument to the function or in a Scope Block assert(ctx.get(x.asPath).isDefined) val x2 = xStaged - (Assign(x, x2.code, _)): + (Assign(x, x2, _)): given Context = ctx.clone() += x.asPath -> x2 transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y, z), symName)(k(_, ctx)) - def ruleEnd(symName: String = "end")(k: StagedPath => Block): Block = + def ruleEnd(symName: String = "end")(k: Path => Block): Block = blockCtor("End", Ls(), symName)(k) def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = - transformBlock(b)(k apply _.code) + transformBlock(b)(k) - def ruleCls(cls: ClsLikeDefn, rest: Block)(using Context)(k: StagedPath => Block): Block = + def ruleCls(cls: ClsLikeDefn, rest: Block)(using Context)(k: Path => Block): Block = assert(cls.companion.isEmpty, "nested module not supported") (Define(cls, _)): transformBlock(rest): p => @@ -207,38 +190,36 @@ class InstrumentationImpl(using State): blockCtor("ClsLikeDefn", Ls(c, none)): cls => blockCtor("Define", Ls(cls, p))(k) - def ruleBranches(x: StagedPath, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (StagedPath, Context) => Block): Block = - def applyRuleBranch(cse: Case, block: Block)(f: StagedPath => (Context, StagedPath) => Block)(ctx: Context, x: StagedPath): Block = + def ruleBranches(x: Path, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (Path, Context) => Block): Block = + def applyRuleBranch(cse: Case, block: Block)(f: Path => (Context, Path) => Block)(ctx: Context, x: Path): Block = ruleBranch(x, p, cse, block)(using ctx)((y, ctx, x) => f(y)(ctx, x)) val a = arms.map(applyRuleBranch).collectApply - ((f: (Ls[StagedPath], Context) => Block) => a(ys => (ctx, _) => f(ys, ctx))(summon, x)): (arms, ctx) => + ((f: (Ls[Path], Context) => Block) => a(ys => (ctx, _) => f(ys, ctx))(summon, x)): (arms, ctx) => tuple(arms): arms => ruleEnd(): e => // TODO: use transformOption here def dfltStaged(k: (Path, Context) => Block) = dflt match - case S(dflt) => ruleWildCard(x, p, dflt): (dflt, ctx) => - optionSome(dflt.code)(k(_, ctx)) + case S(dflt) => ruleWildCard(x, p, dflt)((dflt, ctx) => optionSome(dflt)(k(_, ctx))) case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => - blockCtor("Match", Ls(x.code, arms, dflt, e), symName)(k(_, ctx)) + blockCtor("Match", Ls(x, arms, dflt, e), symName)(k(_, ctx)) - def ruleBranch(x: StagedPath, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (StagedPath, Context, StagedPath) => Block): Block = + def ruleBranch(x: Path, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (Path, Context, Path) => Block): Block = transformCase(cse): cse => transformBlock(b)(using ctx.clone() += p -> x): (y, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y), symName): cde => - val ret = StagedPath(cde) - k(ret, ctx.clone() -= p, x) + k(cde, ctx.clone() -= p, x) - def ruleWildCard(x: StagedPath, p: Path, b: Block)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def ruleWildCard(x: Path, p: Path, b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = given Context = ctx.clone() += p -> x transformBlock(b): (y, ctx) => k(y, ctx.clone() -= p) // transformations of Block - def transformPath(p: Path)(using ctx: Context)(k: StagedPath => Block): Block = + def transformPath(p: Path)(using ctx: Context)(k: Path => Block): Block = // rulePath ctx.get(p).map(k).getOrElse: p match @@ -248,7 +229,7 @@ class InstrumentationImpl(using State): case d: DynSelect => ruleDynSel(d)(k) case _ => ??? // not supported - def transformResult(r: Result)(using Context)(k: StagedPath => Block): Block = + def transformResult(r: Result)(using Context)(k: Path => Block): Block = r match case p: Path => transformPath(p)(k) case t: Tuple => ruleTup(t)(k) @@ -256,14 +237,14 @@ class InstrumentationImpl(using State): case c: Call => ruleApp(c)(k) case _ => ??? // not supported - def transformArg(a: Arg)(using Context)(k: ((StagedPath, Bool)) => Block): Block = + def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = val Arg(spread, value) = a transformOption(spread, bool => assign(toValue(bool))): spreadStaged => transformPath(value): value => blockCtor("Arg", Ls(spreadStaged, value)): cde => k(cde, spread.isDefined) - def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(StagedPath, Bool)] => Block): Block = + def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(Path, Bool)] => Block): Block = args.map(transformArg).collectApply(k) def transformParamList(ps: ParamList)(k: Path => Block) = @@ -272,7 +253,7 @@ class InstrumentationImpl(using State): def transformParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = transformOption(pOpt, transformParamList)(k) - def transformCase(cse: Case)(using Context)(k: StagedPath => Block): Block = + def transformCase(cse: Case)(using Context)(k: Path => Block): Block = cse match case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) case Case.Cls(cls, path) => @@ -297,19 +278,19 @@ class InstrumentationImpl(using State): def makeCalls(k: Path => Block) = argsList.foldRight(k)((args, cont) => res => call(res, args)(cont))(sym) makeCalls: ret => - val p = StagedPath(ret) + val p = ret fnPrintCode(p)(End()) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) val args = f.params.flatMap(_.params).map(_.sym) val newBody = ruleEnd(): end => - given Context = HashMap(args.map(s => Value.Ref(s, N) -> StagedPath(Value.Ref(s, N)))*) - transformBlock(f.body)(p => Return(p.code, false)) + given Context = HashMap(args.map(s => Value.Ref(s, N) -> Value.Ref(s, N))*) + transformBlock(f.body)(p => Return(p, false)) val newFun = f.copy(sym = genSym, dSym = dSym, body = newBody)(false) (newFun, debug) - def transformDefine(d: Define)(using Context)(k: (StagedPath, Context) => Block): Block = + def transformDefine(d: Define)(using Context)(k: (Path, Context) => Block): Block = d.defn match case c: ClsLikeDefn => ruleCls(c, d.rest): p => @@ -319,13 +300,13 @@ class InstrumentationImpl(using State): // TODO // discards result of sub - def transformBegin(b: Begin)(using Context)(k: (StagedPath, Context) => Block): Block = + def transformBegin(b: Begin)(using Context)(k: (Path, Context) => Block): Block = transformBlock(b.sub): (sub, ctx) => transformBlock(b.rest)(using ctx): (rest, ctx) => fnConcat(sub, rest): block => - k(StagedPath(block), ctx) + k(block, ctx) - def transformScoped(s: Scoped)(using ctx: Context)(k: (StagedPath, Context) => Block): Block = + def transformScoped(s: Scoped)(using ctx: Context)(k: (Path, Context) => Block): Block = val Scoped(syms, body) = s blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => val newCtx = ctx.clone() ++ syms.map(_.asPath -> undef) @@ -333,10 +314,10 @@ class InstrumentationImpl(using State): k(p, ctx) // ruleBlk? - def transformBlock(b: Block)(using Context)(k: StagedPath => Block): Block = + def transformBlock(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)((p, _) => k(p)) - def transformBlock(b: Block)(using Context)(k: (StagedPath, Context) => Block): Block = + def transformBlock(b: Block)(using Context)(k: (Path, Context) => Block): Block = b match case r: Return => ruleReturn(r)(k) case a: Assign => ruleAssign(a)(k) @@ -345,7 +326,7 @@ class InstrumentationImpl(using State): case m: Match => ruleMatch(m)(k) // temporary measure to accept returning an array // use BlockTransformer here? - case b: Begin => transformBegin(b)(k) + case b: Begin => ??? // transformBegin(b)(k) // case Begin(b1, b2) => transformBlock(concat(b1, b2))(k) case s: Scoped => transformScoped(s)(k) case _ => ??? // not supported @@ -354,6 +335,12 @@ class InstrumentationImpl(using State): class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val impl = new InstrumentationImpl + def concat(b1: Block, b2: Block): Block = + b1.mapTail { + case _: End => b2 + case _ => ??? + } + override def applyBlock(b: Block): Block = super.applyBlock(b) match case d @ Define(defn, rest) => defn match @@ -368,7 +355,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) val newModule = c.copy(sym = sym, companion = S(newCompanion)) // debug is printed after definition - val debugBlock = debugPrintCode.foldRight(rest)(impl.concat) + val debugBlock = debugPrintCode.foldRight(rest)(concat) Define(newModule, debugBlock) case _ => d case b => b From f0c6f52b6b3275fdc85e5b31dab3ef370e4761fa Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 22 Dec 2025 23:17:56 +0800 Subject: [PATCH 218/654] formatting --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 0dd49eacab..c5d13f1e49 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -168,9 +168,8 @@ class InstrumentationImpl(using State): blockCtor("ValueRef", Ls(xSym)): xStaged => // x should always be defined, either as an argument to the function or in a Scope Block assert(ctx.get(x.asPath).isDefined) - val x2 = xStaged - (Assign(x, x2, _)): - given Context = ctx.clone() += x.asPath -> x2 + (Assign(x, xStaged, _)): + given Context = ctx.clone() += x.asPath -> xStaged transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y, z), symName)(k(_, ctx)) From a407e01b24519117db7304d9846870a875859d27 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 00:06:18 +0800 Subject: [PATCH 219/654] inline functions --- .../scala/hkmc2/codegen/Instrumentation.scala | 274 +++++++----------- 1 file changed, 105 insertions(+), 169 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index c5d13f1e49..29c42ad81a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -14,9 +14,6 @@ import semantics.Elaborator.State import syntax.{Literal, Tree} -// it seems some logic should be deferred to BlockTransformer to dedup code -// but it doesn't accept the current context, so applications seem limited - // it should be possible to cache some common constructions (End, Option) into the context // this avoids having to rebuild the same shapes everytime they are needed @@ -108,90 +105,16 @@ class InstrumentationImpl(using State): // instrumentation rules - def ruleLit(l: Value.Lit, symName: String = "lit")(k: Path => Block): Block = - blockCtor("ValueLit", Ls(l), symName)(k) - - // not in formalization - def ruleVar(r: Value.Ref, symName: String = "var")(k: Path => Block): Block = - val Value.Ref(l, disamb) = r - transformSymbol(disamb.getOrElse(l)): sym => - blockCtor("ValueRef", Ls(sym), symName)(k) - - def ruleTup(t: Tuple, symName: String = "tup")(using Context)(k: Path => Block): Block = - assert(!t.mut, "mutable tuple not supported") - transformArgs(t.elems): xs => - tuple(xs.map(_._1)): codes => - blockCtor("Tuple", Ls(codes), symName)(k) - - def ruleSel(s: Select, symName: String = "sel")(using Context)(k: Path => Block): Block = - val Select(p, i @ Tree.Ident(name)) = s - transformPath(p): x => - blockCtor("Symbol", Ls(toValue(name))): name => - blockCtor("Select", Ls(x, name), symName)(k) - - def ruleDynSel(d: DynSelect, symName: String = "dynsel")(using Context)(k: Path => Block): Block = - transformPath(d.qual): x => - transformPath(d.fld): y => - blockCtor("DynSelect", Ls(x, y, toValue(d.arrayIdx)), symName)(k) - - def ruleApp(c: Call, symName: String = "app")(using Context)(k: Path => Block): Block = - transformPath(c.fun): fun => - transformArgs(c.args): args => - tuple(args.map(_._1)): tup => - blockCtor("Call", Ls(fun, tup), symName)(k) - - def ruleInst(i: Instantiate, symName: String = "inst")(using Context)(k: Path => Block): Block = - val Instantiate(mut, cls, args) = i - assert(!mut, "mutable instantiation not supported") - transformArgs(args): xs => - transformPath(cls): cls => - tuple(xs.map(_._1)): codes => - blockCtor("Instantiate", Ls(cls, codes), "inst")(k) - - def ruleReturn(r: Return, symName: String = "return")(using Context)(k: (Path, Context) => Block): Block = - transformResult(r.res): x => - blockCtor("Return", Ls(x, toValue(false)), symName): cde => - k(cde, summon) - - def ruleMatch(m: Match, symName: String = "match")(using Context)(k: (Path, Context) => Block): Block = - val Match(p, ks, dflt, rest) = m - transformPath(p): x => - ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => - transformBlock(rest)(using ctx1): (z, ctx2) => - fnConcat(stagedMatch, z, symName): cde => - k(cde, ctx2) - - def ruleAssign(a: Assign, symName: String = "assign")(using ctx: Context)(k: (Path, Context) => Block): Block = - val Assign(x, r, b) = a - transformResult(r): y => - transformSymbol(x): xSym => - blockCtor("ValueRef", Ls(xSym)): xStaged => - // x should always be defined, either as an argument to the function or in a Scope Block - assert(ctx.get(x.asPath).isDefined) - (Assign(x, xStaged, _)): - given Context = ctx.clone() += x.asPath -> xStaged - transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y, z), symName)(k(_, ctx)) - def ruleEnd(symName: String = "end")(k: Path => Block): Block = blockCtor("End", Ls(), symName)(k) - def ruleBlk(b: Block)(using Context)(k: Path => Block): Block = - transformBlock(b)(k) - - def ruleCls(cls: ClsLikeDefn, rest: Block)(using Context)(k: Path => Block): Block = - assert(cls.companion.isEmpty, "nested module not supported") - (Define(cls, _)): - transformBlock(rest): p => - transformParamsOpt(cls.paramsOpt): paramsOpt => - transformSymbol(cls.isym): c => - optionNone(): none => // TODO: handle companion object - blockCtor("ClsLikeDefn", Ls(c, none)): cls => - blockCtor("Define", Ls(cls, p))(k) - def ruleBranches(x: Path, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (Path, Context) => Block): Block = def applyRuleBranch(cse: Case, block: Block)(f: Path => (Context, Path) => Block)(ctx: Context, x: Path): Block = - ruleBranch(x, p, cse, block)(using ctx)((y, ctx, x) => f(y)(ctx, x)) + transformCase(cse): cse => + transformBlock(block)(using ctx.clone() += p -> x): (y, ctx) => + // TODO: use Arm type instead of Tup + tuple(Ls(cse, y), "branch"): cde => + f(cde)(ctx.clone() -= p, x) val a = arms.map(applyRuleBranch).collectApply ((f: (Ls[Path], Context) => Block) => a(ys => (ctx, _) => f(ys, ctx))(summon, x)): (arms, ctx) => @@ -199,41 +122,54 @@ class InstrumentationImpl(using State): ruleEnd(): e => // TODO: use transformOption here def dfltStaged(k: (Path, Context) => Block) = dflt match - case S(dflt) => ruleWildCard(x, p, dflt)((dflt, ctx) => optionSome(dflt)(k(_, ctx))) + case S(dflt) => + transformBlock(dflt)(using ctx.clone() += p -> x): (dflt, ctx) => + optionSome(dflt)(k(_, ctx.clone() -= p)) case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => blockCtor("Match", Ls(x, arms, dflt, e), symName)(k(_, ctx)) - def ruleBranch(x: Path, p: Path, cse: Case, b: Block, symName: String = "branch")(using ctx: Context)(k: (Path, Context, Path) => Block): Block = - transformCase(cse): cse => - transformBlock(b)(using ctx.clone() += p -> x): (y, ctx) => - // TODO: use Arm type instead of Tup - tuple(Ls(cse, y), symName): cde => - k(cde, ctx.clone() -= p, x) - - def ruleWildCard(x: Path, p: Path, b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = - given Context = ctx.clone() += p -> x - transformBlock(b): (y, ctx) => - k(y, ctx.clone() -= p) - // transformations of Block def transformPath(p: Path)(using ctx: Context)(k: Path => Block): Block = // rulePath ctx.get(p).map(k).getOrElse: p match - case r: Value.Ref => ruleVar(r)(k) - case l: Value.Lit => ruleLit(l)(k) - case s: Select => ruleSel(s)(k) - case d: DynSelect => ruleDynSel(d)(k) + case Value.Ref(l, disamb) => + // not in formalization + transformSymbol(disamb.getOrElse(l)): sym => + blockCtor("ValueRef", Ls(sym), "var")(k) + case l: Value.Lit => + blockCtor("ValueLit", Ls(l), "lit")(k) + case Select(p, i @ Tree.Ident(name)) => + transformPath(p): x => + blockCtor("Symbol", Ls(toValue(name))): name => + blockCtor("Select", Ls(x, name), "sel")(k) + case DynSelect(qual, fld, arrayIdx) => + transformPath(qual): x => + transformPath(fld): y => + blockCtor("DynSelect", Ls(x, y, toValue(arrayIdx)), "dynsel")(k) case _ => ??? // not supported def transformResult(r: Result)(using Context)(k: Path => Block): Block = r match case p: Path => transformPath(p)(k) - case t: Tuple => ruleTup(t)(k) - case i: Instantiate => ruleInst(i)(k) - case c: Call => ruleApp(c)(k) + case Tuple(mut, elems) => + assert(!mut, "mutable tuple not supported") + transformArgs(elems): xs => + tuple(xs.map(_._1)): codes => + blockCtor("Tuple", Ls(codes), "tup")(k) + case Instantiate(mut, cls, args) => + assert(!mut, "mutable instantiation not supported") + transformArgs(args): xs => + transformPath(cls): cls => + tuple(xs.map(_._1)): codes => + blockCtor("Instantiate", Ls(cls, codes), "inst")(k) + case Call(fun, args) => + transformPath(fun): fun => + transformArgs(args): args => + tuple(args.map(_._1)): tup => + blockCtor("Call", Ls(fun, tup), "app")(k) case _ => ??? // not supported def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = @@ -262,6 +198,54 @@ class InstrumentationImpl(using State): case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) case Case.Field(name, safe) => ??? // not supported + // ruleBlk? + def transformBlock(b: Block)(using Context)(k: Path => Block): Block = + transformBlock(b)((p, _) => k(p)) + + def transformBlock(b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = + b match + case Return(res, implct) => + transformResult(res): x => + blockCtor("Return", Ls(x, toValue(implct)), "return")(k(_, ctx)) + case Assign(x, r, b) => + transformResult(r): y => + transformSymbol(x): xSym => + blockCtor("ValueRef", Ls(xSym)): xStaged => + // x should always be defined, either as an argument to the function or in a Scope Block + assert(ctx.get(x.asPath).isDefined) + (Assign(x, xStaged, _)): + given Context = ctx.clone() += x.asPath -> xStaged + transformBlock(b): (z, ctx) => + blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) + case Define(cls: ClsLikeDefn, rest) => + assert(cls.companion.isEmpty, "nested module not supported") + (Define(cls, _)): + transformBlock(rest): p => + transformParamsOpt(cls.paramsOpt): paramsOpt => + transformSymbol(cls.isym): c => + optionNone(): none => // TODO: handle companion object + blockCtor("ClsLikeDefn", Ls(c, none)): cls => + blockCtor("Define", Ls(cls, p)): p => + ruleEnd(): end => + fnPrintCode(p)(k(end, summon)) + case End(_) => ruleEnd()(k(_, summon)) + case Match(p, ks, dflt, rest) => + transformPath(p): x => + ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => + transformBlock(rest)(using ctx1): (z, ctx2) => + fnConcat(stagedMatch, z, "match"): cde => + k(cde, ctx2) + case Begin(sub, rest) => + // TODO: This is untested as there is no test case that generates the Begin block yet + transformBlock(sub): (sub, ctx) => + transformBlock(rest)(using ctx): (rest, ctx) => + fnConcat(sub, rest)(k(_, ctx)) + case Scoped(syms, body) => + blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => + val newCtx = ctx.clone() ++ syms.map(_.asPath -> undef) + transformBlock(body)(using newCtx)(k) + case _ => ??? // not supported + // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, Block) = @@ -269,16 +253,12 @@ class InstrumentationImpl(using State): val sym = modSym.asPath.selSN(genSym.nme) // NOTE: this debug printing only works for top-level modules, nested modules don't work // TODO: remove it. only for test - val debug = - blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => - // TODO: put correct parameters instead of End - // TODO: handle curried arguments - val argsList = f.params.map(ps => List.fill(ps.params.length)(undef)) - def makeCalls(k: Path => Block) = - argsList.foldRight(k)((args, cont) => res => call(res, args)(cont))(sym) - makeCalls: ret => - val p = ret - fnPrintCode(p)(End()) + val debug = blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => + // TODO: put correct parameters instead of End + val argsList = f.params.map(ps => List.fill(ps.params.length)(undef)) + def makeCalls(k: Path => Block) = + argsList.foldRight(k)((args, cont) => res => call(res, args)(cont))(sym) + makeCalls(fnPrintCode(_)(End())) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) val args = f.params.flatMap(_.params).map(_.sym) @@ -289,47 +269,6 @@ class InstrumentationImpl(using State): val newFun = f.copy(sym = genSym, dSym = dSym, body = newBody)(false) (newFun, debug) - def transformDefine(d: Define)(using Context)(k: (Path, Context) => Block): Block = - d.defn match - case c: ClsLikeDefn => - ruleCls(c, d.rest): p => - ruleEnd(): b => - fnPrintCode(p)(k(b, summon)) - case _: FunDefn | _: ValDefn => ??? - - // TODO - // discards result of sub - def transformBegin(b: Begin)(using Context)(k: (Path, Context) => Block): Block = - transformBlock(b.sub): (sub, ctx) => - transformBlock(b.rest)(using ctx): (rest, ctx) => - fnConcat(sub, rest): block => - k(block, ctx) - - def transformScoped(s: Scoped)(using ctx: Context)(k: (Path, Context) => Block): Block = - val Scoped(syms, body) = s - blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => - val newCtx = ctx.clone() ++ syms.map(_.asPath -> undef) - transformBlock(body)(using newCtx): (p, ctx) => - k(p, ctx) - - // ruleBlk? - def transformBlock(b: Block)(using Context)(k: Path => Block): Block = - transformBlock(b)((p, _) => k(p)) - - def transformBlock(b: Block)(using Context)(k: (Path, Context) => Block): Block = - b match - case r: Return => ruleReturn(r)(k) - case a: Assign => ruleAssign(a)(k) - case d: Define => transformDefine(d)(k) - case End(_) => ruleEnd()(k(_, summon)) - case m: Match => ruleMatch(m)(k) - // temporary measure to accept returning an array - // use BlockTransformer here? - case b: Begin => ??? // transformBegin(b)(k) - // case Begin(b1, b2) => transformBlock(concat(b1, b2))(k) - case s: Scoped => transformScoped(s)(k) - case _ => ??? // not supported - // TODO: rename as InstrumentationTransformer? class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val impl = new InstrumentationImpl @@ -341,20 +280,17 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): } override def applyBlock(b: Block): Block = super.applyBlock(b) match - case d @ Define(defn, rest) => - defn match - // find modules with staged annotation - case c: ClsLikeDefn if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => - val sym = c.sym.subst - val companion = c.companion.get - val (stagedMethods, debugPrintCode) = companion.methods - .map(impl.transformFunDefn(sym, _)) - .unzip - val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => End()) - val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) - val newModule = c.copy(sym = sym, companion = S(newCompanion)) - // debug is printed after definition - val debugBlock = debugPrintCode.foldRight(rest)(concat) - Define(newModule, debugBlock) - case _ => d + // find modules with staged annotation + case Define(c: ClsLikeDefn, rest) if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => + val sym = c.sym.subst + val companion = c.companion.get + val (stagedMethods, debugPrintCode) = companion.methods + .map(impl.transformFunDefn(sym, _)) + .unzip + val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => End()) + val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) + val newModule = c.copy(sym = sym, companion = S(newCompanion)) + // debug is printed after definition + val debugBlock = debugPrintCode.foldRight(rest)(concat) + Define(newModule, debugBlock) case b => b From e40a1e6ecba141d031769931ed42c16676986fed Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 00:09:04 +0800 Subject: [PATCH 220/654] formatting use no ident after match, like in Lowering.scala --- .../scala/hkmc2/codegen/Instrumentation.scala | 194 +++++++++--------- 1 file changed, 98 insertions(+), 96 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 29c42ad81a..5eb74dd29b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -24,16 +24,16 @@ class InstrumentationImpl(using State): def asArg(x: ArgWrappable): Arg = x match - case p: Path => p.asArg - case l: Symbol => l.asPath.asArg + case p: Path => p.asArg + case l: Symbol => l.asPath.asArg // null and undefined are missing def toValue(lit: Str | Int | BigDecimal | Bool): Value = val l = lit match - case i: Int => Tree.IntLit(i) - case b: Bool => Tree.BoolLit(b) - case s: Str => Tree.StrLit(s) - case n: BigDecimal => Tree.DecLit(n) + case i: Int => Tree.IntLit(i) + case b: Bool => Tree.BoolLit(b) + case s: Str => Tree.StrLit(s) + case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) extension [A, B](ls: Ls[(A => B) => B]) @@ -91,17 +91,17 @@ class InstrumentationImpl(using State): def transformSymbol(sym: Symbol, symName: Str = "sym")(k: Path => Block): Block = sym match - case clsSym: ClassSymbol => - transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => - blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt), symName)(k) - case t: TermSymbol if t.defn.exists(_.sym.asCls.isDefined) => - transformSymbol(t.defn.get.sym.asCls.get, symName)(k) - case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) + case clsSym: ClassSymbol => + transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => + blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt), symName)(k) + case t: TermSymbol if t.defn.exists(_.sym.asCls.isDefined) => + transformSymbol(t.defn.get.sym.asCls.get, symName)(k) + case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match - case S(x) => f(x)(optionSome(_)(k)) - case N => optionNone()(k) + case S(x) => f(x)(optionSome(_)(k)) + case N => optionNone()(k) // instrumentation rules @@ -121,7 +121,8 @@ class InstrumentationImpl(using State): tuple(arms): arms => ruleEnd(): e => // TODO: use transformOption here - def dfltStaged(k: (Path, Context) => Block) = dflt match + def dfltStaged(k: (Path, Context) => Block) = + dflt match case S(dflt) => transformBlock(dflt)(using ctx.clone() += p -> x): (dflt, ctx) => optionSome(dflt)(k(_, ctx.clone() -= p)) @@ -135,42 +136,42 @@ class InstrumentationImpl(using State): // rulePath ctx.get(p).map(k).getOrElse: p match - case Value.Ref(l, disamb) => - // not in formalization - transformSymbol(disamb.getOrElse(l)): sym => - blockCtor("ValueRef", Ls(sym), "var")(k) - case l: Value.Lit => - blockCtor("ValueLit", Ls(l), "lit")(k) - case Select(p, i @ Tree.Ident(name)) => - transformPath(p): x => - blockCtor("Symbol", Ls(toValue(name))): name => - blockCtor("Select", Ls(x, name), "sel")(k) - case DynSelect(qual, fld, arrayIdx) => - transformPath(qual): x => - transformPath(fld): y => - blockCtor("DynSelect", Ls(x, y, toValue(arrayIdx)), "dynsel")(k) - case _ => ??? // not supported + case Value.Ref(l, disamb) => + // not in formalization + transformSymbol(disamb.getOrElse(l)): sym => + blockCtor("ValueRef", Ls(sym), "var")(k) + case l: Value.Lit => + blockCtor("ValueLit", Ls(l), "lit")(k) + case Select(p, i @ Tree.Ident(name)) => + transformPath(p): x => + blockCtor("Symbol", Ls(toValue(name))): name => + blockCtor("Select", Ls(x, name), "sel")(k) + case DynSelect(qual, fld, arrayIdx) => + transformPath(qual): x => + transformPath(fld): y => + blockCtor("DynSelect", Ls(x, y, toValue(arrayIdx)), "dynsel")(k) + case _ => ??? // not supported def transformResult(r: Result)(using Context)(k: Path => Block): Block = r match - case p: Path => transformPath(p)(k) - case Tuple(mut, elems) => - assert(!mut, "mutable tuple not supported") - transformArgs(elems): xs => + case p: Path => transformPath(p)(k) + case Tuple(mut, elems) => + assert(!mut, "mutable tuple not supported") + transformArgs(elems): xs => + tuple(xs.map(_._1)): codes => + blockCtor("Tuple", Ls(codes), "tup")(k) + case Instantiate(mut, cls, args) => + assert(!mut, "mutable instantiation not supported") + transformArgs(args): xs => + transformPath(cls): cls => tuple(xs.map(_._1)): codes => - blockCtor("Tuple", Ls(codes), "tup")(k) - case Instantiate(mut, cls, args) => - assert(!mut, "mutable instantiation not supported") - transformArgs(args): xs => - transformPath(cls): cls => - tuple(xs.map(_._1)): codes => - blockCtor("Instantiate", Ls(cls, codes), "inst")(k) - case Call(fun, args) => - transformPath(fun): fun => - transformArgs(args): args => - tuple(args.map(_._1)): tup => - blockCtor("Call", Ls(fun, tup), "app")(k) - case _ => ??? // not supported + blockCtor("Instantiate", Ls(cls, codes), "inst")(k) + case Call(fun, args) => + transformPath(fun): fun => + transformArgs(args): args => + tuple(args.map(_._1)): tup => + blockCtor("Call", Ls(fun, tup), "app")(k) + case _ => ??? // not supported def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = val Arg(spread, value) = a @@ -190,13 +191,13 @@ class InstrumentationImpl(using State): def transformCase(cse: Case)(using Context)(k: Path => Block): Block = cse match - case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) - case Case.Cls(cls, path) => - transformSymbol(cls): cls => - transformPath(path): path => - blockCtor("Cls", Ls(cls, path))(k) - case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) - case Case.Field(name, safe) => ??? // not supported + case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) + case Case.Cls(cls, path) => + transformSymbol(cls): cls => + transformPath(path): path => + blockCtor("Cls", Ls(cls, path))(k) + case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) + case Case.Field(name, safe) => ??? // not supported // ruleBlk? def transformBlock(b: Block)(using Context)(k: Path => Block): Block = @@ -204,47 +205,47 @@ class InstrumentationImpl(using State): def transformBlock(b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = b match - case Return(res, implct) => - transformResult(res): x => - blockCtor("Return", Ls(x, toValue(implct)), "return")(k(_, ctx)) - case Assign(x, r, b) => - transformResult(r): y => - transformSymbol(x): xSym => - blockCtor("ValueRef", Ls(xSym)): xStaged => - // x should always be defined, either as an argument to the function or in a Scope Block - assert(ctx.get(x.asPath).isDefined) - (Assign(x, xStaged, _)): - given Context = ctx.clone() += x.asPath -> xStaged - transformBlock(b): (z, ctx) => - blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) - case Define(cls: ClsLikeDefn, rest) => - assert(cls.companion.isEmpty, "nested module not supported") - (Define(cls, _)): - transformBlock(rest): p => - transformParamsOpt(cls.paramsOpt): paramsOpt => - transformSymbol(cls.isym): c => - optionNone(): none => // TODO: handle companion object - blockCtor("ClsLikeDefn", Ls(c, none)): cls => - blockCtor("Define", Ls(cls, p)): p => - ruleEnd(): end => - fnPrintCode(p)(k(end, summon)) - case End(_) => ruleEnd()(k(_, summon)) - case Match(p, ks, dflt, rest) => - transformPath(p): x => - ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => - transformBlock(rest)(using ctx1): (z, ctx2) => - fnConcat(stagedMatch, z, "match"): cde => - k(cde, ctx2) - case Begin(sub, rest) => - // TODO: This is untested as there is no test case that generates the Begin block yet - transformBlock(sub): (sub, ctx) => - transformBlock(rest)(using ctx): (rest, ctx) => - fnConcat(sub, rest)(k(_, ctx)) - case Scoped(syms, body) => - blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => - val newCtx = ctx.clone() ++ syms.map(_.asPath -> undef) - transformBlock(body)(using newCtx)(k) - case _ => ??? // not supported + case Return(res, implct) => + transformResult(res): x => + blockCtor("Return", Ls(x, toValue(implct)), "return")(k(_, ctx)) + case Assign(x, r, b) => + transformResult(r): y => + transformSymbol(x): xSym => + blockCtor("ValueRef", Ls(xSym)): xStaged => + // x should always be defined, either as an argument to the function or in a Scope Block + assert(ctx.get(x.asPath).isDefined) + (Assign(x, xStaged, _)): + given Context = ctx.clone() += x.asPath -> xStaged + transformBlock(b): (z, ctx) => + blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) + case Define(cls: ClsLikeDefn, rest) => + assert(cls.companion.isEmpty, "nested module not supported") + (Define(cls, _)): + transformBlock(rest): p => + transformParamsOpt(cls.paramsOpt): paramsOpt => + transformSymbol(cls.isym): c => + optionNone(): none => // TODO: handle companion object + blockCtor("ClsLikeDefn", Ls(c, none)): cls => + blockCtor("Define", Ls(cls, p)): p => + ruleEnd(): end => + fnPrintCode(p)(k(end, summon)) + case End(_) => ruleEnd()(k(_, summon)) + case Match(p, ks, dflt, rest) => + transformPath(p): x => + ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => + transformBlock(rest)(using ctx1): (z, ctx2) => + fnConcat(stagedMatch, z, "match"): cde => + k(cde, ctx2) + case Begin(sub, rest) => + // TODO: This is untested as there is no test case that generates the Begin block yet + transformBlock(sub): (sub, ctx) => + transformBlock(rest)(using ctx): (rest, ctx) => + fnConcat(sub, rest)(k(_, ctx)) + case Scoped(syms, body) => + blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => + val newCtx = ctx.clone() ++ syms.map(_.asPath -> undef) + transformBlock(body)(using newCtx)(k) + case _ => ??? // not supported // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead @@ -279,7 +280,8 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case _ => ??? } - override def applyBlock(b: Block): Block = super.applyBlock(b) match + override def applyBlock(b: Block): Block = + super.applyBlock(b) match // find modules with staged annotation case Define(c: ClsLikeDefn, rest) if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => val sym = c.sym.subst From 69a142fb143a77283d247fca3f890388c730f6a2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 00:27:17 +0800 Subject: [PATCH 221/654] formatting --- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 6 +++--- hkmc2/shared/src/test/mlscript/staging/Syntax.mls | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index 509fa8423f..f4ed7210d5 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -4,7 +4,7 @@ val x = [1, 2, 3] staged module Expressions with fun lit() = 1 - fun assign() = + fun assign() = let x = 42 let y = x y @@ -37,8 +37,8 @@ staged module Expressions with :staging :fixme staged module OtherBlocks with - fun breakAndLabel() = - if 1 is + fun breakAndLabel() = + if 1 is 2 then 0 3 then 0 else 0 diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls index e5c4b86216..0eaa38428e 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Syntax.mls @@ -1,7 +1,5 @@ :pt -:js -// :lot staged module A //│ Parsed tree: //│ Modified: @@ -22,4 +20,4 @@ staged fun f() = 0 :slot staged module A //│ Pretty Lowered: -//│ define staged class A in set block$res1 = undefined in end +//│ define staged class A in set block$res = undefined in end From 6b012b2afdf4db5b06b228a69012b6dccec1ba1a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 00:15:46 +0800 Subject: [PATCH 222/654] remove Shape{Map, Set} definitions the definitions should utilize CachedHash before getting merged --- .../scala/hkmc2/semantics/Elaborator.scala | 1 - .../src/test/mlscript-compile/ShapeMap.mls | 19 ---- .../src/test/mlscript-compile/ShapeSet.mls | 89 ------------------- .../test/scala/hkmc2/JSBackendDiffMaker.scala | 2 - .../src/test/scala/hkmc2/MLsDiffMaker.scala | 5 +- 5 files changed, 1 insertion(+), 115 deletions(-) delete mode 100644 hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls delete mode 100644 hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index aecf080a45..bc112f9e36 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -252,7 +252,6 @@ object Elaborator: val prettyPrintSymbol = TempSymbol(N, "prettyPrint") val termSymbol = TempSymbol(N, "Term") val blockSymbol = TempSymbol(N, "Block") - val shapeSetSymbol = TempSymbol(N, "shapeSet") val optionSymbol = TempSymbol(N, "option") val wasmSymbol = TempSymbol(N, "wasm") val effectSigSymbol = ClassSymbol(DummyTypeDef(syntax.Cls), Ident("EffectSig")) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls deleted file mode 100644 index 6b73d8f826..0000000000 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls +++ /dev/null @@ -1,19 +0,0 @@ -import "./Option.mls" -import "./ShapeSet.mls" - -open Option { Some, None } -open ShapeSet - -type ShapeMap = ShapeMap.ShapeMap - -module ShapeMap with... - -fun hash(s: ShapeSet) = s.keys().join(", ") - -class ShapeMap(val underlying: Map) with - fun add(s: ShapeSet, code) = underlying.set(hash(s), code) - - fun get(s: ShapeSet) = - if underlying.get(hash(s)) - == () then None - is value then Some of value diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls deleted file mode 100644 index 89b0554d89..0000000000 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ /dev/null @@ -1,89 +0,0 @@ -import "./Predef.mls" -import "./Block.mls" -import "./Shape.mls" - -open Predef -open Block { ClassSymbol } -open Shape { show } - -type ShapeSet = ShapeSet.ShapeSet - -module ShapeSet with... - -// FIXME: hash is based on uniqueness of pretty printing -fun hash(s: Shape) = show(s) - -fun printShapeSet(s: ShapeSet) = console.log([... s.keys()].join(", ")) - -class ShapeSet(val underlying: Map) with - fun keys() = [...underlying.keys()].toSorted() - - fun values() = underlying.values().toArray() - - fun isEmpty() = underlying.size == 0 - - fun contains(s: Shape) = underlying.has(hash(s)) - - fun flatMap(f) = liftMany(values().flatMap(f)) - -fun create() = ShapeSet(new Map) - -fun lift(s: Shape) = ShapeSet(new Map([[hash(s), s]])) - -fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [hash(s), s]))) - -// combining ShapeSet - -fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(new Map([...s1.underlying, ...s2.underlying])) - -fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.underlying.entries().toArray()).flat())) - -// Cartesian product: https://stackoverflow.com/a/43053803 -fun prod(xs) = - if xs.length == - 0 then [[]] - 1 then xs - else xs.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat()))) - -open Shape { Dyn, Lit, Arr, Class } - -// lifted constructors - -fun mkBot() = create() - -fun mkDyn() = lift(Dyn()) - -fun mkLit(l) = lift(Lit(l)) - -fun mkArr(shapes: Array[ShapeSet], inf: Bool) = - shapes - .map(_.underlying.values().toArray()) - |> prod - .map(x => Arr(x, inf)) - |> liftMany - -fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = - params.map(_.underlying.values().toArray()) - |> prod - .map(Class(sym, _)) - |> liftMany - -// helper functions - -fun filter(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) - -fun rest(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.rest(_, p)) - -fun sel(s1: ShapeSet, s2: ShapeSet) = - prod([s1.values(), s2.values()]) - .flatMap(pair => Shape.sel(pair.0, pair.1)) - |> liftMany - -fun mrg(s1: ShapeSet, s2: ShapeSet) = - mkDyn() // TODO - -open Block { Block } - -fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = - val rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) - [flat(rem.map(_.0)), rem.map(_.1)] diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 1cc525c074..48ab073eec 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -34,7 +34,6 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val termNme = baseScp.allocateName(Elaborator.State.termSymbol) val blockNme = baseScp.allocateName(Elaborator.State.blockSymbol) val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) - val shapeSetNme = baseScp.allocateName(Elaborator.State.shapeSetSymbol) val definitionMetadataNme = baseScp.allocateName(Elaborator.State.definitionMetadataSymbol) val prettyPrintNme = baseScp.allocateName(Elaborator.State.prettyPrintSymbol) @@ -63,7 +62,6 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: if stageCode.isSet then importRuntimeModule(blockNme, blockFile) importRuntimeModule(optionNme, optionFile) - importRuntimeModule(shapeSetNme, shapeSetFile) h private var hostCreated = false diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index c0c2719116..fabecacb6e 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -22,7 +22,6 @@ abstract class MLsDiffMaker extends DiffMaker: val termFile: io.Path = predefFile.up / "Term.mjs" // * Contains MLscript runtime term definitions val blockFile: io.Path = predefFile.up / "Block.mjs" // * Contains MLscript runtime block definitions val optionFile: io.Path = predefFile.up / "Option.mjs" // * Contains MLscipt runtime option definition - val shapeSetFile: io.Path = predefFile.up / "ShapeSet.mjs" // * Contains MLscript runtime shapeset definitions val wd = file.up @@ -168,9 +167,7 @@ abstract class MLsDiffMaker extends DiffMaker: if stageCode.isSet then given Config = mkConfig processTrees( - PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) - :: PrefixApp(Keywrd(`import`), StrLit(shapeSetFile.toString)) - :: Nil) + PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) super.init() From a3ac27de60a527c4d32c9ac722f16860abb8a7f4 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 00:33:24 +0800 Subject: [PATCH 223/654] Revert "remove Shape{Map, Set} definitions" This reverts commit 6b012b2afdf4db5b06b228a69012b6dccec1ba1a. --- .../scala/hkmc2/semantics/Elaborator.scala | 1 + .../src/test/mlscript-compile/ShapeMap.mls | 19 ++++ .../src/test/mlscript-compile/ShapeSet.mls | 89 +++++++++++++++++++ .../test/scala/hkmc2/JSBackendDiffMaker.scala | 2 + .../src/test/scala/hkmc2/MLsDiffMaker.scala | 5 +- 5 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index bc112f9e36..aecf080a45 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -252,6 +252,7 @@ object Elaborator: val prettyPrintSymbol = TempSymbol(N, "prettyPrint") val termSymbol = TempSymbol(N, "Term") val blockSymbol = TempSymbol(N, "Block") + val shapeSetSymbol = TempSymbol(N, "shapeSet") val optionSymbol = TempSymbol(N, "option") val wasmSymbol = TempSymbol(N, "wasm") val effectSigSymbol = ClassSymbol(DummyTypeDef(syntax.Cls), Ident("EffectSig")) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls new file mode 100644 index 0000000000..6b73d8f826 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls @@ -0,0 +1,19 @@ +import "./Option.mls" +import "./ShapeSet.mls" + +open Option { Some, None } +open ShapeSet + +type ShapeMap = ShapeMap.ShapeMap + +module ShapeMap with... + +fun hash(s: ShapeSet) = s.keys().join(", ") + +class ShapeMap(val underlying: Map) with + fun add(s: ShapeSet, code) = underlying.set(hash(s), code) + + fun get(s: ShapeSet) = + if underlying.get(hash(s)) + == () then None + is value then Some of value diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls new file mode 100644 index 0000000000..89b0554d89 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -0,0 +1,89 @@ +import "./Predef.mls" +import "./Block.mls" +import "./Shape.mls" + +open Predef +open Block { ClassSymbol } +open Shape { show } + +type ShapeSet = ShapeSet.ShapeSet + +module ShapeSet with... + +// FIXME: hash is based on uniqueness of pretty printing +fun hash(s: Shape) = show(s) + +fun printShapeSet(s: ShapeSet) = console.log([... s.keys()].join(", ")) + +class ShapeSet(val underlying: Map) with + fun keys() = [...underlying.keys()].toSorted() + + fun values() = underlying.values().toArray() + + fun isEmpty() = underlying.size == 0 + + fun contains(s: Shape) = underlying.has(hash(s)) + + fun flatMap(f) = liftMany(values().flatMap(f)) + +fun create() = ShapeSet(new Map) + +fun lift(s: Shape) = ShapeSet(new Map([[hash(s), s]])) + +fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [hash(s), s]))) + +// combining ShapeSet + +fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(new Map([...s1.underlying, ...s2.underlying])) + +fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.underlying.entries().toArray()).flat())) + +// Cartesian product: https://stackoverflow.com/a/43053803 +fun prod(xs) = + if xs.length == + 0 then [[]] + 1 then xs + else xs.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat()))) + +open Shape { Dyn, Lit, Arr, Class } + +// lifted constructors + +fun mkBot() = create() + +fun mkDyn() = lift(Dyn()) + +fun mkLit(l) = lift(Lit(l)) + +fun mkArr(shapes: Array[ShapeSet], inf: Bool) = + shapes + .map(_.underlying.values().toArray()) + |> prod + .map(x => Arr(x, inf)) + |> liftMany + +fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = + params.map(_.underlying.values().toArray()) + |> prod + .map(Class(sym, _)) + |> liftMany + +// helper functions + +fun filter(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) + +fun rest(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.rest(_, p)) + +fun sel(s1: ShapeSet, s2: ShapeSet) = + prod([s1.values(), s2.values()]) + .flatMap(pair => Shape.sel(pair.0, pair.1)) + |> liftMany + +fun mrg(s1: ShapeSet, s2: ShapeSet) = + mkDyn() // TODO + +open Block { Block } + +fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = + val rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) + [flat(rem.map(_.0)), rem.map(_.1)] diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 48ab073eec..1cc525c074 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -34,6 +34,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val termNme = baseScp.allocateName(Elaborator.State.termSymbol) val blockNme = baseScp.allocateName(Elaborator.State.blockSymbol) val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) + val shapeSetNme = baseScp.allocateName(Elaborator.State.shapeSetSymbol) val definitionMetadataNme = baseScp.allocateName(Elaborator.State.definitionMetadataSymbol) val prettyPrintNme = baseScp.allocateName(Elaborator.State.prettyPrintSymbol) @@ -62,6 +63,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: if stageCode.isSet then importRuntimeModule(blockNme, blockFile) importRuntimeModule(optionNme, optionFile) + importRuntimeModule(shapeSetNme, shapeSetFile) h private var hostCreated = false diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index fabecacb6e..c0c2719116 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -22,6 +22,7 @@ abstract class MLsDiffMaker extends DiffMaker: val termFile: io.Path = predefFile.up / "Term.mjs" // * Contains MLscript runtime term definitions val blockFile: io.Path = predefFile.up / "Block.mjs" // * Contains MLscript runtime block definitions val optionFile: io.Path = predefFile.up / "Option.mjs" // * Contains MLscipt runtime option definition + val shapeSetFile: io.Path = predefFile.up / "ShapeSet.mjs" // * Contains MLscript runtime shapeset definitions val wd = file.up @@ -167,7 +168,9 @@ abstract class MLsDiffMaker extends DiffMaker: if stageCode.isSet then given Config = mkConfig processTrees( - PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) + PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) + :: PrefixApp(Keywrd(`import`), StrLit(shapeSetFile.toString)) + :: Nil) super.init() From 51e5513cf847056854db066ac77980ac44b12f0d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 13:59:07 +0800 Subject: [PATCH 224/654] formatting --- .../scala/hkmc2/codegen/Instrumentation.scala | 28 ++++++++----------- .../src/test/mlscript/staging/Functions.mls | 22 +++++++-------- 2 files changed, 22 insertions(+), 28 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 5eb74dd29b..96929e354c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -137,7 +137,6 @@ class InstrumentationImpl(using State): ctx.get(p).map(k).getOrElse: p match case Value.Ref(l, disamb) => - // not in formalization transformSymbol(disamb.getOrElse(l)): sym => blockCtor("ValueRef", Ls(sym), "var")(k) case l: Value.Lit => @@ -212,8 +211,7 @@ class InstrumentationImpl(using State): transformResult(r): y => transformSymbol(x): xSym => blockCtor("ValueRef", Ls(xSym)): xStaged => - // x should always be defined, either as an argument to the function or in a Scope Block - assert(ctx.get(x.asPath).isDefined) + assert(ctx.get(x.asPath).isDefined, "x should always be defined, either as an argument to the function or in a Scope Block") (Assign(x, xStaged, _)): given Context = ctx.clone() += x.asPath -> xStaged transformBlock(b): (z, ctx) => @@ -228,14 +226,13 @@ class InstrumentationImpl(using State): blockCtor("ClsLikeDefn", Ls(c, none)): cls => blockCtor("Define", Ls(cls, p)): p => ruleEnd(): end => - fnPrintCode(p)(k(end, summon)) - case End(_) => ruleEnd()(k(_, summon)) + fnPrintCode(p)(k(end, ctx)) + case End(_) => ruleEnd()(k(_, ctx)) case Match(p, ks, dflt, rest) => transformPath(p): x => - ruleBranches(x, p, ks, dflt): (stagedMatch, ctx1) => - transformBlock(rest)(using ctx1): (z, ctx2) => - fnConcat(stagedMatch, z, "match"): cde => - k(cde, ctx2) + ruleBranches(x, p, ks, dflt): (stagedMatch, ctx) => + transformBlock(rest)(using ctx): (z, ctx) => + fnConcat(stagedMatch, z, "match")(k(_, ctx)) case Begin(sub, rest) => // TODO: This is untested as there is no test case that generates the Begin block yet transformBlock(sub): (sub, ctx) => @@ -255,18 +252,15 @@ class InstrumentationImpl(using State): // NOTE: this debug printing only works for top-level modules, nested modules don't work // TODO: remove it. only for test val debug = blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => - // TODO: put correct parameters instead of End - val argsList = f.params.map(ps => List.fill(ps.params.length)(undef)) - def makeCalls(k: Path => Block) = - argsList.foldRight(k)((args, cont) => res => call(res, args)(cont))(sym) - makeCalls(fnPrintCode(_)(End())) + // TODO: put correct parameters instead of undefined + f.params.map(ps => List.fill(ps.params.length)(undef)) + .foldRight((p: Path) => fnPrintCode(p)(End()))((args, cont) => call(_, args)(cont))(sym) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) val args = f.params.flatMap(_.params).map(_.sym) val newBody = - ruleEnd(): end => - given Context = HashMap(args.map(s => Value.Ref(s, N) -> Value.Ref(s, N))*) - transformBlock(f.body)(p => Return(p, false)) + given Context = HashMap(args.map(s => Value.Ref(s, N) -> Value.Ref(s, N))*) + transformBlock(f.body)(Return(_, false)) val newFun = f.copy(sym = genSym, dSym = dSym, body = newBody)(false) (newFun, debug) diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index f4ed7210d5..ad6489669a 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -33,17 +33,6 @@ staged module Expressions with //│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Return(Lit(1), false), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Return(Lit(3), false))))], Return(Lit(0), false), End)) //│ x = [1, 2, 3] -:js -:staging -:fixme -staged module OtherBlocks with - fun breakAndLabel() = - if 1 is - 2 then 0 - 3 then 0 - else 0 -//│ /!!!\ Uncaught error: scala.NotImplementedError: an implementation is missing - :js :staging class Outside(a) @@ -71,6 +60,17 @@ staged module Arguments with //│ > Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)) //│ > Return(Lit(undefined), false) +:js +:staging +:fixme +staged module OtherBlocks with + fun breakAndLabel() = + if 1 is + 2 then 0 + 3 then 0 + else 0 +//│ /!!!\ Uncaught error: scala.NotImplementedError: an implementation is missing + // debug printing fails, collision with class name? :js :staging From 0cc778e4e8202dcdcdf87089c26ab32deb69dba0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 13:59:42 +0800 Subject: [PATCH 225/654] imrpove symbol information for select --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 10 +++++++--- hkmc2/shared/src/test/mlscript/staging/Functions.mls | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 96929e354c..62eae97d3b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -141,10 +141,14 @@ class InstrumentationImpl(using State): blockCtor("ValueRef", Ls(sym), "var")(k) case l: Value.Lit => blockCtor("ValueLit", Ls(l), "lit")(k) - case Select(p, i @ Tree.Ident(name)) => + case s @ Select(p, i @ Tree.Ident(name)) => transformPath(p): x => - blockCtor("Symbol", Ls(toValue(name))): name => - blockCtor("Select", Ls(x, name), "sel")(k) + val sym = + if s.symbol.isDefined + then transformSymbol(s.symbol.get) + else blockCtor("Symbol", Ls(toValue(name))) + sym: sym => + blockCtor("Select", Ls(x, sym), "sel")(k) case DynSelect(qual, fld, arrayIdx) => transformPath(qual): x => transformPath(fld): y => diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/staging/Functions.mls index ad6489669a..09b8182eaa 100644 --- a/hkmc2/shared/src/test/mlscript/staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/staging/Functions.mls @@ -46,9 +46,9 @@ staged module ClassInstrumentation with //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) //│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) //│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) -//│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), Symbol("NoArg")), []), false) +//│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false) //│ > Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) -//│ > Return(Call(Select(Ref(Symbol("ClassInstrumentation")), Symbol("Inside")), [Lit(1), Lit(2)]), false) +//│ > Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false) :js :staging From e3f052ba8da050415111f7a075d7f430d0b1d24c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:19:37 +0800 Subject: [PATCH 226/654] simplify applyRuleBranch since the shape is not inferred, each branch can use the same x to compute its branch --- .../scala/hkmc2/codegen/Instrumentation.scala | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 62eae97d3b..874683bdc0 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -109,26 +109,26 @@ class InstrumentationImpl(using State): blockCtor("End", Ls(), symName)(k) def ruleBranches(x: Path, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (Path, Context) => Block): Block = - def applyRuleBranch(cse: Case, block: Block)(f: Path => (Context, Path) => Block)(ctx: Context, x: Path): Block = + def applyRuleBranch(cse: Case, block: Block)(f: Path => Context => Block)(ctx: Context): Block = transformCase(cse): cse => transformBlock(block)(using ctx.clone() += p -> x): (y, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y), "branch"): cde => - f(cde)(ctx.clone() -= p, x) - - val a = arms.map(applyRuleBranch).collectApply - ((f: (Ls[Path], Context) => Block) => a(ys => (ctx, _) => f(ys, ctx))(summon, x)): (arms, ctx) => - tuple(arms): arms => - ruleEnd(): e => - // TODO: use transformOption here - def dfltStaged(k: (Path, Context) => Block) = - dflt match - case S(dflt) => - transformBlock(dflt)(using ctx.clone() += p -> x): (dflt, ctx) => - optionSome(dflt)(k(_, ctx.clone() -= p)) - case N => optionNone()(k(_, ctx)) - dfltStaged: (dflt, ctx) => - blockCtor("Match", Ls(x, arms, dflt, e), symName)(k(_, ctx)) + f(cde)(ctx.clone() -= p) + + (arms.map(applyRuleBranch).collectApply(_: Ls[Path] => Context => Block)(summon)): arms => + ctx => + tuple(arms): arms => + ruleEnd(): e => + // TODO: use transformOption here + def dfltStaged(k: (Path, Context) => Block) = + dflt match + case S(dflt) => + transformBlock(dflt)(using ctx.clone() += p -> x): (dflt, ctx) => + optionSome(dflt)(k(_, ctx.clone() -= p)) + case N => optionNone()(k(_, ctx)) + dfltStaged: (dflt, ctx) => + blockCtor("Match", Ls(x, arms, dflt, e), symName)(k(_, ctx)) // transformations of Block From ed36c03fa8045f38570de99e54a69ebb7280a2e6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:24:30 +0800 Subject: [PATCH 227/654] import option file during MLsDiffMaker init --- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index fabecacb6e..f267de7a87 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -167,7 +167,9 @@ abstract class MLsDiffMaker extends DiffMaker: if stageCode.isSet then given Config = mkConfig processTrees( - PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) + PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) + :: PrefixApp(Keywrd(`import`), StrLit(optionFile.toString)) + :: Nil) super.init() From b18776f7144466b67398ec51be546bfdd55e8ba0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 23 Dec 2025 20:40:46 +0800 Subject: [PATCH 228/654] remove import statement for option in MLsDiffMaker --- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index f267de7a87..fabecacb6e 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -167,9 +167,7 @@ abstract class MLsDiffMaker extends DiffMaker: if stageCode.isSet then given Config = mkConfig processTrees( - PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) - :: PrefixApp(Keywrd(`import`), StrLit(optionFile.toString)) - :: Nil) + PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) super.init() From 3df66e254e70c35cdc5f15b95fcfb9e8e8f7b8b3 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 24 Dec 2025 15:40:26 +0800 Subject: [PATCH 229/654] fixup! remove import statement for option in MLsDiffMaker --- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index fabecacb6e..ecbf1e74d0 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -164,10 +164,6 @@ abstract class MLsDiffMaker extends DiffMaker: given Config = mkConfig processTrees( PrefixApp(Keywrd(`import`), StrLit(termFile.toString)) :: Nil) - if stageCode.isSet then - given Config = mkConfig - processTrees( - PrefixApp(Keywrd(`import`), StrLit(blockFile.toString)) :: Nil) super.init() From 9212c53da6b981c8d85435df132445a0b5ce4e11 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 24 Dec 2025 15:38:09 +0800 Subject: [PATCH 230/654] include staging tests in diff tests renaming mlsript/staging to mlscript/block-staging avoids DiffTestRunner excluding the test files using the filter intended to exlude ucs/staging --- .../{staging => block-staging}/Functions.mls | 0 .../test/mlscript/block-staging/PrintCode.mls | 8 ++++ .../{staging => block-staging}/Syntax.mls | 0 .../src/test/mlscript/staging/PrintCode.mls | 38 ------------------- 4 files changed, 8 insertions(+), 38 deletions(-) rename hkmc2/shared/src/test/mlscript/{staging => block-staging}/Functions.mls (100%) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls rename hkmc2/shared/src/test/mlscript/{staging => block-staging}/Syntax.mls (100%) delete mode 100644 hkmc2/shared/src/test/mlscript/staging/PrintCode.mls diff --git a/hkmc2/shared/src/test/mlscript/staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls similarity index 100% rename from hkmc2/shared/src/test/mlscript/staging/Functions.mls rename to hkmc2/shared/src/test/mlscript/block-staging/Functions.mls diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls new file mode 100644 index 0000000000..bff7052850 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -0,0 +1,8 @@ +:staging +:js + +import "../../mlscript-compile/Block.mls" + +Block.printCode(Block.FunDefn(Block.Symbol("f"), [[Block.Symbol("x")]], Block.Return(Block.ValueLit(1), false), false)) +//│ > FunDefn(Symbol("f"), ([Symbol("x")]), Return(Lit(1), false), false) + diff --git a/hkmc2/shared/src/test/mlscript/staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls similarity index 100% rename from hkmc2/shared/src/test/mlscript/staging/Syntax.mls rename to hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls diff --git a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls deleted file mode 100644 index aac4722e59..0000000000 --- a/hkmc2/shared/src/test/mlscript/staging/PrintCode.mls +++ /dev/null @@ -1,38 +0,0 @@ -:staging -:js - -//│ Block = class Block { -//│ Symbol: fun Symbol { class: class Symbol }, -//│ ClassSymbol: fun ClassSymbol { class: class ClassSymbol }, -//│ Arg: fun Arg { class: class Arg }, -//│ Case: class Case, -//│ Lit: fun Lit { class: class Lit }, -//│ Cls: fun Cls { class: class Cls }, -//│ Tup: fun Tup { class: class Tup }, -//│ Result: class Result, -//│ Call: fun Call { class: class Call }, -//│ Instantiate: fun Instantiate { class: class Instantiate }, -//│ Tuple: fun Tuple { class: class Tuple }, -//│ Path: class Path, -//│ Select: fun Select { class: class Select }, -//│ DynSelect: fun DynSelect { class: class DynSelect }, -//│ ValueRef: fun ValueRef { class: class ValueRef }, -//│ ValueLit: fun ValueLit { class: class ValueLit }, -//│ Defn: class Defn, -//│ ValDefn: fun ValDefn { class: class ValDefn }, -//│ ClsLikeDefn: fun ClsLikeDefn { class: class ClsLikeDefn }, -//│ FunDefn: fun FunDefn { class: class FunDefn }, -//│ ClsLikeBody: fun ClsLikeBody { class: class ClsLikeBody }, -//│ Block: class Block, -//│ Match: fun Match { class: class Match }, -//│ Return: fun Return { class: class Return }, -//│ Assign: fun Assign { class: class Assign }, -//│ Define: fun Define { class: class Define }, -//│ End: fun End { class: class End } -//│ } -//│ ShapeSet = class ShapeSet { ShapeSet: fun ShapeSet { class: class ShapeSet } } - -Block.printCode(Block.FunDefn(Block.Symbol("f"), [[Block.Symbol("x")]], Block.Return(Block.ValueLit(1), false))) -//│ > [ Symbol { name: 'x' } ] -//│ > FunDefn(Symbol("f"), ([Symbol("x")]), Return(Lit(1), false), undefined) - From 9f2ca5039bb6de6edb1d8057e38cf7e76bbf62dc Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 24 Dec 2025 16:00:37 +0800 Subject: [PATCH 231/654] remove redundant codegen --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 874683bdc0..9f9d19e638 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -224,13 +224,12 @@ class InstrumentationImpl(using State): assert(cls.companion.isEmpty, "nested module not supported") (Define(cls, _)): transformBlock(rest): p => - transformParamsOpt(cls.paramsOpt): paramsOpt => - transformSymbol(cls.isym): c => - optionNone(): none => // TODO: handle companion object - blockCtor("ClsLikeDefn", Ls(c, none)): cls => - blockCtor("Define", Ls(cls, p)): p => - ruleEnd(): end => - fnPrintCode(p)(k(end, ctx)) + transformSymbol(cls.isym): c => + optionNone(): none => // TODO: handle companion object + blockCtor("ClsLikeDefn", Ls(c, none)): cls => + blockCtor("Define", Ls(cls, p)): p => + ruleEnd(): end => + fnPrintCode(p)(k(end, ctx)) case End(_) => ruleEnd()(k(_, ctx)) case Match(p, ks, dflt, rest) => transformPath(p): x => From 36b65beb6b0f1b732be541defef3597b24b3ea38 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 4 Jan 2026 01:00:23 +0800 Subject: [PATCH 232/654] replace hashing with CachedHash --- .../src/test/mlscript-compile/Shape.mls | 10 ++-------- .../src/test/mlscript-compile/ShapeMap.mls | 4 ++-- .../src/test/mlscript-compile/ShapeSet.mls | 19 ++++++++----------- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 0b724cfcd7..5e16b1f566 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,5 +1,6 @@ import "./Block.mls" import "./Option.mls" +import "./CachedHash.mls" open Block { Literal, Symbol, ClassSymbol, showSymbol } open Option @@ -24,20 +25,13 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = module Shape with... -class Shape with +class Shape extends CachedHash with constructor Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape], val inf: Bool) Class(val sym: ClassSymbol, val params: Array[Shape]) -fun show(s: Shape) = - if s is - Dyn then "Dyn" - Lit(lit) then "Lit(" + Block.showLiteral(lit) + ")" - Arr(shapes, inf) then "Arr([" + shapes.map(show).join(", ") + "], " + inf + ")" - Class(sym, params) then "Class(" + showSymbol(sym) + ", [" + params.map(show).join(", ") + "])" - fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = a.map((a, i, _) => mrg2(a, b.at(i))) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls index 6b73d8f826..d1c048c681 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls @@ -11,9 +11,9 @@ module ShapeMap with... fun hash(s: ShapeSet) = s.keys().join(", ") class ShapeMap(val underlying: Map) with - fun add(s: ShapeSet, code) = underlying.set(hash(s), code) + fun add(s: ShapeSet, code) = underlying.set(s.hash(), code) fun get(s: ShapeSet) = - if underlying.get(hash(s)) + if underlying.get(s.hash()) == () then None is value then Some of value diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 89b0554d89..7692e975c9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -1,38 +1,35 @@ import "./Predef.mls" import "./Block.mls" import "./Shape.mls" +import "./CachedHash.mls" open Predef open Block { ClassSymbol } -open Shape { show } type ShapeSet = ShapeSet.ShapeSet module ShapeSet with... -// FIXME: hash is based on uniqueness of pretty printing -fun hash(s: Shape) = show(s) - -fun printShapeSet(s: ShapeSet) = console.log([... s.keys()].join(", ")) - -class ShapeSet(val underlying: Map) with +class ShapeSet(val underlying: Map) extends CachedHash with fun keys() = [...underlying.keys()].toSorted() fun values() = underlying.values().toArray() fun isEmpty() = underlying.size == 0 - fun contains(s: Shape) = underlying.has(hash(s)) + fun contains(s: Shape) = underlying.has(s.hash()) fun flatMap(f) = liftMany(values().flatMap(f)) + fun toString() = underlying.keys().toArray().toSorted().toString() + fun create() = ShapeSet(new Map) -fun lift(s: Shape) = ShapeSet(new Map([[hash(s), s]])) +fun lift(s: Shape) = ShapeSet(new Map([[s.hash(), s]])) -fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [hash(s), s]))) +fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [s.hash(), s]))) -// combining ShapeSet +// combining ShapeSets together fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(new Map([...s1.underlying, ...s2.underlying])) From d8dbcc99112439bfda502f9715aa0f9b8659a60e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 5 Jan 2026 19:51:35 +0800 Subject: [PATCH 233/654] add shape propagation skeleton code --- .../src/test/mlscript-compile/ShapeSet.mls | 60 ++++++++++++- .../shared/src/test/mlscript/ShapeSetTest.mls | 86 +++++++++++++++++++ 2 files changed, 142 insertions(+), 4 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/ShapeSetTest.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 7692e975c9..0e702a1aa3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -1,4 +1,5 @@ import "./Predef.mls" +import "./Option.mls" import "./Block.mls" import "./Shape.mls" import "./CachedHash.mls" @@ -75,12 +76,63 @@ fun sel(s1: ShapeSet, s2: ShapeSet) = prod([s1.values(), s2.values()]) .flatMap(pair => Shape.sel(pair.0, pair.1)) |> liftMany + +fun static(s: ShapeSet) = + let v = s.values() + if v.length == + 0 then ??? + 1 then Shape.static(v.0) + else false -fun mrg(s1: ShapeSet, s2: ShapeSet) = - mkDyn() // TODO - -open Block { Block } +open Block +open Option fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = val rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) [flat(rem.map(_.0)), rem.map(_.1)] + +fun sop(g, p: Path): ShapeSet = if p is + Select(qual, name) and g.get(p) is None then sel(sop(g, qual), mkLit(name)) + DynSelect(qual, fld, arrayIdx) and g.get(p) is None then sel(sop(g, qual), sop(g, fld)) + ValueRef(l) and g.get(p) is Some(s) then s + ValueLit(lit) then mkLit(lit) + +fun sor(g, cache, r: Result) = if r is + Path then [r, sop(g, r), cache] + // cls is a Path, but we want the shape class to be a ClassSymbol, maybe widen it for shape + Instantiate(cls, args) then [r, mkClass(???, args.map(sop(g, _))), cache] + Tuple(elems) then [r, mkArr(elems.map(sop(g, _)), false), cache] + Call(f, args) and + let k = [f, args.map(sop(g, _))] + cache.get(k) is + Some([FunDefn(f1, _, _, _), s]) then [Call(f1, args), s, cache] + None and g.get(f) is + Some(FunDefn(_, params, body, stage)) and + prop(g.addMany(params.map([_, sop(g, r)])), cache, body) is [s, b, cache1] and + stage is + // TODO: create new symbols + true then [Call(???, args), s, cache.add(k, [FunDefn(???, params, b, true), s])] + false and args.forall(static) then [b, s, cache1] + else if args.exist(not static(_)) and cache.get(g, args.map(_ => mkDyn())) is Some([FunDefn(f1, params, body, false), s]) + then [Call(f1, args), s, cache] + +fun prop(g, cache, b: Block) = if b is + End then [b, mkBot(), cache] + Return(res, implct) and sor(g, cache, res) is [r1, s, cache1] then + [Return(r1, implct), s, cache1] + // TODO: let syntax, presumably for Scoped + Assign(x, r, b) and sor(g, cache, r) is [r1, s, cache1] and + prop(g.add(x, union(g.get(x), s)), cache1, b) is [b1, s1, cache2] then + [Assign(x, r1, b1), s1, cache2] + // recurse on arms + Match(p, arms, dflt, rest) then + ??? + +fun exec(g, cache, b: Block) = if b is + Define(d, rest) and d is + ClsLikeDefn then Define(d, exec(g, cache, rest)) + FunDefn(sym, params, body, stage) and stage is + true then exec(g.add(???), cache, g) + false then ??? + _ and prop(g, cache, b) is [b1, _, cache1] then + ??? diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls new file mode 100644 index 0000000000..a5640fd3be --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -0,0 +1,86 @@ +:js + +import "../mlscript-compile/ShapeSet.mls" +import "../mlscript-compile/Block.mls" +import "../mlscript-compile/Shape.mls" +import "../mlscript-compile/Option.mls" + +open ShapeSet +open Shape { Lit, Arr, Class, Dyn } +open Option +open Block { Tup } + +let x = mkBot() +//│ x = + +if x.isEmpty() then 0 +//│ = 0 + +// :silent +let x = liftMany([Lit(1), Lit(2)]) +let y = liftMany([Arr([Lit(1)], false), Arr([Lit(2)], false)]) +//│ x = Lit(1),Lit(2) +//│ y = Arr([Lit(1)], false),Arr([Lit(2)], false) + +union(x, y) +//│ = Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1),Lit(2) + +mkArr([x, y], false) +//│ = Arr([Lit(1), Arr([Lit(1)], false)], false),Arr([Lit(1), Arr([Lit(2)], false)], false),Arr([Lit(2), Arr([Lit(1)], false)], false),Arr([Lit(2), Arr([Lit(2)], false)], false) + + +[x, y] + .map((x, _, _) => x.underlying.values().toArray()) +//│ = [[Lit(1), Lit(2)], [Arr([Lit(1)], false), Arr([Lit(2)], false)]] + +let x = liftMany([Dyn(), Class(Symbol(""), [Lit(42)]), Arr([Lit(100), Lit(false), Lit(undefined)], false)]) +let y = liftMany([Lit("a"), Lit(1)]) +//│ x = Arr([Lit(100), Lit(false), Lit(undefined)], false),Class(Symbol(""), [Lit(42)]),Dyn() +//│ y = Lit("a"),Lit(1) + +sel(x, y) +//│ = Dyn(),Lit(false) + +let x = Class(Symbol("A"), [[Symbol("b"), Lit(1)], [Symbol("d"), Dyn()]]) +let x = Arr([Dyn(), Lit(1), x], false) +let x = Shape.sel(x, Lit(2)) +//│ x = [Class(Symbol("A"), [[Symbol("b"), Lit(1)], [Symbol("d"), Dyn()]])] + + +val sym = Symbol("C") +val params = [ + mkLit(null), + liftMany([Lit(2), Lit(4)]), + liftMany([Class(Symbol("A"), [Dyn()]), Class(Symbol("B"), [Dyn()])]) +] +mkClass(sym, params) +//│ = Class(Symbol("C"), [Lit(null), Lit(2), Class(Symbol("A"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(2), Class(Symbol("B"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(4), Class(Symbol("A"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(4), Class(Symbol("B"), [Dyn()])]) +//│ params = [ +//│ Lit(null), +//│ Lit(2),Lit(4), +//│ Class(Symbol("A"), [Dyn()]),Class(Symbol("B"), [Dyn()]) +//│ ] +//│ sym = Symbol("C") + +[liftMany([Lit(1), Dyn()]), liftMany([Lit(2), Lit("str")])] +//│ = [Dyn(),Lit(1), Lit("str"),Lit(2)] + +filter(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)], false)]), Tup(3, false)) +//│ = Arr([Lit(1), Lit(2), Lit(3)], false) + + +let x = mkLit(1) +let y = Block.Cls(Block.Symbol("Bool"), 0) +filter(x, y) +//│ = +//│ x = Lit(1) +//│ y = Cls(Symbol("Bool"), 0) + +Shape.filter(Shape.Lit(1), Block.Lit(1)) +//│ = [Lit(1)] + +[Shape.Lit(1), Block.Lit(1)] is [Shape.Lit(l1), Block.Lit(l2)] +//│ = true + +Shape.silh(Block.Lit(1)) +//│ = Lit(1) From 32c4e624d99ad2b013beb06b30ab3f9bf7ea8db2 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 8 Jan 2026 16:37:34 +0800 Subject: [PATCH 234/654] WIP: Some update --- .../src/test/mlscript-compile/Block.mls | 1 + .../src/test/mlscript-compile/ShapeSet.mls | 73 ++++++++++++------- .../src/test/mlscript/staging/ShapeProp.mls | 39 ++++++++++ 3 files changed, 85 insertions(+), 28 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d8ec8b1b3f..86bd23dde6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -56,6 +56,7 @@ class Block with Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) + Scoped(val symbols: Array[Symbol], val rest: Block) // TODO: [fyp] handle the Scoped node End() fun concat(b1: Block, b2: Block) = if b1 is diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 0e702a1aa3..f7a6bc886a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -88,51 +88,68 @@ open Block open Option fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = - val rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) + let rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) [flat(rem.map(_.0)), rem.map(_.1)] -fun sop(g, p: Path): ShapeSet = if p is - Select(qual, name) and g.get(p) is None then sel(sop(g, qual), mkLit(name)) - DynSelect(qual, fld, arrayIdx) and g.get(p) is None then sel(sop(g, qual), sop(g, fld)) - ValueRef(l) and g.get(p) is Some(s) then s + +// TODO: refactor with hash map? +class Ctx(maps: Map) with + fun get(path) = + let ps = showPath(path) + if maps.has(ps) then Some(maps.get(ps)) + else None + fun nest = Ctx(new Map(maps)) + fun add(path, ss) = + let ps = showPath(path) + maps.set(ps, ss) + ss +module Ctx with + fun empty = Ctx(new Map()) + +// FIXME: [fyp] what if a path is stored inside the ctx? +fun sop(ctx: Ctx, p: Path): ShapeSet = if p is + Select(qual, name) and ctx.get(p) is None then sel(sop(ctx, qual), mkLit(name)) + DynSelect(qual, fld, arrayIdx) and ctx.get(p) is None then sel(sop(ctx, qual), sop(ctx, fld)) + ValueRef(l) and ctx.get(p) is Some(s) then s ValueLit(lit) then mkLit(lit) -fun sor(g, cache, r: Result) = if r is - Path then [r, sop(g, r), cache] +fun sor(ctx, cache, r: Result) = if r is + Path then [r, sop(ctx, r)] // cls is a Path, but we want the shape class to be a ClassSymbol, maybe widen it for shape - Instantiate(cls, args) then [r, mkClass(???, args.map(sop(g, _))), cache] - Tuple(elems) then [r, mkArr(elems.map(sop(g, _)), false), cache] + Instantiate(ValueRef(sym), args) and sym is ClassSymbol then [r, mkClass(sym, args.map(sop(ctx, _)))] + Instantiate(_, _) then ??? // TODO: [fyp] error message. we don't consider first class classes here for now + Tuple(elems) then [r, mkArr(elems.map(sop(ctx, _)), false)] Call(f, args) and - let k = [f, args.map(sop(g, _))] + let k = [f, args.map(sop(ctx, _))] cache.get(k) is - Some([FunDefn(f1, _, _, _), s]) then [Call(f1, args), s, cache] - None and g.get(f) is + Some([FunDefn(f1, _, _, _), s]) then [Call(f1, args), s] + None and ctx.get(f) is Some(FunDefn(_, params, body, stage)) and - prop(g.addMany(params.map([_, sop(g, r)])), cache, body) is [s, b, cache1] and + prop(ctx.addMany(params.map([_, sop(ctx, r)])), cache, body) is [s, b] and stage is // TODO: create new symbols true then [Call(???, args), s, cache.add(k, [FunDefn(???, params, b, true), s])] - false and args.forall(static) then [b, s, cache1] - else if args.exist(not static(_)) and cache.get(g, args.map(_ => mkDyn())) is Some([FunDefn(f1, params, body, false), s]) - then [Call(f1, args), s, cache] - -fun prop(g, cache, b: Block) = if b is - End then [b, mkBot(), cache] - Return(res, implct) and sor(g, cache, res) is [r1, s, cache1] then - [Return(r1, implct), s, cache1] + false and args.forall(static) then [b, s] + else if args.exist(not static(_)) and cache.get(ctx, args.map(_ => mkDyn())) is Some([FunDefn(f1, params, body, false), s]) + then [Call(f1, args), s] + +fun prop(ctx, cache, b: Block) = if b is + End then [b, mkBot()] + Return(res, implct) and sor(ctx, cache, res) is [r1, s] then + [Return(r1, implct), s] // TODO: let syntax, presumably for Scoped - Assign(x, r, b) and sor(g, cache, r) is [r1, s, cache1] and - prop(g.add(x, union(g.get(x), s)), cache1, b) is [b1, s1, cache2] then - [Assign(x, r1, b1), s1, cache2] + Assign(x, r, b) and sor(ctx, cache, r) is [r1, s] and + prop(ctx.add(x, union(ctx.get(x), s)), cache, b) is [b1, s1] then + [Assign(x, r1, b1), s1, cache] // recurse on arms Match(p, arms, dflt, rest) then ??? -fun exec(g, cache, b: Block) = if b is +fun exec(ctx, cache, b: Block) = if b is Define(d, rest) and d is - ClsLikeDefn then Define(d, exec(g, cache, rest)) + ClsLikeDefn then Define(d, exec(ctx, cache, rest)) FunDefn(sym, params, body, stage) and stage is - true then exec(g.add(???), cache, g) + true then exec(ctx.add(???), cache, ctx) false then ??? - _ and prop(g, cache, b) is [b1, _, cache1] then + _ and prop(ctx, cache, b) is [b1, _] then ??? diff --git a/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls new file mode 100644 index 0000000000..1f7a0d1765 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls @@ -0,0 +1,39 @@ +:js + +import "../../mlscript-compile/Block.mls" +import "../../mlscript-compile/ShapeSet.mls" +import "../../mlscript-compile/ShapeMap.mls" + +open Block +open ShapeSet + + +mkLit(0) +//│ = Lit(0) + +mkDyn() +//│ = Dyn() + + +let arrSp = mkArr([mkLit(0), mkDyn()], false) +//│ arrSp = Arr([Lit(0), Dyn()], false) + +sel(arrSp, mkLit(0)) +//│ = Lit(0) + +sel(arrSp, mkLit(1)) +//│ = Dyn() + +sel(mkDyn(), mkLit(5)) +//│ = Dyn() + + +sop(Ctx.empty, ValueLit(42)) +//│ = Lit(42) + + +sop(Ctx.empty, ValueLit(false)) +//│ = Lit(false) + + +// TODO: [fyp] pls add test cases like above, and fix problems if you find any From 7da3eeafec78701a76def081d43c04eb4a1ba287 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 8 Jan 2026 22:33:16 +0800 Subject: [PATCH 235/654] add Block symbol following pr #375 --- hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 7b827fdbb1..4329b17945 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -310,6 +310,7 @@ object Elaborator: def init(using State): Ctx = Ctx.empty.copy(env = Map( "globalThis" -> globalThisSymbol, "Term" -> termSymbol, + "Block" -> blockSymbol, )) def dbg: Bool = false def dbgRefNum(num: Int): Str = From 7e115d7a48938a52a760025cb4c695e380eb5808 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 8 Jan 2026 22:37:02 +0800 Subject: [PATCH 236/654] formatting --- .../test/mlscript/block-staging/Functions.mls | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 09b8182eaa..bf108a1224 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,6 +1,6 @@ - :js :staging + val x = [1, 2, 3] staged module Expressions with fun lit() = 1 @@ -33,8 +33,6 @@ staged module Expressions with //│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Return(Lit(1), false), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Return(Lit(3), false))))], Return(Lit(0), false), End)) //│ x = [1, 2, 3] -:js -:staging class Outside(a) staged module ClassInstrumentation with class Inside(a, b) @@ -50,8 +48,6 @@ staged module ClassInstrumentation with //│ > Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) //│ > Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false) -:js -:staging staged module Arguments with fun f(x) = x = 1 @@ -60,8 +56,6 @@ staged module Arguments with //│ > Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)) //│ > Return(Lit(undefined), false) -:js -:staging :fixme staged module OtherBlocks with fun breakAndLabel() = @@ -72,8 +66,6 @@ staged module OtherBlocks with //│ /!!!\ Uncaught error: scala.NotImplementedError: an implementation is missing // debug printing fails, collision with class name? -:js -:staging :fixme class A() staged module A with @@ -81,16 +73,14 @@ staged module A with //│ ═══[RUNTIME ERROR] TypeError: A1.f_gen is not a function // debug printing fails, unable to reference the class when calling the instrumented function -:js -:staging :fixme module A with staged module B with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.88: staged module B with +//│ ║ l.78: staged module B with //│ ║ ^^^^^^ -//│ ║ l.89: fun f() = 1 +//│ ║ l.79: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From 9bcdf991eab6e118c6bdc27e21e09fbcfd4b44c9 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 8 Jan 2026 23:50:55 +0800 Subject: [PATCH 237/654] add Scoped, Loop, Break nodes to Block IR this removes the check in L218 because evaluation of Scope is now deferred:wq --- .../scala/hkmc2/codegen/Instrumentation.scala | 16 +++++++++---- .../src/test/mlscript-compile/Block.mls | 13 +++++++++++ .../test/mlscript/block-staging/Functions.mls | 23 +++++++++++-------- 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 9f9d19e638..5b6c699d9b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -215,7 +215,6 @@ class InstrumentationImpl(using State): transformResult(r): y => transformSymbol(x): xSym => blockCtor("ValueRef", Ls(xSym)): xStaged => - assert(ctx.get(x.asPath).isDefined, "x should always be defined, either as an argument to the function or in a Scope Block") (Assign(x, xStaged, _)): given Context = ctx.clone() += x.asPath -> xStaged transformBlock(b): (z, ctx) => @@ -242,9 +241,18 @@ class InstrumentationImpl(using State): transformBlock(rest)(using ctx): (rest, ctx) => fnConcat(sub, rest)(k(_, ctx)) case Scoped(syms, body) => - blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => - val newCtx = ctx.clone() ++ syms.map(_.asPath -> undef) - transformBlock(body)(using newCtx)(k) + syms.toList.map(transformSymbol(_)).collectApply: symsStaged => + tuple(symsStaged): tup => + transformBlock(body): (body, ctx) => + blockCtor("Scoped", Ls(tup, body))(k(_, ctx)) + case Label(labelSymbol, loop, body, rest) => + transformSymbol(labelSymbol): labelSymbol => + transformBlock(body): (body, ctx) => + transformBlock(rest)(using ctx): (rest, ctx) => + blockCtor("Label", Ls(labelSymbol, toValue(loop), body, rest))(k(_, ctx)) + case Break(labelSymbol) => + transformSymbol(labelSymbol): labelSymbol => + blockCtor("Break", Ls(labelSymbol))(k(_, ctx)) case _ => ??? // not supported // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d8ec8b1b3f..360f4723c9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -56,6 +56,10 @@ class Block with Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) + // TODO: [fyp] handle Scoped, Label, Break nodes + Scoped(val symbols: Array[Symbol], val rest: Block) + Label(val labelSymbol: Symbol, val loop: Bool, val body: Block, val rest: Block) + Break(val labelSymbol: Symbol) End() fun concat(b1: Block, b2: Block) = if b1 is @@ -63,6 +67,9 @@ fun concat(b1: Block, b2: Block) = if b1 is Return(res, implct) then b2 // discard return? Assign(lhs, rhs, rest) then Assign(lhs, rhs, concat(rest, b2)) Define(defn, rest) then Define(defn, concat(rest, b2)) + Scoped(symbols, rest) then Scoped(symbols, concat(rest, b2)) + Label(labelSymbol, loop, body, rest) then Label(labelSymbol, loop, body, concat(rest, b2)) + Break then ??? // unreachable End() then b2 fun showBool(b: Bool) = if b then "true" else "false" @@ -158,6 +165,12 @@ fun showBlock(b: Block): Str = "Assign(" + showSymbol(lhs) + ", " + showResult(rhs) + ", " + showBlock(rest) + ")" Define(defn, rest) then "Define(" + showDefn(defn) + ", " + showBlock(rest) + ")" + Scoped(symbols, rest) then + "Scoped([" + symbols.map(showSymbol).join(", ") + "], " + showBlock(rest) + ")" + Label(labelSymbol, loop, body, rest) then + "Label(" + showSymbol(labelSymbol) + ", " + showBool(loop) + ", " + showBlock(body) + ", " + showBlock(rest) + + ")" + Break(labelSymbol) then + "Break(" + showSymbol(labelSymbol) + ")" End() then "End" fun show(x) = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index bf108a1224..37d277bf6f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -21,16 +21,16 @@ staged module Expressions with fun match2() = if [...x] is [] then 1 - // [1, 2] then 2 // TODO: needs handling for Label, Break + [1, 2] then 2 [a, ...] then 3 else 0 //│ > Return(Lit(1), false) -//│ > Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false))) +//│ > Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))) //│ > Return(Tuple([Lit(1), Lit(2)]), false) //│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) -//│ > Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false)) -//│ > Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End)) -//│ > Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Return(Lit(1), false), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Return(Lit(3), false))))], Return(Lit(0), false), End)) +//│ > Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))) +//│ > Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))) +//│ > Scoped([Symbol("element0$"), Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) //│ x = [1, 2, 3] class Outside(a) @@ -56,14 +56,19 @@ staged module Arguments with //│ > Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)) //│ > Return(Lit(undefined), false) -:fixme staged module OtherBlocks with + fun scope() = + scope.locally of ( + let a = 1 + a + ) fun breakAndLabel() = if 1 is 2 then 0 3 then 0 else 0 -//│ /!!!\ Uncaught error: scala.NotImplementedError: an implementation is missing +//│ > Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))) +//│ > Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) // debug printing fails, collision with class name? :fixme @@ -79,8 +84,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.78: staged module B with +//│ ║ l.83: staged module B with //│ ║ ^^^^^^ -//│ ║ l.79: fun f() = 1 +//│ ║ l.84: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From 13ff382eb382f95677105d34a20fc612128a7bb4 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Mon, 12 Jan 2026 13:50:56 +0800 Subject: [PATCH 238/654] WIP: Add contexts --- .../src/test/mlscript-compile/ShapeMap.mls | 20 ++++++ .../src/test/mlscript-compile/ShapeSet.mls | 63 ++++++++++++------- 2 files changed, 61 insertions(+), 22 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls index d1c048c681..685980fc79 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls @@ -1,8 +1,10 @@ import "./Option.mls" import "./ShapeSet.mls" +import "./StrOps.mls" open Option { Some, None } open ShapeSet +open StrOps type ShapeMap = ShapeMap.ShapeMap @@ -17,3 +19,21 @@ class ShapeMap(val underlying: Map) with if underlying.get(s.hash()) == () then None is value then Some of value + +// TODO: improve it +class Cache(underlying: Map, names: Map) with + fun add(fname, argShape, codefrag, resShape) = + let key = fname ~ argShape.hash() + let newName = freshName(fname) // TODO: hygiene + underlying.set(key, [newName, resShape, codefrag]) + fun get(fname, argShape) = + let key = fname ~ argShape.hash() + if underlying.has(key) then Some of underlying.get(key) + else None + fun freshName(name) = + if not names.has(name) do + names.set(name, 0) + let i = names.get(name) + names.set(name, i + 1) + StrOps.concat of name, "_", i.toString() + diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index f7a6bc886a..893d874aeb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -106,6 +106,18 @@ class Ctx(maps: Map) with module Ctx with fun empty = Ctx(new Map()) + +class DefCtx(defs: Map) with + fun get(sym) = + if defs.has(sym) then Some(defs.get(sym)) + else None + fun add(sym, node) = + defs.set(sym, node) + () +module DefCtx with + fun empty = DefCtx(new Map()) + + // FIXME: [fyp] what if a path is stored inside the ctx? fun sop(ctx: Ctx, p: Path): ShapeSet = if p is Select(qual, name) and ctx.get(p) is None then sel(sop(ctx, qual), mkLit(name)) @@ -113,43 +125,50 @@ fun sop(ctx: Ctx, p: Path): ShapeSet = if p is ValueRef(l) and ctx.get(p) is Some(s) then s ValueLit(lit) then mkLit(lit) -fun sor(ctx, cache, r: Result) = if r is +fun sor(defs, ctx, cache, r: Result) = if r is Path then [r, sop(ctx, r)] // cls is a Path, but we want the shape class to be a ClassSymbol, maybe widen it for shape Instantiate(ValueRef(sym), args) and sym is ClassSymbol then [r, mkClass(sym, args.map(sop(ctx, _)))] Instantiate(_, _) then ??? // TODO: [fyp] error message. we don't consider first class classes here for now Tuple(elems) then [r, mkArr(elems.map(sop(ctx, _)), false)] Call(f, args) and - let k = [f, args.map(sop(ctx, _))] - cache.get(k) is - Some([FunDefn(f1, _, _, _), s]) then [Call(f1, args), s] - None and ctx.get(f) is - Some(FunDefn(_, params, body, stage)) and - prop(ctx.addMany(params.map([_, sop(ctx, r)])), cache, body) is [s, b] and - stage is - // TODO: create new symbols - true then [Call(???, args), s, cache.add(k, [FunDefn(???, params, b, true), s])] - false and args.forall(static) then [b, s] - else if args.exist(not static(_)) and cache.get(ctx, args.map(_ => mkDyn())) is Some([FunDefn(f1, params, body, false), s]) - then [Call(f1, args), s] - -fun prop(ctx, cache, b: Block) = if b is + let def = defs.get(f) + def is + Some(FunDefn(_, _, _, _)) then ??? // TODO: [fyp] call the generator function + None then ??? // TODO: [fyp] if f is a builtin operator && arguments are known, then evaluate it; otherwise, leave it untouched + + // Call(f, args) and + // let k = [f, args.map(sop(ctx, _))] + // cache.get(k) is + // Some([FunDefn(f1, _, _, _), s]) then [Call(f1, args), s] + // None and ctx.get(f) is + // Some(FunDefn(_, params, body, stage)) and + // prop(ctx.addMany(params.map([_, sop(ctx, r)])), cache, body) is [s, b] and + // stage is + // // TODO: create new symbols + // true then [Call(???, args), s, cache.add(k, [FunDefn(???, params, b, true), s])] + // false and args.forall(static) then [b, s] + // else if args.exist(not static(_)) and cache.get(ctx, args.map(_ => mkDyn())) is Some([FunDefn(f1, params, body, false), s]) + // then [Call(f1, args), s] + +fun prop(defs, ctx, cache, b: Block) = if b is End then [b, mkBot()] - Return(res, implct) and sor(ctx, cache, res) is [r1, s] then + Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s] then [Return(r1, implct), s] // TODO: let syntax, presumably for Scoped - Assign(x, r, b) and sor(ctx, cache, r) is [r1, s] and - prop(ctx.add(x, union(ctx.get(x), s)), cache, b) is [b1, s1] then + Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s] and + prop(defs, ctx.add(x, union(ctx.get(x), s)), cache, b) is [b1, s1] then [Assign(x, r1, b1), s1, cache] // recurse on arms Match(p, arms, dflt, rest) then ??? -fun exec(ctx, cache, b: Block) = if b is +// TODO: remove it. this can be done in module static blocks +fun exec(defs, ctx, cache, b: Block) = if b is Define(d, rest) and d is - ClsLikeDefn then Define(d, exec(ctx, cache, rest)) + ClsLikeDefn then Define(d, exec(defs, ctx, cache, rest)) FunDefn(sym, params, body, stage) and stage is - true then exec(ctx.add(???), cache, ctx) + true then exec(defs, ctx.add(???), cache, ctx) false then ??? - _ and prop(ctx, cache, b) is [b1, _] then + _ and prop(defs, ctx, cache, b) is [b1, _] then ??? From f68112c633317d2cbb01627756c5b271c290f269 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Tue, 13 Jan 2026 15:33:18 +0800 Subject: [PATCH 239/654] Add pattern matching prop --- .../src/test/mlscript-compile/ShapeSet.mls | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 893d874aeb..3575b56ab7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -158,10 +158,28 @@ fun prop(defs, ctx, cache, b: Block) = if b is // TODO: let syntax, presumably for Scoped Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s] and prop(defs, ctx.add(x, union(ctx.get(x), s)), cache, b) is [b1, s1] then - [Assign(x, r1, b1), s1, cache] - // recurse on arms + [Assign(x, r1, b1), s1] Match(p, arms, dflt, rest) then - ??? + let s = sop(ctx, p) + let filteredArms = fold((r, arm) => + let fs = filter(r.0, arm.0) + if fs.isEmpty() then r + else + let nestCtx = ctx.nest + if not p is ValueLit then do + nestCtx.add(p, fs) + let res = prop(defs, nestCtx, cache, arm.1) + [rest(r.0, arm.0), union(r.1, res.1), r.2.push(res.0)] + )([s, mkBot(), []], arms) // rest of shapes, early-returned shapes, filtered arms + let newDflt = + if filteredArms.0.isEmpty() then dflt + else + let nestCtx = ctx.nest + if not p is ValueLit then do + nestCtx.add(p, filteredArms.0) + prop(defs, nestCtx, cache, dflt) + let newRest = prop(defs, ctx, cache, rest) + [Match(p, filteredArms.2, newDflt.0, newRest.0), union(filteredArms.1, union of newDflt.1, newRest.1)] // TODO: remove it. this can be done in module static blocks fun exec(defs, ctx, cache, b: Block) = if b is From 51e561b3e5029aa387f997bcfd8b643bef10bd35 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 13 Jan 2026 17:56:10 +0800 Subject: [PATCH 240/654] first draft of sop and sor --- .../src/test/mlscript-compile/Shape.mls | 6 +- .../src/test/mlscript-compile/ShapeSet.mls | 90 +++++++++++++++---- 2 files changed, 75 insertions(+), 21 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 5e16b1f566..e3c27c4deb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -56,9 +56,9 @@ fun mrg(s1: Array[Shape]) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is [Class(sym, params), Lit(n)] and n is Str - and sym.args is Some(args) - and args.find(_ == n) - == () then [] + and sym.paramsOpt is Some(args) + and args.indexOf(n) + == -1 then [] is i then [params.(i)] [Dyn, Lit(n)] and n is Str then [Dyn()] diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 3575b56ab7..7ca370f36d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -22,7 +22,7 @@ class ShapeSet(val underlying: Map) extends CachedHash with fun flatMap(f) = liftMany(values().flatMap(f)) - fun toString() = underlying.keys().toArray().toSorted().toString() + // fun toString() = underlying.keys().toArray().toSorted().toString() fun create() = ShapeSet(new Map) @@ -102,7 +102,7 @@ class Ctx(maps: Map) with fun add(path, ss) = let ps = showPath(path) maps.set(ps, ss) - ss + this module Ctx with fun empty = Ctx(new Map()) @@ -113,29 +113,83 @@ class DefCtx(defs: Map) with else None fun add(sym, node) = defs.set(sym, node) - () + this module DefCtx with fun empty = DefCtx(new Map()) +class Cache(val underlying: Map) with + fun key(f, args) = + showPath(f) + "(" + args.map(s => s.toString()).join(",") + ")" + fun get(f, args) = + let k = key(f, args) + if underlying.has(k) then Some(underlying.get(k)) else None + fun add(f, args, res) = + underlying.set(key(f, args), res) + this -// FIXME: [fyp] what if a path is stored inside the ctx? -fun sop(ctx: Ctx, p: Path): ShapeSet = if p is - Select(qual, name) and ctx.get(p) is None then sel(sop(ctx, qual), mkLit(name)) - DynSelect(qual, fld, arrayIdx) and ctx.get(p) is None then sel(sop(ctx, qual), sop(ctx, fld)) - ValueRef(l) and ctx.get(p) is Some(s) then s - ValueLit(lit) then mkLit(lit) +module Cache with + fun empty = Cache(new Map()) + + +fun sop(ctx, p: Path): ShapeSet = + if ctx.get(p) is Some(s) then s + else if p is + Select(qual, sym) then sel(sop(ctx, qual), mkLit(sym.name)) + DynSelect(qual, fld, arrayIdx) then sel(sop(ctx, qual), sop(ctx, fld)) + ValueLit(lit) then mkLit(lit) + ValueRef(l) then mkDyn() + +val binaryOps = ["+", "-", "*", "/", "%", "==", "!=", "<", "<=", ">", ">=", "===", "!==", "&&", "||"] +val unaryOps = ["-", "+", "!"] fun sor(defs, ctx, cache, r: Result) = if r is - Path then [r, sop(ctx, r)] + Path then [r, sop(ctx, r), cache] // cls is a Path, but we want the shape class to be a ClassSymbol, maybe widen it for shape - Instantiate(ValueRef(sym), args) and sym is ClassSymbol then [r, mkClass(sym, args.map(sop(ctx, _)))] - Instantiate(_, _) then ??? // TODO: [fyp] error message. we don't consider first class classes here for now - Tuple(elems) then [r, mkArr(elems.map(sop(ctx, _)), false)] - Call(f, args) and - let def = defs.get(f) - def is - Some(FunDefn(_, _, _, _)) then ??? // TODO: [fyp] call the generator function - None then ??? // TODO: [fyp] if f is a builtin operator && arguments are known, then evaluate it; otherwise, leave it untouched + Instantiate(cls, args) then + let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("?") + [r, mkClass(sym, args.map(a => sop(ctx, a.value))), cache] + Tuple(elems) then [r, mkArr(elems.map(a => sop(ctx, a.value)), false), cache] + Call(f, args) then + let def = if f is ValueRef(s) then defs.get(s) else None + if def is + Some(FunDefn(sym, params, body, true)) then TODO: [fyp] call the generator function + None then + if f is ValueRef(s) then + let name = s.name + if binaryOps.includes(name) and args.length == 2 then + if args.0 is Arg(_, ValueLit(l1)) and args.1 is Arg(_, ValueLit(l2)) then + let res = + if name == "+" then l1 + l2 + else if name == "-" then l1 - l2 + else if name == "*" then l1 * l2 + else if name == "/" then l1 / l2 + else if name == "%" then l1 % l2 + else if name == "==" then l1 == l2 + else if name == "!=" then l1 != l2 + else if name == "<" then l1 < l2 + else if name == "<=" then l1 <= l2 + else if name == ">" then l1 > l2 + else if name == ">=" then l1 >= l2 + else if name == "===" then l1 === l2 + else if name == "!==" then l1 !== l2 + else if name == "&&" then l1 && l2 + else if name == "||" then l1 || l2 + else undefined + if res === undefined then [r, mkDyn(), cache] + else [ValueLit(res), mkLit(res), cache] + else [r, mkDyn(), cache] + else if unaryOps.includes(name) and args.length == 1 then + if args.0 is Arg(_, ValueLit(l1)) then + let res = + if name == "!" then not l1 + else if name == "-" then -l1 + else if name == "+" then +l1 + else undefined + if res === undefined then [r, mkDyn(), cache] + else [ValueLit(res), mkLit(res), cache] + else [r, mkDyn(), cache] + else [r, mkDyn(), cache] + else [r, mkDyn(), cache] // Call(f, args) and // let k = [f, args.map(sop(ctx, _))] From 7db5e7216f754fb37b1ff2235cbb469e8bc346c4 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 13 Jan 2026 17:59:10 +0800 Subject: [PATCH 241/654] fix a typo --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 7ca370f36d..9450bcd1a1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -28,6 +28,7 @@ fun create() = ShapeSet(new Map) fun lift(s: Shape) = ShapeSet(new Map([[s.hash(), s]])) + fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [s.hash(), s]))) // combining ShapeSets together @@ -152,7 +153,9 @@ fun sor(defs, ctx, cache, r: Result) = if r is Call(f, args) then let def = if f is ValueRef(s) then defs.get(s) else None if def is - Some(FunDefn(sym, params, body, true)) then TODO: [fyp] call the generator function + Some(FunDefn(sym, params, body, true)) then + let newCtx = ctx.nest + ??? None then if f is ValueRef(s) then let name = s.name @@ -185,6 +188,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is else if name == "-" then -l1 else if name == "+" then +l1 else undefined + print(res) if res === undefined then [r, mkDyn(), cache] else [ValueLit(res), mkLit(res), cache] else [r, mkDyn(), cache] From 22d22a6a1b6e0c5691800c12329c91f2d5edd0bb Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 13 Jan 2026 18:26:33 +0800 Subject: [PATCH 242/654] add some tests --- .../src/test/mlscript-compile/ShapeSet.mls | 4 +- .../src/test/mlscript/staging/ShapeProp.mls | 98 +++++++++++++++++-- 2 files changed, 93 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 9450bcd1a1..ce2e201957 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -22,7 +22,7 @@ class ShapeSet(val underlying: Map) extends CachedHash with fun flatMap(f) = liftMany(values().flatMap(f)) - // fun toString() = underlying.keys().toArray().toSorted().toString() + fun toString() = underlying.keys().toArray().toSorted().toString() fun create() = ShapeSet(new Map) @@ -154,7 +154,6 @@ fun sor(defs, ctx, cache, r: Result) = if r is let def = if f is ValueRef(s) then defs.get(s) else None if def is Some(FunDefn(sym, params, body, true)) then - let newCtx = ctx.nest ??? None then if f is ValueRef(s) then @@ -188,7 +187,6 @@ fun sor(defs, ctx, cache, r: Result) = if r is else if name == "-" then -l1 else if name == "+" then +l1 else undefined - print(res) if res === undefined then [r, mkDyn(), cache] else [ValueLit(res), mkLit(res), cache] else [r, mkDyn(), cache] diff --git a/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls index 1f7a0d1765..2d5bfae893 100644 --- a/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls @@ -1,12 +1,14 @@ :js import "../../mlscript-compile/Block.mls" +import "../../mlscript-compile/Shape.mls" import "../../mlscript-compile/ShapeSet.mls" -import "../../mlscript-compile/ShapeMap.mls" - -open Block +import "../../mlscript-compile/Option.mls" +import "../../mlscript-compile/CachedHash.mls" +open Shape open ShapeSet - +open Block +open Option mkLit(0) //│ = Lit(0) @@ -31,9 +33,93 @@ sel(mkDyn(), mkLit(5)) sop(Ctx.empty, ValueLit(42)) //│ = Lit(42) - sop(Ctx.empty, ValueLit(false)) //│ = Lit(false) -// TODO: [fyp] pls add test cases like above, and fix problems if you find any +val x = Symbol("x") +val C = ClassSymbol("C", Some(["a"])) +val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) +let ctx = Ctx.empty +ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) +sop(ctx, selPath) +//│ = Lit("pass") +//│ C = ClassSymbol("C", Some(["a"])) +//│ ctx = Ctx(_) +//│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) +//│ x = Symbol("x") + +val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +let ctx = Ctx.empty +let cache = Cache.empty +let defCtx = DefCtx.empty +sor(defCtx, ctx, cache, tup) +//│ = [ +//│ Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]), +//│ Arr([Lit(1), Lit(true)], false), +//│ Cache(Map(0) {}) +//│ ] +//│ cache = Cache(Map(0) {}) +//│ ctx = Ctx(_) +//│ defCtx = DefCtx(_) +//│ tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) + +let c = ClassSymbol("C", Some([Symbol("p")])) +let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) +sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) +//│ = [ +//│ Instantiate( +//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), +//│ [Arg(None, ValueLit(123))] +//│ ), +//│ Class(ClassSymbol("C", Some([Symbol("p")])), [Lit(123)]), +//│ Cache(Map(0) {}) +//│ ] +//│ c = ClassSymbol("C", Some([Symbol("p")])) +//│ inst = Instantiate( +//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), +//│ [Arg(None, ValueLit(123))] +//│ ) + +let plusSym = Symbol("+") +let plus = ValueRef(plusSym) +let args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +let callPlus = Call(plus, args) +sor(DefCtx.empty, Ctx.empty, Cache.empty, callPlus) +//│ = [ValueLit(3), Lit(3), Cache(Map(0) {})] +//│ args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +//│ callPlus = Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +//│ ) +//│ plus = ValueRef(Symbol("+")) +//│ plusSym = Symbol("+") + +fun testBinOp(op, v1, v2) = + let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] + let c = Call(ValueRef(Symbol(op)), args) + sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0 + +testBinOp("+", 10, 2) +//│ = ValueLit(12) + +testBinOp("==", 10, 10) +//│ = ValueLit(true) + +testBinOp("===", 10, "10") +//│ = ValueLit(false) + +testBinOp("&&", true, false) +//│ = ValueLit(false) + +fun testUnaryOp(op, v) = + let args = [Arg(None, ValueLit(v))] + let c = Call(ValueRef(Symbol(op)), args) + sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0 + +testUnaryOp("-", 10) +//│ = ValueLit(-10) + +testUnaryOp("!", true) +//│ = ValueLit(false) + From a7f80fd3b2b4a09a312a19611a1ea9d6f4b5a001 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 13 Jan 2026 18:51:21 +0800 Subject: [PATCH 243/654] correct sor implementation to use shape instead --- .../src/test/mlscript-compile/ShapeSet.mls | 21 +++++++++-- .../src/test/mlscript/staging/ShapeProp.mls | 35 +++++++++---------- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index ce2e201957..586c44d406 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -159,7 +159,21 @@ fun sor(defs, ctx, cache, r: Result) = if r is if f is ValueRef(s) then let name = s.name if binaryOps.includes(name) and args.length == 2 then - if args.0 is Arg(_, ValueLit(l1)) and args.1 is Arg(_, ValueLit(l2)) then + let v1 = + let s = sop(ctx, args.0.value) + if s.values().length == 1 then + if s.values().0 is + Shape.Lit(l) then Some(l) // why need Shape. here?? + else + None + let v2 = + let s = sop(ctx, args.1.value) + if s.values().length == 1 then + if s.values().0 is + Shape.Lit(l) then Some(l) // why need Shape. here?? + else + None + if v1 is Some(l1) and v2 is Some(l2) then let res = if name == "+" then l1 + l2 else if name == "-" then l1 - l2 @@ -181,7 +195,10 @@ fun sor(defs, ctx, cache, r: Result) = if r is else [ValueLit(res), mkLit(res), cache] else [r, mkDyn(), cache] else if unaryOps.includes(name) and args.length == 1 then - if args.0 is Arg(_, ValueLit(l1)) then + let v1 = + let s = sop(ctx, args.0.value) + if s.values() is [Lit(l)] then Some(l) else None + if v1 is Some(l1) then let res = if name == "!" then not l1 else if name == "-" then -l1 diff --git a/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls index 2d5bfae893..9587ff5f2d 100644 --- a/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls @@ -81,29 +81,15 @@ sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) //│ [Arg(None, ValueLit(123))] //│ ) -let plusSym = Symbol("+") -let plus = ValueRef(plusSym) -let args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] -let callPlus = Call(plus, args) -sor(DefCtx.empty, Ctx.empty, Cache.empty, callPlus) -//│ = [ValueLit(3), Lit(3), Cache(Map(0) {})] -//│ args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] -//│ callPlus = Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] -//│ ) -//│ plus = ValueRef(Symbol("+")) -//│ plusSym = Symbol("+") - fun testBinOp(op, v1, v2) = let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] let c = Call(ValueRef(Symbol(op)), args) - sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0 + sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0 testBinOp("+", 10, 2) //│ = ValueLit(12) -testBinOp("==", 10, 10) +testBinOp("==", 10, 10) //│ = ValueLit(true) testBinOp("===", 10, "10") @@ -118,8 +104,21 @@ fun testUnaryOp(op, v) = sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0 testUnaryOp("-", 10) -//│ = ValueLit(-10) +//│ = Call(ValueRef(Symbol("-")), [Arg(None, ValueLit(10))]) testUnaryOp("!", true) -//│ = ValueLit(false) +//│ = Call(ValueRef(Symbol("!")), [Arg(None, ValueLit(true))]) +let plusSym = Symbol("+") +let plus = ValueRef(plusSym) +let args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +let callPlus = Call(plus, args) +sor(DefCtx.empty, Ctx.empty, Cache.empty, callPlus) +//│ = [ValueLit(3), Lit(3), Cache(Map(0) {})] +//│ args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +//│ callPlus = Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +//│ ) +//│ plus = ValueRef(Symbol("+")) +//│ plusSym = Symbol("+") From 0e05042e8e7eed126519245e93c111d0af2a7a14 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 13 Jan 2026 21:37:33 +0800 Subject: [PATCH 244/654] udpate tests --- .../test/mlscript/block-staging/Functions.mls | 2 +- .../test/mlscript/block-staging/ShapeProp.mls | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 37d277bf6f..691ee241a9 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -30,7 +30,7 @@ staged module Expressions with //│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) //│ > Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))) //│ > Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))) -//│ > Scoped([Symbol("element0$"), Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > Scoped([Symbol("middleElements"), Symbol("element0$"), Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) //│ x = [1, 2, 3] class Outside(a) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 0ae84983c7..0178263d39 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -43,7 +43,7 @@ val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) let ctx = Ctx.empty ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) -//│ = +//│ = Lit("pass") //│ C = ClassSymbol("C", Some(["a"])) //│ ctx = Ctx(_) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) @@ -84,19 +84,23 @@ sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) fun testBinOp(op, v1, v2) = let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] let c = Call(ValueRef(Symbol(op)), args) - sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0 + sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit +:expect 12 testBinOp("+", 10, 2) -//│ = ValueLit(12) +//│ = 12 +:expect true testBinOp("==", 10, 10) -//│ = ValueLit(true) +//│ = true +:expect false testBinOp("===", 10, "10") -//│ = ValueLit(false) +//│ = false +:expect false testBinOp("&&", true, false) -//│ = ValueLit(false) +//│ = false fun testUnaryOp(op, v) = let args = [Arg(None, ValueLit(v))] From 098e74a5fa5a5f3c30ec956e0c823a7488e62d83 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 13 Jan 2026 21:44:16 +0800 Subject: [PATCH 245/654] formatting --- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index e3c27c4deb..2fce9556eb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -57,9 +57,9 @@ fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is [Class(sym, params), Lit(n)] and n is Str and sym.paramsOpt is Some(args) - and args.indexOf(n) - == -1 then [] - is i then [params.(i)] + and args.indexOf(n) is + -1 then [] + i then [params.(i)] [Dyn, Lit(n)] and n is Str then [Dyn()] [Arr(shapes, false), Lit(n)] and n is Int From 94cb8273881f7c0b7879921ae03bd2244639f809 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 13 Jan 2026 22:40:11 +0800 Subject: [PATCH 246/654] first attempt at sor Call --- .../src/test/mlscript-compile/ShapeSet.mls | 39 ++++- .../src/test/mlscript/staging/ShapeProp.mls | 138 ++++++++++++++++-- 2 files changed, 159 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 586c44d406..e5044f30a4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -108,12 +108,12 @@ module Ctx with fun empty = Ctx(new Map()) -class DefCtx(defs: Map) with +class DefCtx(val defs: Map) with fun get(sym) = - if defs.has(sym) then Some(defs.get(sym)) + if defs.has(sym.name) then Some(defs.get(sym.name)) else None fun add(sym, node) = - defs.set(sym, node) + defs.set(sym.name, node) this module DefCtx with fun empty = DefCtx(new Map()) @@ -154,7 +154,25 @@ fun sor(defs, ctx, cache, r: Result) = if r is let def = if f is ValueRef(s) then defs.get(s) else None if def is Some(FunDefn(sym, params, body, true)) then - ??? + let argShapes = args.map(a => sop(ctx, a.value)) + let shapeStr = argShapes.map(s => s.toString()).join("_") + let implSym = Symbol(sym.name + "_" + shapeStr) + if defs.get(implSym) is Some(_) then + [Call(ValueRef(implSym), args), mkDyn(), cache] // TODO: defctx need to store the shape as well + else + let genName = sym.name + "_gen" + if defs.get(Symbol(genName)) is Some(FunDefn(genSym, genParams, genBody, _)) then + let genCtx = ctx.nest + // only deal with non-curried version for now + if genParams.length > 0 then + genParams.0.forEach((p, i) => + genCtx.add(ValueRef(p), mkLit(argShapes.(i))) + ) + if prop(defs, genCtx, cache, genBody) is [resBlock, resShape] then + defs.add(implSym, FunDefn(implSym, params, resBlock, false)) + [Call(ValueRef(implSym), args), mkDyn(), cache] + else [r, mkDyn(), cache] + else [r, mkDyn(), cache] None then if f is ValueRef(s) then let name = s.name @@ -163,14 +181,18 @@ fun sor(defs, ctx, cache, r: Result) = if r is let s = sop(ctx, args.0.value) if s.values().length == 1 then if s.values().0 is - Shape.Lit(l) then Some(l) // why need Shape. here?? + Shape.Lit(l) then Some(l) + else + None else None let v2 = let s = sop(ctx, args.1.value) if s.values().length == 1 then if s.values().0 is - Shape.Lit(l) then Some(l) // why need Shape. here?? + Shape.Lit(l) then Some(l) + else + None else None if v1 is Some(l1) and v2 is Some(l2) then @@ -209,6 +231,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is else [r, mkDyn(), cache] else [r, mkDyn(), cache] else [r, mkDyn(), cache] + else [r, mkDyn(), cache] // add shape // Call(f, args) and // let k = [f, args.map(sop(ctx, _))] @@ -226,10 +249,10 @@ fun sor(defs, ctx, cache, r: Result) = if r is fun prop(defs, ctx, cache, b: Block) = if b is End then [b, mkBot()] - Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s] then + Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s, _] then [Return(r1, implct), s] // TODO: let syntax, presumably for Scoped - Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s] and + Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s, _] and prop(defs, ctx.add(x, union(ctx.get(x), s)), cache, b) is [b1, s1] then [Assign(x, r1, b1), s1] Match(p, arms, dflt, rest) then diff --git a/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls index 9587ff5f2d..7e1ab3a216 100644 --- a/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/staging/ShapeProp.mls @@ -61,7 +61,7 @@ sor(defCtx, ctx, cache, tup) //│ ] //│ cache = Cache(Map(0) {}) //│ ctx = Ctx(_) -//│ defCtx = DefCtx(_) +//│ defCtx = DefCtx(Map(0) {}) //│ tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) let c = ClassSymbol("C", Some([Symbol("p")])) @@ -82,22 +82,33 @@ sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) //│ ) fun testBinOp(op, v1, v2) = - let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] + let args = [Arg(None, v1), Arg(None, v2)] let c = Call(ValueRef(Symbol(op)), args) sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0 -testBinOp("+", 10, 2) +testBinOp("+", ValueLit(10), ValueLit(2)) //│ = ValueLit(12) -testBinOp("==", 10, 10) +testBinOp("==", ValueLit(10), ValueLit(10)) //│ = ValueLit(true) -testBinOp("===", 10, "10") -//│ = ValueLit(false) +let c = ClassSymbol("C", Some([Symbol("p")])) +testBinOp("==", ValueRef(c), ValueRef(c)) +//│ = Call( +//│ ValueRef(Symbol("==")), +//│ [ +//│ Arg(None, ValueRef(ClassSymbol("C", Some([Symbol("p")])))), +//│ Arg(None, ValueRef(ClassSymbol("C", Some([Symbol("p")])))) +//│ ] +//│ ) +//│ c = ClassSymbol("C", Some([Symbol("p")])) -testBinOp("&&", true, false) +testBinOp("===", ValueLit(10), ValueLit("10")) //│ = ValueLit(false) +testBinOp("&&", ValueLit(true), ValueLit(false)) +//│ = ValueLit(false) + fun testUnaryOp(op, v) = let args = [Arg(None, ValueLit(v))] let c = Call(ValueRef(Symbol(op)), args) @@ -108,17 +119,124 @@ testUnaryOp("-", 10) testUnaryOp("!", true) //│ = Call(ValueRef(Symbol("!")), [Arg(None, ValueLit(true))]) + +let fooSym = Symbol("foo") +let fooGenSym = Symbol("foo_gen") +let fooImplSym = Symbol("foo_impl") +let x = Symbol("x") +let sx = Symbol("sx") +let defs = DefCtx.empty +defs.add(fooSym, FunDefn(fooSym, [[x]], End(), true)) +defs.add(fooGenSym, FunDefn(fooGenSym, [[sx]], Return(Call(ValueRef(fooImplSym), [Arg(None, ValueRef(x))]), false), false)) +defs.add(fooImplSym, FunDefn(fooImplSym, [[x]], Return(ValueLit(42), false), false)) +let args = [Arg(None, ValueLit(100))] +let callFoo = Call(ValueRef(fooSym), args) +sor(defs, Ctx.empty, Cache.empty, callFoo) +//│ = [ +//│ Call(ValueRef(Symbol("foo_Lit(100)")), [Arg(None, ValueLit(100))]), +//│ Dyn(), +//│ Cache(Map(0) {}) +//│ ] +//│ args = [Arg(None, ValueLit(100))] +//│ callFoo = Call(ValueRef(Symbol("foo")), [Arg(None, ValueLit(100))]) +//│ defs = DefCtx( +//│ Map(4) { +//│ "foo" => FunDefn(Symbol("foo"), [[Symbol("x")]], End(), true), +//│ "foo_gen" => FunDefn( +//│ Symbol("foo_gen"), +//│ [[Symbol("sx")]], +//│ Return( +//│ Call( +//│ ValueRef(Symbol("foo_impl")), +//│ [Arg(None, ValueRef(Symbol("x")))] +//│ ), +//│ false +//│ ), +//│ false +//│ ), +//│ "foo_impl" => FunDefn( +//│ Symbol("foo_impl"), +//│ [[Symbol("x")]], +//│ Return(ValueLit(42), false), +//│ false +//│ ), +//│ "foo_Lit(100)" => FunDefn( +//│ Symbol("foo_Lit(100)"), +//│ [[Symbol("x")]], +//│ Return( +//│ Call( +//│ ValueRef(Symbol("foo_impl")), +//│ [Arg(None, ValueRef(Symbol("x")))] +//│ ), +//│ false +//│ ), +//│ false +//│ ) +//│ } +//│ ) +//│ fooGenSym = Symbol("foo_gen") +//│ fooImplSym = Symbol("foo_impl") +//│ fooSym = Symbol("foo") +//│ sx = Symbol("sx") +//│ x = Symbol("x") + let plusSym = Symbol("+") let plus = ValueRef(plusSym) let args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] let callPlus = Call(plus, args) -sor(DefCtx.empty, Ctx.empty, Cache.empty, callPlus) -//│ = [ValueLit(3), Lit(3), Cache(Map(0) {})] -//│ args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +let args = [Arg(None, ValueRef(callPlus)), Arg(None, ValueLit(3))] +let callPlus2 = Call(plus, args) +sor(DefCtx.empty, Ctx.empty, Cache.empty, callPlus2) +//│ = [ +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [ +//│ Arg( +//│ None, +//│ ValueRef( +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +//│ ) +//│ ) +//│ ), +//│ Arg(None, ValueLit(3)) +//│ ] +//│ ), +//│ Dyn(), +//│ Cache(Map(0) {}) +//│ ] +//│ args = [ +//│ Arg( +//│ None, +//│ ValueRef( +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +//│ ) +//│ ) +//│ ), +//│ Arg(None, ValueLit(3)) +//│ ] //│ callPlus = Call( //│ ValueRef(Symbol("+")), //│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] //│ ) +//│ callPlus2 = Call( +//│ ValueRef(Symbol("+")), +//│ [ +//│ Arg( +//│ None, +//│ ValueRef( +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] +//│ ) +//│ ) +//│ ), +//│ Arg(None, ValueLit(3)) +//│ ] +//│ ) //│ plus = ValueRef(Symbol("+")) //│ plusSym = Symbol("+") From d054949af2492dfea2f6b2b846eba3b075dc56c8 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 13 Jan 2026 22:53:48 +0800 Subject: [PATCH 247/654] add tests to ShapeProp --- .../src/test/mlscript-compile/Block.mls | 2 +- .../src/test/mlscript-compile/Shape.mls | 12 ++-- .../test/mlscript/block-staging/ShapeProp.mls | 61 ++++++++++++++++++- 3 files changed, 66 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 360f4723c9..77edb30696 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -26,7 +26,7 @@ class Arg(val spread: Opt[Bool], val value: Path) class Case with constructor Lit(val lit: Literal) - Cls(val cls: Symbol, val path: Path) + Cls(val cls: ClassSymbol, val path: Path) Tup(val len: Int, val inf: Bool) class Result with diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 2fce9556eb..bbef5eca65 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -87,17 +87,19 @@ fun silh(p: Case): Shape = if p is Block.Lit(l) then Lit(l) Block.Cls(sym, path) then val size = if sym.args is Some(i) then i else 0 - Class(sym, Array(size).fill(Dyn)) - Block.Tup(n, inf) then Arr(Array(n).fill(Dyn), inf) + Class(sym, Array(size).fill(Dyn())) + Block.Tup(n, inf) then Arr(Array(n).fill(Dyn()), inf) // TODO: use Option instead, since all of them return at most one shape fun filter(s: Shape, p: Case): Array[Shape] = if [s, p] is [Lit(l1), Block.Lit(l2)] and l1 == l2 then [s] [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] - [Arr(ls, false), Block.Tup(n, false)] and ls.length == n then [s] - [Arr(ls, true), _] then [s] // TODO - [_, Block.Tup(ls, true)] then [s] // TODO + [Arr(ls, inf1), Block.Tup(n, inf2)] and [inf1, inf2] is + [false, false] and ls.length != n then [] + [true, false] and ls.length > n then [] + [false, true] and ls.length < n then [] + else [s] [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [s] [Dyn, _] then [silh(p)] else [] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 0178263d39..1ea2a0000a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -5,10 +5,10 @@ import "../../mlscript-compile/Shape.mls" import "../../mlscript-compile/ShapeSet.mls" import "../../mlscript-compile/Option.mls" import "../../mlscript-compile/CachedHash.mls" -open Shape -open ShapeSet -open Block open Option +open Block { Symbol, ClassSymbol, Tup } +open Shape { Arr, Class, Dyn, Lit } +open ShapeSet mkLit(0) //│ = Lit(0) @@ -16,6 +16,9 @@ mkLit(0) mkDyn() //│ = Dyn() +assert(mkBot().isEmpty()) + +// sel let arrSp = mkArr([mkLit(0), mkDyn()], false) //│ arrSp = Arr([Lit(0), Dyn()], false) @@ -29,6 +32,58 @@ sel(arrSp, mkLit(1)) sel(mkDyn(), mkLit(5)) //│ = Dyn() +let a = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) +let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)], false)]) +sel(x, liftMany([Lit("a"), Lit(2)])) +//│ = Dyn(),Lit(42),Lit(undefined) +//│ a = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) +//│ x = Arr([Lit(100), Lit(false), Lit(undefined)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn() + +sel(lift(Arr([Dyn(), Lit(1), a], false)), mkLit(1)) +//│ = Lit(1) + +// union + +let x = liftMany([Lit(1), Lit(2)]) +let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +union(x, y) +//│ = Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1),Lit(2) +//│ x = Lit(1),Lit(2) +//│ y = Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1) + +// filter + +filter(mkDyn(), Block.Lit("a")) +//│ = Lit("a") + +filter(mkDyn(), Block.Tup(2, true)) +//│ = Arr([Dyn(), Dyn()], true) + +let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ filterShapes = Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null) + +// wildcard is represented as dflt in Match + +filter(filterShapes, Block.Lit(1)) +//│ = Lit(1) + +assert(filter(filterShapes, Block.Lit(2)).isEmpty()) + +filter(filterShapes, Block.Cls(Symbol("A"), undefined)) +//│ = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) + +filter(filterShapes, Block.Cls(Symbol("Int"), undefined)) +//│ = Lit(1) + +filter(filterShapes, Tup(3, false)) +//│ = Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false) + +filter(filterShapes, Tup(4, true)) +//│ = Arr([Dyn()], true) + +assert(filter(filterShapes, Tup(0, false)).isEmpty()) + +open Block sop(Ctx.empty, ValueLit(42)) //│ = Lit(42) From 45fa0db7790b8ecf7318dc961c11534834730edd Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 13 Jan 2026 23:24:46 +0800 Subject: [PATCH 248/654] fix unary and more tests --- .../src/test/mlscript-compile/ShapeSet.mls | 4 +- .../test/mlscript/block-staging/ShapeProp.mls | 92 ++++--------------- 2 files changed, 19 insertions(+), 77 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index e5044f30a4..56e6b5a8e6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -163,7 +163,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is let genName = sym.name + "_gen" if defs.get(Symbol(genName)) is Some(FunDefn(genSym, genParams, genBody, _)) then let genCtx = ctx.nest - // only deal with non-curried version for now + // need to deal with curried version too if genParams.length > 0 then genParams.0.forEach((p, i) => genCtx.add(ValueRef(p), mkLit(argShapes.(i))) @@ -219,7 +219,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is else if unaryOps.includes(name) and args.length == 1 then let v1 = let s = sop(ctx, args.0.value) - if s.values() is [Lit(l)] then Some(l) else None + if s.values() is [Shape.Lit(l)] then Some(l) else None if v1 is Some(l1) then let res = if name == "!" then not l1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index b1cd24ddcb..8a4f41a9e0 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -143,98 +143,39 @@ sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) //│ ) fun testBinOp(op, v1, v2) = - let args = [Arg(None, v1), Arg(None, v2)] + let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] let c = Call(ValueRef(Symbol(op)), args) sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit -:expect ValueLit(12) +:expect 12 testBinOp("+", 10, 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:163) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:684:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:85:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:428:34) -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:659:37) -//│ at testBinOp (REPL107:1:593) -//│ at REPL110:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:212) -//│ ═══[RUNTIME ERROR] Expected: 'ValueLit(12)', got: 'undefined' - -:expect ValueLit(true) +//│ = 12 + +:expect true testBinOp("==", 10, 10) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:163) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:684:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:85:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:428:34) -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:659:37) -//│ at testBinOp (REPL107:1:593) -//│ at REPL113:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:212) -//│ ═══[RUNTIME ERROR] Expected: 'ValueLit(true)', got: 'undefined' - -:expect ValueLit(false) +//│ = true + +:expect false testBinOp("===", 10, "10") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:163) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:684:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:85:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:428:34) -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:659:37) -//│ at testBinOp (REPL107:1:593) -//│ at REPL116:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:212) -//│ ═══[RUNTIME ERROR] Expected: 'ValueLit(false)', got: 'undefined' - -:expect ValueLit(false) +//│ = false + +:expect false testBinOp("&&", true, false) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:163) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:684:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:85:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:428:34) -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:659:37) -//│ at testBinOp (REPL107:1:593) -//│ at REPL119:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:212) -//│ ═══[RUNTIME ERROR] Expected: 'ValueLit(false)', got: 'undefined' +//│ = false fun testUnaryOp(op, v) = let args = [Arg(None, ValueLit(v))] let c = Call(ValueRef(Symbol(op)), args) - sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0 + sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit testUnaryOp("-", 10) -//│ = Call(ValueRef(Symbol("-")), [Arg(None, ValueLit(10))]) +//│ = -10 testUnaryOp("!", true) -//│ = Call(ValueRef(Symbol("!")), [Arg(None, ValueLit(true))]) +//│ = false +// foo(x) = x + 1 let fooSym = Symbol("foo") let fooGenSym = Symbol("foo_gen") let fooImplSym = Symbol("foo_impl") @@ -296,6 +237,7 @@ sor(defs, Ctx.empty, Cache.empty, callFoo) //│ x = Symbol("x") +// FIXME let plusSym = Symbol("+") let plus = ValueRef(plusSym) let args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] From f7ecb6e064b775c9a6c4e41da99f36730bb3ace8 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 14 Jan 2026 00:46:04 +0800 Subject: [PATCH 249/654] fix a typo --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 56e6b5a8e6..9ef63db4a3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -157,7 +157,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is let argShapes = args.map(a => sop(ctx, a.value)) let shapeStr = argShapes.map(s => s.toString()).join("_") let implSym = Symbol(sym.name + "_" + shapeStr) - if defs.get(implSym) is Some(_) then + if cache.get(implSym) is Some(_) then [Call(ValueRef(implSym), args), mkDyn(), cache] // TODO: defctx need to store the shape as well else let genName = sym.name + "_gen" From 5cb5ee7d430a6f71941ae665b1248990da56fa4f Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 14 Jan 2026 01:12:04 +0800 Subject: [PATCH 250/654] slight cleanup --- .../src/test/mlscript-compile/ShapeSet.mls | 11 ++- .../test/mlscript/block-staging/ShapeProp.mls | 68 ++----------------- 2 files changed, 9 insertions(+), 70 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 9ef63db4a3..6753a1da99 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -5,7 +5,8 @@ import "./Shape.mls" import "./CachedHash.mls" open Predef -open Block { ClassSymbol } +open Block +open Option type ShapeSet = ShapeSet.ShapeSet @@ -85,8 +86,6 @@ fun static(s: ShapeSet) = 1 then Shape.static(v.0) else false -open Block -open Option fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = let rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) @@ -163,7 +162,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is let genName = sym.name + "_gen" if defs.get(Symbol(genName)) is Some(FunDefn(genSym, genParams, genBody, _)) then let genCtx = ctx.nest - // need to deal with curried version too + // TODO: need to deal with curried version too if genParams.length > 0 then genParams.0.forEach((p, i) => genCtx.add(ValueRef(p), mkLit(argShapes.(i))) @@ -181,7 +180,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is let s = sop(ctx, args.0.value) if s.values().length == 1 then if s.values().0 is - Shape.Lit(l) then Some(l) + Lit(l) then Some(l) else None else @@ -190,7 +189,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is let s = sop(ctx, args.1.value) if s.values().length == 1 then if s.values().0 is - Shape.Lit(l) then Some(l) + Lit(l) then Some(l) else None else diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 8a4f41a9e0..d0830cad9a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -46,7 +46,7 @@ sel(lift(Arr([Dyn(), Lit(1), a], false)), mkLit(1)) let x = liftMany([Lit(1), Lit(2)]) let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) -union(x, y) +union(x, y) //│ = Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1),Lit(2) //│ x = Lit(1),Lit(2) //│ y = Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1) @@ -157,7 +157,7 @@ testBinOp("==", 10, 10) //│ = true :expect false -testBinOp("===", 10, "10") +testBinOp("===", 10, "10") //│ = false :expect false @@ -169,74 +169,14 @@ fun testUnaryOp(op, v) = let c = Call(ValueRef(Symbol(op)), args) sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit +:expect -10 testUnaryOp("-", 10) //│ = -10 +:expect false testUnaryOp("!", true) //│ = false -// foo(x) = x + 1 -let fooSym = Symbol("foo") -let fooGenSym = Symbol("foo_gen") -let fooImplSym = Symbol("foo_impl") -let x = Symbol("x") -let sx = Symbol("sx") -let defs = DefCtx.empty -defs.add(fooSym, FunDefn(fooSym, [[x]], End(), true)) -defs.add(fooGenSym, FunDefn(fooGenSym, [[sx]], Return(Call(ValueRef(fooImplSym), [Arg(None, ValueRef(x))]), false), false)) -defs.add(fooImplSym, FunDefn(fooImplSym, [[x]], Return(ValueLit(42), false), false)) -let args = [Arg(None, ValueLit(100))] -let callFoo = Call(ValueRef(fooSym), args) -sor(defs, Ctx.empty, Cache.empty, callFoo) -//│ = [ -//│ Call(ValueRef(Symbol("foo_Lit(100)")), [Arg(None, ValueLit(100))]), -//│ Dyn(), -//│ Cache(Map(0) {}) -//│ ] -//│ args = [Arg(None, ValueLit(100))] -//│ callFoo = Call(ValueRef(Symbol("foo")), [Arg(None, ValueLit(100))]) -//│ defs = DefCtx( -//│ Map(4) { -//│ "foo" => FunDefn(Symbol("foo"), [[Symbol("x")]], End(), true), -//│ "foo_gen" => FunDefn( -//│ Symbol("foo_gen"), -//│ [[Symbol("sx")]], -//│ Return( -//│ Call( -//│ ValueRef(Symbol("foo_impl")), -//│ [Arg(None, ValueRef(Symbol("x")))] -//│ ), -//│ false -//│ ), -//│ false -//│ ), -//│ "foo_impl" => FunDefn( -//│ Symbol("foo_impl"), -//│ [[Symbol("x")]], -//│ Return(ValueLit(42), false), -//│ false -//│ ), -//│ "foo_Lit(100)" => FunDefn( -//│ Symbol("foo_Lit(100)"), -//│ [[Symbol("x")]], -//│ Return( -//│ Call( -//│ ValueRef(Symbol("foo_impl")), -//│ [Arg(None, ValueRef(Symbol("x")))] -//│ ), -//│ false -//│ ), -//│ false -//│ ) -//│ } -//│ ) -//│ fooGenSym = Symbol("foo_gen") -//│ fooImplSym = Symbol("foo_impl") -//│ fooSym = Symbol("foo") -//│ sx = Symbol("sx") -//│ x = Symbol("x") - - // FIXME let plusSym = Symbol("+") let plus = ValueRef(plusSym) From f78e3dc126c8de6161cf14990fae9aaced39ea72 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 14 Jan 2026 10:34:56 +0800 Subject: [PATCH 251/654] clean logic and remove a wrong test --- .../src/test/mlscript-compile/ShapeSet.mls | 107 ++++++++++-------- .../test/mlscript/block-staging/ShapeProp.mls | 61 +--------- 2 files changed, 58 insertions(+), 110 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 6753a1da99..3e1229078e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -144,25 +144,23 @@ val unaryOps = ["-", "+", "!"] fun sor(defs, ctx, cache, r: Result) = if r is Path then [r, sop(ctx, r), cache] - // cls is a Path, but we want the shape class to be a ClassSymbol, maybe widen it for shape Instantiate(cls, args) then - let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("?") + let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("Instantiate with non-ClassSymbol") [r, mkClass(sym, args.map(a => sop(ctx, a.value))), cache] Tuple(elems) then [r, mkArr(elems.map(a => sop(ctx, a.value)), false), cache] Call(f, args) then + let argShapes = args.map(a => sop(ctx, a.value)) let def = if f is ValueRef(s) then defs.get(s) else None if def is Some(FunDefn(sym, params, body, true)) then - let argShapes = args.map(a => sop(ctx, a.value)) let shapeStr = argShapes.map(s => s.toString()).join("_") let implSym = Symbol(sym.name + "_" + shapeStr) if cache.get(implSym) is Some(_) then - [Call(ValueRef(implSym), args), mkDyn(), cache] // TODO: defctx need to store the shape as well + [Call(ValueRef(implSym), args), mkDyn(), cache] else let genName = sym.name + "_gen" if defs.get(Symbol(genName)) is Some(FunDefn(genSym, genParams, genBody, _)) then let genCtx = ctx.nest - // TODO: need to deal with curried version too if genParams.length > 0 then genParams.0.forEach((p, i) => genCtx.add(ValueRef(p), mkLit(argShapes.(i))) @@ -172,65 +170,74 @@ fun sor(defs, ctx, cache, r: Result) = if r is [Call(ValueRef(implSym), args), mkDyn(), cache] else [r, mkDyn(), cache] else [r, mkDyn(), cache] + // Some(FunDefn(sym, params, body, false)) then + // if argShapes.forall(static) then + // let staticCtx = ctx.nest + // if params.length > 0 then + // params.0.forEach((p, i) => + // staticCtx.add(ValueRef(p), argShapes.(i)) + // ) + // if prop(defs, staticCtx, cache, body) is [Return(res, _), resShape] then + // [res, resShape, cache] + // else [r, mkDyn(), cache] + // else [r, mkDyn(), cache] None then if f is ValueRef(s) then - let name = s.name - if binaryOps.includes(name) and args.length == 2 then - let v1 = - let s = sop(ctx, args.0.value) - if s.values().length == 1 then - if s.values().0 is - Lit(l) then Some(l) - else - None - else - None - let v2 = - let s = sop(ctx, args.1.value) - if s.values().length == 1 then - if s.values().0 is - Lit(l) then Some(l) - else - None - else - None - if v1 is Some(l1) and v2 is Some(l2) then + if unaryOps.includes(s.name) and args.length == 1 then + let v1 = + if argShapes.length > 0 then + let s = argShapes.(0) + let vs = s.values() + if vs.length == 1 and vs.(0) is Shape.Lit(v) then Some(v) else None + else None + + if v1 is Some(l1) then let res = - if name == "+" then l1 + l2 - else if name == "-" then l1 - l2 - else if name == "*" then l1 * l2 - else if name == "/" then l1 / l2 - else if name == "%" then l1 % l2 - else if name == "==" then l1 == l2 - else if name == "!=" then l1 != l2 - else if name == "<" then l1 < l2 - else if name == "<=" then l1 <= l2 - else if name == ">" then l1 > l2 - else if name == ">=" then l1 >= l2 - else if name == "===" then l1 === l2 - else if name == "!==" then l1 !== l2 - else if name == "&&" then l1 && l2 - else if name == "||" then l1 || l2 + if s.name == "!" then not l1 + else if s.name == "-" then -l1 + else if s.name == "+" then +l1 else undefined if res === undefined then [r, mkDyn(), cache] else [ValueLit(res), mkLit(res), cache] else [r, mkDyn(), cache] - else if unaryOps.includes(name) and args.length == 1 then - let v1 = - let s = sop(ctx, args.0.value) - if s.values() is [Shape.Lit(l)] then Some(l) else None - if v1 is Some(l1) then + else if binaryOps.includes(s.name) and args.length == 2 then + let v1 = + if argShapes.length > 0 then + let s = argShapes.(0) + let vs = s.values() + if vs.length == 1 and vs.(0) is Shape.Lit(v) then Some(v) else None + else None + let v2 = + if argShapes.length > 1 then + let s = argShapes.(1) + let vs = s.values() + if vs.length == 1 and vs.(0) is Shape.Lit(v) then Some(v) else None + else None + + if v1 is Some(l1) and v2 is Some(l2) then let res = - if name == "!" then not l1 - else if name == "-" then -l1 - else if name == "+" then +l1 + if s.name == "+" then l1 + l2 + else if s.name == "-" then l1 - l2 + else if s.name == "*" then l1 * l2 + else if s.name == "/" then l1 / l2 + else if s.name == "%" then l1 % l2 + else if s.name == "==" then l1 == l2 + else if s.name == "!=" then l1 != l2 + else if s.name == "<" then l1 < l2 + else if s.name == "<=" then l1 <= l2 + else if s.name == ">" then l1 > l2 + else if s.name == ">=" then l1 >= l2 + else if s.name == "===" then l1 === l2 + else if s.name == "!==" then l1 !== l2 + else if s.name == "&&" then l1 && l2 + else if s.name == "||" then l1 || l2 else undefined if res === undefined then [r, mkDyn(), cache] else [ValueLit(res), mkLit(res), cache] else [r, mkDyn(), cache] else [r, mkDyn(), cache] else [r, mkDyn(), cache] - else [r, mkDyn(), cache] // add shape + else [r, mkDyn(), cache] // Call(f, args) and // let k = [f, args.map(sop(ctx, _))] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index d0830cad9a..f10e749704 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -177,63 +177,4 @@ testUnaryOp("-", 10) testUnaryOp("!", true) //│ = false -// FIXME -let plusSym = Symbol("+") -let plus = ValueRef(plusSym) -let args = [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] -let callPlus = Call(plus, args) -let args = [Arg(None, ValueRef(callPlus)), Arg(None, ValueLit(3))] -let callPlus2 = Call(plus, args) -sor(DefCtx.empty, Ctx.empty, Cache.empty, callPlus2) -//│ = [ -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [ -//│ Arg( -//│ None, -//│ ValueRef( -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] -//│ ) -//│ ) -//│ ), -//│ Arg(None, ValueLit(3)) -//│ ] -//│ ), -//│ Dyn(), -//│ Cache(Map(0) {}) -//│ ] -//│ args = [ -//│ Arg( -//│ None, -//│ ValueRef( -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] -//│ ) -//│ ) -//│ ), -//│ Arg(None, ValueLit(3)) -//│ ] -//│ callPlus = Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] -//│ ) -//│ callPlus2 = Call( -//│ ValueRef(Symbol("+")), -//│ [ -//│ Arg( -//│ None, -//│ ValueRef( -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))] -//│ ) -//│ ) -//│ ), -//│ Arg(None, ValueLit(3)) -//│ ] -//│ ) -//│ plus = ValueRef(Symbol("+")) -//│ plusSym = Symbol("+") + From 396a7e5a3dab7bda93f84598fa965e14d5876279 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 14 Jan 2026 10:52:14 +0800 Subject: [PATCH 252/654] add type to Map --- .../src/test/mlscript-compile/ShapeSet.mls | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 3e1229078e..f00e37de77 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -5,14 +5,14 @@ import "./Shape.mls" import "./CachedHash.mls" open Predef -open Block +open Block {ClassSymbol} open Option type ShapeSet = ShapeSet.ShapeSet module ShapeSet with... -class ShapeSet(val underlying: Map) extends CachedHash with +class ShapeSet(val underlying: Map[String, Shape]) extends CachedHash with fun keys() = [...underlying.keys()].toSorted() fun values() = underlying.values().toArray() @@ -87,13 +87,13 @@ fun static(s: ShapeSet) = else false -fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = - let rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) - [flat(rem.map(_.0)), rem.map(_.1)] - +// fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = +// let rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) +// [flat(rem.map(_.0)), rem.map(_.1)] +open Block // TODO: refactor with hash map? -class Ctx(maps: Map) with +class Ctx(maps: Map[String, ShapeSet]) with fun get(path) = let ps = showPath(path) if maps.has(ps) then Some(maps.get(ps)) @@ -107,7 +107,7 @@ module Ctx with fun empty = Ctx(new Map()) -class DefCtx(val defs: Map) with +class DefCtx(val defs: Map[String, Block]) with fun get(sym) = if defs.has(sym.name) then Some(defs.get(sym.name)) else None @@ -117,7 +117,7 @@ class DefCtx(val defs: Map) with module DefCtx with fun empty = DefCtx(new Map()) -class Cache(val underlying: Map) with +class Cache(val underlying: Map[String, [Block, Shape]]) with fun key(f, args) = showPath(f) + "(" + args.map(s => s.toString()).join(",") + ")" fun get(f, args) = @@ -166,7 +166,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is genCtx.add(ValueRef(p), mkLit(argShapes.(i))) ) if prop(defs, genCtx, cache, genBody) is [resBlock, resShape] then - defs.add(implSym, FunDefn(implSym, params, resBlock, false)) + cache.add(implSym, [FunDefn(implSym, params, resBlock, false), resShape]) [Call(ValueRef(implSym), args), mkDyn(), cache] else [r, mkDyn(), cache] else [r, mkDyn(), cache] From 165188f6039f416ae0638628e19be763147dc4d0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 14 Jan 2026 01:30:25 +0800 Subject: [PATCH 253/654] clean up built-in function evaluation --- .../src/test/mlscript-compile/ShapeSet.mls | 91 ++++++------------- .../test/mlscript/block-staging/ShapeProp.mls | 16 +--- 2 files changed, 33 insertions(+), 74 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 3e1229078e..ecb72e6f9b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -12,7 +12,7 @@ type ShapeSet = ShapeSet.ShapeSet module ShapeSet with... -class ShapeSet(val underlying: Map) extends CachedHash with +class ShapeSet(val underlying: Map[Any, Any]) extends CachedHash with fun keys() = [...underlying.keys()].toSorted() fun values() = underlying.values().toArray() @@ -93,7 +93,7 @@ fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = // TODO: refactor with hash map? -class Ctx(maps: Map) with +class Ctx(maps: Map[Any, Any]) with fun get(path) = let ps = showPath(path) if maps.has(ps) then Some(maps.get(ps)) @@ -107,7 +107,7 @@ module Ctx with fun empty = Ctx(new Map()) -class DefCtx(val defs: Map) with +class DefCtx(val defs: Map[Any, Any]) with fun get(sym) = if defs.has(sym.name) then Some(defs.get(sym.name)) else None @@ -117,7 +117,7 @@ class DefCtx(val defs: Map) with module DefCtx with fun empty = DefCtx(new Map()) -class Cache(val underlying: Map) with +class Cache(val underlying: Map[Any, Any]) with fun key(f, args) = showPath(f) + "(" + args.map(s => s.toString()).join(",") + ")" fun get(f, args) = @@ -139,9 +139,6 @@ fun sop(ctx, p: Path): ShapeSet = ValueLit(lit) then mkLit(lit) ValueRef(l) then mkDyn() -val binaryOps = ["+", "-", "*", "/", "%", "==", "!=", "<", "<=", ">", ">=", "===", "!==", "&&", "||"] -val unaryOps = ["-", "+", "!"] - fun sor(defs, ctx, cache, r: Result) = if r is Path then [r, sop(ctx, r), cache] Instantiate(cls, args) then @@ -151,6 +148,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is Call(f, args) then let argShapes = args.map(a => sop(ctx, a.value)) let def = if f is ValueRef(s) then defs.get(s) else None + fun lit(l) = [ValueLit(l), mkLit(l), cache] if def is Some(FunDefn(sym, params, body, true)) then let shapeStr = argShapes.map(s => s.toString()).join("_") @@ -181,62 +179,29 @@ fun sor(defs, ctx, cache, r: Result) = if r is // [res, resShape, cache] // else [r, mkDyn(), cache] // else [r, mkDyn(), cache] - None then - if f is ValueRef(s) then - if unaryOps.includes(s.name) and args.length == 1 then - let v1 = - if argShapes.length > 0 then - let s = argShapes.(0) - let vs = s.values() - if vs.length == 1 and vs.(0) is Shape.Lit(v) then Some(v) else None - else None - - if v1 is Some(l1) then - let res = - if s.name == "!" then not l1 - else if s.name == "-" then -l1 - else if s.name == "+" then +l1 - else undefined - if res === undefined then [r, mkDyn(), cache] - else [ValueLit(res), mkLit(res), cache] - else [r, mkDyn(), cache] - else if binaryOps.includes(s.name) and args.length == 2 then - let v1 = - if argShapes.length > 0 then - let s = argShapes.(0) - let vs = s.values() - if vs.length == 1 and vs.(0) is Shape.Lit(v) then Some(v) else None - else None - let v2 = - if argShapes.length > 1 then - let s = argShapes.(1) - let vs = s.values() - if vs.length == 1 and vs.(0) is Shape.Lit(v) then Some(v) else None - else None - - if v1 is Some(l1) and v2 is Some(l2) then - let res = - if s.name == "+" then l1 + l2 - else if s.name == "-" then l1 - l2 - else if s.name == "*" then l1 * l2 - else if s.name == "/" then l1 / l2 - else if s.name == "%" then l1 % l2 - else if s.name == "==" then l1 == l2 - else if s.name == "!=" then l1 != l2 - else if s.name == "<" then l1 < l2 - else if s.name == "<=" then l1 <= l2 - else if s.name == ">" then l1 > l2 - else if s.name == ">=" then l1 >= l2 - else if s.name == "===" then l1 === l2 - else if s.name == "!==" then l1 !== l2 - else if s.name == "&&" then l1 && l2 - else if s.name == "||" then l1 || l2 - else undefined - if res === undefined then [r, mkDyn(), cache] - else [ValueLit(res), mkLit(res), cache] - else [r, mkDyn(), cache] - else [r, mkDyn(), cache] - else [r, mkDyn(), cache] + None and f is ValueRef(s) and + args is + let name = s.name + [x] and sop(ctx, x.value).values() is [Shape.Lit(l)] and name is + "!" then lit(not l) + "-" then lit(-l) + "+" then lit(+l) + [x, y] and sop(ctx, x.value).values() is [Shape.Lit(l1)] and sop(ctx, y.value).values() is [Shape.Lit(l2)] and name is + "+" then lit(l1 + l2) + "-" then lit(l1 - l2) + "*" then lit(l1 * l2) + "/" then lit(l1 / l2) + "%" then lit(l1 % l2) + "==" then lit(l1 == l2) + "!=" then lit(l1 != l2) + "<" then lit(l1 < l2) + "<=" then lit(l1 <= l2) + ">" then lit(l1 > l2) + ">=" then lit(l1 >= l2) + "===" then lit(l1 === l2) + "!==" then lit(l1 !== l2) + "&&" then lit(l1 && l2) + "||" then lit(l1 || l2) else [r, mkDyn(), cache] // Call(f, args) and diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index f10e749704..24d2fa12e5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -57,7 +57,7 @@ filter(mkDyn(), Block.Lit("a")) //│ = Lit("a") filter(mkDyn(), Block.Tup(2, true)) -//│ = Dyn() +//│ = Arr([Dyn(), Dyn()], true) let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) //│ filterShapes = Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null) @@ -65,29 +65,23 @@ let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), // wildcard is represented as dflt in Match filter(filterShapes, Block.Lit(1)) -//│ = Arr([Dyn()], true),Lit(1) +//│ = Lit(1) assert(filter(filterShapes, Block.Lit(2)).isEmpty()) -//│ // Standard Error: -//│ Assertion failed -//│ filter(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = Arr([Dyn()], true),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) +//│ = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) filter(filterShapes, Block.Cls(Symbol("Int"), undefined)) -//│ = Arr([Dyn()], true),Lit(1) +//│ = Lit(1) filter(filterShapes, Tup(3, false)) //│ = Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false) filter(filterShapes, Tup(4, true)) -//│ = Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null) +//│ = Arr([Dyn()], true) assert(filter(filterShapes, Tup(0, false)).isEmpty()) -//│ // Standard Error: -//│ Assertion failed -//│ open Block From dd413000faf3efb75504871adca897228575a143 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 14 Jan 2026 15:04:54 +0800 Subject: [PATCH 254/654] declare cache for staged modules --- .../scala/hkmc2/codegen/Instrumentation.scala | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 5b6c699d9b..a7b5cebaec 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -294,8 +294,23 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val (stagedMethods, debugPrintCode) = companion.methods .map(impl.transformFunDefn(sym, _)) .unzip + + // add cache for specialized functions in each staged module + val cacheSym = BlockMemberSymbol("cache", Nil, true) + val cacheTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("cache")) + // initialize cache for the module + def cacheDecl(rest: Block) = + val tmp = TempSymbol(N, "tmp") + val mapInit = Instantiate(mut = false, Select(Value.Ref(State.globalThisSymbol), Tree.Ident("Map"))(N), Nil) + Assign(tmp, mapInit, Define(ValDefn(cacheTsym, cacheSym, Value.Ref(tmp)), rest)) + + val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => End()) - val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) + val newCompanion = companion.copy( + methods = companion.methods ++ stagedMethods, + ctor = cacheDecl(newCtor), + publicFields = cacheSym -> cacheTsym :: companion.publicFields + ) val newModule = c.copy(sym = sym, companion = S(newCompanion)) // debug is printed after definition val debugBlock = debugPrintCode.foldRight(rest)(concat) From 91b024b8b2e0ea4025b086b63e592e87f694b392 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 14 Jan 2026 15:51:31 +0800 Subject: [PATCH 255/654] replace parameters of functions with its symbol instead of undefined --- .../scala/hkmc2/codegen/Instrumentation.scala | 18 ++++++++++++++---- .../test/mlscript/block-staging/Functions.mls | 4 ++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index a7b5cebaec..5ec4019e17 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -262,10 +262,20 @@ class InstrumentationImpl(using State): val sym = modSym.asPath.selSN(genSym.nme) // NOTE: this debug printing only works for top-level modules, nested modules don't work // TODO: remove it. only for test - val debug = blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => - // TODO: put correct parameters instead of undefined - f.params.map(ps => List.fill(ps.params.length)(undef)) - .foldRight((p: Path) => fnPrintCode(p)(End()))((args, cont) => call(_, args)(cont))(sym) + // maintain parameter names for debugging + val debug = + f.params.map(ps => + ps.params.map(p => + (k: Path => Block) => + blockCtor("Symbol", Ls(toValue(p.sym.nme))): sym => + blockCtor("ValueRef", Ls(sym))(k) + ).collectApply + ) + .foldRight((p: Path) => fnPrintCode(p)(End()))((argsCont, cont) => + path => + argsCont: args => + call(path, args)(cont) + )(sym) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) val args = f.params.flatMap(_.params).map(_.sym) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 37d277bf6f..7f0ce0dec4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -54,7 +54,7 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ > Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)) -//│ > Return(Lit(undefined), false) +//│ > Return(Ref(Symbol("z")), false) staged module OtherBlocks with fun scope() = @@ -68,7 +68,7 @@ staged module OtherBlocks with 3 then 0 else 0 //│ > Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))) -//│ > Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) // debug printing fails, collision with class name? :fixme From e394a95d018b1c3af6fc1f4048b2e5596f51aafd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 14 Jan 2026 16:18:16 +0800 Subject: [PATCH 256/654] collect calls to staged functions --- .../scala/hkmc2/codegen/Instrumentation.scala | 106 ++++++++++++------ .../test/mlscript/block-staging/DefCtx.mls | 96 ++++++++++++++++ 2 files changed, 167 insertions(+), 35 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 5ec4019e17..bb42ed742f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -4,7 +4,7 @@ package codegen import utils.* import hkmc2.Message.MessageContext -import scala.collection.mutable.HashMap +import scala.collection.mutable.{HashMap, HashSet} import scala.util.chaining._ import mlscript.utils.*, shorthands.* @@ -16,11 +16,26 @@ import syntax.{Literal, Tree} // it should be possible to cache some common constructions (End, Option) into the context // this avoids having to rebuild the same shapes everytime they are needed +case class Context(cache: HashMap[Path, Path], defs: HashMap[Path, (Path => Block) => Block]): + def getCache(p: Path): Option[Path] = cache.get(p) + def addCache(p: Path, v: Path): Context = Context(cache.clone() += (p -> v), defs) + def delCache(p: Path): Context = Context(cache.clone() -= p, defs) + // TODO: the paths for the definitions will be defined at the constructor of the module, is it possible to reference the value at the ctor? + def addDef(p: Path, d: (Path => Block) => Block): Context = Context(cache, defs.clone() += (p -> d)) + +extension [A, B](ls: Iterable[(A => B) => B]) + def collectApply(f: Ls[A] => B): B = + // defer applying k while prepending new elements to the list + ls.foldRight((_: Ls[A] => B)(Nil))((headCont, tailCont) => + k => + headCont: head => + tailCont: tail => + k(head :: tail) + )(f) // transform Block to Block IR so that it can be instrumented in mlscript class InstrumentationImpl(using State): type ArgWrappable = Path | Symbol - type Context = HashMap[Path, Path] def asArg(x: ArgWrappable): Arg = x match @@ -36,16 +51,6 @@ class InstrumentationImpl(using State): case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) - extension [A, B](ls: Ls[(A => B) => B]) - def collectApply(f: Ls[A] => B): B = - // defer applying k while prepending new elements to the list - ls.foldRight((_: Ls[A] => B)(Nil))((headCont, tailCont) => - k => - headCont: head => - tailCont: tail => - k(head :: tail) - )(f) - // helpers for constructing Block def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = @@ -111,10 +116,10 @@ class InstrumentationImpl(using State): def ruleBranches(x: Path, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (Path, Context) => Block): Block = def applyRuleBranch(cse: Case, block: Block)(f: Path => Context => Block)(ctx: Context): Block = transformCase(cse): cse => - transformBlock(block)(using ctx.clone() += p -> x): (y, ctx) => + transformBlock(block)(using ctx.addCache(p, x)): (y, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y), "branch"): cde => - f(cde)(ctx.clone() -= p) + f(cde)(ctx.delCache(p)) (arms.map(applyRuleBranch).collectApply(_: Ls[Path] => Context => Block)(summon)): arms => ctx => @@ -124,8 +129,8 @@ class InstrumentationImpl(using State): def dfltStaged(k: (Path, Context) => Block) = dflt match case S(dflt) => - transformBlock(dflt)(using ctx.clone() += p -> x): (dflt, ctx) => - optionSome(dflt)(k(_, ctx.clone() -= p)) + transformBlock(dflt)(using ctx.addCache(p, x)): (dflt, ctx) => + optionSome(dflt)(k(_, ctx.delCache(p))) case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => blockCtor("Match", Ls(x, arms, dflt, e), symName)(k(_, ctx)) @@ -134,7 +139,7 @@ class InstrumentationImpl(using State): def transformPath(p: Path)(using ctx: Context)(k: Path => Block): Block = // rulePath - ctx.get(p).map(k).getOrElse: + ctx.getCache(p).map(k).getOrElse: p match case Value.Ref(l, disamb) => transformSymbol(disamb.getOrElse(l)): sym => @@ -155,25 +160,38 @@ class InstrumentationImpl(using State): blockCtor("DynSelect", Ls(x, y, toValue(arrayIdx)), "dynsel")(k) case _ => ??? // not supported - def transformResult(r: Result)(using Context)(k: Path => Block): Block = + def transformResult(r: Result)(using ctx: Context)(k: (Path, Context) => Block): Block = r match - case p: Path => transformPath(p)(k) + case p: Path => transformPath(p)(k(_, ctx)) case Tuple(mut, elems) => assert(!mut, "mutable tuple not supported") transformArgs(elems): xs => tuple(xs.map(_._1)): codes => - blockCtor("Tuple", Ls(codes), "tup")(k) + blockCtor("Tuple", Ls(codes), "tup")(k(_, ctx)) case Instantiate(mut, cls, args) => assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => transformPath(cls): cls => tuple(xs.map(_._1)): codes => - blockCtor("Instantiate", Ls(cls, codes), "inst")(k) + blockCtor("Instantiate", Ls(cls, codes), "inst")(k(_, ctx)) case Call(fun, args) => - transformPath(fun): fun => + val isStagedFun = + fun match + case s: Select => s.symbol.exists({ + case t: TermSymbol => t.owner.exists({ + case sym: DefinitionSymbol[?] => + sym.defn.get.hasStagedModifier.isDefined + }) + case _ => false + }) + case _ => false + + val newCtx = if isStagedFun then ctx.addDef(fun, transformPath(fun)) else ctx + + transformPath(fun): stagedFun => transformArgs(args): args => tuple(args.map(_._1)): tup => - blockCtor("Call", Ls(fun, tup), "app")(k) + blockCtor("Call", Ls(stagedFun, tup), "app")(k(_, newCtx)) case _ => ??? // not supported def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = @@ -206,17 +224,26 @@ class InstrumentationImpl(using State): def transformBlock(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)((p, _) => k(p)) + // TODO: there is probably a better way to extract the function definitions... + def transformBlockWithDefs(b: Block)(using Context)(k: Path => Block): (Block, HashMap[Path, (Path => Block) => Block]) = + var defs = new HashMap[Path, (Path => Block) => Block]() + val block = transformBlock(b)((p, ctx) => + defs = ctx.defs + k(p) + ) + (block, defs) + def transformBlock(b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = b match case Return(res, implct) => - transformResult(res): x => + transformResult(res): (x, ctx) => blockCtor("Return", Ls(x, toValue(implct)), "return")(k(_, ctx)) case Assign(x, r, b) => - transformResult(r): y => + transformResult(r): (y, ctx) => transformSymbol(x): xSym => blockCtor("ValueRef", Ls(xSym)): xStaged => (Assign(x, xStaged, _)): - given Context = ctx.clone() += x.asPath -> xStaged + given Context = ctx.addCache(x.asPath, xStaged) transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) case Define(cls: ClsLikeDefn, rest) => @@ -257,7 +284,7 @@ class InstrumentationImpl(using State): // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead - def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, Block) = + def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, HashMap[Path, (Path => Block) => Block], Block) = val genSym = BlockMemberSymbol(f.sym.nme + "_gen", Nil, true) val sym = modSym.asPath.selSN(genSym.nme) // NOTE: this debug printing only works for top-level modules, nested modules don't work @@ -279,11 +306,11 @@ class InstrumentationImpl(using State): val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) val args = f.params.flatMap(_.params).map(_.sym) - val newBody = - given Context = HashMap(args.map(s => Value.Ref(s, N) -> Value.Ref(s, N))*) - transformBlock(f.body)(Return(_, false)) + val (newBody, defs) = + given Context = Context(HashMap(args.map(s => Value.Ref(s, N) -> Value.Ref(s, N))*), new HashMap()) + transformBlockWithDefs(f.body)(Return(_, false)) val newFun = f.copy(sym = genSym, dSym = dSym, body = newBody)(false) - (newFun, debug) + (newFun, defs, debug) // TODO: rename as InstrumentationTransformer? class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): @@ -301,9 +328,12 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case Define(c: ClsLikeDefn, rest) if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => val sym = c.sym.subst val companion = c.companion.get - val (stagedMethods, debugPrintCode) = companion.methods + val (stagedMethods, defsList, debugPrintCode) = companion.methods .map(impl.transformFunDefn(sym, _)) - .unzip + .unzip3 + + // used for staging classes inside modules + val (newCtor, defs) = impl.transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => End()) // add cache for specialized functions in each staged module val cacheSym = BlockMemberSymbol("cache", Nil, true) @@ -314,11 +344,17 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val mapInit = Instantiate(mut = false, Select(Value.Ref(State.globalThisSymbol), Tree.Ident("Map"))(N), Nil) Assign(tmp, mapInit, Define(ValDefn(cacheTsym, cacheSym, Value.Ref(tmp)), rest)) + val allDefs = defsList.fold(defs)((l, r) => l ++ r) + val defCtxSym = BlockMemberSymbol("defCtx", Nil, true) + val defCtxTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("defCtx")) + def defCtxDecl(rest: Block) = + allDefs.values.collectApply: defs => + impl.tuple(defs): defCtxInit => + Define(ValDefn(defCtxTsym, defCtxSym, defCtxInit), rest) - val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => End()) val newCompanion = companion.copy( methods = companion.methods ++ stagedMethods, - ctor = cacheDecl(newCtor), + ctor = defCtxDecl(cacheDecl(newCtor)), publicFields = cacheSym -> cacheTsym :: companion.publicFields ) val newModule = c.copy(sym = sym, companion = S(newCompanion)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls new file mode 100644 index 0000000000..b61aa86e17 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -0,0 +1,96 @@ +:js +:staging + +staged module A with + fun f() = 1 + fun g(x) = x +//│ > Return(Lit(1), false) +//│ > Return(Ref(Symbol("x")), false) + +module C with + fun h() = 0 + +fun i() = 2 + +// :lot +:sjs +staged module B with + fun a() = A.f() + fun b() = C.h() + fun c() = i() +//│ JS (unsanitized): +//│ let B1; +//│ let tmp6, tmp7, tmp8, tmp9, tmp10, tmp11; +//│ (class B { +//│ static { +//│ B1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static { +//│ let end, tmp12, sym, var1, sym1, sel, tmp13; +//│ sym = globalThis.Object.freeze(new Block.Symbol("A")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("f")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp13 = globalThis.Object.freeze([ +//│ sel +//│ ]); +//│ this.defCtx = tmp13; +//│ tmp12 = globalThis.Object.freeze(new globalThis.Map()); +//│ this.cache = tmp12; +//│ end = globalThis.Object.freeze(new Block.End()); +//│ } +//│ static a() { +//│ return A1.f() +//│ } +//│ static b() { +//│ return C1.h() +//│ } +//│ static c() { +//│ return i() +//│ } +//│ static a_gen() { +//│ let sym, var1, sym1, sel, tmp12, app, return1; +//│ sym = globalThis.Object.freeze(new Block.Symbol("A")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("f")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp12 = globalThis.Object.freeze([]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp12)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ return return1 +//│ } +//│ static b_gen() { +//│ let sym, var1, sym1, sel, tmp12, app, return1; +//│ sym = globalThis.Object.freeze(new Block.Symbol("C")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("h")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp12 = globalThis.Object.freeze([]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp12)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ return return1 +//│ } +//│ static c_gen() { +//│ let sym, var1, tmp12, app, return1; +//│ sym = globalThis.Object.freeze(new Block.Symbol("i")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ tmp12 = globalThis.Object.freeze([]); +//│ app = globalThis.Object.freeze(new Block.Call(var1, tmp12)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ return return1 +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "B"]; +//│ }); +//│ tmp6 = B1.a_gen(); +//│ tmp7 = Block.printCode(tmp6); +//│ tmp8 = B1.b_gen(); +//│ tmp9 = Block.printCode(tmp8); +//│ tmp10 = B1.c_gen(); +//│ tmp11 = Block.printCode(tmp10); +//│ > Return(Call(Select(Ref(Symbol("A")), Symbol("f")), []), false) +//│ > Return(Call(Select(Ref(Symbol("C")), Symbol("h")), []), false) +//│ > Return(Call(Ref(Symbol("i")), []), false) From 22bc685cd12ef699a3be864d580f5c838abffa54 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Mon, 19 Jan 2026 15:44:02 +0800 Subject: [PATCH 257/654] Some fix on context --- .../shared/src/test/mlscript-compile/ShapeMap.mls | 6 ++++-- .../shared/src/test/mlscript-compile/ShapeSet.mls | 14 ++++++++++---- .../src/test/mlscript/block-staging/ShapeProp.mls | 4 ++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls index 685980fc79..ee0e89ea0a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls @@ -1,6 +1,7 @@ import "./Option.mls" import "./ShapeSet.mls" import "./StrOps.mls" +import "./Block.mls" open Option { Some, None } open ShapeSet @@ -12,7 +13,8 @@ module ShapeMap with... fun hash(s: ShapeSet) = s.keys().join(", ") -class ShapeMap(val underlying: Map) with +// TODO: do we need it? +class ShapeMap(val underlying: Map[ShapeSet, Block.Block]) with fun add(s: ShapeSet, code) = underlying.set(s.hash(), code) fun get(s: ShapeSet) = @@ -21,7 +23,7 @@ class ShapeMap(val underlying: Map) with is value then Some of value // TODO: improve it -class Cache(underlying: Map, names: Map) with +class Cache(underlying: Map[String, [String, ShapeSet, Block.Block]], names: Map[String, Int]) with fun add(fname, argShape, codefrag, resShape) = let key = fname ~ argShape.hash() let newName = freshName(fname) // TODO: hygiene diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index d344d996de..1d4efb82e8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -93,18 +93,24 @@ fun static(s: ShapeSet) = open Block // TODO: refactor with hash map? -class Ctx(maps: Map[String, ShapeSet]) with +class Ctx(maps: Map[String, ShapeSet], parent: Option[Ctx]) with fun get(path) = let ps = showPath(path) if maps.has(ps) then Some(maps.get(ps)) + else if parent is Some(ctx) then ctx.get(path) else None - fun nest = Ctx(new Map(maps)) + fun nest = Ctx(new Map(), Some of this) fun add(path, ss) = let ps = showPath(path) maps.set(ps, ss) this + fun update(path, ss) = + let ps = showPath(path) + if maps.has(ps) then do maps.set(ps, ss) + else if parent is Some(ctx) then do ctx.update(path, ss) + this module Ctx with - fun empty = Ctx(new Map()) + fun empty = Ctx(new Map(), None) class DefCtx(val defs: Map[String, Block]) with @@ -224,7 +230,7 @@ fun prop(defs, ctx, cache, b: Block) = if b is [Return(r1, implct), s] // TODO: let syntax, presumably for Scoped Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s, _] and - prop(defs, ctx.add(x, union(ctx.get(x), s)), cache, b) is [b1, s1] then + prop(defs, ctx.update(x, union(ctx.get(x), s)), cache, b) is [b1, s1] then [Assign(x, r1, b1), s1] Match(p, arms, dflt, rest) then let s = sop(ctx, p) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 24d2fa12e5..a3f26e63ae 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -100,7 +100,7 @@ ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ = Lit("pass") //│ C = ClassSymbol("C", Some(["a"])) -//│ ctx = Ctx(_) +//│ ctx = Ctx(_, _) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -115,7 +115,7 @@ sor(defCtx, ctx, cache, tup) //│ Cache(Map(0) {}) //│ ] //│ cache = Cache(Map(0) {}) -//│ ctx = Ctx(_) +//│ ctx = Ctx(_, _) //│ defCtx = DefCtx(Map(0) {}) //│ tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) From 011f35e67823a2c98760487872221153c6a7311f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 21 Jan 2026 16:42:47 +0800 Subject: [PATCH 258/654] fixup printing --- .../src/test/mlscript-compile/Block.mls | 65 +++++------ .../test/mlscript/block-staging/Functions.mls | 109 ++++++++++++++---- 2 files changed, 120 insertions(+), 54 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index a95543a408..472d726768 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -63,7 +63,6 @@ class Path extends Result with class Defn with constructor - ValDefn(val sym: Symbol, val rhs: Path) ClsLikeDefn(val sym: ClassSymbol, val companion: Opt[ClsLikeBody]) // companion unused FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block, val stage: Bool) @@ -91,6 +90,8 @@ fun concat(b1: Block, b2: Block) = if b1 is Break then ??? // unreachable End() then b2 +fun indent(s: Str) = s.replaceAll("\n", "\n ") + fun showBool(b: Bool) = if b then "true" else "false" fun showLiteral(l: Literal) = @@ -100,29 +101,18 @@ fun showLiteral(l: Literal) = String then "\"" + l.toString() + "\"" else l.toString() -fun showSymbol(s: Symbol) = - // console.log("printing " + s) - if s is - ClassSymbol(name, args) then - "ClassSymbol(" + "\"" + name + "\"" + - if args - is Some(args) then ":[" + args.map(showSymbol).join(", ") + "]" - is None then "" - + ")" - _ then "Symbol(" + "\"" + s.name + "\"" + ")" +fun showSymbol(s: Symbol) = if s.name is + "runtime" then "Runtime" + else s.name.replaceAll("$", "_") fun showIdent(i: Ident) = showSymbol(i) fun showPath(p: Path): Str = if p is - Select(qual, name) then - "Select(" + showPath(qual) + ", " + showIdent(name) + ")" - DynSelect(qual, fld, arrayIdx) then - "DynSelect(" + showPath(qual) + ", " + showPath(fld) + ", " + showBool(arrayIdx) + ")" - ValueRef(l) then - "Ref(" + showSymbol(l) + ")" - ValueLit(lit) then - "Lit(" + showLiteral(lit) + ")" + Select(qual, name) then showPath(qual) + "." + showIdent(name) + DynSelect(qual, fld, arrayIdx) then showPath(qual) + ".(" + showPath(fld) + ")" + ValueRef(l) then showSymbol(l) + ValueLit(lit) then showLiteral(lit) fun showArg(arg: Arg) = if arg.spread is @@ -132,11 +122,14 @@ fun showArg(arg: Arg) = + showPath(arg.value) fun showArgs(args: Array[Arg]) = - "[" + args.map(showArg).join(", ") + "]" + args.map(showArg).join(", ") fun showResult(r: Result): Str = if r is Path then showPath(r) + Call(_fun, args) then showPath(_fun) + "(" + showArgs(args) + ")" + Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" + Tuple(elems) then "[" + showArgs(elems) + "]" _ then "" // Case (match arm patterns) @@ -146,11 +139,12 @@ fun showCase(c) = Cls(cls, p) then showSymbol(cls) + if isPrimitiveType(cls) then "" else showParamsOpt(cls.paramsOpt) - Tup(len, _) then "Tuple" + Tup(len, inf) then "[" + Array(len).fill("_").join(", ") + + (if inf then ", ..." else "") + "]" _ then "" fun showArm(a) = - showCase(a.cse) + " then " + showBlock(a.body) + showCase(a.cse) + " then" + indent("\n" + showBlock(a.body)) fun showParams(p: ParamList) = "(" + p.map(showSymbol).join(", ") + ")" @@ -165,8 +159,6 @@ fun showParamList(ps: ParamList) = fun showDefn(d: Defn): Str = if d is - ValDefn(sym, rhs) then - "let " + showSymbol(sym) + " = " + showPath(rhs) FunDefn(sym, p, body, _) then "fun " + showSymbol(sym) + showParams(p) + " =" + (if body is Return(_, _) then " " else "\n ") + showBlock(body) @@ -176,22 +168,29 @@ fun showDefn(d: Defn): Str = fun showBlock(b) = if b is Assign(lhs, rhs, rest) then - "let " + showSymbol(lhs) + " = " + showResult(rhs) + "\n" + showBlock(rest) + showSymbol(lhs) + " = " + showResult(rhs) + "\n" + showBlock(rest) Define(d, rest) then - showDefn(d) + "\n" + showBlock(rest) + showDefn(d) + showRestBlock(rest) Return(res, _) then - showResult(res) + "return:" + showResult(res) // debug, to make diff tests clearer for now Match(scrut, arms, dflt, rest) then - "if " + showPath(scrut) + " is\n" - + arms.map(showArm).join("\n") + - (if dflt is Some(db) then "\nelse " + showBlock(db) else "") + - "\n" + showBlock(rest) + "if " + showPath(scrut) + " is" + + indent("\n" + arms.map(showArm).join("\n")) + + indent(if dflt is Some(db) then "\nelse " + showBlock(db) else "") + + showRestBlock(rest) Scoped(symbols, rest) then - "Scoped([" + symbols.map(showSymbol).join(", ") + "], " + showBlock(rest) + ")" + // initialize symbols + symbols.map(showSymbol).map("let " + _).join("\n") + "\n" + showBlock(rest) Label(labelSymbol, loop, body, rest) then - "Label(" + showSymbol(labelSymbol) + ", " + showBool(loop) + ", " + showBlock(body) + ", " + showBlock(rest) + + ")" + "Label(" + showSymbol(labelSymbol) + ", " + showBool(loop) + ", " + showBlock(body) + ", " + showBlock(rest) + ")" Break(labelSymbol) then "Break(" + showSymbol(labelSymbol) + ")" + End() then "" + _ then "" + b + +// removes trailing newline +fun showRestBlock(b : Block): Str = + if b is End then "" else "\n" + showBlock(b) fun showOptBlock(b: Block): Str = if b is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 37d277bf6f..f0ac53017d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,13 +24,67 @@ staged module Expressions with [1, 2] then 2 [a, ...] then 3 else 0 -//│ > Return(Lit(1), false) -//│ > Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))) -//│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) -//│ > Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))) -//│ > Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))) -//│ > Scoped([Symbol("element0$"), Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > return:1 +//│ > let x +//│ > let y +//│ > x = 42 +//│ > y = x +//│ > return:y +//│ > return:[1, 2] +//│ > return:[1, ..x] +//│ > let tmp +//│ > tmp = [1] +//│ > return:tmp.(0) +//│ > let scrut +//│ > scrut = 9 +//│ > if scrut is +//│ > Bool then +//│ > return:1 +//│ > 8 then +//│ > return:2 +//│ > Int then +//│ > return:3 +//│ > else return:0 +//│ > let element0_ +//│ > let element1_ +//│ > let scrut +//│ > let a +//│ > let tmp +//│ > let middleElements +//│ > Label(split_root_, false, Label(split_1_, false, Label(split_2_, false, scrut = [...x] +//│ > if scrut is +//│ > [] then +//│ > tmp = 1 +//│ > Break(split_root_) +//│ > [_, _] then +//│ > element0_ = Runtime.Tuple.get(scrut, 0) +//│ > element1_ = Runtime.Tuple.get(scrut, 1) +//│ > if element0_ is +//│ > 1 then +//│ > if element1_ is +//│ > 2 then +//│ > tmp = 2 +//│ > Break(split_root_) +//│ > else if scrut is +//│ > [_, ...] then +//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) +//│ > a = element0_ +//│ > Break(split_1_) +//│ > else Break(split_2_) +//│ > else if scrut is +//│ > [_, ...] then +//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) +//│ > a = element0_ +//│ > Break(split_1_) +//│ > else Break(split_2_) +//│ > [_, ...] then +//│ > element0_ = Runtime.Tuple.get(scrut, 0) +//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) +//│ > a = element0_ +//│ > Break(split_1_) +//│ > else Break(split_2_), tmp = 0 +//│ > Break(split_root_)), tmp = 3 +//│ > ), return:tmp) //│ x = [1, 2, 3] class Outside(a) @@ -41,20 +95,22 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) -//│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) -//│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) -//│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false) -//│ > Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) -//│ > Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false) +//│ > class NoArg +//│ > class Inside(a, b) +//│ > return:new Outside(1) +//│ > return:new ClassInstrumentation.NoArg() +//│ > return:Outside(1) +//│ > return:ClassInstrumentation.Inside(1, 2) +// :sjs staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z -//│ > Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)) -//│ > Return(Lit(undefined), false) +//│ > x = 1 +//│ > return:x +//│ > return:undefined staged module OtherBlocks with fun scope() = @@ -67,8 +123,19 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))) -//│ > Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > let a +//│ > a = 1 +//│ > return:OtherBlocks.scope.locally(a) +//│ > let scrut +//│ > let tmp +//│ > Label(split_root_, false, Label(split_1_, false, scrut = 1 +//│ > if scrut is +//│ > 2 then +//│ > Break(split_1_) +//│ > 3 then +//│ > Break(split_1_) +//│ > else Break(split_1_), tmp = 0 +//│ > ), return:tmp) // debug printing fails, collision with class name? :fixme @@ -84,8 +151,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.83: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.84: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ +//│ ║ l.150: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.151: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From b16fdf488bbef3af20d919adf5ad36f154a72292 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 14 Jan 2026 15:51:31 +0800 Subject: [PATCH 259/654] replace parameters of functions with its symbol instead of undefined --- .../scala/hkmc2/codegen/Instrumentation.scala | 18 ++++++++++++++---- .../test/mlscript/block-staging/Functions.mls | 4 ++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 5b6c699d9b..caa305454f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -262,10 +262,20 @@ class InstrumentationImpl(using State): val sym = modSym.asPath.selSN(genSym.nme) // NOTE: this debug printing only works for top-level modules, nested modules don't work // TODO: remove it. only for test - val debug = blockCtor("ValueLit", Ls(Value.Lit(Tree.UnitLit(false)))): undef => - // TODO: put correct parameters instead of undefined - f.params.map(ps => List.fill(ps.params.length)(undef)) - .foldRight((p: Path) => fnPrintCode(p)(End()))((args, cont) => call(_, args)(cont))(sym) + // maintain parameter names for debugging + val debug = + f.params.map(ps => + ps.params.map(p => + (k: Path => Block) => + blockCtor("Symbol", Ls(toValue(p.sym.nme))): sym => + blockCtor("ValueRef", Ls(sym))(k) + ).collectApply + ) + .foldRight((p: Path) => fnPrintCode(p)(End()))((argsCont, cont) => + path => + argsCont: args => + call(path, args)(cont) + )(sym) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) val args = f.params.flatMap(_.params).map(_.sym) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 37d277bf6f..7f0ce0dec4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -54,7 +54,7 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ > Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)) -//│ > Return(Lit(undefined), false) +//│ > Return(Ref(Symbol("z")), false) staged module OtherBlocks with fun scope() = @@ -68,7 +68,7 @@ staged module OtherBlocks with 3 then 0 else 0 //│ > Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))) -//│ > Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) // debug printing fails, collision with class name? :fixme From b516237c8ebb945385515eb02dbbabc194179129 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 21 Jan 2026 17:05:10 +0800 Subject: [PATCH 260/654] retain scoped symbols after instrumentation --- .../shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 4 ++-- hkmc2/shared/src/test/mlscript/block-staging/Functions.mls | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index caa305454f..b86bc560b1 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -51,7 +51,7 @@ class InstrumentationImpl(using State): def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = // TODO: skip assignment if res: Path? val sym = new TempSymbol(N, symName) - Assign(sym, res, k(sym.asPath)) + Scoped(Set(sym), Assign(sym, res, k(sym.asPath))) def tuple(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = assign(Tuple(false, elems.map(asArg)), symName)(k) @@ -244,7 +244,7 @@ class InstrumentationImpl(using State): syms.toList.map(transformSymbol(_)).collectApply: symsStaged => tuple(symsStaged): tup => transformBlock(body): (body, ctx) => - blockCtor("Scoped", Ls(tup, body))(k(_, ctx)) + blockCtor("Scoped", Ls(tup, body))(b => Scoped(syms, k(b, ctx))) case Label(labelSymbol, loop, body, rest) => transformSymbol(labelSymbol): labelSymbol => transformBlock(body): (body, ctx) => diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 7f0ce0dec4..2c13f6ef0d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -30,7 +30,7 @@ staged module Expressions with //│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) //│ > Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))) //│ > Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))) -//│ > Scoped([Symbol("element0$"), Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) //│ x = [1, 2, 3] class Outside(a) From 0b968edbfa199cbf6155ab0da94d2ac9684c1f57 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 21 Jan 2026 17:05:16 +0800 Subject: [PATCH 261/654] update test --- hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 0eaa38428e..6b18ffef62 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -20,4 +20,4 @@ staged fun f() = 0 :slot staged module A //│ Pretty Lowered: -//│ define staged class A in set block$res = undefined in end +//│ define staged class A with staged module A in set block$res = undefined in end From 8668c5aa825d91946cb17e9d7000be09f56c6f35 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 21 Jan 2026 18:07:35 +0800 Subject: [PATCH 262/654] create new printCode tests --- .../src/test/mlscript-compile/Block.mls | 18 +++---- .../test/mlscript/block-staging/PrintCode.mls | 49 ++++++++++++++++++- 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 472d726768..a2174778da 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -92,14 +92,12 @@ fun concat(b1: Block, b2: Block) = if b1 is fun indent(s: Str) = s.replaceAll("\n", "\n ") -fun showBool(b: Bool) = if b then "true" else "false" - fun showLiteral(l: Literal) = if l is undefined then "undefined" null then "null" - String then "\"" + l.toString() + "\"" - else l.toString() + Str then "\"" + l.toString() + "\"" + else l fun showSymbol(s: Symbol) = if s.name is "runtime" then "Runtime" @@ -147,7 +145,7 @@ fun showArm(a) = showCase(a.cse) + " then" + indent("\n" + showBlock(a.body)) fun showParams(p: ParamList) = - "(" + p.map(showSymbol).join(", ") + ")" + p.map("(" + _.map(showSymbol).join(",") + ")").join("") fun showParamsOpt(p) = if p is @@ -159,8 +157,8 @@ fun showParamList(ps: ParamList) = fun showDefn(d: Defn): Str = if d is - FunDefn(sym, p, body, _) then - "fun " + showSymbol(sym) + showParams(p) + " =" + + FunDefn(sym, ps, body, _) then + "fun " + showSymbol(sym) + showParams(ps) + " =" + (if body is Return(_, _) then " " else "\n ") + showBlock(body) ClsLikeDefn(sym, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) _ then "" @@ -168,7 +166,7 @@ fun showDefn(d: Defn): Str = fun showBlock(b) = if b is Assign(lhs, rhs, rest) then - showSymbol(lhs) + " = " + showResult(rhs) + "\n" + showBlock(rest) + showSymbol(lhs) + " = " + showResult(rhs) + showRestBlock(rest) Define(d, rest) then showDefn(d) + showRestBlock(rest) Return(res, _) then @@ -180,9 +178,9 @@ fun showBlock(b) = + showRestBlock(rest) Scoped(symbols, rest) then // initialize symbols - symbols.map(showSymbol).map("let " + _).join("\n") + "\n" + showBlock(rest) + symbols.map(showSymbol).map("let " + _).join("\n") + showRestBlock(rest) Label(labelSymbol, loop, body, rest) then - "Label(" + showSymbol(labelSymbol) + ", " + showBool(loop) + ", " + showBlock(body) + ", " + showBlock(rest) + ")" + "Label(" + showSymbol(labelSymbol) + ", " + loop + ", " + showRestBlock(body) + ", " + showRestBlock(rest) + ")" Break(labelSymbol) then "Break(" + showSymbol(labelSymbol) + ")" End() then "" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index bff7052850..bce4b450d2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -2,7 +2,52 @@ :js import "../../mlscript-compile/Block.mls" +import "../../mlscript-compile/Option.mls" -Block.printCode(Block.FunDefn(Block.Symbol("f"), [[Block.Symbol("x")]], Block.Return(Block.ValueLit(1), false), false)) -//│ > FunDefn(Symbol("f"), ([Symbol("x")]), Return(Lit(1), false), false) +open Block +open Option + +printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false)) +//│ > fun f(x) = return:1 + +printCode(ValueLit(true)) +printCode(ValueLit(null)) +printCode(ValueLit(undefined)) +printCode(ValueLit("c")) +printCode(ValueLit("string")) +//│ > true +//│ > null +//│ > undefined +//│ > "c" +//│ > "string" + +printCode(Symbol("internal$")) +printCode(Symbol("runtime")) +//│ > internal_ +//│ > Runtime + +printCode(Select(ValueRef(Symbol("A")), Symbol("x"))) +printCode(DynSelect(ValueRef(Symbol("B")), ValueRef(Symbol("field")), false)) +//│ > A.x +//│ > B.(field) + +printCode(Call(ValueRef(Symbol("f")), [Arg(None, ValueLit(3))])) +printCode(Instantiate(ValueRef(ClassSymbol("A", Some([[Symbol("x")]]))), [Arg(None, ValueLit(0))])) +printCode(Tuple([Arg(Some(true), ValueRef(Symbol("x"))), Arg(Some(false), ValueRef(Symbol("y")))])) +//│ > f(3) +//│ > new A(0) +//│ > [...x, ..y] + +printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false)) +printCode(ClsLikeDefn(ClassSymbol("A", Some([[Symbol("x")]])), undefined)) +printCode(ClsLikeDefn(ClassSymbol("B", None), undefined)) +//│ > fun f(x) = return:1 +//│ > class A(x) +//│ > class B + +printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), Return(ValueRef(Symbol("x")), true)))) +//│ > let x +//│ > let y +//│ > x = 4.2 +//│ > return:x From 78e754f5b0c23b25846d50703b8d34b9f52d0a7f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 23 Jan 2026 23:44:05 +0800 Subject: [PATCH 263/654] replace calls to staged functions --- .../scala/hkmc2/codegen/Instrumentation.scala | 16 +++++++++++++++- .../test/mlscript/block-staging/Functions.mls | 16 +++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b86bc560b1..bb42e03754 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -170,7 +170,21 @@ class InstrumentationImpl(using State): tuple(xs.map(_._1)): codes => blockCtor("Instantiate", Ls(cls, codes), "inst")(k) case Call(fun, args) => - transformPath(fun): fun => + val stagedFunPath = + fun match + case s @ Select(qual, Tree.Ident(name)) => s.symbol.flatMap({ + case t: TermSymbol => t.owner.flatMap({ + case sym: DefinitionSymbol[?] => + sym.defn.get.hasStagedModifier.map(_ => + Select(qual, Tree.Ident(name + "_gen"))(N) + ) + }) + case _ => N + }) + case _ => N + + val newFun = stagedFunPath.getOrElse(fun) + transformPath(newFun): fun => transformArgs(args): args => tuple(args.map(_._1)): tup => blockCtor("Call", Ls(fun, tup), "app")(k) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 2c13f6ef0d..053c79c780 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -48,6 +48,16 @@ staged module ClassInstrumentation with //│ > Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) //│ > Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false) +module Nonstaged with + fun f() = 1 +staged module Staged with + fun f() = 1 +staged module CallSubst with + fun call() = + Nonstaged.f() + Staged.f() +//│ > Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))) + staged module Arguments with fun f(x) = x = 1 @@ -68,7 +78,7 @@ staged module OtherBlocks with 3 then 0 else 0 //│ > Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))) -//│ > Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) // debug printing fails, collision with class name? :fixme @@ -84,8 +94,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.83: staged module B with +//│ ║ l.93: staged module B with //│ ║ ^^^^^^ -//│ ║ l.84: fun f() = 1 +//│ ║ l.94: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From fe08c3bcfccffd7f959ad24f9c214a2787c08f97 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 24 Jan 2026 00:44:02 +0800 Subject: [PATCH 264/654] Wrap function body --- .../scala/hkmc2/codegen/Instrumentation.scala | 37 ++++++++++-------- .../test/mlscript/block-staging/Functions.mls | 39 ++++++++++--------- 2 files changed, 41 insertions(+), 35 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index bb42e03754..28a76df783 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -272,25 +272,30 @@ class InstrumentationImpl(using State): // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, Block) = - val genSym = BlockMemberSymbol(f.sym.nme + "_gen", Nil, true) - val sym = modSym.asPath.selSN(genSym.nme) + val genSymName = f.sym.nme + "_gen" + val genSym = BlockMemberSymbol(genSymName, Nil, false) + val sym = modSym.asPath.selSN(genSymName) // NOTE: this debug printing only works for top-level modules, nested modules don't work - // TODO: remove it. only for test // maintain parameter names for debugging val debug = - f.params.map(ps => - ps.params.map(p => - (k: Path => Block) => - blockCtor("Symbol", Ls(toValue(p.sym.nme))): sym => - blockCtor("ValueRef", Ls(sym))(k) - ).collectApply - ) - .foldRight((p: Path) => fnPrintCode(p)(End()))((argsCont, cont) => - path => - argsCont: args => - call(path, args)(cont) - )(sym) - + f.params.map( + _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply + ).collectApply: paramListSyms => + def callCont(k: Path => Block) = + paramListSyms.foldRight(k)((syms, cont) => + path => + syms.map(sym => blockCtor("ValueRef", Ls(sym))).collectApply: args => + call(path, args)(cont) + )(sym) + callCont: body => + blockCtor("Symbol", Ls(toValue(genSymName))): sym => + paramListSyms.map(tuple(_)).collectApply: tups => + tuple(tups): tup => + blockCtor("FunDefn", Ls(sym, tup, body, toValue(true))): block => + // TODO: remove it. only for test + fnPrintCode(block)(End()) + + // turn intro fundefn val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) val args = f.params.flatMap(_.params).map(_.sym) val newBody = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 053c79c780..30c064fe72 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,13 +24,13 @@ staged module Expressions with [1, 2] then 2 [a, ...] then 3 else 0 -//│ > Return(Lit(1), false) -//│ > Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))) -//│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) -//│ > Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))) -//│ > Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))) -//│ > Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > FunDefn(Symbol("lit_gen"), ([]), Return(Lit(1), false), true) +//│ > FunDefn(Symbol("assign_gen"), ([]), Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))), true) +//│ > FunDefn(Symbol("tup1_gen"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) +//│ > FunDefn(Symbol("tup2_gen"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false), true) +//│ > FunDefn(Symbol("dynsel_gen"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) +//│ > FunDefn(Symbol("match1_gen"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) +//│ > FunDefn(Symbol("match2_gen"), ([]), Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) //│ x = [1, 2, 3] class Outside(a) @@ -43,10 +43,10 @@ staged module ClassInstrumentation with fun app2() = Inside(1, 2) //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) //│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) -//│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) -//│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false) -//│ > Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) -//│ > Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false) +//│ > FunDefn(Symbol("inst1_gen"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("inst2_gen"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) +//│ > FunDefn(Symbol("app1_gen"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("app2_gen"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) module Nonstaged with fun f() = 1 @@ -56,15 +56,16 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))) +//│ > FunDefn(Symbol("f_gen"), ([]), Return(Lit(1), false), true) +//│ > FunDefn(Symbol("call_gen"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))), true) staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z -//│ > Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)) -//│ > Return(Ref(Symbol("z")), false) +//│ > FunDefn(Symbol("f_gen"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) +//│ > FunDefn(Symbol("g_gen"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) staged module OtherBlocks with fun scope() = @@ -77,8 +78,8 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))) -//│ > Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > FunDefn(Symbol("scope_gen"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) +//│ > FunDefn(Symbol("breakAndLabel_gen"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) // debug printing fails, collision with class name? :fixme @@ -94,8 +95,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.93: staged module B with +//│ ║ l.94: staged module B with //│ ║ ^^^^^^ -//│ ║ l.94: fun f() = 1 +//│ ║ l.95: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ -//│ ═══[RUNTIME ERROR] ReferenceError: B is not defined +//│ > FunDefn(Symbol("f_gen"), ([]), Return(Lit(1), false), true) From efb6ae86c6cff94395dbf8b7a12509198d9b8f74 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 24 Jan 2026 00:44:12 +0800 Subject: [PATCH 265/654] move printing into constructor --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 28a76df783..1833a11fe5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -323,10 +323,13 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val (stagedMethods, debugPrintCode) = companion.methods .map(impl.transformFunDefn(sym, _)) .unzip - val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => End()) + + val unit = Select(Value.Ref(State.runtimeSymbol), Tree.Ident("Unit"))(N) + val debugBlock = debugPrintCode.foldRight(Return(unit, true))(concat) + def debugCont(rest: Block) = + Begin(debugBlock, rest) + val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => debugCont(End())) val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) val newModule = c.copy(sym = sym, companion = S(newCompanion)) - // debug is printed after definition - val debugBlock = debugPrintCode.foldRight(rest)(concat) - Define(newModule, debugBlock) + Define(newModule, rest) case b => b From 75b838f9aaddb95cbe2d42248db79fe16b773677 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 24 Jan 2026 01:01:43 +0800 Subject: [PATCH 266/654] fix printing class parameters --- .../scala/hkmc2/codegen/Instrumentation.scala | 2 +- .../src/test/mlscript-compile/Block.mls | 8 +++--- .../test/mlscript/block-staging/Functions.mls | 26 ++++++++++++------- .../test/mlscript/block-staging/PrintCode.mls | 2 +- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index dffe3b8988..eb8ef57407 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -112,7 +112,7 @@ class InstrumentationImpl(using State): def applyRuleBranch(cse: Case, block: Block)(f: Path => Context => Block)(ctx: Context): Block = transformCase(cse): cse => transformBlock(block)(using ctx.clone() += p -> x): (y, ctx) => - blockCtor("Arm", Ls(cse, y)) : cde => + blockCtor("Arm", Ls(cse, y)): cde => f(cde)(ctx.clone() -= p) (arms.map(applyRuleBranch).collectApply(_: Ls[Path] => Context => Block)(summon)): arms => diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index a2174778da..1932493d3e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -145,20 +145,20 @@ fun showArm(a) = showCase(a.cse) + " then" + indent("\n" + showBlock(a.body)) fun showParams(p: ParamList) = - p.map("(" + _.map(showSymbol).join(",") + ")").join("") + "(" + p.map(showSymbol(_)).join(", ") + ")" fun showParamsOpt(p) = if p is Some(s) then showParams(s) None then "" -fun showParamList(ps: ParamList) = - "[" + ps.map(s => showSymbol(s)).join(", ") + "]" +fun showParamList(ps: Array[ParamList]) = + ps.map(showParams) fun showDefn(d: Defn): Str = if d is FunDefn(sym, ps, body, _) then - "fun " + showSymbol(sym) + showParams(ps) + " =" + + "fun " + showSymbol(sym) + showParamList(ps) + " =" + (if body is Return(_, _) then " " else "\n ") + showBlock(body) ClsLikeDefn(sym, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) _ then "" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index f0ac53017d..e7725df40a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -51,7 +51,10 @@ staged module Expressions with //│ > let a //│ > let tmp //│ > let middleElements -//│ > Label(split_root_, false, Label(split_1_, false, Label(split_2_, false, scrut = [...x] +//│ > Label(split_root_, false, +//│ > Label(split_1_, false, +//│ > Label(split_2_, false, +//│ > scrut = [...x] //│ > if scrut is //│ > [] then //│ > tmp = 1 @@ -82,9 +85,11 @@ staged module Expressions with //│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) //│ > a = element0_ //│ > Break(split_1_) -//│ > else Break(split_2_), tmp = 0 -//│ > Break(split_root_)), tmp = 3 -//│ > ), return:tmp) +//│ > else Break(split_2_), +//│ > tmp = 0 +//│ > Break(split_root_)), +//│ > tmp = 3), +//│ > return:tmp) //│ x = [1, 2, 3] class Outside(a) @@ -128,14 +133,17 @@ staged module OtherBlocks with //│ > return:OtherBlocks.scope.locally(a) //│ > let scrut //│ > let tmp -//│ > Label(split_root_, false, Label(split_1_, false, scrut = 1 +//│ > Label(split_root_, false, +//│ > Label(split_1_, false, +//│ > scrut = 1 //│ > if scrut is //│ > 2 then //│ > Break(split_1_) //│ > 3 then //│ > Break(split_1_) -//│ > else Break(split_1_), tmp = 0 -//│ > ), return:tmp) +//│ > else Break(split_1_), +//│ > tmp = 0), +//│ > return:tmp) // debug printing fails, collision with class name? :fixme @@ -151,8 +159,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.150: staged module B with +//│ ║ l.158: staged module B with //│ ║ ^^^^^^ -//│ ║ l.151: fun f() = 1 +//│ ║ l.159: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index bce4b450d2..c858612cbe 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -39,7 +39,7 @@ printCode(Tuple([Arg(Some(true), ValueRef(Symbol("x"))), Arg(Some(false), ValueR //│ > [...x, ..y] printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false)) -printCode(ClsLikeDefn(ClassSymbol("A", Some([[Symbol("x")]])), undefined)) +printCode(ClsLikeDefn(ClassSymbol("A", Some([Symbol("x")])), undefined)) printCode(ClsLikeDefn(ClassSymbol("B", None), undefined)) //│ > fun f(x) = return:1 //│ > class A(x) From b9725b91765041d7b757a58d30023db48f9f2fc3 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 25 Jan 2026 03:28:22 +0800 Subject: [PATCH 267/654] some todos --- .../shared/src/test/mlscript/block-staging/ShapeProp.mls | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 24d2fa12e5..d34b925fcc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -10,6 +10,9 @@ open Block { Symbol, ClassSymbol, Tup } open Shape { Arr, Class, Dyn, Lit } open ShapeSet +mkBot() +//│ = + mkLit(0) //│ = Lit(0) @@ -83,6 +86,8 @@ filter(filterShapes, Tup(4, true)) assert(filter(filterShapes, Tup(0, false)).isEmpty()) +// TODO: Add test for ctx.add + open Block sop(Ctx.empty, ValueLit(42)) @@ -171,4 +176,8 @@ testUnaryOp("-", 10) testUnaryOp("!", true) //│ = false +:re +testUnaryOp("~", 10) +//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' +// TODO: Add test for scope From 5b397ce7996c4a15a8904f2b47ff5f6e0ae26d9a Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 25 Jan 2026 03:28:53 +0800 Subject: [PATCH 268/654] add cache to prop --- .../src/test/mlscript-compile/ShapeSet.mls | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index d344d996de..b256b1664c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -25,7 +25,8 @@ class ShapeSet(val underlying: Map[String, Shape]) extends CachedHash with fun toString() = underlying.keys().toArray().toSorted().toString() -fun create() = ShapeSet(new Map) +module ShapeSet with + fun empty = ShapeSet(new Map) fun lift(s: Shape) = ShapeSet(new Map([[s.hash(), s]])) @@ -49,7 +50,7 @@ open Shape { Dyn, Lit, Arr, Class } // lifted constructors -fun mkBot() = create() +fun mkBot() = ShapeSet.empty fun mkDyn() = lift(Dyn()) @@ -82,7 +83,7 @@ fun sel(s1: ShapeSet, s2: ShapeSet) = fun static(s: ShapeSet) = let v = s.values() if v.length == - 0 then ??? + 0 then throw Error("Some variables has bottom shape.") 1 then Shape.static(v.0) else false @@ -219,13 +220,17 @@ fun sor(defs, ctx, cache, r: Result) = if r is // then [Call(f1, args), s] fun prop(defs, ctx, cache, b: Block) = if b is - End then [b, mkBot()] - Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s, _] then - [Return(r1, implct), s] + End then [b, mkBot(), cache] + Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s1, cache1] then + [Return(r1, implct), s1, cache1] // TODO: let syntax, presumably for Scoped - Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s, _] and - prop(defs, ctx.add(x, union(ctx.get(x), s)), cache, b) is [b1, s1] then - [Assign(x, r1, b1), s1] + Scoped(symbols, rest) then // just set all shape to bottom? + let newCtx = fold((c, s) => c.add(s, mkBot))(ctx, symbols) + prop(defs, newCtx, cache, b) + // TODO: Label & Break? + Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s1, cache1] and + prop(defs, ctx.add(x, union(ctx.get(x), s1)), cache, b) is [b2, s2, cache2] then + [Assign(x, r1, b2), s2, cache2] Match(p, arms, dflt, rest) then let s = sop(ctx, p) let filteredArms = fold((r, arm) => From b76934537516adf394f5e2527ff80e37c411ed83 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 27 Jan 2026 10:52:15 +0800 Subject: [PATCH 269/654] test for Scope and some fixes --- .../src/test/mlscript-compile/ShapeSet.mls | 37 +++++++++-------- .../test/mlscript/block-staging/ShapeProp.mls | 41 +++++++++++++++++-- 2 files changed, 58 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 27a7f7f21f..d89ad05572 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -30,7 +30,6 @@ module ShapeSet with fun lift(s: Shape) = ShapeSet(new Map([[s.hash(), s]])) - fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [s.hash(), s]))) // combining ShapeSets together @@ -94,7 +93,7 @@ fun static(s: ShapeSet) = open Block // TODO: refactor with hash map? -class Ctx(maps: Map[String, ShapeSet], parent: Option[Ctx]) with +class Ctx(val maps: Map[String, ShapeSet], parent: Option[Ctx]) with fun get(path) = let ps = showPath(path) if maps.has(ps) then Some(maps.get(ps)) @@ -142,26 +141,27 @@ fun sop(ctx, p: Path): ShapeSet = if ctx.get(p) is Some(s) then s else if p is Select(qual, sym) then sel(sop(ctx, qual), mkLit(sym.name)) - DynSelect(qual, fld, arrayIdx) then sel(sop(ctx, qual), sop(ctx, fld)) + DynSelect(qual, fld, _) then sel(sop(ctx, qual), sop(ctx, fld)) ValueLit(lit) then mkLit(lit) ValueRef(l) then mkDyn() + fun sor(defs, ctx, cache, r: Result) = if r is Path then [r, sop(ctx, r), cache] Instantiate(cls, args) then let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("Instantiate with non-ClassSymbol") [r, mkClass(sym, args.map(a => sop(ctx, a.value))), cache] Tuple(elems) then [r, mkArr(elems.map(a => sop(ctx, a.value)), false), cache] - Call(f, args) then + Call(f, args) then + fun lit(l) = [ValueLit(l), mkLit(l), cache] let argShapes = args.map(a => sop(ctx, a.value)) + let shapeStr = argShapes.map(s => s.toString()).join("_") let def = if f is ValueRef(s) then defs.get(s) else None - fun lit(l) = [ValueLit(l), mkLit(l), cache] if def is - Some(FunDefn(sym, params, body, true)) then - let shapeStr = argShapes.map(s => s.toString()).join("_") - let implSym = Symbol(sym.name + "_" + shapeStr) - if cache.get(implSym) is Some(_) then - [Call(ValueRef(implSym), args), mkDyn(), cache] + Some(FunDefn(sym, params, body, true)) then // staged + let implSym = Symbol(sym.name + "_" + shapeStr) + if cache.get(f, argShape) is Some([_, s]) then // specialized function cached + [Call(ValueRef(implSym), args), s, cache] else let genName = sym.name + "_gen" if defs.get(Symbol(genName)) is Some(FunDefn(genSym, genParams, genBody, _)) then @@ -170,7 +170,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is genParams.0.forEach((p, i) => genCtx.add(ValueRef(p), mkLit(argShapes.(i))) ) - if prop(defs, genCtx, cache, genBody) is [resBlock, resShape] then + if prop(defs, genCtx, cache, genBody) is [resBlock, resShape, _] then cache.add(implSym, [FunDefn(implSym, params, resBlock, false), resShape]) [Call(ValueRef(implSym), args), mkDyn(), cache] else [r, mkDyn(), cache] @@ -231,11 +231,14 @@ fun prop(defs, ctx, cache, b: Block) = if b is [Return(r1, implct), s1, cache1] // TODO: let syntax, presumably for Scoped Scoped(symbols, rest) then // just set all shape to bottom? - let newCtx = fold((c, s) => c.add(s, mkBot))(ctx, symbols) - prop(defs, newCtx, cache, b) + symbols.forEach((x, i, arr) => ctx.add(ValueRef(x), mkBot())) + prop(defs, ctx, cache, rest) // TODO: Label & Break? - Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s1, cache1] and - prop(defs, ctx.update(x, union(ctx.get(x), s1)), cache, b) is [b2, s2, cache2] then + Label(labelSymbol, loop, body, rest) then ??? + Break(labelSymbol) then ??? + Assign(x, r, b) and + sor(defs, ctx, cache, r) is [r1, s1, cache1] then + if prop(defs, ctx.update(ValueRef(x), union(ctx.get(ValueRef(x)).value, s1)), cache, b) is [b2, s2, cache2] then [Assign(x, r1, b2), s2, cache2] Match(p, arms, dflt, rest) then let s = sop(ctx, p) @@ -244,7 +247,7 @@ fun prop(defs, ctx, cache, b: Block) = if b is if fs.isEmpty() then r else let nestCtx = ctx.nest - if not p is ValueLit then do + if not p is ValueLit then do // Why is this needed? nestCtx.add(p, fs) let res = prop(defs, nestCtx, cache, arm.1) [rest(r.0, arm.0), union(r.1, res.1), r.2.push(res.0)] @@ -257,7 +260,7 @@ fun prop(defs, ctx, cache, b: Block) = if b is nestCtx.add(p, filteredArms.0) prop(defs, nestCtx, cache, dflt) let newRest = prop(defs, ctx, cache, rest) - [Match(p, filteredArms.2, newDflt.0, newRest.0), union(filteredArms.1, union of newDflt.1, newRest.1)] + [Match(p, filteredArms.2, newDflt.0, newRest.0), union(filteredArms.1, union of newDflt.1, newRest.1), newRest.2] // TODO: remove it. this can be done in module static blocks fun exec(defs, ctx, cache, b: Block) = if b is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 7b9fe5eeea..4b191262ec 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -19,6 +19,9 @@ mkLit(0) mkDyn() //│ = Dyn() +mkDyn() == mkDyn() +//│ = false + assert(mkBot().isEmpty()) // sel @@ -96,6 +99,9 @@ sop(Ctx.empty, ValueLit(42)) sop(Ctx.empty, ValueLit(false)) //│ = Lit(false) +sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) +//│ = + val x = Symbol("x") val C = ClassSymbol("C", Some(["a"])) @@ -105,7 +111,12 @@ ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ = Lit("pass") //│ C = ClassSymbol("C", Some(["a"])) -//│ ctx = Ctx(_, _) +//│ ctx = Ctx( +//│ Map(1) { +//│ "Ref(Symbol(\"x\"))" => Class(ClassSymbol("C", Some(["a"])), [Lit("pass")]) +//│ }, +//│ _ +//│ ) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -120,7 +131,7 @@ sor(defCtx, ctx, cache, tup) //│ Cache(Map(0) {}) //│ ] //│ cache = Cache(Map(0) {}) -//│ ctx = Ctx(_, _) +//│ ctx = Ctx(Map(0) {}, _) //│ defCtx = DefCtx(Map(0) {}) //│ tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) @@ -180,4 +191,28 @@ testUnaryOp("!", true) testUnaryOp("~", 10) //│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' -// TODO: Add test for scope + +let c = Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(ValueRef(Symbol("+")), [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(ValueRef(Symbol("+")), [Arg(None, ValueRef(Symbol("tmp"))), Arg(None, ValueLit(1))]), false))) +prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ = [ +//│ Assign(Symbol("tmp"), ValueLit(2), Return(ValueLit(3), false)), +//│ Lit(3), +//│ Cache(Map(0) {}) +//│ ] +//│ c = Scoped( +//│ [Symbol("tmp")], +//│ Assign( +//│ Symbol("tmp"), +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))] +//│ ), +//│ Return( +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueRef(Symbol("tmp"))), Arg(None, ValueLit(1))] +//│ ), +//│ false +//│ ) +//│ ) +//│ ) From a0a75ea1e0d391bb547fa5592318e64782937e07 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:54:53 +0800 Subject: [PATCH 270/654] add LabelTransformer --- .../scala/hkmc2/codegen/Instrumentation.scala | 74 ++++++++++++++++++- .../test/mlscript/block-staging/Functions.mls | 43 ++++------- 2 files changed, 88 insertions(+), 29 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index eb8ef57407..91b33cdab9 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -274,9 +274,79 @@ class InstrumentationImpl(using State): val newFun = f.copy(sym = genSym, dSym = dSym, body = newBody)(false) (newFun, debug) +class LabelTransformer(using State, Raise) extends BlockTransformer(new SymbolSubst()): + private def inlineLabelRestInDef(d: Defn)(using conts: Map[Symbol, Symbol | Block]): Defn = d match + case fd @ FunDefn(owner, sym, dSym, params, body) => + val newBody = inlineLabelRest(body) + if newBody is body then fd else FunDefn(owner, sym, dSym, params, newBody)(fd.forceTailRec) + case ClsLikeDefn(owner, isym, sym, ctorSym, k, paramsOpt, auxParams, parentPath, methods, privateFields, publicFields, preCtor, ctor, companion, bufferable) => + val newMethods = methods.map(inlineLabelRestInDef).map { + case fd: FunDefn => fd + } // TODO: remove it + val newPreCtor = inlineLabelRest(preCtor) + val newCtor = inlineLabelRest(ctor) + val newCompanion = companion.map { + case ClsLikeBody(isym, methods, privateFields, publicFields, ctor) => + val newMethods = methods.map(inlineLabelRestInDef).map { + case fd: FunDefn => fd + } // TODO: remove it + val newCtor = inlineLabelRest(ctor) + ClsLikeBody(isym, newMethods, privateFields, publicFields, newCtor) + } + ClsLikeDefn(owner, isym, sym, ctorSym, k, paramsOpt, auxParams, parentPath, newMethods, privateFields, publicFields, newPreCtor, newCtor, newCompanion, bufferable) + case _ => ??? // not supported yet + + private def inlineLabelRest(b: Block)(using conts: Map[Symbol, Symbol | Block]): Block = b match + case Begin(body, rest) => + val newBody = inlineLabelRest(body) + val newRest = inlineLabelRest(rest) + if (newBody is body) && (newRest is rest) then b + else Begin(newBody, newRest) + case _: Return | _: End | _: Throw => b + case Break(label) if label.nme.startsWith("split_root") => End() + case Break(label) => conts.get(label) match + case Some(sym: Symbol) => Return(Call(Value.Ref(sym, N), Nil)(true, false, false), true) + case Some(rb: Block) => rb + case _ => ??? // error + case Assign(lhs, rhs, rest) => + val newRest = inlineLabelRest(rest) + if newRest is rest then b + else Assign(lhs, rhs, newRest) + case Match(scrut, arms, dflt, rest) => + val newArms = arms.map(p => (p._1, inlineLabelRest(p._2))) + val newDflt = dflt.map(inlineLabelRest) + val newRest = inlineLabelRest(rest) + Match(scrut, newArms, newDflt, newRest) + case Label(label, false, body, rest) if label.nme.startsWith("split_root") => + Begin(inlineLabelRest(body), inlineLabelRest(rest)) + case Label(label, false, body, rest) => + val newRest = inlineLabelRest(rest) + inlineLabelRest(body)(using conts + (label -> newRest)) + // TODO: create helper functions to remove duplications + // if rest.size < 3 then + // val newRest = inlineLabelRest(rest) + // inlineLabelRest(body)(using conts + (label -> newRest)) + // else + // val contSym = new TempSymbol(N, "cont") + // Scoped(Set(contSym), Assign(contSym, Lambda(PlainParamList(Nil), rest), inlineLabelRest(body)(using conts + (label -> contSym)))) + case Scoped(syms, body) => + val newBody = inlineLabelRest(body) + if newBody is body then b else Scoped(syms, newBody) + case Define(defn, rest) => + val newDefn = inlineLabelRestInDef(defn) + val newRest = inlineLabelRest(rest) + if (newDefn is defn) && (newRest is rest) then b + else Define(newDefn, newRest) + case _ => + println(s"yydz: $b") + ??? // not supported yet. + + override def applyBlock(b: Block): Block = inlineLabelRest(b)(using Map.empty) + // TODO: rename as InstrumentationTransformer? -class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): +class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSubst()): val impl = new InstrumentationImpl + val inline = new LabelTransformer def concat(b1: Block, b2: Block): Block = b1.mapTail { @@ -285,7 +355,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): } override def applyBlock(b: Block): Block = - super.applyBlock(b) match + super.applyBlock(inline.applyBlock(b)) match // find modules with staged annotation case Define(c: ClsLikeDefn, rest) if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => val sym = c.sym.subst diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e7725df40a..d0b2942535 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,7 +1,7 @@ :js :staging -val x = [1, 2, 3] +let x = [1, 2, 3] staged module Expressions with fun lit() = 1 fun assign() = @@ -45,20 +45,16 @@ staged module Expressions with //│ > Int then //│ > return:3 //│ > else return:0 -//│ > let element0_ -//│ > let element1_ //│ > let scrut //│ > let a //│ > let tmp //│ > let middleElements -//│ > Label(split_root_, false, -//│ > Label(split_1_, false, -//│ > Label(split_2_, false, +//│ > let element0_ +//│ > let element1_ //│ > scrut = [...x] //│ > if scrut is //│ > [] then //│ > tmp = 1 -//│ > Break(split_root_) //│ > [_, _] then //│ > element0_ = Runtime.Tuple.get(scrut, 0) //│ > element1_ = Runtime.Tuple.get(scrut, 1) @@ -67,29 +63,25 @@ staged module Expressions with //│ > if element1_ is //│ > 2 then //│ > tmp = 2 -//│ > Break(split_root_) //│ > else if scrut is //│ > [_, ...] then //│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) //│ > a = element0_ -//│ > Break(split_1_) -//│ > else Break(split_2_) +//│ > tmp = 3 +//│ > else tmp = 0 //│ > else if scrut is //│ > [_, ...] then //│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) //│ > a = element0_ -//│ > Break(split_1_) -//│ > else Break(split_2_) +//│ > tmp = 3 +//│ > else tmp = 0 //│ > [_, ...] then //│ > element0_ = Runtime.Tuple.get(scrut, 0) //│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) //│ > a = element0_ -//│ > Break(split_1_) -//│ > else Break(split_2_), -//│ > tmp = 0 -//│ > Break(split_root_)), -//│ > tmp = 3), -//│ > return:tmp) +//│ > tmp = 3 +//│ > else tmp = 0 +//│ > return:tmp //│ x = [1, 2, 3] class Outside(a) @@ -133,17 +125,14 @@ staged module OtherBlocks with //│ > return:OtherBlocks.scope.locally(a) //│ > let scrut //│ > let tmp -//│ > Label(split_root_, false, -//│ > Label(split_1_, false, //│ > scrut = 1 //│ > if scrut is //│ > 2 then -//│ > Break(split_1_) +//│ > tmp = 0 //│ > 3 then -//│ > Break(split_1_) -//│ > else Break(split_1_), -//│ > tmp = 0), -//│ > return:tmp) +//│ > tmp = 0 +//│ > else tmp = 0 +//│ > return:tmp // debug printing fails, collision with class name? :fixme @@ -159,8 +148,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.158: staged module B with +//│ ║ l.147: staged module B with //│ ║ ^^^^^^ -//│ ║ l.159: fun f() = 1 +//│ ║ l.148: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] ReferenceError: B is not defined From 245da6d8b5c617c7542b9c4c707f887f247c153b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 28 Jan 2026 00:11:25 +0800 Subject: [PATCH 271/654] remove _gen suffix from instrumented block we check if a function is staged through defCtx, so we can substitute the symbol there --- .../scala/hkmc2/codegen/Instrumentation.scala | 2 +- .../test/mlscript/block-staging/Functions.mls | 34 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 1833a11fe5..2735bad2c7 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -288,7 +288,7 @@ class InstrumentationImpl(using State): call(path, args)(cont) )(sym) callCont: body => - blockCtor("Symbol", Ls(toValue(genSymName))): sym => + blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => paramListSyms.map(tuple(_)).collectApply: tups => tuple(tups): tup => blockCtor("FunDefn", Ls(sym, tup, body, toValue(true))): block => diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 30c064fe72..e2376aa987 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,13 +24,13 @@ staged module Expressions with [1, 2] then 2 [a, ...] then 3 else 0 -//│ > FunDefn(Symbol("lit_gen"), ([]), Return(Lit(1), false), true) -//│ > FunDefn(Symbol("assign_gen"), ([]), Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))), true) -//│ > FunDefn(Symbol("tup1_gen"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) -//│ > FunDefn(Symbol("tup2_gen"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false), true) -//│ > FunDefn(Symbol("dynsel_gen"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) -//│ > FunDefn(Symbol("match1_gen"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) -//│ > FunDefn(Symbol("match2_gen"), ([]), Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("lit"), ([]), Return(Lit(1), false), true) +//│ > FunDefn(Symbol("assign"), ([]), Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))), true) +//│ > FunDefn(Symbol("tup1"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) +//│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false), true) +//│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) +//│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) +//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) //│ x = [1, 2, 3] class Outside(a) @@ -43,10 +43,10 @@ staged module ClassInstrumentation with fun app2() = Inside(1, 2) //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) //│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) -//│ > FunDefn(Symbol("inst1_gen"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("inst2_gen"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) -//│ > FunDefn(Symbol("app1_gen"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("app2_gen"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) +//│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) +//│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) module Nonstaged with fun f() = 1 @@ -56,16 +56,16 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > FunDefn(Symbol("f_gen"), ([]), Return(Lit(1), false), true) -//│ > FunDefn(Symbol("call_gen"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))), true) +//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) +//│ > FunDefn(Symbol("call"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))), true) staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z -//│ > FunDefn(Symbol("f_gen"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) -//│ > FunDefn(Symbol("g_gen"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) +//│ > FunDefn(Symbol("f"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) +//│ > FunDefn(Symbol("g"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) staged module OtherBlocks with fun scope() = @@ -78,8 +78,8 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > FunDefn(Symbol("scope_gen"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel_gen"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) +//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) // debug printing fails, collision with class name? :fixme From 1c86af0660eec18f63b14a7c71351d7bffade6f6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 28 Jan 2026 00:46:16 +0800 Subject: [PATCH 272/654] remove parameters from instrumentation function _instr function only returns the block IR, whereas _gen functions will include the shape propagation --- .../scala/hkmc2/codegen/Instrumentation.scala | 38 ++++++++----------- .../test/mlscript/block-staging/Functions.mls | 6 +-- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 2735bad2c7..b596558f61 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -272,36 +272,30 @@ class InstrumentationImpl(using State): // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, Block) = - val genSymName = f.sym.nme + "_gen" + val genSymName = f.sym.nme + "_instr" val genSym = BlockMemberSymbol(genSymName, Nil, false) val sym = modSym.asPath.selSN(genSymName) // NOTE: this debug printing only works for top-level modules, nested modules don't work - // maintain parameter names for debugging - val debug = - f.params.map( - _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply - ).collectApply: paramListSyms => - def callCont(k: Path => Block) = - paramListSyms.foldRight(k)((syms, cont) => - path => - syms.map(sym => blockCtor("ValueRef", Ls(sym))).collectApply: args => - call(path, args)(cont) - )(sym) - callCont: body => + + // turn into fundefn + val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_instr")) + val argSyms = f.params.flatMap(_.params).map(_.sym) + val newBody = + val rest = transformBlock(f.body)(using new HashMap): body => + // maintain parameter names in instrumented code + f.params.map( + _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply + ).collectApply: paramListSyms => blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => paramListSyms.map(tuple(_)).collectApply: tups => tuple(tups): tup => blockCtor("FunDefn", Ls(sym, tup, body, toValue(true))): block => - // TODO: remove it. only for test - fnPrintCode(block)(End()) + Return(block, false) + Scoped(Set(argSyms*), rest) - // turn intro fundefn - val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_gen")) - val args = f.params.flatMap(_.params).map(_.sym) - val newBody = - given Context = HashMap(args.map(s => Value.Ref(s, N) -> Value.Ref(s, N))*) - transformBlock(f.body)(Return(_, false)) - val newFun = f.copy(sym = genSym, dSym = dSym, body = newBody)(false) + // TODO: remove it. only for test + val debug = call(sym, Nil)(fnPrintCode(_)(End())) + val newFun = f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) (newFun, debug) // TODO: rename as InstrumentationTransformer? diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e2376aa987..a44e994b1d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -79,14 +79,14 @@ staged module OtherBlocks with 3 then 0 else 0 //│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) // debug printing fails, collision with class name? :fixme class A() staged module A with fun f() = 1 -//│ ═══[RUNTIME ERROR] TypeError: A1.f_gen is not a function +//│ ═══[RUNTIME ERROR] TypeError: A1.f_instr is not a function // debug printing fails, unable to reference the class when calling the instrumented function :fixme @@ -99,4 +99,4 @@ module A with //│ ║ ^^^^^^ //│ ║ l.95: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ -//│ > FunDefn(Symbol("f_gen"), ([]), Return(Lit(1), false), true) +//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) From 102ce5a7258853d02b7d44f9ef6d25f44865e17c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 14 Jan 2026 15:04:54 +0800 Subject: [PATCH 273/654] declare cache for staged modules --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b596558f61..cca171a18d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -317,13 +317,25 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val (stagedMethods, debugPrintCode) = companion.methods .map(impl.transformFunDefn(sym, _)) .unzip +// add cache for specialized functions in each staged module + val cacheSym = BlockMemberSymbol("cache", Nil, true) + val cacheTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("cache")) + // initialize cache for the module + def cacheDecl(rest: Block) = + val tmp = TempSymbol(N, "tmp") + val mapInit = Instantiate(mut = false, Select(Value.Ref(State.globalThisSymbol), Tree.Ident("Map"))(N), Nil) + Assign(tmp, mapInit, Define(ValDefn(cacheTsym, cacheSym, Value.Ref(tmp)), rest)) val unit = Select(Value.Ref(State.runtimeSymbol), Tree.Ident("Unit"))(N) val debugBlock = debugPrintCode.foldRight(Return(unit, true))(concat) def debugCont(rest: Block) = Begin(debugBlock, rest) val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => debugCont(End())) - val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) + val newCompanion = companion.copy( + methods = companion.methods ++ stagedMethods, + ctor = cacheDecl(newCtor), + publicFields = cacheSym -> cacheTsym :: companion.publicFields + ) val newModule = c.copy(sym = sym, companion = S(newCompanion)) Define(newModule, rest) case b => b From 7c020d628709b17d79c2aba848e428aabb99cbaf Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 14 Jan 2026 16:18:16 +0800 Subject: [PATCH 274/654] collect calls to staged functions --- .../scala/hkmc2/codegen/Instrumentation.scala | 100 +++++++++------ .../test/mlscript/block-staging/DefCtx.mls | 114 ++++++++++++++++++ 2 files changed, 177 insertions(+), 37 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index cca171a18d..33a8f82535 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -4,7 +4,7 @@ package codegen import utils.* import hkmc2.Message.MessageContext -import scala.collection.mutable.HashMap +import scala.collection.mutable.{HashMap, HashSet} import scala.util.chaining._ import mlscript.utils.*, shorthands.* @@ -16,11 +16,26 @@ import syntax.{Literal, Tree} // it should be possible to cache some common constructions (End, Option) into the context // this avoids having to rebuild the same shapes everytime they are needed +case class Context(cache: HashMap[Path, Path], defs: HashMap[Path, (Path => Block) => Block]): + def getCache(p: Path): Option[Path] = cache.get(p) + def addCache(p: Path, v: Path): Context = Context(cache.clone() += (p -> v), defs) + def delCache(p: Path): Context = Context(cache.clone() -= p, defs) + // TODO: the paths for the definitions will be defined at the constructor of the module, is it possible to reference the value at the ctor? + def addDef(p: Path, d: (Path => Block) => Block): Context = Context(cache, defs.clone() += (p -> d)) + +extension [A, B](ls: Iterable[(A => B) => B]) + def collectApply(f: Ls[A] => B): B = + // defer applying k while prepending new elements to the list + ls.foldRight((_: Ls[A] => B)(Nil))((headCont, tailCont) => + k => + headCont: head => + tailCont: tail => + k(head :: tail) + )(f) // transform Block to Block IR so that it can be instrumented in mlscript class InstrumentationImpl(using State): type ArgWrappable = Path | Symbol - type Context = HashMap[Path, Path] def asArg(x: ArgWrappable): Arg = x match @@ -36,16 +51,6 @@ class InstrumentationImpl(using State): case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) - extension [A, B](ls: Ls[(A => B) => B]) - def collectApply(f: Ls[A] => B): B = - // defer applying k while prepending new elements to the list - ls.foldRight((_: Ls[A] => B)(Nil))((headCont, tailCont) => - k => - headCont: head => - tailCont: tail => - k(head :: tail) - )(f) - // helpers for constructing Block def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = @@ -111,10 +116,10 @@ class InstrumentationImpl(using State): def ruleBranches(x: Path, p: Path, arms: Ls[Case -> Block], dflt: Opt[Block], symName: String = "branches")(using Context)(k: (Path, Context) => Block): Block = def applyRuleBranch(cse: Case, block: Block)(f: Path => Context => Block)(ctx: Context): Block = transformCase(cse): cse => - transformBlock(block)(using ctx.clone() += p -> x): (y, ctx) => + transformBlock(block)(using ctx.addCache(p, x)): (y, ctx) => // TODO: use Arm type instead of Tup tuple(Ls(cse, y), "branch"): cde => - f(cde)(ctx.clone() -= p) + f(cde)(ctx.delCache(p)) (arms.map(applyRuleBranch).collectApply(_: Ls[Path] => Context => Block)(summon)): arms => ctx => @@ -124,8 +129,8 @@ class InstrumentationImpl(using State): def dfltStaged(k: (Path, Context) => Block) = dflt match case S(dflt) => - transformBlock(dflt)(using ctx.clone() += p -> x): (dflt, ctx) => - optionSome(dflt)(k(_, ctx.clone() -= p)) + transformBlock(dflt)(using ctx.addCache(p, x)): (dflt, ctx) => + optionSome(dflt)(k(_, ctx.delCache(p))) case N => optionNone()(k(_, ctx)) dfltStaged: (dflt, ctx) => blockCtor("Match", Ls(x, arms, dflt, e), symName)(k(_, ctx)) @@ -134,7 +139,7 @@ class InstrumentationImpl(using State): def transformPath(p: Path)(using ctx: Context)(k: Path => Block): Block = // rulePath - ctx.get(p).map(k).getOrElse: + ctx.getCache(p).map(k).getOrElse: p match case Value.Ref(l, disamb) => transformSymbol(disamb.getOrElse(l)): sym => @@ -155,20 +160,20 @@ class InstrumentationImpl(using State): blockCtor("DynSelect", Ls(x, y, toValue(arrayIdx)), "dynsel")(k) case _ => ??? // not supported - def transformResult(r: Result)(using Context)(k: Path => Block): Block = + def transformResult(r: Result)(using ctx: Context)(k: (Path, Context) => Block): Block = r match - case p: Path => transformPath(p)(k) + case p: Path => transformPath(p)(k(_, ctx)) case Tuple(mut, elems) => assert(!mut, "mutable tuple not supported") transformArgs(elems): xs => tuple(xs.map(_._1)): codes => - blockCtor("Tuple", Ls(codes), "tup")(k) + blockCtor("Tuple", Ls(codes), "tup")(k(_, ctx)) case Instantiate(mut, cls, args) => assert(!mut, "mutable instantiation not supported") transformArgs(args): xs => transformPath(cls): cls => tuple(xs.map(_._1)): codes => - blockCtor("Instantiate", Ls(cls, codes), "inst")(k) + blockCtor("Instantiate", Ls(cls, codes), "inst")(k(_, ctx)) case Call(fun, args) => val stagedFunPath = fun match @@ -183,11 +188,12 @@ class InstrumentationImpl(using State): }) case _ => N + val newCtx = if stagedFunPath.isDefined then ctx.addDef(fun, transformPath(fun)) else ctx val newFun = stagedFunPath.getOrElse(fun) - transformPath(newFun): fun => + transformPath(newFun): stagedFun => transformArgs(args): args => tuple(args.map(_._1)): tup => - blockCtor("Call", Ls(fun, tup), "app")(k) + blockCtor("Call", Ls(stagedFun, tup), "app")(k(_, newCtx)) case _ => ??? // not supported def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = @@ -220,17 +226,26 @@ class InstrumentationImpl(using State): def transformBlock(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)((p, _) => k(p)) + // TODO: there is probably a better way to extract the function definitions... + def transformBlockWithDefs(b: Block)(using Context)(k: Path => Block): (Block, HashMap[Path, (Path => Block) => Block]) = + var defs = new HashMap[Path, (Path => Block) => Block]() + val block = transformBlock(b)((p, ctx) => + defs = ctx.defs + k(p) + ) + (block, defs) + def transformBlock(b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = b match case Return(res, implct) => - transformResult(res): x => + transformResult(res): (x, ctx) => blockCtor("Return", Ls(x, toValue(implct)), "return")(k(_, ctx)) case Assign(x, r, b) => - transformResult(r): y => + transformResult(r): (y, ctx) => transformSymbol(x): xSym => blockCtor("ValueRef", Ls(xSym)): xStaged => (Assign(x, xStaged, _)): - given Context = ctx.clone() += x.asPath -> xStaged + given Context = ctx.addCache(x.asPath, xStaged) transformBlock(b): (z, ctx) => blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) case Define(cls: ClsLikeDefn, rest) => @@ -271,7 +286,7 @@ class InstrumentationImpl(using State): // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead - def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, Block) = + def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, HashMap[Path, (Path => Block) => Block], Block) = val genSymName = f.sym.nme + "_instr" val genSym = BlockMemberSymbol(genSymName, Nil, false) val sym = modSym.asPath.selSN(genSymName) @@ -280,8 +295,8 @@ class InstrumentationImpl(using State): // turn into fundefn val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_instr")) val argSyms = f.params.flatMap(_.params).map(_.sym) - val newBody = - val rest = transformBlock(f.body)(using new HashMap): body => + val (newBody, defs) = + val (rest, defs) = transformBlockWithDefs(f.body)(using Context(new HashMap(), new HashMap())): body => // maintain parameter names in instrumented code f.params.map( _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply @@ -291,12 +306,12 @@ class InstrumentationImpl(using State): tuple(tups): tup => blockCtor("FunDefn", Ls(sym, tup, body, toValue(true))): block => Return(block, false) - Scoped(Set(argSyms*), rest) + (Scoped(Set(argSyms*), rest), defs) // TODO: remove it. only for test val debug = call(sym, Nil)(fnPrintCode(_)(End())) val newFun = f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) - (newFun, debug) + (newFun, defs, debug) // TODO: rename as InstrumentationTransformer? class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): @@ -314,26 +329,37 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case Define(c: ClsLikeDefn, rest) if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => val sym = c.sym.subst val companion = c.companion.get - val (stagedMethods, debugPrintCode) = companion.methods + val (stagedMethods, defsList, debugPrintCode) = companion.methods .map(impl.transformFunDefn(sym, _)) - .unzip -// add cache for specialized functions in each staged module + .unzip3 + + // add cache for specialized functions in each staged module val cacheSym = BlockMemberSymbol("cache", Nil, true) val cacheTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("cache")) // initialize cache for the module def cacheDecl(rest: Block) = val tmp = TempSymbol(N, "tmp") val mapInit = Instantiate(mut = false, Select(Value.Ref(State.globalThisSymbol), Tree.Ident("Map"))(N), Nil) - Assign(tmp, mapInit, Define(ValDefn(cacheTsym, cacheSym, Value.Ref(tmp)), rest)) + Scoped(Set(tmp), Assign(tmp, mapInit, Define(ValDefn(cacheTsym, cacheSym, Value.Ref(tmp)), rest))) val unit = Select(Value.Ref(State.runtimeSymbol), Tree.Ident("Unit"))(N) val debugBlock = debugPrintCode.foldRight(Return(unit, true))(concat) def debugCont(rest: Block) = Begin(debugBlock, rest) - val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => debugCont(End())) + + val (newCtor, defs) = impl.transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) + val allDefs = defsList.fold(defs)((l, r) => l ++ r) + val defCtxSym = BlockMemberSymbol("defCtx", Nil, true) + val defCtxTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("defCtx")) + def defCtxDecl(rest: Block) = + allDefs.values.collectApply: defs => + impl.tuple(defs): defCtxInit => + Define(ValDefn(defCtxTsym, defCtxSym, defCtxInit), rest) + + // used for staging classes inside modules val newCompanion = companion.copy( methods = companion.methods ++ stagedMethods, - ctor = cacheDecl(newCtor), + ctor = defCtxDecl(cacheDecl(newCtor)), publicFields = cacheSym -> cacheTsym :: companion.publicFields ) val newModule = c.copy(sym = sym, companion = S(newCompanion)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls new file mode 100644 index 0000000000..cc5d2b4522 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -0,0 +1,114 @@ +:js +:staging + +staged module A with + fun f() = 1 + fun g(x) = x +//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) +//│ > FunDefn(Symbol("g"), ([Symbol("x")]), Return(Ref(Symbol("x")), false), true) + +module C with + fun h() = 0 + +fun i() = 2 + +// :lot +:sjs +staged module B with + fun a() = A.f() + fun b() = C.h() + fun c() = i() +//│ JS (unsanitized): +//│ let B1; +//│ (class B { +//│ static { +//│ B1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static { +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, end, tmp6, sym, var1, sym1, sel, tmp7; +//│ sym = globalThis.Object.freeze(new Block.Symbol("A")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("f")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp7 = globalThis.Object.freeze([ +//│ sel +//│ ]); +//│ this.defCtx = tmp7; +//│ tmp6 = globalThis.Object.freeze(new globalThis.Map()); +//│ this.cache = tmp6; +//│ end = globalThis.Object.freeze(new Block.End()); +//│ tmp = B1.a_instr(); +//│ tmp1 = Block.printCode(tmp); +//│ tmp2 = B1.b_instr(); +//│ tmp3 = Block.printCode(tmp2); +//│ tmp4 = B1.c_instr(); +//│ tmp5 = Block.printCode(tmp4); +//│ runtime.Unit; +//│ } +//│ static a() { +//│ return A1.f() +//│ } +//│ static b() { +//│ return C1.h() +//│ } +//│ static c() { +//│ return i() +//│ } +//│ static a_instr() { +//│ let sym, var1, tmp, sel, tmp1, app, return1, tmp2, tmp3, tmp4, tmp5; +//│ sym = globalThis.Object.freeze(new Block.Symbol("A")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ tmp = globalThis.Object.freeze(new Block.Symbol("f_gen")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, tmp)); +//│ tmp1 = globalThis.Object.freeze([]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp1)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ tmp2 = globalThis.Object.freeze(new Block.Symbol("a")); +//│ tmp3 = globalThis.Object.freeze([]); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ tmp5 = globalThis.Object.freeze(new Block.FunDefn(tmp2, tmp4, return1, true)); +//│ return tmp5 +//│ } +//│ static b_instr() { +//│ let sym, var1, sym1, sel, tmp, app, return1, tmp1, tmp2, tmp3, tmp4; +//│ sym = globalThis.Object.freeze(new Block.Symbol("C")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("h")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp = globalThis.Object.freeze([]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ tmp1 = globalThis.Object.freeze(new Block.Symbol("b")); +//│ tmp2 = globalThis.Object.freeze([]); +//│ tmp3 = globalThis.Object.freeze([ +//│ tmp2 +//│ ]); +//│ tmp4 = globalThis.Object.freeze(new Block.FunDefn(tmp1, tmp3, return1, true)); +//│ return tmp4 +//│ } +//│ static c_instr() { +//│ let sym, var1, tmp, app, return1, tmp1, tmp2, tmp3, tmp4; +//│ sym = globalThis.Object.freeze(new Block.Symbol("i")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ tmp = globalThis.Object.freeze([]); +//│ app = globalThis.Object.freeze(new Block.Call(var1, tmp)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ tmp1 = globalThis.Object.freeze(new Block.Symbol("c")); +//│ tmp2 = globalThis.Object.freeze([]); +//│ tmp3 = globalThis.Object.freeze([ +//│ tmp2 +//│ ]); +//│ tmp4 = globalThis.Object.freeze(new Block.FunDefn(tmp1, tmp3, return1, true)); +//│ return tmp4 +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "B"]; +//│ }); +//│ > FunDefn(Symbol("a"), ([]), Return(Call(Select(Ref(Symbol("A")), Symbol("f_gen")), []), false), true) +//│ > FunDefn(Symbol("b"), ([]), Return(Call(Select(Ref(Symbol("C")), Symbol("h")), []), false), true) +//│ > FunDefn(Symbol("c"), ([]), Return(Call(Ref(Symbol("i")), []), false), true) From 08ad01a6111dbff44e98df40f899751cf8788cf5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 28 Jan 2026 16:06:51 +0800 Subject: [PATCH 275/654] make printout for cache and defCtx --- .../scala/hkmc2/codegen/Instrumentation.scala | 9 +- .../test/mlscript/block-staging/DefCtx.mls | 100 ++---------------- 2 files changed, 15 insertions(+), 94 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 33a8f82535..2d0b024972 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -345,7 +345,14 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val unit = Select(Value.Ref(State.runtimeSymbol), Tree.Ident("Unit"))(N) val debugBlock = debugPrintCode.foldRight(Return(unit, true))(concat) def debugCont(rest: Block) = - Begin(debugBlock, rest) + val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") + val tmp = TempSymbol(N, "tmp") + val cacheCall = Call(printFun, Ls(Arg(N, sym.asPath.selSN("cache"))))(false, false, false) + val debug = impl.assign(cacheCall): _ => + impl.assign(Call(sym.asPath.selSN("defCtx").selSN("toString"), Nil)(false, false, false)): str => + impl.assign(Call(printFun, Ls(Arg(N, str)))(false, false, false))(_ => rest) + + Begin(debugBlock, Scoped(Set(tmp), debug)) val (newCtor, defs) = impl.transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) val allDefs = defsList.fold(defs)((l, r) => l ++ r) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index cc5d2b4522..994f20e491 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -6,109 +6,23 @@ staged module A with fun g(x) = x //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) //│ > FunDefn(Symbol("g"), ([Symbol("x")]), Return(Ref(Symbol("x")), false), true) +//│ > Map(0) {} +//│ > module C with fun h() = 0 fun i() = 2 -// :lot -:sjs staged module B with fun a() = A.f() fun b() = C.h() fun c() = i() -//│ JS (unsanitized): -//│ let B1; -//│ (class B { -//│ static { -//│ B1 = this -//│ } -//│ constructor() { -//│ runtime.Unit; -//│ } -//│ static { -//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, end, tmp6, sym, var1, sym1, sel, tmp7; -//│ sym = globalThis.Object.freeze(new Block.Symbol("A")); -//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); -//│ sym1 = globalThis.Object.freeze(new Block.Symbol("f")); -//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); -//│ tmp7 = globalThis.Object.freeze([ -//│ sel -//│ ]); -//│ this.defCtx = tmp7; -//│ tmp6 = globalThis.Object.freeze(new globalThis.Map()); -//│ this.cache = tmp6; -//│ end = globalThis.Object.freeze(new Block.End()); -//│ tmp = B1.a_instr(); -//│ tmp1 = Block.printCode(tmp); -//│ tmp2 = B1.b_instr(); -//│ tmp3 = Block.printCode(tmp2); -//│ tmp4 = B1.c_instr(); -//│ tmp5 = Block.printCode(tmp4); -//│ runtime.Unit; -//│ } -//│ static a() { -//│ return A1.f() -//│ } -//│ static b() { -//│ return C1.h() -//│ } -//│ static c() { -//│ return i() -//│ } -//│ static a_instr() { -//│ let sym, var1, tmp, sel, tmp1, app, return1, tmp2, tmp3, tmp4, tmp5; -//│ sym = globalThis.Object.freeze(new Block.Symbol("A")); -//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); -//│ tmp = globalThis.Object.freeze(new Block.Symbol("f_gen")); -//│ sel = globalThis.Object.freeze(new Block.Select(var1, tmp)); -//│ tmp1 = globalThis.Object.freeze([]); -//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp1)); -//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); -//│ tmp2 = globalThis.Object.freeze(new Block.Symbol("a")); -//│ tmp3 = globalThis.Object.freeze([]); -//│ tmp4 = globalThis.Object.freeze([ -//│ tmp3 -//│ ]); -//│ tmp5 = globalThis.Object.freeze(new Block.FunDefn(tmp2, tmp4, return1, true)); -//│ return tmp5 -//│ } -//│ static b_instr() { -//│ let sym, var1, sym1, sel, tmp, app, return1, tmp1, tmp2, tmp3, tmp4; -//│ sym = globalThis.Object.freeze(new Block.Symbol("C")); -//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); -//│ sym1 = globalThis.Object.freeze(new Block.Symbol("h")); -//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); -//│ tmp = globalThis.Object.freeze([]); -//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp)); -//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); -//│ tmp1 = globalThis.Object.freeze(new Block.Symbol("b")); -//│ tmp2 = globalThis.Object.freeze([]); -//│ tmp3 = globalThis.Object.freeze([ -//│ tmp2 -//│ ]); -//│ tmp4 = globalThis.Object.freeze(new Block.FunDefn(tmp1, tmp3, return1, true)); -//│ return tmp4 -//│ } -//│ static c_instr() { -//│ let sym, var1, tmp, app, return1, tmp1, tmp2, tmp3, tmp4; -//│ sym = globalThis.Object.freeze(new Block.Symbol("i")); -//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); -//│ tmp = globalThis.Object.freeze([]); -//│ app = globalThis.Object.freeze(new Block.Call(var1, tmp)); -//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); -//│ tmp1 = globalThis.Object.freeze(new Block.Symbol("c")); -//│ tmp2 = globalThis.Object.freeze([]); -//│ tmp3 = globalThis.Object.freeze([ -//│ tmp2 -//│ ]); -//│ tmp4 = globalThis.Object.freeze(new Block.FunDefn(tmp1, tmp3, return1, true)); -//│ return tmp4 -//│ } -//│ toString() { return runtime.render(this); } -//│ static [definitionMetadata] = ["class", "B"]; -//│ }); + fun d() = A.g(1) //│ > FunDefn(Symbol("a"), ([]), Return(Call(Select(Ref(Symbol("A")), Symbol("f_gen")), []), false), true) //│ > FunDefn(Symbol("b"), ([]), Return(Call(Select(Ref(Symbol("C")), Symbol("h")), []), false), true) //│ > FunDefn(Symbol("c"), ([]), Return(Call(Ref(Symbol("i")), []), false), true) +//│ > FunDefn(Symbol("d"), ([]), Return(Call(Select(Ref(Symbol("A")), Symbol("g_gen")), [Lit(1)]), false), true) +//│ > Map(0) {} +//│ > Select(ValueRef(Symbol("A")), Symbol("g")),Select(ValueRef(Symbol("A")), Symbol("f")) + From 3c5324854f33efb046aef2e6f4656770c4007334 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 28 Jan 2026 17:37:58 +0800 Subject: [PATCH 276/654] update static --- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index bbef5eca65..7ca79de121 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -76,8 +76,9 @@ fun sel(s1: Shape, s2: Shape): Array[Shape] = fun static(s: Shape) = if s is Dyn then false - Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? - Class(_, params) then params.every(static) + Lit(l) then true + Class(sym, []) then isPrimitiveType(sym) + Class(sym, params) then params.every(static) Arr(shapes, false) then shapes.every(static) Arr(shapes, true) then false // TODO From f14945625178c16b9e2b2fcedd76a66ea35269d4 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 28 Jan 2026 21:39:23 +0800 Subject: [PATCH 277/654] call _gen to retrieve result and shape --- .../src/test/mlscript-compile/ShapeSet.mls | 60 ++++++-------- .../test/mlscript/block-staging/ShapeProp.mls | 78 ++++++++++++++----- 2 files changed, 83 insertions(+), 55 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index d89ad05572..8649ba84e1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -63,7 +63,8 @@ fun mkArr(shapes: Array[ShapeSet], inf: Bool) = |> liftMany fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = - params.map(_.underlying.values().toArray()) + params + .map(_.underlying.values().toArray()) |> prod .map(Class(sym, _)) |> liftMany @@ -86,6 +87,7 @@ fun static(s: ShapeSet) = 1 then Shape.static(v.0) else false +fun valOf(s : ShapeSet) = ??? // fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = // let rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) @@ -123,7 +125,8 @@ class DefCtx(val defs: Map[String, Block]) with module DefCtx with fun empty = DefCtx(new Map()) -class Cache(val underlying: Map[String, [Block, Shape]]) with + +class Cache(val underlying: Map[String, [Shape, Symbol, FunDefn]]) with fun key(f, args) = showPath(f) + "(" + args.map(s => s.toString()).join(",") + ")" fun get(f, args) = @@ -147,34 +150,20 @@ fun sop(ctx, p: Path): ShapeSet = fun sor(defs, ctx, cache, r: Result) = if r is - Path then [r, sop(ctx, r), cache] + Path then [r, sop(ctx, r)] Instantiate(cls, args) then let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("Instantiate with non-ClassSymbol") - [r, mkClass(sym, args.map(a => sop(ctx, a.value))), cache] - Tuple(elems) then [r, mkArr(elems.map(a => sop(ctx, a.value)), false), cache] + [r, mkClass(sym, args.map(a => sop(ctx, a.value)))] + Tuple(elems) then [r, mkArr(elems.map(a => sop(ctx, a.value)), false)] Call(f, args) then - fun lit(l) = [ValueLit(l), mkLit(l), cache] + fun lit(l) = [ValueLit(l), mkLit(l)] let argShapes = args.map(a => sop(ctx, a.value)) - let shapeStr = argShapes.map(s => s.toString()).join("_") - let def = if f is ValueRef(s) then defs.get(s) else None + let def = if f is ValueRef(symb) then defs.get(symb) else None if def is - Some(FunDefn(sym, params, body, true)) then // staged - let implSym = Symbol(sym.name + "_" + shapeStr) - if cache.get(f, argShape) is Some([_, s]) then // specialized function cached - [Call(ValueRef(implSym), args), s, cache] - else - let genName = sym.name + "_gen" - if defs.get(Symbol(genName)) is Some(FunDefn(genSym, genParams, genBody, _)) then - let genCtx = ctx.nest - if genParams.length > 0 then - genParams.0.forEach((p, i) => - genCtx.add(ValueRef(p), mkLit(argShapes.(i))) - ) - if prop(defs, genCtx, cache, genBody) is [resBlock, resShape, _] then - cache.add(implSym, [FunDefn(implSym, params, resBlock, false), resShape]) - [Call(ValueRef(implSym), args), mkDyn(), cache] - else [r, mkDyn(), cache] - else [r, mkDyn(), cache] + Some(FunDefn(sym, _, _, true)) then + let genSym = Symbol(sym.name + "_gen") + if Call(ValueRef(genSymb), argShapes) is [shape, implSymb] then + [Call(ValueRef(implSymb), args), shape] // Some(FunDefn(sym, params, body, false)) then // if argShapes.forall(static) then // let staticCtx = ctx.nest @@ -186,9 +175,9 @@ fun sor(defs, ctx, cache, r: Result) = if r is // [res, resShape, cache] // else [r, mkDyn(), cache] // else [r, mkDyn(), cache] - None and f is ValueRef(s) and + None and + let name = if f is ValueRef(symb) then symb.name args is - let name = s.name [x] and sop(ctx, x.value).values() is [Shape.Lit(l)] and name is "!" then lit(not l) "-" then lit(-l) @@ -209,7 +198,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is "!==" then lit(l1 !== l2) "&&" then lit(l1 && l2) "||" then lit(l1 || l2) - else [r, mkDyn(), cache] + else [r, mkDyn()] // Call(f, args) and // let k = [f, args.map(sop(ctx, _))] @@ -226,9 +215,9 @@ fun sor(defs, ctx, cache, r: Result) = if r is // then [Call(f1, args), s] fun prop(defs, ctx, cache, b: Block) = if b is - End then [b, mkBot(), cache] - Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s1, cache1] then - [Return(r1, implct), s1, cache1] + End then [b, mkBot()] + Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s1] then + [Return(r1, implct), s1] // TODO: let syntax, presumably for Scoped Scoped(symbols, rest) then // just set all shape to bottom? symbols.forEach((x, i, arr) => ctx.add(ValueRef(x), mkBot())) @@ -237,9 +226,9 @@ fun prop(defs, ctx, cache, b: Block) = if b is Label(labelSymbol, loop, body, rest) then ??? Break(labelSymbol) then ??? Assign(x, r, b) and - sor(defs, ctx, cache, r) is [r1, s1, cache1] then - if prop(defs, ctx.update(ValueRef(x), union(ctx.get(ValueRef(x)).value, s1)), cache, b) is [b2, s2, cache2] then - [Assign(x, r1, b2), s2, cache2] + sor(defs, ctx, cache, r) is [r1, s1] then + if prop(defs, ctx.update(ValueRef(x), union(ctx.get(ValueRef(x)).value, s1)), cache, b) is [b2, s2] then + [Assign(x, r1, b2), s2] Match(p, arms, dflt, rest) then let s = sop(ctx, p) let filteredArms = fold((r, arm) => @@ -260,7 +249,8 @@ fun prop(defs, ctx, cache, b: Block) = if b is nestCtx.add(p, filteredArms.0) prop(defs, nestCtx, cache, dflt) let newRest = prop(defs, ctx, cache, rest) - [Match(p, filteredArms.2, newDflt.0, newRest.0), union(filteredArms.1, union of newDflt.1, newRest.1), newRest.2] + [Match(p, filteredArms.2, newDflt.0, newRest.0), union(filteredArms.1, union of newDflt.1, newRest.1)] + else print("Hi") // TODO: remove it. this can be done in module static blocks fun exec(defs, ctx, cache, b: Block) = if b is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 4b191262ec..e3e1e0549e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -22,8 +22,14 @@ mkDyn() mkDyn() == mkDyn() //│ = false +mkArr([mkLit(0)], false) +//│ = Arr([Lit(0)], false) + assert(mkBot().isEmpty()) +Shape.static(Shape.Lit("Hi")) +//│ = true + // sel let arrSp = mkArr([mkLit(0), mkDyn()], false) @@ -89,8 +95,6 @@ filter(filterShapes, Tup(4, true)) assert(filter(filterShapes, Tup(0, false)).isEmpty()) -// TODO: Add test for ctx.add - open Block sop(Ctx.empty, ValueLit(42)) @@ -113,7 +117,7 @@ sop(ctx, selPath) //│ C = ClassSymbol("C", Some(["a"])) //│ ctx = Ctx( //│ Map(1) { -//│ "Ref(Symbol(\"x\"))" => Class(ClassSymbol("C", Some(["a"])), [Lit("pass")]) +//│ "ValueRef(Symbol(\"x\"))" => Class(ClassSymbol("C", Some(["a"])), [Lit("pass")]) //│ }, //│ _ //│ ) @@ -121,18 +125,11 @@ sop(ctx, selPath) //│ x = Symbol("x") val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) -let ctx = Ctx.empty -let cache = Cache.empty -let defCtx = DefCtx.empty -sor(defCtx, ctx, cache, tup) +sor(DefCtx.empty, Ctx.empty, Cache.empty, tup) //│ = [ //│ Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]), -//│ Arr([Lit(1), Lit(true)], false), -//│ Cache(Map(0) {}) +//│ Arr([Lit(1), Lit(true)], false) //│ ] -//│ cache = Cache(Map(0) {}) -//│ ctx = Ctx(Map(0) {}, _) -//│ defCtx = DefCtx(Map(0) {}) //│ tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) let c = ClassSymbol("C", Some([Symbol("p")])) @@ -143,8 +140,7 @@ sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) //│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), //│ [Arg(None, ValueLit(123))] //│ ), -//│ Class(ClassSymbol("C", Some([Symbol("p")])), [Lit(123)]), -//│ Cache(Map(0) {}) +//│ Class(ClassSymbol("C", Some([Symbol("p")])), [Lit(123)]) //│ ] //│ c = ClassSymbol("C", Some([Symbol("p")])) //│ inst = Instantiate( @@ -191,14 +187,9 @@ testUnaryOp("!", true) testUnaryOp("~", 10) //│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' - let c = Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(ValueRef(Symbol("+")), [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(ValueRef(Symbol("+")), [Arg(None, ValueRef(Symbol("tmp"))), Arg(None, ValueLit(1))]), false))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ = [ -//│ Assign(Symbol("tmp"), ValueLit(2), Return(ValueLit(3), false)), -//│ Lit(3), -//│ Cache(Map(0) {}) -//│ ] +//│ = [Assign(Symbol("tmp"), ValueLit(2), Return(ValueLit(3), false)), Lit(3)] //│ c = Scoped( //│ [Symbol("tmp")], //│ Assign( @@ -216,3 +207,50 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ ) //│ ) //│ ) + +let c = Scoped([Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(9), Match(ValueRef(Symbol("scrut")), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Return(ValueLit(0), false), End()))) +prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ = [ +//│ Assign( +//│ Symbol("scrut"), +//│ ValueLit(9), +//│ Match(ValueRef(Symbol("scrut")), [], Return(ValueLit(0), false), End()) +//│ ), +//│ Lit(0) +//│ ] +//│ c = Scoped( +//│ [Symbol("scrut")], +//│ Assign( +//│ Symbol("scrut"), +//│ ValueLit(9), +//│ Match( +//│ ValueRef(Symbol("scrut")), +//│ [ +//│ [ +//│ Cls( +//│ ClassSymbol("Bool", None), +//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) +//│ ), +//│ Return(ValueLit(1), false) +//│ ], +//│ [Lit(8), Return(ValueLit(2), false)], +//│ [ +//│ Cls( +//│ ClassSymbol("Int", None), +//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) +//│ ), +//│ Return(ValueLit(3), false) +//│ ] +//│ ], +//│ Return(ValueLit(0), false), +//│ End() +//│ ) +//│ ) +//│ ) + + +filter(mkLit(9), Cls( + ClassSymbol("Bool", None), + Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) + )) +//│ = From 083731f6d669fe448619adb4f147d2a5f7ba3245 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:31:02 +0800 Subject: [PATCH 278/654] remove _gen replacement in block IR (again) --- .../scala/hkmc2/codegen/Instrumentation.scala | 19 ++++++++----------- .../test/mlscript/block-staging/DefCtx.mls | 6 +++--- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 2d0b024972..16ccc7f69d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -175,22 +175,19 @@ class InstrumentationImpl(using State): tuple(xs.map(_._1)): codes => blockCtor("Instantiate", Ls(cls, codes), "inst")(k(_, ctx)) case Call(fun, args) => - val stagedFunPath = + val isStagedFun: Boolean = fun match - case s @ Select(qual, Tree.Ident(name)) => s.symbol.flatMap({ - case t: TermSymbol => t.owner.flatMap({ + case s @ Select(qual, Tree.Ident(name)) => s.symbol.exists({ + case t: TermSymbol => t.owner.exists({ case sym: DefinitionSymbol[?] => - sym.defn.get.hasStagedModifier.map(_ => - Select(qual, Tree.Ident(name + "_gen"))(N) - ) + sym.defn.get.hasStagedModifier.isDefined }) - case _ => N + case _ => false }) - case _ => N + case _ => false - val newCtx = if stagedFunPath.isDefined then ctx.addDef(fun, transformPath(fun)) else ctx - val newFun = stagedFunPath.getOrElse(fun) - transformPath(newFun): stagedFun => + val newCtx = if isStagedFun then ctx.addDef(fun, transformPath(fun)) else ctx + transformPath(fun): stagedFun => transformArgs(args): args => tuple(args.map(_._1)): tup => blockCtor("Call", Ls(stagedFun, tup), "app")(k(_, newCtx)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index 994f20e491..f47452f802 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -19,10 +19,10 @@ staged module B with fun b() = C.h() fun c() = i() fun d() = A.g(1) -//│ > FunDefn(Symbol("a"), ([]), Return(Call(Select(Ref(Symbol("A")), Symbol("f_gen")), []), false), true) +//│ > FunDefn(Symbol("a"), ([]), Return(Call(Select(Ref(Symbol("A")), Symbol("f")), []), false), true) //│ > FunDefn(Symbol("b"), ([]), Return(Call(Select(Ref(Symbol("C")), Symbol("h")), []), false), true) //│ > FunDefn(Symbol("c"), ([]), Return(Call(Ref(Symbol("i")), []), false), true) -//│ > FunDefn(Symbol("d"), ([]), Return(Call(Select(Ref(Symbol("A")), Symbol("g_gen")), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("d"), ([]), Return(Call(Select(Ref(Symbol("A")), Symbol("g")), [Lit(1)]), false), true) //│ > Map(0) {} -//│ > Select(ValueRef(Symbol("A")), Symbol("g")),Select(ValueRef(Symbol("A")), Symbol("f")) +//│ > Select(ValueRef(Symbol("A")), Symbol("f")),Select(ValueRef(Symbol("A")), Symbol("g")) From 5440c66ac84ff50c43bf89942c11809c97e0f2d4 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 29 Jan 2026 00:34:37 +0800 Subject: [PATCH 279/654] Fix pattern matching prop and add a test case --- .../src/test/mlscript-compile/Block.mls | 24 +++++++++---------- .../test/mlscript/block-staging/ShapeProp.mls | 12 +++------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 77edb30696..5e36d10ef8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -87,8 +87,8 @@ fun showSymbol(s: Symbol) = ClassSymbol(name, args) then "ClassSymbol(" + "\"" + name + "\"" + if args - is Some(args) then ":[" + args.map(showSymbol).join(", ") + "]" - is None then "" + is Some(args) then ", Some([" + args.map(showSymbol).join(", ") + "])" + is None then ", None" + ")" _ then "Symbol(" + "\"" + s.name + "\"" + ")" @@ -101,16 +101,16 @@ fun showPath(p: Path): Str = DynSelect(qual, fld, arrayIdx) then "DynSelect(" + showPath(qual) + ", " + showPath(fld) + ", " + showBool(arrayIdx) + ")" ValueRef(l) then - "Ref(" + showSymbol(l) + ")" + "ValueRef(" + showSymbol(l) + ")" ValueLit(lit) then - "Lit(" + showLiteral(lit) + ")" + "ValueLit(" + showLiteral(lit) + ")" + +fun showOpt(opt: Option) = + if opt is Some(s) then "Some(" + s.toString() + ")" + else "None" fun showArg(arg: Arg) = - if arg.spread is - Some(true) then "..." - Some(false) then ".." - else "" - + showPath(arg.value) + "Arg(" + showOpt(arg.spread) + ", " + showPath(arg.value) + ")" fun showArgs(args: Array[Arg]) = "[" + args.map(showArg).join(", ") + "]" @@ -148,8 +148,8 @@ fun showDefn(d: Defn): Str = fun showOptBlock(ob: Opt[Block]) = if ob is Some(b) then showBlock(b) else "None" -fun showArm(pair: Case -> Block) = - if pair is [cse, body] then showCase(cse) + " -> " + showBlock(body) else "" +fun showArm(pair: [Case, Block]) = + if pair is [cse, body] then "[" + showCase(cse) + ", " + showBlock(body) + "]" else "" fun showBlock(b: Block): Str = if b is @@ -171,7 +171,7 @@ fun showBlock(b: Block): Str = "Label(" + showSymbol(labelSymbol) + ", " + showBool(loop) + ", " + showBlock(body) + ", " + showBlock(rest) + + ")" Break(labelSymbol) then "Break(" + showSymbol(labelSymbol) + ")" - End() then "End" + End() then "End()" fun show(x) = if x is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e3e1e0549e..a13b46cd4c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -210,13 +210,14 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) let c = Scoped([Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(9), Match(ValueRef(Symbol("scrut")), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Return(ValueLit(0), false), End()))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ > //│ = [ //│ Assign( //│ Symbol("scrut"), //│ ValueLit(9), -//│ Match(ValueRef(Symbol("scrut")), [], Return(ValueLit(0), false), End()) +//│ Match(ValueRef(Symbol("scrut")), 1, Return(ValueLit(0), false), End()) //│ ), -//│ Lit(0) +//│ Lit(3) //│ ] //│ c = Scoped( //│ [Symbol("scrut")], @@ -247,10 +248,3 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ ) //│ ) //│ ) - - -filter(mkLit(9), Cls( - ClassSymbol("Bool", None), - Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) - )) -//│ = From b50a8928631b0427b2f386b12d3b444795f428e3 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 29 Jan 2026 00:52:56 +0800 Subject: [PATCH 280/654] fix pattern matching --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 13 ++++++------- .../src/test/mlscript/block-staging/ShapeProp.mls | 9 +++++++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 8649ba84e1..9eb1f53f21 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -229,9 +229,9 @@ fun prop(defs, ctx, cache, b: Block) = if b is sor(defs, ctx, cache, r) is [r1, s1] then if prop(defs, ctx.update(ValueRef(x), union(ctx.get(ValueRef(x)).value, s1)), cache, b) is [b2, s2] then [Assign(x, r1, b2), s2] - Match(p, arms, dflt, rest) then + Match(p, arms, dflt, restBlock) then let s = sop(ctx, p) - let filteredArms = fold((r, arm) => + let filteredArms = foldl((r, arm) => let fs = filter(r.0, arm.0) if fs.isEmpty() then r else @@ -239,18 +239,17 @@ fun prop(defs, ctx, cache, b: Block) = if b is if not p is ValueLit then do // Why is this needed? nestCtx.add(p, fs) let res = prop(defs, nestCtx, cache, arm.1) - [rest(r.0, arm.0), union(r.1, res.1), r.2.push(res.0)] - )([s, mkBot(), []], arms) // rest of shapes, early-returned shapes, filtered arms + [rest(r.0, arm.0), union(r.1, res.1), [...r.2, res.0]] + )([s, mkBot(), []], ...arms) // rest of shapes, early-returned shapes, filtered arms let newDflt = - if filteredArms.0.isEmpty() then dflt + if filteredArms.0.isEmpty() then [dflt, mkBot()] else let nestCtx = ctx.nest if not p is ValueLit then do nestCtx.add(p, filteredArms.0) prop(defs, nestCtx, cache, dflt) - let newRest = prop(defs, ctx, cache, rest) + let newRest = prop(defs, ctx, cache, restBlock) [Match(p, filteredArms.2, newDflt.0, newRest.0), union(filteredArms.1, union of newDflt.1, newRest.1)] - else print("Hi") // TODO: remove it. this can be done in module static blocks fun exec(defs, ctx, cache, b: Block) = if b is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index a13b46cd4c..b49a50f797 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -210,12 +210,16 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) let c = Scoped([Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(9), Match(ValueRef(Symbol("scrut")), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Return(ValueLit(0), false), End()))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ > //│ = [ //│ Assign( //│ Symbol("scrut"), //│ ValueLit(9), -//│ Match(ValueRef(Symbol("scrut")), 1, Return(ValueLit(0), false), End()) +//│ Match( +//│ ValueRef(Symbol("scrut")), +//│ [Return(ValueLit(3), false)], +//│ Return(ValueLit(0), false), +//│ End() +//│ ) //│ ), //│ Lit(3) //│ ] @@ -248,3 +252,4 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ ) //│ ) //│ ) + From eb721d9dc658cf228d050b5907dd397304ba8557 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 29 Jan 2026 12:50:12 +0800 Subject: [PATCH 281/654] Remove label and break --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 3 --- 1 file changed, 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 9eb1f53f21..aa97b3ed85 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -222,9 +222,6 @@ fun prop(defs, ctx, cache, b: Block) = if b is Scoped(symbols, rest) then // just set all shape to bottom? symbols.forEach((x, i, arr) => ctx.add(ValueRef(x), mkBot())) prop(defs, ctx, cache, rest) - // TODO: Label & Break? - Label(labelSymbol, loop, body, rest) then ??? - Break(labelSymbol) then ??? Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s1] then if prop(defs, ctx.update(ValueRef(x), union(ctx.get(ValueRef(x)).value, s1)), cache, b) is [b2, s2] then From 7eb774547da6afe729699e426a7b98ea273d60d8 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 29 Jan 2026 16:13:08 +0800 Subject: [PATCH 282/654] implement specialization algorithm --- .../scala/hkmc2/codegen/Instrumentation.scala | 94 +++++++++++-------- .../scala/hkmc2/semantics/Elaborator.scala | 1 + .../mlscript-compile/SpecializeHelpers.mls | 42 +++++++++ .../test/mlscript/block-staging/DefCtx.mls | 11 +-- .../test/scala/hkmc2/JSBackendDiffMaker.scala | 2 + .../src/test/scala/hkmc2/MLsDiffMaker.scala | 1 + 6 files changed, 104 insertions(+), 47 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 16ccc7f69d..b6835eb7a8 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -20,7 +20,7 @@ case class Context(cache: HashMap[Path, Path], defs: HashMap[Path, (Path => Bloc def getCache(p: Path): Option[Path] = cache.get(p) def addCache(p: Path, v: Path): Context = Context(cache.clone() += (p -> v), defs) def delCache(p: Path): Context = Context(cache.clone() -= p, defs) - // TODO: the paths for the definitions will be defined at the constructor of the module, is it possible to reference the value at the ctor? + // TODO: the paths for the definitions will be defined at the constructor of the module, is it possible to reference the value at the ctor, instead of rebuilding them in the function body? def addDef(p: Path, d: (Path => Block) => Block): Context = Context(cache, defs.clone() += (p -> d)) extension [A, B](ls: Iterable[(A => B) => B]) @@ -33,24 +33,24 @@ extension [A, B](ls: Iterable[(A => B) => B]) k(head :: tail) )(f) +type ArgWrappable = Path | Symbol + +def asArg(x: ArgWrappable): Arg = + x match + case p: Path => p.asArg + case l: Symbol => l.asPath.asArg + +// null and undefined are missing +def toValue(lit: Str | Int | BigDecimal | Bool): Value = + val l = lit match + case i: Int => Tree.IntLit(i) + case b: Bool => Tree.BoolLit(b) + case s: Str => Tree.StrLit(s) + case n: BigDecimal => Tree.DecLit(n) + Value.Lit(l) + // transform Block to Block IR so that it can be instrumented in mlscript class InstrumentationImpl(using State): - type ArgWrappable = Path | Symbol - - def asArg(x: ArgWrappable): Arg = - x match - case p: Path => p.asArg - case l: Symbol => l.asPath.asArg - - // null and undefined are missing - def toValue(lit: Str | Int | BigDecimal | Bool): Value = - val l = lit match - case i: Int => Tree.IntLit(i) - case b: Bool => Tree.BoolLit(b) - case s: Str => Tree.StrLit(s) - case n: BigDecimal => Tree.DecLit(n) - Value.Lit(l) - // helpers for constructing Block def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = @@ -283,14 +283,12 @@ class InstrumentationImpl(using State): // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function // so we pass modSym instead - def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, HashMap[Path, (Path => Block) => Block], Block) = + def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, HashMap[Path, (Path => Block) => Block], (Path => Block) => Block) = val genSymName = f.sym.nme + "_instr" val genSym = BlockMemberSymbol(genSymName, Nil, false) - val sym = modSym.asPath.selSN(genSymName) - // NOTE: this debug printing only works for top-level modules, nested modules don't work // turn into fundefn - val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_instr")) + val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) val argSyms = f.params.flatMap(_.params).map(_.sym) val (newBody, defs) = val (rest, defs) = transformBlockWithDefs(f.body)(using Context(new HashMap(), new HashMap())): body => @@ -298,17 +296,16 @@ class InstrumentationImpl(using State): f.params.map( _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply ).collectApply: paramListSyms => - blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => - paramListSyms.map(tuple(_)).collectApply: tups => - tuple(tups): tup => + paramListSyms.map(tuple(_)).collectApply: tups => + tuple(tups): tup => + blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => blockCtor("FunDefn", Ls(sym, tup, body, toValue(true))): block => Return(block, false) (Scoped(Set(argSyms*), rest), defs) - // TODO: remove it. only for test - val debug = call(sym, Nil)(fnPrintCode(_)(End())) + def pathCont(k: Path => Block) = call(modSym.asPath.selSN(genSymName), Ls())(instr => tuple(Ls(toValue(f.sym.nme), instr))(k)) val newFun = f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) - (newFun, defs, debug) + (newFun, defs, pathCont) // TODO: rename as InstrumentationTransformer? class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): @@ -320,36 +317,57 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case _ => ??? } + def helperMod(name: Str) = summon[State].specializeHelpersSymbol.asPath.selSN(name) + override def applyBlock(b: Block): Block = super.applyBlock(b) match // find modules with staged annotation case Define(c: ClsLikeDefn, rest) if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => val sym = c.sym.subst val companion = c.companion.get - val (stagedMethods, defsList, debugPrintCode) = companion.methods + val (stagedMethods, defsList, cacheTups) = companion.methods .map(impl.transformFunDefn(sym, _)) .unzip3 // add cache for specialized functions in each staged module val cacheSym = BlockMemberSymbol("cache", Nil, true) val cacheTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("cache")) + val cachePath = sym.asPath.selSN("cache") // initialize cache for the module def cacheDecl(rest: Block) = - val tmp = TempSymbol(N, "tmp") - val mapInit = Instantiate(mut = false, Select(Value.Ref(State.globalThisSymbol), Tree.Ident("Map"))(N), Nil) - Scoped(Set(tmp), Assign(tmp, mapInit, Define(ValDefn(cacheTsym, cacheSym, Value.Ref(tmp)), rest))) + cacheTups.collectApply: cacheTups => + impl.tuple(cacheTups): tup => + impl.assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => + impl.assign(Instantiate(mut = false, State.specializeHelpersSymbol.asPath.selSN("FunCache"), Ls(Arg(N, map)))): mapInit => + Define(ValDefn(cacheTsym, cacheSym, mapInit), rest) + + def genMethod(f: FunDefn): FunDefn = + val genSymName = f.sym.nme + "_gen" + val sym = BlockMemberSymbol(genSymName, Nil, false) + val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) + + val body = impl.call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => + // TODO: enforce that the definition will only have one parameter list + f.params.map(ps => impl.tuple(ps.params.map(_.sym))).collectApply: tups => + impl.tuple(tups): tups => + impl.call(State.specializeHelpersSymbol.asPath.selSN("specialize"), Ls(cachePath, instr, tups)): res => + Return(res, false) + f.copy(sym = sym, dSym = dSym, body = body)(false) + val genMethods = companion.methods.map(genMethod) val unit = Select(Value.Ref(State.runtimeSymbol), Tree.Ident("Unit"))(N) - val debugBlock = debugPrintCode.foldRight(Return(unit, true))(concat) + // NOTE: this debug printing only works for top-level modules, nested modules don't work + // TODO: remove this. only for testing def debugCont(rest: Block) = val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") val tmp = TempSymbol(N, "tmp") - val cacheCall = Call(printFun, Ls(Arg(N, sym.asPath.selSN("cache"))))(false, false, false) - val debug = impl.assign(cacheCall): _ => - impl.assign(Call(sym.asPath.selSN("defCtx").selSN("toString"), Nil)(false, false, false)): str => - impl.assign(Call(printFun, Ls(Arg(N, str)))(false, false, false))(_ => rest) + val debug = + impl.assign(Call(cachePath.selSN("toString"), Nil)(false, false, false)): str => + impl.assign(Call(printFun, Ls(Arg(N, str)))(false, false, false)): _ => + impl.assign(Call(sym.asPath.selSN("defCtx").selSN("toString"), Nil)(false, false, false)): str => + impl.assign(Call(printFun, Ls(Arg(N, str)))(false, false, false))(_ => rest) - Begin(debugBlock, Scoped(Set(tmp), debug)) + Scoped(Set(tmp), debug) val (newCtor, defs) = impl.transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) val allDefs = defsList.fold(defs)((l, r) => l ++ r) @@ -362,7 +380,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): // used for staging classes inside modules val newCompanion = companion.copy( - methods = companion.methods ++ stagedMethods, + methods = companion.methods ++ stagedMethods ++ genMethods, ctor = defCtxDecl(cacheDecl(newCtor)), publicFields = cacheSym -> cacheTsym :: companion.publicFields ) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index b8fe976b29..1d8f76ac20 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -256,6 +256,7 @@ object Elaborator: val prettyPrintSymbol = TempSymbol(N, "prettyPrint") val termSymbol = TempSymbol(N, "Term") val blockSymbol = TempSymbol(N, "Block") + val specializeHelpersSymbol = TempSymbol(N, "SpecializeHelpers") val optionSymbol = TempSymbol(N, "option") val wasmSymbol = TempSymbol(N, "wasm") val effectSigSymbol = ClassSymbol(DummyTypeDef(syntax.Cls), Ident("EffectSig")) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls new file mode 100644 index 0000000000..eec661323e --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -0,0 +1,42 @@ +import "./Block.mls" +import "./Shape.mls" +import "./Option.mls" + +open Block +open Shape +open Option + +module SpecializeHelpers with ... + +// FIXME: implement proper mangling +// percent encoding to create valid symbol name +fun specializeName(funName, shapes) = + [... funName + "_" + shapes.toString()] + .map((s, _, _) => if s is + "[" then "_5b" + "]" then "_5d" + "(" then "_28" + ")" then "_29" + "\\" then "_5c" + "\"" then "_22" + " " then "_20" + "," then "_2c" + else s + ).join("") +fun propStub(block, shapes) = [block, Dyn()] + +fun specialize(cache, block, shapes) = if block is FunDefn(Symbol(funName), ps, body, stage) then + // replace function symbol in block definition to new name + let newName = specializeName(funName, shapes) + if cache.getFun(newName) is + Some(x) then x + None then + let newBody = propStub(body, shapes) + cache.setFun(newName, FunDefn(Symbol(newName), ps, newBody, stage)) + +class FunCache(val cache: Map[String, Symbol]) with + fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None + fun setFun(k, v) = + if cache.has(k) + then throw Error("the same specialized function should not be generated twice.") + else cache.set(k, v); v diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index f47452f802..fcd943df46 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -4,9 +4,7 @@ staged module A with fun f() = 1 fun g(x) = x -//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) -//│ > FunDefn(Symbol("g"), ([Symbol("x")]), Return(Ref(Symbol("x")), false), true) -//│ > Map(0) {} +//│ > FunCache(Map(2) {"f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true), "g" => FunDefn(Symbol("g"), [[Symbol("x")]], Return(ValueRef(Symbol("x")), false), true)}) //│ > module C with @@ -19,10 +17,5 @@ staged module B with fun b() = C.h() fun c() = i() fun d() = A.g(1) -//│ > FunDefn(Symbol("a"), ([]), Return(Call(Select(Ref(Symbol("A")), Symbol("f")), []), false), true) -//│ > FunDefn(Symbol("b"), ([]), Return(Call(Select(Ref(Symbol("C")), Symbol("h")), []), false), true) -//│ > FunDefn(Symbol("c"), ([]), Return(Call(Ref(Symbol("i")), []), false), true) -//│ > FunDefn(Symbol("d"), ([]), Return(Call(Select(Ref(Symbol("A")), Symbol("g")), [Lit(1)]), false), true) -//│ > Map(0) {} +//│ > FunCache(Map(4) {"a" => FunDefn(Symbol("a"), [[]], Return(Call(Select(ValueRef(Symbol("A")), Symbol("f")), []), false), true), "b" => FunDefn(Symbol("b"), [[]], Return(Call(Select(ValueRef(Symbol("C")), Symbol("h")), []), false), true), "c" => FunDefn(Symbol("c"), [[]], Return(Call(ValueRef(Symbol("i")), []), false), true), "d" => FunDefn(Symbol("d"), [[]], Return(Call(Select(ValueRef(Symbol("A")), Symbol("g")), [Arg(None, ValueLit(1))]), false), true)}) //│ > Select(ValueRef(Symbol("A")), Symbol("f")),Select(ValueRef(Symbol("A")), Symbol("g")) - diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 48ab073eec..8e69ffa501 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -34,6 +34,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val termNme = baseScp.allocateName(Elaborator.State.termSymbol) val blockNme = baseScp.allocateName(Elaborator.State.blockSymbol) val optionNme = baseScp.allocateName(Elaborator.State.optionSymbol) + val specializationHelpersNme = baseScp.allocateName(Elaborator.State.specializeHelpersSymbol) val definitionMetadataNme = baseScp.allocateName(Elaborator.State.definitionMetadataSymbol) val prettyPrintNme = baseScp.allocateName(Elaborator.State.prettyPrintSymbol) @@ -62,6 +63,7 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: if stageCode.isSet then importRuntimeModule(blockNme, blockFile) importRuntimeModule(optionNme, optionFile) + importRuntimeModule(specializationHelpersNme, specializeHelpersFile) h private var hostCreated = false diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index ca9dffc255..b389f1fa27 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -22,6 +22,7 @@ abstract class MLsDiffMaker extends DiffMaker: val termFile: io.Path = predefFile.up / "Term.mjs" // * Contains MLscript runtime term definitions val blockFile: io.Path = predefFile.up / "Block.mjs" // * Contains MLscript runtime block definitions val optionFile: io.Path = predefFile.up / "Option.mjs" // * Contains MLscipt runtime option definition + val specializeHelpersFile: io.Path = predefFile.up / "SpecializeHelpers.mjs" // * Contains MLscipt runtime specialization helpers val wd = file.up From e49f2379f67423d7cbfe0d51dc36c47e1e6f19ed Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 29 Jan 2026 16:23:41 +0800 Subject: [PATCH 283/654] refactor --- .../scala/hkmc2/codegen/Instrumentation.scala | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b6835eb7a8..5e60048f67 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -49,26 +49,25 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) -// transform Block to Block IR so that it can be instrumented in mlscript -class InstrumentationImpl(using State): - // helpers for constructing Block +// helpers for constructing Block - def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = - // TODO: skip assignment if res: Path? - val sym = new TempSymbol(N, symName) - Scoped(Set(sym), Assign(sym, res, k(sym.asPath))) +def assign(using State)(res: Result, symName: Str = "tmp")(k: Path => Block): Block = + // TODO: skip assignment if res: Path? + val sym = new TempSymbol(N, symName) + Scoped(Set(sym), Assign(sym, res, k(sym.asPath))) - def tuple(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - assign(Tuple(false, elems.map(asArg)), symName)(k) +def tuple(using State)(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + assign(Tuple(false, elems.map(asArg)), symName)(k) - def ctor(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - assign(Instantiate(false, cls, args.map(asArg)), symName)(k) +def ctor(using State)(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + assign(Instantiate(false, cls, args.map(asArg)), symName)(k) - // isMlsFun is probably always true? - def call(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = - assign(Call(fun, args.map(asArg))(isMlsFun, false, false), symName)(k) +def call(using State)(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = + assign(Call(fun, args.map(asArg))(isMlsFun, false, false), symName)(k) - // helpers for instrumenting Block +// transform Block to Block IR so that it can be instrumented in mlscript +class InstrumentationImpl(using State): + // helpers for constructing Block IR def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) @@ -336,9 +335,9 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): // initialize cache for the module def cacheDecl(rest: Block) = cacheTups.collectApply: cacheTups => - impl.tuple(cacheTups): tup => - impl.assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => - impl.assign(Instantiate(mut = false, State.specializeHelpersSymbol.asPath.selSN("FunCache"), Ls(Arg(N, map)))): mapInit => + tuple(cacheTups): tup => + assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => + assign(Instantiate(mut = false, State.specializeHelpersSymbol.asPath.selSN("FunCache"), Ls(Arg(N, map)))): mapInit => Define(ValDefn(cacheTsym, cacheSym, mapInit), rest) def genMethod(f: FunDefn): FunDefn = @@ -346,11 +345,11 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val sym = BlockMemberSymbol(genSymName, Nil, false) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) - val body = impl.call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => + val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => // TODO: enforce that the definition will only have one parameter list - f.params.map(ps => impl.tuple(ps.params.map(_.sym))).collectApply: tups => - impl.tuple(tups): tups => - impl.call(State.specializeHelpersSymbol.asPath.selSN("specialize"), Ls(cachePath, instr, tups)): res => + f.params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => + tuple(tups): tups => + call(State.specializeHelpersSymbol.asPath.selSN("specialize"), Ls(cachePath, instr.selSN("value"), tups)): res => Return(res, false) f.copy(sym = sym, dSym = dSym, body = body)(false) val genMethods = companion.methods.map(genMethod) @@ -362,10 +361,10 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") val tmp = TempSymbol(N, "tmp") val debug = - impl.assign(Call(cachePath.selSN("toString"), Nil)(false, false, false)): str => - impl.assign(Call(printFun, Ls(Arg(N, str)))(false, false, false)): _ => - impl.assign(Call(sym.asPath.selSN("defCtx").selSN("toString"), Nil)(false, false, false)): str => - impl.assign(Call(printFun, Ls(Arg(N, str)))(false, false, false))(_ => rest) + assign(Call(cachePath.selSN("toString"), Nil)(false, false, false)): str => + assign(Call(printFun, Ls(Arg(N, str)))(false, false, false)): _ => + assign(Call(sym.asPath.selSN("defCtx").selSN("toString"), Nil)(false, false, false)): str => + assign(Call(printFun, Ls(Arg(N, str)))(false, false, false))(_ => rest) Scoped(Set(tmp), debug) @@ -375,7 +374,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val defCtxTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("defCtx")) def defCtxDecl(rest: Block) = allDefs.values.collectApply: defs => - impl.tuple(defs): defCtxInit => + tuple(defs): defCtxInit => Define(ValDefn(defCtxTsym, defCtxSym, defCtxInit), rest) // used for staging classes inside modules From 5fb0c31bbe0a940111e366310e0c56a82d2cd195 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 29 Jan 2026 23:50:16 +0800 Subject: [PATCH 284/654] update test --- .../test/mlscript/block-staging/Functions.mls | 60 ++++++++++++------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index a44e994b1d..659911a220 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,13 +24,8 @@ staged module Expressions with [1, 2] then 2 [a, ...] then 3 else 0 -//│ > FunDefn(Symbol("lit"), ([]), Return(Lit(1), false), true) -//│ > FunDefn(Symbol("assign"), ([]), Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))), true) -//│ > FunDefn(Symbol("tup1"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) -//│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false), true) -//│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) -//│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) -//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunCache(Map(7) {"lit" => FunDefn(Symbol("lit"), [[]], Return(ValueLit(1), false), true), "assign" => FunDefn(Symbol("assign"), [[]], Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(42), Assign(Symbol("y"), ValueRef(Symbol("x")), Return(ValueRef(Symbol("y")), false)))), true), "tup1" => FunDefn(Symbol("tup1"), [[]], Return(Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false), true), "tup2" => FunDefn(Symbol("tup2"), [[]], Return(Tuple([Arg(None, ValueLit(1)), Arg(Some(false), ValueRef(Symbol("x")))]), false), true), "dynsel" => FunDefn(Symbol("dynsel"), [[]], Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Arg(None, ValueLit(1))]), Return(DynSelect(ValueRef(Symbol("tmp")), ValueLit(0), false), false))), true), "match1" => FunDefn(Symbol("match1"), [[]], Scoped([Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(9), Match(ValueRef(Symbol("scrut")), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Some(Return(ValueLit(0), false)), End()))), true), "match2" => FunDefn(Symbol("match2"), [[]], Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([Arg(Some(true), ValueRef(Symbol("x")))]), Match(ValueRef(Symbol("scrut")), [[Tup(0, false), Assign(Symbol("tmp"), ValueLit(1), Break(Symbol("split_root$")))], [Tup(2, false), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(0))]), Assign(Symbol("element1$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1))]), Match(ValueRef(Symbol("element0$")), [[Lit(1), Match(ValueRef(Symbol("element1$")), [[Lit(2), Assign(Symbol("tmp"), ValueLit(2), Break(Symbol("split_root$")))]], Some(Match(ValueRef(Symbol("scrut")), [[Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$"))))]], Some(Break(Symbol("split_2$"))), End())), End())]], Some(Match(ValueRef(Symbol("scrut")), [[Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$"))))]], Some(Break(Symbol("split_2$"))), End())), End())))], [Tup(1, true), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(0))]), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$")))))]], Some(Break(Symbol("split_2$"))), End())), Assign(Symbol("tmp"), ValueLit(0), Break(Symbol("split_root$")))), Assign(Symbol("tmp"), ValueLit(3), End())), Return(ValueRef(Symbol("tmp")), false))), true)}) +//│ > //│ x = [1, 2, 3] class Outside(a) @@ -43,10 +38,8 @@ staged module ClassInstrumentation with fun app2() = Inside(1, 2) //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) //│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) -//│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) -//│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) +//│ > FunCache(Map(4) {"inst1" => FunDefn(Symbol("inst1"), [[]], Return(Instantiate(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false), true), "inst2" => FunDefn(Symbol("inst2"), [[]], Return(Instantiate(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("NoArg", None)), []), false), true), "app1" => FunDefn(Symbol("app1"), [[]], Return(Call(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false), true), "app2" => FunDefn(Symbol("app2"), [[]], Return(Call(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("Inside", Some([Symbol("a"), Symbol("b")]))), [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false), true)}) +//│ > module Nonstaged with fun f() = 1 @@ -56,16 +49,18 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) -//│ > FunDefn(Symbol("call"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))), true) +//│ > FunCache(Map(1) {"f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true)}) +//│ > +//│ > FunCache(Map(1) {"call" => FunDefn(Symbol("call"), [[]], Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(ValueRef(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(ValueRef(Symbol("Staged")), Symbol("f")), []), false))), true)}) +//│ > Select(ValueRef(Symbol("Staged")), Symbol("f")) staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z -//│ > FunDefn(Symbol("f"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) -//│ > FunDefn(Symbol("g"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) +//│ > FunCache(Map(2) {"f" => FunDefn(Symbol("f"), [[Symbol("x")]], Assign(Symbol("x"), ValueLit(1), Return(ValueRef(Symbol("x")), false)), true), "g" => FunDefn(Symbol("g"), [[Symbol("x")], [Symbol("y"), Symbol("z")], []], Return(ValueRef(Symbol("z")), false), true)}) +//│ > staged module OtherBlocks with fun scope() = @@ -78,8 +73,8 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunCache(Map(2) {"scope" => FunDefn(Symbol("scope"), [[]], Scoped([Symbol("a")], Assign(Symbol("a"), ValueLit(1), Return(Call(Select(Select(ValueRef(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Arg(None, ValueRef(Symbol("a")))]), false))), true), "breakAndLabel" => FunDefn(Symbol("breakAndLabel"), [[]], Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), ValueLit(1), Match(ValueRef(Symbol("scrut")), [[Lit(2), Break(Symbol("split_1$"))], [Lit(3), Break(Symbol("split_1$"))]], Some(Break(Symbol("split_1$"))), End())), Assign(Symbol("tmp"), ValueLit(0), End())), Return(ValueRef(Symbol("tmp")), false))), true)}) +//│ > // debug printing fails, collision with class name? :fixme @@ -95,8 +90,33 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.94: staged module B with +//│ ║ l.89: staged module B with //│ ║ ^^^^^^ -//│ ║ l.95: fun f() = 1 +//│ ║ l.90: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ -//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.89: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.90: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.89: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.90: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.89: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.90: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.89: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.90: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ > FunCache(Map(1) {"f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true)}) +//│ > From 4b4993b8f7ec961c1abc490946c3710a6865eee9 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 5 Feb 2026 22:34:41 +0800 Subject: [PATCH 285/654] fix the _gen function --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 2 +- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 13 ++++++++----- .../src/test/mlscript/block-staging/ShapeProp.mls | 12 ++++++++++++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 5e36d10ef8..0eac89b1a7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -168,7 +168,7 @@ fun showBlock(b: Block): Str = Scoped(symbols, rest) then "Scoped([" + symbols.map(showSymbol).join(", ") + "], " + showBlock(rest) + ")" Label(labelSymbol, loop, body, rest) then - "Label(" + showSymbol(labelSymbol) + ", " + showBool(loop) + ", " + showBlock(body) + ", " + showBlock(rest) + + ")" + "Label(" + showSymbol(labelSymbol) + ", " + showBool(loop) + ", " + showBlock(body) + ", " + showBlock(rest) + ")" Break(labelSymbol) then "Break(" + showSymbol(labelSymbol) + ")" End() then "End()" diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index aa97b3ed85..f6e85174eb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -83,7 +83,7 @@ fun sel(s1: ShapeSet, s2: ShapeSet) = fun static(s: ShapeSet) = let v = s.values() if v.length == - 0 then throw Error("Some variables has bottom shape.") + 0 then throw Error("Some variables have bottom shape.") 1 then Shape.static(v.0) else false @@ -115,7 +115,7 @@ module Ctx with fun empty = Ctx(new Map(), None) -class DefCtx(val defs: Map[String, Block]) with +class DefCtx(val defs) with fun get(sym) = if defs.has(sym.name) then Some(defs.get(sym.name)) else None @@ -139,6 +139,9 @@ class Cache(val underlying: Map[String, [Shape, Symbol, FunDefn]]) with module Cache with fun empty = Cache(new Map()) +fun concat(b1, b2) = + if b1 is + Match(s, scrut, _, rest) then fun sop(ctx, p: Path): ShapeSet = if ctx.get(p) is Some(s) then s @@ -160,10 +163,10 @@ fun sor(defs, ctx, cache, r: Result) = if r is let argShapes = args.map(a => sop(ctx, a.value)) let def = if f is ValueRef(symb) then defs.get(symb) else None if def is - Some(FunDefn(sym, _, _, true)) then - let genSym = Symbol(sym.name + "_gen") - if Call(ValueRef(genSymb), argShapes) is [shape, implSymb] then + Some(gen) then + if gen(argShapes) is [shape, implSymb] then [Call(ValueRef(implSymb), args), shape] + else [r, mkDyn()] // Some(FunDefn(sym, params, body, false)) then // if argShapes.forall(static) then // let staticCtx = ctx.nest diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index b49a50f797..7de2e839a2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -253,3 +253,15 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ ) //│ ) +fun f_gen(args) = + [mkLit(24), Symbol("f_int")] + +val fSym = Symbol("f") +val defs = DefCtx.empty.add(fSym, f_gen) +//│ defs = DefCtx(Map(1) {"f" => fun f_gen}) +//│ fSym = Symbol("f") + +val callF = Call(ValueRef(fSym), [Arg(None, ValueLit(12))]) +sor(defs, Ctx.empty, Cache.empty, callF) +//│ = [Call(ValueRef(Symbol("f_int")), [Arg(None, ValueLit(12))]), Lit(24)] +//│ callF = Call(ValueRef(Symbol("f")), [Arg(None, ValueLit(12))]) From c5af6775df20a9dfec9a1dc1c583a50e74e386e2 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 7 Feb 2026 00:24:06 +0800 Subject: [PATCH 286/654] add the inlining and more test cases --- .../src/test/mlscript-compile/ShapeSet.mls | 64 +++-- .../test/mlscript/block-staging/ShapeProp.mls | 243 ++++++++++++++++-- 2 files changed, 266 insertions(+), 41 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index f6e85174eb..124a63ffcb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -87,21 +87,41 @@ fun static(s: ShapeSet) = 1 then Shape.static(v.0) else false +open Block + +fun concat(b1, b2) = if b1 is + Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, concat(rest, b2)) + Return(res, implct) then b1 + Assign(lhs, rhs, rest) then Assign(lhs, rhs, concat(rest, b2)) + Define(defn, rest) then Define(defn, concat(rest, b2)) + Scoped(symbols, rest) then Scoped(symbols, concat(rest, b2)) + Label(labelSymbol, loop, body, rest) then Label(labelSymbol, loop, body, concat(rest, b2)) + End then b2 + +// fun concat(b1, b2) = +// if b1 is +// End() then b2 +// Return(res, implct) then b2 +// Match(p, arms, dflt, rest) then Match(p, arms, dflt, concat(rest, b2)) +// Scoped(syms, rest) then Scoped(syms, concat(rest, b2)) +// Assign(x, r, rest) then Assign(x, r, concat(rest, b2)) +// Define(d, rest) then Define(d, concat(rest, b2)) +// _ then throw Error("Unknown block type") + fun valOf(s : ShapeSet) = ??? // fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = // let rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) // [flat(rem.map(_.0)), rem.map(_.1)] -open Block // TODO: refactor with hash map? -class Ctx(val maps: Map[String, ShapeSet], parent: Option[Ctx]) with +class Ctx(val maps: Map[String, ShapeSet]) with fun get(path) = let ps = showPath(path) if maps.has(ps) then Some(maps.get(ps)) - else if parent is Some(ctx) then ctx.get(path) else None - fun nest = Ctx(new Map(), Some of this) + // fun nest = Ctx(new Map(), Some of this) + fun clone = Ctx(new Map(maps)) fun add(path, ss) = let ps = showPath(path) maps.set(ps, ss) @@ -109,10 +129,10 @@ class Ctx(val maps: Map[String, ShapeSet], parent: Option[Ctx]) with fun update(path, ss) = let ps = showPath(path) if maps.has(ps) then do maps.set(ps, ss) - else if parent is Some(ctx) then do ctx.update(path, ss) + // else if parent is Some(ctx) then do ctx.update(path, ss) this module Ctx with - fun empty = Ctx(new Map(), None) + fun empty = Ctx(new Map()) class DefCtx(val defs) with @@ -139,10 +159,6 @@ class Cache(val underlying: Map[String, [Shape, Symbol, FunDefn]]) with module Cache with fun empty = Cache(new Map()) -fun concat(b1, b2) = - if b1 is - Match(s, scrut, _, rest) then - fun sop(ctx, p: Path): ShapeSet = if ctx.get(p) is Some(s) then s else if p is @@ -217,6 +233,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is // else if args.exist(not static(_)) and cache.get(ctx, args.map(_ => mkDyn())) is Some([FunDefn(f1, params, body, false), s]) // then [Call(f1, args), s] + fun prop(defs, ctx, cache, b: Block) = if b is End then [b, mkBot()] Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s1] then @@ -235,21 +252,20 @@ fun prop(defs, ctx, cache, b: Block) = if b is let fs = filter(r.0, arm.0) if fs.isEmpty() then r else - let nestCtx = ctx.nest - if not p is ValueLit then do // Why is this needed? - nestCtx.add(p, fs) - let res = prop(defs, nestCtx, cache, arm.1) - [rest(r.0, arm.0), union(r.1, res.1), [...r.2, res.0]] - )([s, mkBot(), []], ...arms) // rest of shapes, early-returned shapes, filtered arms + let branchCtx = ctx.clone + if not p is ValueLit do + branchCtx.add(p, fs) + let res = prop(defs, branchCtx, cache, concat(arm.1, restBlock)) + [rest(r.0, arm.0), union(r.1, res.1), [...r.2, [arm.0, res.0]]] + )([s, mkBot(), []], ...arms) let newDflt = - if filteredArms.0.isEmpty() then [dflt, mkBot()] - else - let nestCtx = ctx.nest - if not p is ValueLit then do - nestCtx.add(p, filteredArms.0) - prop(defs, nestCtx, cache, dflt) - let newRest = prop(defs, ctx, cache, restBlock) - [Match(p, filteredArms.2, newDflt.0, newRest.0), union(filteredArms.1, union of newDflt.1, newRest.1)] + let branchCtx = ctx.clone + if + filteredArms.0.isEmpty() do prop(defs, branchCtx, cache, restBlock) + not p is ValueLit do + branchCtx.add(p, filteredArms.0) + prop(defs, branchCtx, cache, concat(dflt, restBlock)) + [Match(p, filteredArms.2, newDflt.0, End()), union(filteredArms.1, newDflt.1)] // TODO: remove it. this can be done in module static blocks fun exec(defs, ctx, cache, b: Block) = if b is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 7de2e839a2..949d631cb1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -6,7 +6,7 @@ import "../../mlscript-compile/ShapeSet.mls" import "../../mlscript-compile/Option.mls" import "../../mlscript-compile/CachedHash.mls" open Option -open Block { Symbol, ClassSymbol, Tup } +open Block { Symbol, ClassSymbol, Tup, Case } open Shape { Arr, Class, Dyn, Lit } open ShapeSet @@ -118,8 +118,7 @@ sop(ctx, selPath) //│ ctx = Ctx( //│ Map(1) { //│ "ValueRef(Symbol(\"x\"))" => Class(ClassSymbol("C", Some(["a"])), [Lit("pass")]) -//│ }, -//│ _ +//│ } //│ ) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -187,13 +186,25 @@ testUnaryOp("!", true) testUnaryOp("~", 10) //│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' -let c = Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(ValueRef(Symbol("+")), [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(ValueRef(Symbol("+")), [Arg(None, ValueRef(Symbol("tmp"))), Arg(None, ValueLit(1))]), false))) +let x = Symbol("x") +let y = Symbol("y") +let z = Symbol("z") +let plus = ValueRef(Symbol("+")) +//│ plus = ValueRef(Symbol("+")) +//│ x = Symbol("x") +//│ y = Symbol("y") +//│ z = Symbol("z") + +// let x +// x = 1 + 1 +// x + 1 +let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ = [Assign(Symbol("tmp"), ValueLit(2), Return(ValueLit(3), false)), Lit(3)] +//│ = [Assign(Symbol("x"), ValueLit(2), Return(ValueLit(3), false)), Lit(3)] //│ c = Scoped( -//│ [Symbol("tmp")], +//│ [Symbol("x")], //│ Assign( -//│ Symbol("tmp"), +//│ Symbol("x"), //│ Call( //│ ValueRef(Symbol("+")), //│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))] @@ -201,35 +212,49 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ Return( //│ Call( //│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueRef(Symbol("tmp"))), Arg(None, ValueLit(1))] +//│ [Arg(None, ValueRef(Symbol("x"))), Arg(None, ValueLit(1))] //│ ), //│ false //│ ) //│ ) //│ ) -let c = Scoped([Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(9), Match(ValueRef(Symbol("scrut")), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Return(ValueLit(0), false), End()))) +// let x = 9 +// if x is +// Bool then 1 +// 8 then 2 +// Int then 3 +// else 0 +let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Return(ValueLit(0), false), End()))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ = [ //│ Assign( -//│ Symbol("scrut"), +//│ Symbol("x"), //│ ValueLit(9), //│ Match( -//│ ValueRef(Symbol("scrut")), -//│ [Return(ValueLit(3), false)], -//│ Return(ValueLit(0), false), +//│ ValueRef(Symbol("x")), +//│ [ +//│ [ +//│ Cls( +//│ ClassSymbol("Int", None), +//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) +//│ ), +//│ Return(ValueLit(3), false) +//│ ] +//│ ], +//│ End(), //│ End() //│ ) //│ ), //│ Lit(3) //│ ] //│ c = Scoped( -//│ [Symbol("scrut")], +//│ [Symbol("x")], //│ Assign( -//│ Symbol("scrut"), +//│ Symbol("x"), //│ ValueLit(9), //│ Match( -//│ ValueRef(Symbol("scrut")), +//│ ValueRef(Symbol("x")), //│ [ //│ [ //│ Cls( @@ -254,7 +279,7 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ ) fun f_gen(args) = - [mkLit(24), Symbol("f_int")] + [mkLit(24), Symbol("f_int")] // A stub for the actual blockIR val fSym = Symbol("f") val defs = DefCtx.empty.add(fSym, f_gen) @@ -265,3 +290,187 @@ val callF = Call(ValueRef(fSym), [Arg(None, ValueLit(12))]) sor(defs, Ctx.empty, Cache.empty, callF) //│ = [Call(ValueRef(Symbol("f_int")), [Arg(None, ValueLit(12))]), Lit(24)] //│ callF = Call(ValueRef(Symbol("f")), [Arg(None, ValueLit(12))]) + +val ctxXY = Ctx.empty + .add(ValueRef(x), mkLit(10)) + .add(ValueRef(y), mkLit(32)) +//│ ctxXY = Ctx( +//│ Map(2) { +//│ "ValueRef(Symbol(\"x\"))" => Lit(10), +//│ "ValueRef(Symbol(\"y\"))" => Lit(32) +//│ } +//│ ) + +// x + y +val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +prop(defs, ctxXY, Cache.empty, blockAdd) +//│ = [Return(ValueLit(42), false), Lit(42)] +//│ blockAdd = Return( +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueRef(Symbol("x"))), Arg(None, ValueRef(Symbol("y")))] +//│ ), +//│ false +//│ ) + +val ctxZ = Ctx.empty + .add(ValueRef(z), mkDyn()) +//│ ctxZ = Ctx(Map(1) {"ValueRef(Symbol(\"z\"))" => Dyn()}) + +// let z; +// if 1 is +// 1 then z = 1 +// 2 then z = 2 +// _ then z = 3 +// z +val blockBranch = Scoped([z], Match(ValueLit(1), [[Lit(1), Assign(z, ValueLit(1), End())], [Lit(2), Assign(z, ValueLit(2), End())]], Assign(z, ValueLit(3), End()), Return(ValueRef(z), false))) +prop(defs, ctxZ, Cache.empty, blockBranch) +//│ = [ +//│ Match( +//│ ValueLit(1), +//│ [ +//│ [ +//│ Lit(1), +//│ Assign( +//│ Symbol("z"), +//│ ValueLit(1), +//│ Return(ValueRef(Symbol("z")), false) +//│ ) +//│ ] +//│ ], +//│ Return(ValueRef(Symbol("z")), false), +//│ End() +//│ ), +//│ Lit(1) +//│ ] +//│ blockBranch = Scoped( +//│ [Symbol("z")], +//│ Match( +//│ ValueLit(1), +//│ [ +//│ [Lit(1), Assign(Symbol("z"), ValueLit(1), End())], +//│ [Lit(2), Assign(Symbol("z"), ValueLit(2), End())] +//│ ], +//│ Assign(Symbol("z"), ValueLit(3), End()), +//│ Return(ValueRef(Symbol("z")), false) +//│ ) +//│ ) + +val ctxXY = Ctx.empty + .add(ValueRef(x), mkDyn()) + .add(ValueRef(y), mkDyn()) +// let x = true +// if x +// is true then return 10 +// is false then +// y = 20 +// return y +val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [[Lit(true), Return(ValueLit(10), false)], [Lit(false), Assign(y, ValueLit(20), End())]], End(), Return(ValueRef(y), false)))) +prop(defs, ctxXY, Cache.empty, earlyRetBlock) +//│ = [ +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(false), +//│ Match( +//│ ValueRef(Symbol("x")), +//│ [ +//│ [ +//│ Lit(false), +//│ Assign( +//│ Symbol("y"), +//│ ValueLit(20), +//│ Return(ValueRef(Symbol("y")), false) +//│ ) +//│ ] +//│ ], +//│ Return(ValueRef(Symbol("y")), false), +//│ End() +//│ ) +//│ ), +//│ Lit(20) +//│ ] +//│ ctxXY = Ctx( +//│ Map(2) {"ValueRef(Symbol(\"x\"))" => Lit(false), "ValueRef(Symbol(\"y\"))" => } +//│ ) +//│ earlyRetBlock = Scoped( +//│ [Symbol("x"), Symbol("y")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(false), +//│ Match( +//│ ValueRef(Symbol("x")), +//│ [ +//│ [Lit(true), Return(ValueLit(10), false)], +//│ [Lit(false), Assign(Symbol("y"), ValueLit(20), End())] +//│ ], +//│ End(), +//│ Return(ValueRef(Symbol("y")), false) +//│ ) +//│ ) +//│ ) + +// let x = true +// let y = false +// if x is +// true then +// if y is +// true then return 1 +// else return 2 +// else return 3 +// return 4 +val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [[Lit(true), Match(ValueRef(y), [[Lit(true), Return(ValueLit(1), false)]], Return(ValueLit(2), false), End())]], Return(ValueLit(3), false), Return(ValueLit(4), false))))) +prop(defs, ctxXY, Cache.empty, nestedBlock) +//│ = [ +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(true), +//│ Assign( +//│ Symbol("y"), +//│ ValueLit(false), +//│ Match( +//│ ValueRef(Symbol("x")), +//│ [ +//│ [ +//│ Lit(true), +//│ Match( +//│ ValueRef(Symbol("y")), +//│ [], +//│ Return(ValueLit(2), false), +//│ End() +//│ ) +//│ ] +//│ ], +//│ Return(ValueLit(4), false), +//│ End() +//│ ) +//│ ) +//│ ), +//│ Lit(2) +//│ ] +//│ nestedBlock = Scoped( +//│ [Symbol("x"), Symbol("y")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(true), +//│ Assign( +//│ Symbol("y"), +//│ ValueLit(false), +//│ Match( +//│ ValueRef(Symbol("x")), +//│ [ +//│ [ +//│ Lit(true), +//│ Match( +//│ ValueRef(Symbol("y")), +//│ [[Lit(true), Return(ValueLit(1), false)]], +//│ Return(ValueLit(2), false), +//│ End() +//│ ) +//│ ] +//│ ], +//│ Return(ValueLit(3), false), +//│ Return(ValueLit(4), false) +//│ ) +//│ ) +//│ ) +//│ ) From f5459ac32675ff364edfa642a253345606ac0aac Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 7 Feb 2026 00:25:40 +0800 Subject: [PATCH 287/654] minor nit --- .../shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b596558f61..9bc66a2f96 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -216,7 +216,6 @@ class InstrumentationImpl(using State): case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) case Case.Field(name, safe) => ??? // not supported - // ruleBlk? def transformBlock(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)((p, _) => k(p)) @@ -318,7 +317,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): .map(impl.transformFunDefn(sym, _)) .unzip - val unit = Select(Value.Ref(State.runtimeSymbol), Tree.Ident("Unit"))(N) + val unit = State.runtimeSymbol.asPath.selSN("Unit") val debugBlock = debugPrintCode.foldRight(Return(unit, true))(concat) def debugCont(rest: Block) = Begin(debugBlock, rest) From 05baba00017c5e275c01f88fbadcde313b84b57a Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 7 Feb 2026 01:33:58 +0800 Subject: [PATCH 288/654] fix the _gen function --- .../src/test/mlscript-compile/ShapeSet.mls | 2 +- .../test/mlscript/block-staging/Functions.mls | 34 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 124a63ffcb..aa01b43ba4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -180,7 +180,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is let def = if f is ValueRef(symb) then defs.get(symb) else None if def is Some(gen) then - if gen(argShapes) is [shape, implSymb] then + if gen(...argShapes) is [shape, implSymb] then [Call(ValueRef(implSymb), args), shape] else [r, mkDyn()] // Some(FunDefn(sym, params, body, false)) then diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 691ee241a9..8f1d83ba35 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,13 +24,13 @@ staged module Expressions with [1, 2] then 2 [a, ...] then 3 else 0 -//│ > Return(Lit(1), false) -//│ > Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))) -//│ > Return(Tuple([Lit(1), Lit(2)]), false) -//│ > Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false) -//│ > Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))) -//│ > Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))) -//│ > Scoped([Symbol("middleElements"), Symbol("element0$"), Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > Return(ValueLit(1), false) +//│ > Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(42), Assign(Symbol("y"), ValueRef(Symbol("x")), Return(ValueRef(Symbol("y")), false)))) +//│ > Return(Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false) +//│ > Return(Tuple([Arg(None, ValueLit(1)), Arg(Some(false), ValueRef(Symbol("x")))]), false) +//│ > Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Arg(None, ValueLit(1))]), Return(DynSelect(ValueRef(Symbol("tmp")), ValueLit(0), false), false))) +//│ > Scoped([Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(9), Match(ValueRef(Symbol("scrut")), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Return(ValueLit(0), false), End()))) +//│ > Scoped([Symbol("middleElements"), Symbol("element0$"), Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([Arg(Some(true), ValueRef(Symbol("x")))]), Match(ValueRef(Symbol("scrut")), [[Tup(0, false), Assign(Symbol("tmp"), ValueLit(1), Break(Symbol("split_root$")))], [Tup(2, false), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(0))]), Assign(Symbol("element1$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1))]), Match(ValueRef(Symbol("element0$")), [[Lit(1), Match(ValueRef(Symbol("element1$")), [[Lit(2), Assign(Symbol("tmp"), ValueLit(2), Break(Symbol("split_root$")))]], Match(ValueRef(Symbol("scrut")), [[Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$"))))]], Break(Symbol("split_2$")), End()), End())]], Match(ValueRef(Symbol("scrut")), [[Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$"))))]], Break(Symbol("split_2$")), End()), End())))], [Tup(1, true), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(0))]), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$")))))]], Break(Symbol("split_2$")), End())), Assign(Symbol("tmp"), ValueLit(0), Break(Symbol("split_root$")))), Assign(Symbol("tmp"), ValueLit(3), End())), Return(ValueRef(Symbol("tmp")), false))) //│ x = [1, 2, 3] class Outside(a) @@ -41,20 +41,20 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) -//│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) -//│ > Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) -//│ > Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false) -//│ > Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false) -//│ > Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false) +//│ > Define(ClsLikeDefn(ClassSymbol("NoArg", None), TODO), End()) +//│ > Define(ClsLikeDefn(ClassSymbol("Inside", Some([Symbol("a"), Symbol("b")])), TODO), End()) +//│ > Return(Instantiate(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false) +//│ > Return(Instantiate(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("NoArg", None)), []), false) +//│ > Return(Call(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false) +//│ > Return(Call(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("Inside", Some([Symbol("a"), Symbol("b")]))), [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false) staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z -//│ > Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)) -//│ > Return(Lit(undefined), false) +//│ > Assign(Symbol("x"), ValueLit(1), Return(ValueRef(Symbol("x")), false)) +//│ > Return(ValueLit(undefined), false) staged module OtherBlocks with fun scope() = @@ -67,8 +67,8 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))) -//│ > Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN) +//│ > Scoped([Symbol("a")], Assign(Symbol("a"), ValueLit(1), Return(Call(Select(Select(ValueRef(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Arg(None, ValueRef(Symbol("a")))]), false))) +//│ > Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), ValueLit(1), Match(ValueRef(Symbol("scrut")), [[Lit(2), Break(Symbol("split_1$"))], [Lit(3), Break(Symbol("split_1$"))]], Break(Symbol("split_1$")), End())), Assign(Symbol("tmp"), ValueLit(0), End())), Return(ValueRef(Symbol("tmp")), false))) // debug printing fails, collision with class name? :fixme From 157981e32dac991e3cbe16ad7d3d012acc65ef2a Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 7 Feb 2026 11:49:09 +0800 Subject: [PATCH 289/654] fix call to module function --- .../src/test/mlscript-compile/ShapeSet.mls | 14 +++++++++----- .../test/mlscript/block-staging/ShapeProp.mls | 16 +++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index aa01b43ba4..4000097dcc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -136,11 +136,13 @@ module Ctx with class DefCtx(val defs) with - fun get(sym) = - if defs.has(sym.name) then Some(defs.get(sym.name)) + fun get(path) = + let p = showPath(path) + if defs.has(p) then Some(defs.get(p)) else None - fun add(sym, node) = - defs.set(sym.name, node) + fun add(path, node) = + let p = showPath(path) + defs.set(p, node) this module DefCtx with fun empty = DefCtx(new Map()) @@ -177,7 +179,9 @@ fun sor(defs, ctx, cache, r: Result) = if r is Call(f, args) then fun lit(l) = [ValueLit(l), mkLit(l)] let argShapes = args.map(a => sop(ctx, a.value)) - let def = if f is ValueRef(symb) then defs.get(symb) else None + let def = if f is + Select(_, _) then defs.get(f) + else None if def is Some(gen) then if gen(...argShapes) is [shape, implSymb] then diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 949d631cb1..ab2338933f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -282,14 +282,20 @@ fun f_gen(args) = [mkLit(24), Symbol("f_int")] // A stub for the actual blockIR val fSym = Symbol("f") -val defs = DefCtx.empty.add(fSym, f_gen) -//│ defs = DefCtx(Map(1) {"f" => fun f_gen}) +val M = ValueRef(Symbol("M")) +val fPath = Select(M, fSym) +val defs = DefCtx.empty.add(fPath, f_gen) +//│ M = ValueRef(Symbol("M")) +//│ defs = DefCtx( +//│ Map(1) {"Select(ValueRef(Symbol(\"M\")), Symbol(\"f\"))" => fun f_gen} +//│ ) +//│ fPath = Select(ValueRef(Symbol("M")), Symbol("f")) //│ fSym = Symbol("f") -val callF = Call(ValueRef(fSym), [Arg(None, ValueLit(12))]) +val callF = Call(fPath, [Arg(None, ValueLit(12))]) sor(defs, Ctx.empty, Cache.empty, callF) //│ = [Call(ValueRef(Symbol("f_int")), [Arg(None, ValueLit(12))]), Lit(24)] -//│ callF = Call(ValueRef(Symbol("f")), [Arg(None, ValueLit(12))]) +//│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None, ValueLit(12))]) val ctxXY = Ctx.empty .add(ValueRef(x), mkLit(10)) @@ -445,7 +451,7 @@ prop(defs, ctxXY, Cache.empty, nestedBlock) //│ ) //│ ) //│ ), -//│ Lit(2) +//│ Lit(2),Lit(4) //│ ] //│ nestedBlock = Scoped( //│ [Symbol("x"), Symbol("y")], From 143e033ffa1bb35c8adc192b4a6dc016016c7f0f Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 7 Feb 2026 12:14:22 +0800 Subject: [PATCH 290/654] slight syntax improvement --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 4000097dcc..72ee2c8e07 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -257,8 +257,7 @@ fun prop(defs, ctx, cache, b: Block) = if b is if fs.isEmpty() then r else let branchCtx = ctx.clone - if not p is ValueLit do - branchCtx.add(p, fs) + if not p is ValueLit do branchCtx.add(p, fs) let res = prop(defs, branchCtx, cache, concat(arm.1, restBlock)) [rest(r.0, arm.0), union(r.1, res.1), [...r.2, [arm.0, res.0]]] )([s, mkBot(), []], ...arms) From 8f166c05ec7ba78a5f4404df4b4708fe0cfd4d08 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 7 Feb 2026 00:34:48 +0800 Subject: [PATCH 291/654] fixup! refactor --- .../scala/hkmc2/codegen/Instrumentation.scala | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 5e60048f67..aad6e238b5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -49,28 +49,35 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) -// helpers for constructing Block +// transform Block to Block IR so that it can be instrumented in mlscript +class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): + // helpers for constructing Block -def assign(using State)(res: Result, symName: Str = "tmp")(k: Path => Block): Block = - // TODO: skip assignment if res: Path? - val sym = new TempSymbol(N, symName) - Scoped(Set(sym), Assign(sym, res, k(sym.asPath))) + def assign(using State)(res: Result, symName: Str = "tmp")(k: Path => Block): Block = + // TODO: skip assignment if res: Path? + val sym = new TempSymbol(N, symName) + Scoped(Set(sym), Assign(sym, res, k(sym.asPath))) -def tuple(using State)(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - assign(Tuple(false, elems.map(asArg)), symName)(k) + def tuple(using State)(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + assign(Tuple(false, elems.map(asArg)), symName)(k) -def ctor(using State)(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - assign(Instantiate(false, cls, args.map(asArg)), symName)(k) + def ctor(using State)(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + assign(Instantiate(false, cls, args.map(asArg)), symName)(k) -def call(using State)(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = - assign(Call(fun, args.map(asArg))(isMlsFun, false, false), symName)(k) + def call(using State)(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = + assign(Call(fun, args.map(asArg))(isMlsFun, false, false), symName)(k) + + def concat(b1: Block, b2: Block): Block = + b1.mapTail { + case _: End => b2 + case _ => ??? + } -// transform Block to Block IR so that it can be instrumented in mlscript -class InstrumentationImpl(using State): // helpers for constructing Block IR def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) + def helperMod(name: Str) = summon[State].specializeHelpersSymbol.asPath.selSN(name) def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = ctor(blockMod(name), args, symName)(k) @@ -306,18 +313,6 @@ class InstrumentationImpl(using State): val newFun = f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) (newFun, defs, pathCont) -// TODO: rename as InstrumentationTransformer? -class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): - val impl = new InstrumentationImpl - - def concat(b1: Block, b2: Block): Block = - b1.mapTail { - case _: End => b2 - case _ => ??? - } - - def helperMod(name: Str) = summon[State].specializeHelpersSymbol.asPath.selSN(name) - override def applyBlock(b: Block): Block = super.applyBlock(b) match // find modules with staged annotation @@ -325,7 +320,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, defsList, cacheTups) = companion.methods - .map(impl.transformFunDefn(sym, _)) + .map(transformFunDefn(sym, _)) .unzip3 // add cache for specialized functions in each staged module @@ -361,14 +356,15 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") val tmp = TempSymbol(N, "tmp") val debug = - assign(Call(cachePath.selSN("toString"), Nil)(false, false, false)): str => - assign(Call(printFun, Ls(Arg(N, str)))(false, false, false)): _ => - assign(Call(sym.asPath.selSN("defCtx").selSN("toString"), Nil)(false, false, false)): str => - assign(Call(printFun, Ls(Arg(N, str)))(false, false, false))(_ => rest) + call(cachePath.selSN("toString"), Nil, false): str => + call(printFun, Ls(str), false): _ => + call(sym.asPath.selSN("defCtx").selSN("toString"), Nil, false): str => + call(printFun, Ls(str), false): _ => + rest Scoped(Set(tmp), debug) - val (newCtor, defs) = impl.transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) + val (newCtor, defs) = transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) val allDefs = defsList.fold(defs)((l, r) => l ++ r) val defCtxSym = BlockMemberSymbol("defCtx", Nil, true) val defCtxTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("defCtx")) From dbe58e7ce15da5e3cd45934fcbbe5f20b16ecaf3 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 10 Feb 2026 17:04:09 +0800 Subject: [PATCH 292/654] rename TempSymbol when staging --- .../scala/hkmc2/codegen/Instrumentation.scala | 12 ++++++++++-- .../src/test/mlscript/block-staging/Functions.mls | 15 ++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 9bc66a2f96..aaa9c4f33e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -21,6 +21,7 @@ import syntax.{Literal, Tree} class InstrumentationImpl(using State): type ArgWrappable = Path | Symbol type Context = HashMap[Path, Path] + var scope = Scope.empty def asArg(x: ArgWrappable): Arg = x match @@ -92,11 +93,18 @@ class InstrumentationImpl(using State): def transformSymbol(sym: Symbol, symName: Str = "sym")(k: Path => Block): Block = sym match case clsSym: ClassSymbol => + val name = scope.allocateOrGetName(sym) transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => - blockCtor("ClassSymbol", Ls(toValue(sym.nme), paramsOpt), symName)(k) + blockCtor("ClassSymbol", Ls(toValue(name), paramsOpt), symName)(k) case t: TermSymbol if t.defn.exists(_.sym.asCls.isDefined) => + val name = scope.allocateOrGetName(sym) transformSymbol(t.defn.get.sym.asCls.get, symName)(k) - case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) + case t: BuiltinSymbol => + // retain names to built-in functions + blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) + case _ => + val name = scope.allocateOrGetName(sym) + blockCtor("Symbol", Ls(toValue(name)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index a44e994b1d..599c839281 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -27,10 +27,10 @@ staged module Expressions with //│ > FunDefn(Symbol("lit"), ([]), Return(Lit(1), false), true) //│ > FunDefn(Symbol("assign"), ([]), Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))), true) //│ > FunDefn(Symbol("tup1"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) -//│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false), true) +//│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x1"))]), false), true) //│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) //│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) -//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("element1$"), Symbol("scrut1"), Symbol("a"), Symbol("tmp1"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut1"), Tuple([...Ref(Symbol("x1"))]), Match(Ref(Symbol("scrut1")), [Tup(0, false) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) //│ x = [1, 2, 3] class Outside(a) @@ -42,11 +42,11 @@ staged module ClassInstrumentation with fun app1() = Outside(1) fun app2() = Inside(1, 2) //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) -//│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) +//│ > Define(ClsLikeDefn(ClassSymbol("Inside1":[Symbol("a1"), Symbol("b")]), TODO), End) //│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) //│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) //│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) +//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside1":[Symbol("a1"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) module Nonstaged with fun f() = 1 @@ -54,10 +54,11 @@ staged module Staged with fun f() = 1 staged module CallSubst with fun call() = + 1 + 1 Nonstaged.f() Staged.f() //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) -//│ > FunDefn(Symbol("call"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))), true) +//│ > FunDefn(Symbol("call"), ([]), Scoped([Symbol("tmp"), Symbol("tmp1")], Assign(Symbol("tmp"), Call(Ref(Symbol("+")), [Lit(1), Lit(1)]), Assign(Symbol("tmp1"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false)))), true) staged module Arguments with fun f(x) = @@ -95,8 +96,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.94: staged module B with +//│ ║ l.95: staged module B with //│ ║ ^^^^^^ -//│ ║ l.95: fun f() = 1 +//│ ║ l.96: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) From 71677120923fb04ba7164a976c30b4d5a8887db1 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 10 Feb 2026 17:04:18 +0800 Subject: [PATCH 293/654] fix concat logic --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 360f4723c9..425005973c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -64,7 +64,7 @@ class Block with fun concat(b1: Block, b2: Block) = if b1 is Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, concat(rest, b2)) - Return(res, implct) then b2 // discard return? + Return(res, implct) then b1 Assign(lhs, rhs, rest) then Assign(lhs, rhs, concat(rest, b2)) Define(defn, rest) then Define(defn, concat(rest, b2)) Scoped(symbols, rest) then Scoped(symbols, concat(rest, b2)) From cd16d6f2a2e525b45e78c33ec1f8d208a338ea42 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 10 Feb 2026 17:24:38 +0800 Subject: [PATCH 294/654] warn shape propogation doesn't cover multiple parameter lists --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 6 ++++-- .../src/test/mlscript/block-staging/Functions.mls | 10 +++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index aaa9c4f33e..20929d8f0e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -18,7 +18,7 @@ import syntax.{Literal, Tree} // this avoids having to rebuild the same shapes everytime they are needed // transform Block to Block IR so that it can be instrumented in mlscript -class InstrumentationImpl(using State): +class InstrumentationImpl(using State, Raise): type ArgWrappable = Path | Symbol type Context = HashMap[Path, Path] var scope = Scope.empty @@ -289,6 +289,8 @@ class InstrumentationImpl(using State): val argSyms = f.params.flatMap(_.params).map(_.sym) val newBody = val rest = transformBlock(f.body)(using new HashMap): body => + if f.params.length != 1 then + raise(WarningReport(msg"Multiple parameter lists are not supported in shape propagation yet." -> f.sym.toLoc :: Nil)) // maintain parameter names in instrumented code f.params.map( _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply @@ -306,7 +308,7 @@ class InstrumentationImpl(using State): (newFun, debug) // TODO: rename as InstrumentationTransformer? -class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): +class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSubst()): val impl = new InstrumentationImpl def concat(b1: Block, b2: Block): Block = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 599c839281..e0ca906ce4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -60,11 +60,15 @@ staged module CallSubst with //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) //│ > FunDefn(Symbol("call"), ([]), Scoped([Symbol("tmp"), Symbol("tmp1")], Assign(Symbol("tmp"), Call(Ref(Symbol("+")), [Lit(1), Lit(1)]), Assign(Symbol("tmp1"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false)))), true) +:w staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z +//│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. +//│ ║ l.68: fun g(x)(y, z)() = z +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ > FunDefn(Symbol("f"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) //│ > FunDefn(Symbol("g"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) @@ -96,8 +100,8 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.95: staged module B with +//│ ║ l.99: staged module B with //│ ║ ^^^^^^ -//│ ║ l.96: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ +//│ ║ l.100: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) From 9d9d449d64b9c23975bdfd5355883ac7777fa890 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 11 Feb 2026 22:13:06 +0800 Subject: [PATCH 295/654] move ctor staging to a function --- .../scala/hkmc2/codegen/Instrumentation.scala | 26 ++++++++------- .../test/mlscript/block-staging/Functions.mls | 32 +++++++++++++++---- 2 files changed, 39 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 20929d8f0e..e2005c4209 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -21,6 +21,7 @@ import syntax.{Literal, Tree} class InstrumentationImpl(using State, Raise): type ArgWrappable = Path | Symbol type Context = HashMap[Path, Path] + // TODO: there could be a fresh scope per function body, instead of a single one for the entire program var scope = Scope.empty def asArg(x: ArgWrappable): Arg = @@ -99,7 +100,7 @@ class InstrumentationImpl(using State, Raise): case t: TermSymbol if t.defn.exists(_.sym.asCls.isDefined) => val name = scope.allocateOrGetName(sym) transformSymbol(t.defn.get.sym.asCls.get, symName)(k) - case t: BuiltinSymbol => + case _: BuiltinSymbol => // retain names to built-in functions blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) case _ => @@ -242,14 +243,13 @@ class InstrumentationImpl(using State, Raise): blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) case Define(cls: ClsLikeDefn, rest) => assert(cls.companion.isEmpty, "nested module not supported") - (Define(cls, _)): - transformBlock(rest): p => - transformSymbol(cls.isym): c => - optionNone(): none => // TODO: handle companion object - blockCtor("ClsLikeDefn", Ls(c, none)): cls => - blockCtor("Define", Ls(cls, p)): p => - ruleEnd(): end => - fnPrintCode(p)(k(end, ctx)) + transformBlock(rest): p => + transformSymbol(cls.isym): c => + optionNone(): none => // TODO: handle companion object + blockCtor("ClsLikeDefn", Ls(c, none)): cls => + blockCtor("Define", Ls(cls, p)): p => + ruleEnd(): end => + fnPrintCode(p)(k(end, ctx)) case End(_) => ruleEnd()(k(_, ctx)) case Match(p, ks, dflt, rest) => transformPath(p): x => @@ -326,13 +326,15 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub val (stagedMethods, debugPrintCode) = companion.methods .map(impl.transformFunDefn(sym, _)) .unzip + val ctor = FunDefn.withFreshSymbol(S(companion.isym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), companion.ctor)(false) + val (stagedCtor, ctorPrint) = impl.transformFunDefn(sym, ctor) val unit = State.runtimeSymbol.asPath.selSN("Unit") - val debugBlock = debugPrintCode.foldRight(Return(unit, true))(concat) + val debugBlock = (ctorPrint :: debugPrintCode).foldRight(Return(unit, true))(concat) def debugCont(rest: Block) = Begin(debugBlock, rest) - val newCtor = impl.transformBlock(companion.ctor)(using new HashMap())(_ => debugCont(End())) - val newCompanion = companion.copy(methods = companion.methods ++ stagedMethods, ctor = newCtor) + // stage the constructor + val newCompanion = companion.copy(methods = stagedCtor :: companion.methods ++ stagedMethods, ctor = companion.ctor.mapTail(debugCont)) val newModule = c.copy(sym = sym, companion = S(newCompanion)) Define(newModule, rest) case b => b diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e0ca906ce4..a87675de55 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,6 +24,7 @@ staged module Expressions with [1, 2] then 2 [a, ...] then 3 else 0 +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("lit"), ([]), Return(Lit(1), false), true) //│ > FunDefn(Symbol("assign"), ([]), Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))), true) //│ > FunDefn(Symbol("tup1"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) @@ -43,6 +44,7 @@ staged module ClassInstrumentation with fun app2() = Inside(1, 2) //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) //│ > Define(ClsLikeDefn(ClassSymbol("Inside1":[Symbol("a1"), Symbol("b")]), TODO), End) +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) //│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) //│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) @@ -52,12 +54,14 @@ module Nonstaged with fun f() = 1 staged module Staged with fun f() = 1 +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) staged module CallSubst with fun call() = 1 + 1 Nonstaged.f() Staged.f() -//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("call"), ([]), Scoped([Symbol("tmp"), Symbol("tmp1")], Assign(Symbol("tmp"), Call(Ref(Symbol("+")), [Lit(1), Lit(1)]), Assign(Symbol("tmp1"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false)))), true) :w @@ -67,8 +71,9 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.68: fun g(x)(y, z)() = z +//│ ║ l.72: fun g(x)(y, z)() = z //│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) //│ > FunDefn(Symbol("g"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) @@ -83,15 +88,21 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) + +staged module ClassDefs with + class A +//│ > Define(ClsLikeDefn(ClassSymbol("A"), TODO), End) +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) // debug printing fails, collision with class name? :fixme class A() staged module A with fun f() = 1 -//│ ═══[RUNTIME ERROR] TypeError: A1.f_instr is not a function +//│ ═══[RUNTIME ERROR] TypeError: A2.ctor$_instr is not a function // debug printing fails, unable to reference the class when calling the instrumented function :fixme @@ -100,8 +111,15 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.99: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.100: fun f() = 1 +//│ ║ l.110: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.111: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' +//│ ╟── which references the symbol introduced here +//│ ║ l.110: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.111: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) From 124aac39f5dea83b8546aacd3f23d85165ac079b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 13 Feb 2026 22:02:05 +0800 Subject: [PATCH 296/654] add comment --- hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls | 1 + 1 file changed, 1 insertion(+) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index eec661323e..11c0500c3a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -37,6 +37,7 @@ fun specialize(cache, block, shapes) = if block is FunDefn(Symbol(funName), ps, class FunCache(val cache: Map[String, Symbol]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None fun setFun(k, v) = + // FIXME: this is no longer fully true, as we will add a stub implementation for recursive shape prop if cache.has(k) then throw Error("the same specialized function should not be generated twice.") else cache.set(k, v); v From 1448d0edb5986f148f3144a4974f9d46a361c23b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 25 Feb 2026 00:16:29 +0800 Subject: [PATCH 297/654] add more info to defctx --- .../scala/hkmc2/codegen/Instrumentation.scala | 35 +++++++++++++------ .../src/test/mlscript-compile/Block.mls | 3 +- .../test/mlscript/block-staging/DefCtx.mls | 9 +++-- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index aad6e238b5..101808d58a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -21,7 +21,7 @@ case class Context(cache: HashMap[Path, Path], defs: HashMap[Path, (Path => Bloc def addCache(p: Path, v: Path): Context = Context(cache.clone() += (p -> v), defs) def delCache(p: Path): Context = Context(cache.clone() -= p, defs) // TODO: the paths for the definitions will be defined at the constructor of the module, is it possible to reference the value at the ctor, instead of rebuilding them in the function body? - def addDef(p: Path, d: (Path => Block) => Block): Context = Context(cache, defs.clone() += (p -> d)) + def addDef(p: Path, cont: (Path => Block) => Block): Context = Context(cache, defs.clone() += (p -> cont)) extension [A, B](ls: Iterable[(A => B) => B]) def collectApply(f: Ls[A] => B): B = @@ -191,9 +191,24 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): case _ => false }) case _ => false - - val newCtx = if isStagedFun then ctx.addDef(fun, transformPath(fun)) else ctx + // if staged, point to generator function instead of original function + val transformer = new BlockTransformer(SymbolSubst()): + override def applyPath(p: Path)(k: Path => Block) = p match + case Select(qual, Tree.Ident(name)) => k(Select(qual, Tree.Ident(name + "_gen"))(N)) + case p => k(p) transformPath(fun): stagedFun => + val funPath = if isStagedFun then + fun match + case Select(qual, Tree.Ident(name)) => Select(qual, Tree.Ident(name + "_gen"))(N) + case Value.Ref(l, _) => Value.Ref(TempSymbol(N, l.nme + "_gen"), N) + case _ => fun + else fun + val cont = (k: Path => Block) => + transformPath(fun): stagedFun => + tuple(Ls(funPath, toValue(isStagedFun))): value => + call(stagedFun.selSN("hash"), Ls()): str => + tuple(Ls(str, value))(k) + val newCtx = ctx.addDef(fun, cont) transformArgs(args): args => tuple(args.map(_._1)): tup => blockCtor("Call", Ls(stagedFun, tup), "app")(k(_, newCtx)) @@ -323,7 +338,7 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): .map(transformFunDefn(sym, _)) .unzip3 - // add cache for specialized functions in each staged module + // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol("cache", Nil, true) val cacheTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("cache")) val cachePath = sym.asPath.selSN("cache") @@ -349,7 +364,6 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): f.copy(sym = sym, dSym = dSym, body = body)(false) val genMethods = companion.methods.map(genMethod) - val unit = Select(Value.Ref(State.runtimeSymbol), Tree.Ident("Unit"))(N) // NOTE: this debug printing only works for top-level modules, nested modules don't work // TODO: remove this. only for testing def debugCont(rest: Block) = @@ -358,9 +372,9 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val debug = call(cachePath.selSN("toString"), Nil, false): str => call(printFun, Ls(str), false): _ => - call(sym.asPath.selSN("defCtx").selSN("toString"), Nil, false): str => - call(printFun, Ls(str), false): _ => - rest + // call(sym.asPath.selSN("defCtx").selSN("toString"), Nil, false): str => + call(printFun, Ls(sym.asPath.selSN("defCtx")), false): _ => + rest Scoped(Set(tmp), debug) @@ -370,8 +384,9 @@ class Instrumentation(using State) extends BlockTransformer(new SymbolSubst()): val defCtxTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("defCtx")) def defCtxDecl(rest: Block) = allDefs.values.collectApply: defs => - tuple(defs): defCtxInit => - Define(ValDefn(defCtxTsym, defCtxSym, defCtxInit), rest) + tuple(defs): tup => + assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => + Define(ValDefn(defCtxTsym, defCtxSym, map), rest) // used for staging classes inside modules val newCompanion = companion.copy( diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 360f4723c9..5050c7e8ed 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -1,6 +1,7 @@ import "./Predef.mls" import "./Option.mls" import "./StrOps.mls" +import "./CachedHash.mls" open Predef open StrOps @@ -29,7 +30,7 @@ class Case with Cls(val cls: Symbol, val path: Path) Tup(val len: Int, val inf: Bool) -class Result with +class Result extends CachedHash with constructor Call(val _fun: Path, val args: Array[Arg]) Instantiate(val cls: Path, val args: Array[Arg]) // assume immutable diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index fcd943df46..5ea08dea60 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -5,7 +5,7 @@ staged module A with fun f() = 1 fun g(x) = x //│ > FunCache(Map(2) {"f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true), "g" => FunDefn(Symbol("g"), [[Symbol("x")]], Return(ValueRef(Symbol("x")), false), true)}) -//│ > +//│ > Map(0) {} module C with fun h() = 0 @@ -18,4 +18,9 @@ staged module B with fun c() = i() fun d() = A.g(1) //│ > FunCache(Map(4) {"a" => FunDefn(Symbol("a"), [[]], Return(Call(Select(ValueRef(Symbol("A")), Symbol("f")), []), false), true), "b" => FunDefn(Symbol("b"), [[]], Return(Call(Select(ValueRef(Symbol("C")), Symbol("h")), []), false), true), "c" => FunDefn(Symbol("c"), [[]], Return(Call(ValueRef(Symbol("i")), []), false), true), "d" => FunDefn(Symbol("d"), [[]], Return(Call(Select(ValueRef(Symbol("A")), Symbol("g")), [Arg(None, ValueLit(1))]), false), true)}) -//│ > Select(ValueRef(Symbol("A")), Symbol("f")),Select(ValueRef(Symbol("A")), Symbol("g")) +//│ > Map(4) { +//│ > 'ValueRef(Symbol("i"))' => [ [Function: i], false ], +//│ > 'Select(ValueRef(Symbol("A")), Symbol("f"))' => [ [Function: f_gen], true ], +//│ > 'Select(ValueRef(Symbol("C")), Symbol("h"))' => [ [Function: h], false ], +//│ > 'Select(ValueRef(Symbol("A")), Symbol("g"))' => [ [Function: g_gen], true ] +//│ > } From 58036bc8ee5d57b7d3e5efde7dc85d12aeefd5bf Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 25 Feb 2026 16:55:24 +0800 Subject: [PATCH 298/654] fix scope --- .../src/test/mlscript-compile/Block.mls | 4 +- .../src/test/mlscript-compile/ShapeSet.mls | 2 +- .../test/mlscript/block-staging/ShapeProp.mls | 166 ++++++++++-------- 3 files changed, 97 insertions(+), 75 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 0eac89b1a7..460a14e297 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -105,12 +105,12 @@ fun showPath(p: Path): Str = ValueLit(lit) then "ValueLit(" + showLiteral(lit) + ")" -fun showOpt(opt: Option) = +fun showOptSpread(opt: Opt[Bool]) = if opt is Some(s) then "Some(" + s.toString() + ")" else "None" fun showArg(arg: Arg) = - "Arg(" + showOpt(arg.spread) + ", " + showPath(arg.value) + ")" + "Arg(" + showOptSpread(arg.spread) + ", " + showPath(arg.value) + ")" fun showArgs(args: Array[Arg]) = "[" + args.map(showArg).join(", ") + "]" diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 72ee2c8e07..5356e7088a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -245,7 +245,7 @@ fun prop(defs, ctx, cache, b: Block) = if b is // TODO: let syntax, presumably for Scoped Scoped(symbols, rest) then // just set all shape to bottom? symbols.forEach((x, i, arr) => ctx.add(ValueRef(x), mkBot())) - prop(defs, ctx, cache, rest) + [Scoped(symbols, prop(defs, ctx, cache, rest).0)] Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s1] then if prop(defs, ctx.update(ValueRef(x), union(ctx.get(ValueRef(x)).value, s1)), cache, b) is [b2, s2] then diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index ab2338933f..131f8125fe 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -123,6 +123,9 @@ sop(ctx, selPath) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") +print(showPath(ValueRef(Symbol("x")))) +//│ > ValueRef(Symbol("x")) + val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) sor(DefCtx.empty, Ctx.empty, Cache.empty, tup) //│ = [ @@ -200,7 +203,12 @@ let plus = ValueRef(Symbol("+")) // x + 1 let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ = [Assign(Symbol("x"), ValueLit(2), Return(ValueLit(3), false)), Lit(3)] +//│ = [ +//│ Scoped( +//│ [Symbol("x")], +//│ Assign(Symbol("x"), ValueLit(2), Return(ValueLit(3), false)) +//│ ) +//│ ] //│ c = Scoped( //│ [Symbol("x")], //│ Assign( @@ -228,25 +236,27 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Return(ValueLit(0), false), End()))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ = [ -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(9), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ +//│ Scoped( +//│ [Symbol("x")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(9), +//│ Match( +//│ ValueRef(Symbol("x")), //│ [ -//│ Cls( -//│ ClassSymbol("Int", None), -//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) -//│ ), -//│ Return(ValueLit(3), false) -//│ ] -//│ ], -//│ End(), -//│ End() +//│ [ +//│ Cls( +//│ ClassSymbol("Int", None), +//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) +//│ ), +//│ Return(ValueLit(3), false) +//│ ] +//│ ], +//│ End(), +//│ End() +//│ ) //│ ) -//│ ), -//│ Lit(3) +//│ ) //│ ] //│ c = Scoped( //│ [Symbol("x")], @@ -332,22 +342,24 @@ val ctxZ = Ctx.empty val blockBranch = Scoped([z], Match(ValueLit(1), [[Lit(1), Assign(z, ValueLit(1), End())], [Lit(2), Assign(z, ValueLit(2), End())]], Assign(z, ValueLit(3), End()), Return(ValueRef(z), false))) prop(defs, ctxZ, Cache.empty, blockBranch) //│ = [ -//│ Match( -//│ ValueLit(1), -//│ [ +//│ Scoped( +//│ [Symbol("z")], +//│ Match( +//│ ValueLit(1), //│ [ -//│ Lit(1), -//│ Assign( -//│ Symbol("z"), -//│ ValueLit(1), -//│ Return(ValueRef(Symbol("z")), false) -//│ ) -//│ ] -//│ ], -//│ Return(ValueRef(Symbol("z")), false), -//│ End() -//│ ), -//│ Lit(1) +//│ [ +//│ Lit(1), +//│ Assign( +//│ Symbol("z"), +//│ ValueLit(1), +//│ Return(ValueRef(Symbol("z")), false) +//│ ) +//│ ] +//│ ], +//│ Return(ValueRef(Symbol("z")), false), +//│ End() +//│ ) +//│ ) //│ ] //│ blockBranch = Scoped( //│ [Symbol("z")], @@ -374,26 +386,28 @@ val ctxXY = Ctx.empty val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [[Lit(true), Return(ValueLit(10), false)], [Lit(false), Assign(y, ValueLit(20), End())]], End(), Return(ValueRef(y), false)))) prop(defs, ctxXY, Cache.empty, earlyRetBlock) //│ = [ -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(false), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ +//│ Scoped( +//│ [Symbol("x"), Symbol("y")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(false), +//│ Match( +//│ ValueRef(Symbol("x")), //│ [ -//│ Lit(false), -//│ Assign( -//│ Symbol("y"), -//│ ValueLit(20), -//│ Return(ValueRef(Symbol("y")), false) -//│ ) -//│ ] -//│ ], -//│ Return(ValueRef(Symbol("y")), false), -//│ End() +//│ [ +//│ Lit(false), +//│ Assign( +//│ Symbol("y"), +//│ ValueLit(20), +//│ Return(ValueRef(Symbol("y")), false) +//│ ) +//│ ] +//│ ], +//│ Return(ValueRef(Symbol("y")), false), +//│ End() +//│ ) //│ ) -//│ ), -//│ Lit(20) +//│ ) //│ ] //│ ctxXY = Ctx( //│ Map(2) {"ValueRef(Symbol(\"x\"))" => Lit(false), "ValueRef(Symbol(\"y\"))" => } @@ -427,31 +441,33 @@ prop(defs, ctxXY, Cache.empty, earlyRetBlock) val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [[Lit(true), Match(ValueRef(y), [[Lit(true), Return(ValueLit(1), false)]], Return(ValueLit(2), false), End())]], Return(ValueLit(3), false), Return(ValueLit(4), false))))) prop(defs, ctxXY, Cache.empty, nestedBlock) //│ = [ -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(true), +//│ Scoped( +//│ [Symbol("x"), Symbol("y")], //│ Assign( -//│ Symbol("y"), -//│ ValueLit(false), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ +//│ Symbol("x"), +//│ ValueLit(true), +//│ Assign( +//│ Symbol("y"), +//│ ValueLit(false), +//│ Match( +//│ ValueRef(Symbol("x")), //│ [ -//│ Lit(true), -//│ Match( -//│ ValueRef(Symbol("y")), -//│ [], -//│ Return(ValueLit(2), false), -//│ End() -//│ ) -//│ ] -//│ ], -//│ Return(ValueLit(4), false), -//│ End() +//│ [ +//│ Lit(true), +//│ Match( +//│ ValueRef(Symbol("y")), +//│ [], +//│ Return(ValueLit(2), false), +//│ End() +//│ ) +//│ ] +//│ ], +//│ Return(ValueLit(4), false), +//│ End() +//│ ) //│ ) //│ ) -//│ ), -//│ Lit(2),Lit(4) +//│ ) //│ ] //│ nestedBlock = Scoped( //│ [Symbol("x"), Symbol("y")], @@ -480,3 +496,9 @@ prop(defs, ctxXY, Cache.empty, nestedBlock) //│ ) //│ ) //│ ) + +class A(val x) + +let a = A(new Map([["haha", 1], ["hehe", 2]])) + +//│ a = A(Map(2) {"haha" => 1, "hehe" => 2}) From c748694042ff7e0bf5c714eaea231f306b69719b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 25 Feb 2026 23:25:56 +0800 Subject: [PATCH 299/654] remove specialization dupe check --- .../shared/src/test/mlscript-compile/SpecializeHelpers.mls | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 11c0500c3a..a903109f8d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -36,8 +36,5 @@ fun specialize(cache, block, shapes) = if block is FunDefn(Symbol(funName), ps, class FunCache(val cache: Map[String, Symbol]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None - fun setFun(k, v) = - // FIXME: this is no longer fully true, as we will add a stub implementation for recursive shape prop - if cache.has(k) - then throw Error("the same specialized function should not be generated twice.") - else cache.set(k, v); v + // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions + fun setFun(k, v) = cache.set(k, v); v \ No newline at end of file From a98b76419ddcaa492478fe2df30e01b66d186cc2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 25 Feb 2026 23:31:59 +0800 Subject: [PATCH 300/654] update test --- .../test/mlscript/block-staging/Functions.mls | 67 +++++++++++-------- 1 file changed, 39 insertions(+), 28 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 659911a220..1f8e03495d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -25,7 +25,10 @@ staged module Expressions with [a, ...] then 3 else 0 //│ > FunCache(Map(7) {"lit" => FunDefn(Symbol("lit"), [[]], Return(ValueLit(1), false), true), "assign" => FunDefn(Symbol("assign"), [[]], Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(42), Assign(Symbol("y"), ValueRef(Symbol("x")), Return(ValueRef(Symbol("y")), false)))), true), "tup1" => FunDefn(Symbol("tup1"), [[]], Return(Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false), true), "tup2" => FunDefn(Symbol("tup2"), [[]], Return(Tuple([Arg(None, ValueLit(1)), Arg(Some(false), ValueRef(Symbol("x")))]), false), true), "dynsel" => FunDefn(Symbol("dynsel"), [[]], Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Arg(None, ValueLit(1))]), Return(DynSelect(ValueRef(Symbol("tmp")), ValueLit(0), false), false))), true), "match1" => FunDefn(Symbol("match1"), [[]], Scoped([Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(9), Match(ValueRef(Symbol("scrut")), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Some(Return(ValueLit(0), false)), End()))), true), "match2" => FunDefn(Symbol("match2"), [[]], Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([Arg(Some(true), ValueRef(Symbol("x")))]), Match(ValueRef(Symbol("scrut")), [[Tup(0, false), Assign(Symbol("tmp"), ValueLit(1), Break(Symbol("split_root$")))], [Tup(2, false), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(0))]), Assign(Symbol("element1$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1))]), Match(ValueRef(Symbol("element0$")), [[Lit(1), Match(ValueRef(Symbol("element1$")), [[Lit(2), Assign(Symbol("tmp"), ValueLit(2), Break(Symbol("split_root$")))]], Some(Match(ValueRef(Symbol("scrut")), [[Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$"))))]], Some(Break(Symbol("split_2$"))), End())), End())]], Some(Match(ValueRef(Symbol("scrut")), [[Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$"))))]], Some(Break(Symbol("split_2$"))), End())), End())))], [Tup(1, true), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(0))]), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$")))))]], Some(Break(Symbol("split_2$"))), End())), Assign(Symbol("tmp"), ValueLit(0), Break(Symbol("split_root$")))), Assign(Symbol("tmp"), ValueLit(3), End())), Return(ValueRef(Symbol("tmp")), false))), true)}) -//│ > +//│ > Map(2) { +//│ > 'Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get"))' => [ [Function: get], false ], +//│ > 'Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice"))' => [ [Function: slice], false ] +//│ > } //│ x = [1, 2, 3] class Outside(a) @@ -39,7 +42,10 @@ staged module ClassInstrumentation with //│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) //│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) //│ > FunCache(Map(4) {"inst1" => FunDefn(Symbol("inst1"), [[]], Return(Instantiate(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false), true), "inst2" => FunDefn(Symbol("inst2"), [[]], Return(Instantiate(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("NoArg", None)), []), false), true), "app1" => FunDefn(Symbol("app1"), [[]], Return(Call(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false), true), "app2" => FunDefn(Symbol("app2"), [[]], Return(Call(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("Inside", Some([Symbol("a"), Symbol("b")]))), [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false), true)}) -//│ > +//│ > Map(2) { +//│ > 'ValueRef(ClassSymbol("Outside", Some([Symbol("a")])))' => [ [Function: Outside] { class: [Function] }, false ], +//│ > 'Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("Inside", Some([Symbol("a"), Symbol("b")])))' => [ undefined, false ] +//│ > } module Nonstaged with fun f() = 1 @@ -50,9 +56,12 @@ staged module CallSubst with Nonstaged.f() Staged.f() //│ > FunCache(Map(1) {"f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true)}) -//│ > +//│ > Map(0) {} //│ > FunCache(Map(1) {"call" => FunDefn(Symbol("call"), [[]], Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(ValueRef(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(ValueRef(Symbol("Staged")), Symbol("f")), []), false))), true)}) -//│ > Select(ValueRef(Symbol("Staged")), Symbol("f")) +//│ > Map(2) { +//│ > 'Select(ValueRef(Symbol("Staged")), Symbol("f"))' => [ [Function: f_gen], true ], +//│ > 'Select(ValueRef(Symbol("Nonstaged")), Symbol("f"))' => [ [Function: f], false ] +//│ > } staged module Arguments with fun f(x) = @@ -60,7 +69,7 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ > FunCache(Map(2) {"f" => FunDefn(Symbol("f"), [[Symbol("x")]], Assign(Symbol("x"), ValueLit(1), Return(ValueRef(Symbol("x")), false)), true), "g" => FunDefn(Symbol("g"), [[Symbol("x")], [Symbol("y"), Symbol("z")], []], Return(ValueRef(Symbol("z")), false), true)}) -//│ > +//│ > Map(0) {} staged module OtherBlocks with fun scope() = @@ -73,8 +82,10 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > FunCache(Map(2) {"scope" => FunDefn(Symbol("scope"), [[]], Scoped([Symbol("a")], Assign(Symbol("a"), ValueLit(1), Return(Call(Select(Select(ValueRef(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Arg(None, ValueRef(Symbol("a")))]), false))), true), "breakAndLabel" => FunDefn(Symbol("breakAndLabel"), [[]], Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), ValueLit(1), Match(ValueRef(Symbol("scrut")), [[Lit(2), Break(Symbol("split_1$"))], [Lit(3), Break(Symbol("split_1$"))]], Some(Break(Symbol("split_1$"))), End())), Assign(Symbol("tmp"), ValueLit(0), End())), Return(ValueRef(Symbol("tmp")), false))), true)}) -//│ > +//│ > FunCache(Map(2) {"scope" => FunDefn(Symbol("scope"), [[]], Scoped([Symbol("a")], Assign(Symbol("a"), ValueLit(1), Return(Call(Select(Select(ValueRef(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Arg(None, ValueRef(Symbol("a")))]), false))), true), "breakAndLabel" => FunDefn(Symbol("breakAndLabel"), [[]], Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), ValueLit(1), Match(ValueRef(Symbol("scrut")), [[Lit(2), Break(Symbol("split_1$"))], [Lit(3), Break(Symbol("split_1$"))]], Some(Break(Symbol("split_1$"))), End())), Assign(Symbol("tmp"), ValueLit(0), End())), Return(ValueRef(Symbol("tmp")), false))), true)}) +//│ > Map(1) { +//│ > 'Select(Select(ValueRef(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally"))' => [ undefined, false ] +//│ > } // debug printing fails, collision with class name? :fixme @@ -90,33 +101,33 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.89: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.90: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ +//│ ║ l.100: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.101: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.89: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.90: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ +//│ ║ l.100: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.101: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.89: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.90: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ +//│ ║ l.100: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.101: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.89: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.90: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ +//│ ║ l.100: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.101: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.89: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.90: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ +//│ ║ l.100: staged module B with +//│ ║ ^^^^^^ +//│ ║ l.101: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ //│ > FunCache(Map(1) {"f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true)}) -//│ > +//│ > Map(0) {} From 55348d04277a5cc0224c392d9d19a847d2923594 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 25 Feb 2026 23:33:44 +0800 Subject: [PATCH 301/654] remove Label/Break nodes --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 1932493d3e..c2c5298b79 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -74,10 +74,8 @@ class Block with Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) - // TODO: [fyp] handle Scoped, Label, Break nodes + // TODO: [fyp] handle Scoped nodes Scoped(val symbols: Array[Symbol], val rest: Block) - Label(val labelSymbol: Symbol, val loop: Bool, val body: Block, val rest: Block) - Break(val labelSymbol: Symbol) End() fun concat(b1: Block, b2: Block) = if b1 is @@ -86,8 +84,6 @@ fun concat(b1: Block, b2: Block) = if b1 is Assign(lhs, rhs, rest) then Assign(lhs, rhs, concat(rest, b2)) Define(defn, rest) then Define(defn, concat(rest, b2)) Scoped(symbols, rest) then Scoped(symbols, concat(rest, b2)) - Label(labelSymbol, loop, body, rest) then Label(labelSymbol, loop, body, concat(rest, b2)) - Break then ??? // unreachable End() then b2 fun indent(s: Str) = s.replaceAll("\n", "\n ") @@ -179,10 +175,6 @@ fun showBlock(b) = Scoped(symbols, rest) then // initialize symbols symbols.map(showSymbol).map("let " + _).join("\n") + showRestBlock(rest) - Label(labelSymbol, loop, body, rest) then - "Label(" + showSymbol(labelSymbol) + ", " + loop + ", " + showRestBlock(body) + ", " + showRestBlock(rest) + ")" - Break(labelSymbol) then - "Break(" + showSymbol(labelSymbol) + ")" End() then "" _ then "" + b From aab0ecd294c3dd64644ca406edbd90c102e5819d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 25 Feb 2026 23:51:53 +0800 Subject: [PATCH 302/654] improve printing --- .../src/test/mlscript-compile/Block.mls | 12 +- .../test/mlscript/block-staging/Functions.mls | 161 +++++++++--------- .../test/mlscript/block-staging/PrintCode.mls | 6 +- 3 files changed, 88 insertions(+), 91 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 48477429a4..687806fdfe 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -93,7 +93,7 @@ fun showLiteral(l: Literal) = undefined then "undefined" null then "null" Str then "\"" + l.toString() + "\"" - else l + else l.toString() fun showSymbol(s: Symbol) = if s.name is "runtime" then "Runtime" @@ -138,7 +138,7 @@ fun showCase(c) = _ then "" fun showArm(a) = - showCase(a.cse) + " then" + indent("\n" + showBlock(a.body)) + showCase(a.cse) + " then" + (if a.body is Return then " " else "\n ") + indent(showBlock(a.body)) fun showParams(p: ParamList) = "(" + p.map(showSymbol(_)).join(", ") + ")" @@ -149,13 +149,13 @@ fun showParamsOpt(p) = None then "" fun showParamList(ps: Array[ParamList]) = - ps.map(showParams) + ps.map(showParams).join("") fun showDefn(d: Defn): Str = if d is FunDefn(sym, ps, body, _) then "fun " + showSymbol(sym) + showParamList(ps) + " =" + - (if body is Return(_, _) then " " else "\n ") + showBlock(body) + (if body is Return then " " else "\n ") + indent(showBlock(body)) ClsLikeDefn(sym, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) _ then "" @@ -166,7 +166,7 @@ fun showBlock(b) = Define(d, rest) then showDefn(d) + showRestBlock(rest) Return(res, _) then - "return:" + showResult(res) // debug, to make diff tests clearer for now + showResult(res) Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" + indent("\n" + arms.map(showArm).join("\n")) @@ -175,7 +175,7 @@ fun showBlock(b) = Scoped(symbols, rest) then // initialize symbols symbols.map(showSymbol).map("let " + _).join("\n") + showRestBlock(rest) - End() then "" + End() then "()" _ then "" + b // removes trailing newline diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 181402806f..8f85d05d54 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -25,69 +25,66 @@ staged module Expressions with [a, ...] then 3 else 0 //│ > fun ctor_() = -//│ > -//│ > fun lit() = return:1 +//│ > () +//│ > fun lit() = 1 //│ > fun assign() = //│ > let x -//│ > let y -//│ > x = 42 -//│ > y = x -//│ > return:y -//│ > fun tup1() = return:[1, 2] -//│ > fun tup2() = return:[1, ..x1] +//│ > let y +//│ > x = 42 +//│ > y = x +//│ > y +//│ > fun tup1() = [1, 2] +//│ > fun tup2() = [1, ..x1] //│ > fun dynsel() = //│ > let tmp -//│ > tmp = [1] -//│ > return:tmp.(0) +//│ > tmp = [1] +//│ > tmp.(0) //│ > fun match1() = //│ > let scrut -//│ > scrut = 9 -//│ > if scrut is -//│ > Bool then -//│ > return:1 -//│ > 8 then -//│ > return:2 -//│ > Int then -//│ > return:3 -//│ > else return:0 +//│ > scrut = 9 +//│ > if scrut is +//│ > Bool then 1 +//│ > 8 then 2 +//│ > Int then 3 +//│ > else 0 //│ > fun match2() = //│ > let a -//│ > let tmp1 -//│ > let middleElements -//│ > let element0_ -//│ > let element1_ -//│ > let scrut1 -//│ > scrut1 = [...x1] -//│ > if scrut1 is -//│ > [] then -//│ > tmp1 = 1 -//│ > [_, _] then -//│ > element0_ = Runtime.Tuple.get(scrut1, 0) -//│ > element1_ = Runtime.Tuple.get(scrut1, 1) -//│ > if element0_ is -//│ > 1 then -//│ > if element1_ is -//│ > 2 then -//│ > tmp1 = 2 -//│ > else if scrut1 is -//│ > [_, ...] then -//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) -//│ > a = element0_ -//│ > tmp1 = 3 -//│ > else tmp1 = 0 -//│ > else if scrut1 is -//│ > [_, ...] then -//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) -//│ > a = element0_ -//│ > tmp1 = 3 -//│ > else tmp1 = 0 -//│ > [_, ...] then -//│ > element0_ = Runtime.Tuple.get(scrut1, 0) -//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) -//│ > a = element0_ -//│ > tmp1 = 3 -//│ > else tmp1 = 0 -//│ > return:tmp1 +//│ > let tmp1 +//│ > let middleElements +//│ > let element0_ +//│ > let element1_ +//│ > let scrut1 +//│ > scrut1 = [...x1] +//│ > if scrut1 is +//│ > [] then +//│ > tmp1 = 1 +//│ > [_, _] then +//│ > element0_ = Runtime.Tuple.get(scrut1, 0) +//│ > element1_ = Runtime.Tuple.get(scrut1, 1) +//│ > if element0_ is +//│ > 1 then +//│ > if element1_ is +//│ > 2 then +//│ > tmp1 = 2 +//│ > else if scrut1 is +//│ > [_, ...] then +//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) +//│ > a = element0_ +//│ > tmp1 = 3 +//│ > else tmp1 = 0 +//│ > else if scrut1 is +//│ > [_, ...] then +//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) +//│ > a = element0_ +//│ > tmp1 = 3 +//│ > else tmp1 = 0 +//│ > [_, ...] then +//│ > element0_ = Runtime.Tuple.get(scrut1, 0) +//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) +//│ > a = element0_ +//│ > tmp1 = 3 +//│ > else tmp1 = 0 +//│ > tmp1 //│ x = [1, 2, 3] class Outside(a) @@ -101,11 +98,11 @@ staged module ClassInstrumentation with //│ > class NoArg //│ > class Inside1(a1, b) //│ > fun ctor_() = -//│ > -//│ > fun inst1() = return:new Outside(1) -//│ > fun inst2() = return:new ClassInstrumentation.NoArg() -//│ > fun app1() = return:Outside(1) -//│ > fun app2() = return:ClassInstrumentation.Inside1(1, 2) +//│ > () +//│ > fun inst1() = new Outside(1) +//│ > fun inst2() = new ClassInstrumentation.NoArg() +//│ > fun app1() = Outside(1) +//│ > fun app2() = ClassInstrumentation.Inside1(1, 2) staged module Arguments with fun f(x) = @@ -115,14 +112,14 @@ staged module Arguments with //│ FAILURE: Unexpected warning //│ FAILURE LOCATION: rest (Instrumentation.scala:292) //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.114: fun g(x)(y, z)() = z +//│ ║ l.111: fun g(x)(y, z)() = z //│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ > fun ctor_() = -//│ > +//│ > () //│ > fun f(x) = //│ > x = 1 -//│ > return:x -//│ > fun g(x),(y, z),() = return:z +//│ > x +//│ > fun g(x)(y, z)() = z staged module OtherBlocks with fun scope() = @@ -136,22 +133,22 @@ staged module OtherBlocks with 3 then 0 else 0 //│ > fun ctor_() = -//│ > +//│ > () //│ > fun scope() = //│ > let a -//│ > a = 1 -//│ > return:OtherBlocks.scope.locally(a) +//│ > a = 1 +//│ > OtherBlocks.scope.locally(a) //│ > fun breakAndLabel() = //│ > let tmp -//│ > let scrut -//│ > scrut = 1 -//│ > if scrut is -//│ > 2 then -//│ > tmp = 0 -//│ > 3 then -//│ > tmp = 0 -//│ > else tmp = 0 -//│ > return:tmp +//│ > let scrut +//│ > scrut = 1 +//│ > if scrut is +//│ > 2 then +//│ > tmp = 0 +//│ > 3 then +//│ > tmp = 0 +//│ > else tmp = 0 +//│ > tmp // debug printing fails, collision with class name? :fixme @@ -167,16 +164,16 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.166: staged module B with +//│ ║ l.163: staged module B with //│ ║ ^^^^^^ -//│ ║ l.167: fun f() = 1 +//│ ║ l.164: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.166: staged module B with +//│ ║ l.163: staged module B with //│ ║ ^^^^^^ -//│ ║ l.167: fun f() = 1 +//│ ║ l.164: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ > fun ctor_() = -//│ > -//│ > fun f() = return:1 +//│ > () +//│ > fun f() = 1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index c858612cbe..d521057352 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -8,7 +8,7 @@ open Block open Option printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false)) -//│ > fun f(x) = return:1 +//│ > fun f(x) = 1 printCode(ValueLit(true)) printCode(ValueLit(null)) @@ -41,7 +41,7 @@ printCode(Tuple([Arg(Some(true), ValueRef(Symbol("x"))), Arg(Some(false), ValueR printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false)) printCode(ClsLikeDefn(ClassSymbol("A", Some([Symbol("x")])), undefined)) printCode(ClsLikeDefn(ClassSymbol("B", None), undefined)) -//│ > fun f(x) = return:1 +//│ > fun f(x) = 1 //│ > class A(x) //│ > class B @@ -49,5 +49,5 @@ printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), //│ > let x //│ > let y //│ > x = 4.2 -//│ > return:x +//│ > x From 0e45ac22f3158a1a66dad7b6a9ad14f6a53d1dfd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 26 Feb 2026 14:28:39 +0800 Subject: [PATCH 303/654] indent FunCache output --- .../scala/hkmc2/codegen/Instrumentation.scala | 15 ++++-- .../test/mlscript/block-staging/DefCtx.mls | 51 +++++++++++++++++-- 2 files changed, 58 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 1a137a51ef..b6d65109b5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -404,6 +404,7 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub Return(block, false) (Scoped(Set(argSyms*), rest), defs) + // TODO: replace modSym with f.owner.get? def pathCont(k: Path => Block) = call(modSym.asPath.selSN(genSymName), Ls())(instr => tuple(Ls(toValue(f.sym.nme), instr))(k)) val newFun = f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) (newFun, defs, pathCont) @@ -451,13 +452,17 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub // TODO: remove this. only for testing def debugCont(rest: Block) = val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") + val renderFun = State.runtimeSymbol.asPath.selSN("render") + val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) val tmp = TempSymbol(N, "tmp") val debug = - call(cachePath.selSN("toString"), Nil, false): str => - call(printFun, Ls(str), false): _ => - // call(sym.asPath.selSN("defCtx").selSN("toString"), Nil, false): str => - call(printFun, Ls(sym.asPath.selSN("defCtx")), false): _ => - rest + assign(options): options => + // call(cachePath.selSN("toString"), Nil, false): str => + call(renderFun, Ls(cachePath, options), false): str => + call(printFun, Ls(str), false): _ => + // call(sym.asPath.selSN("defCtx").selSN("toString"), Nil, false): str => + call(printFun, Ls(sym.asPath.selSN("defCtx")), false): _ => + rest Scoped(Set(tmp), debug) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index c9a2271b67..d6cd98f401 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -4,7 +4,18 @@ staged module A with fun f() = 1 fun g(x) = x -//│ > FunCache(Map(3) {"ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), "f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true), "g" => FunDefn(Symbol("g"), [[Symbol("x")]], Return(ValueRef(Symbol("x")), false), true)}) +//│ > FunCache( +//│ > Map(3) { +//│ > "ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), +//│ > "f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true), +//│ > "g" => FunDefn( +//│ > Symbol("g"), +//│ > [[Symbol("x")]], +//│ > Return(ValueRef(Symbol("x")), false), +//│ > true +//│ > ) +//│ > } +//│ > ) //│ > Map(0) {} module C with @@ -17,10 +28,44 @@ staged module B with fun b() = C.h() fun c() = i() fun d() = A.g(1) -//│ > FunCache(Map(5) {"ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), "a" => FunDefn(Symbol("a"), [[]], Return(Call(Select(ValueRef(Symbol("A")), Symbol("f")), []), false), true), "b" => FunDefn(Symbol("b"), [[]], Return(Call(Select(ValueRef(Symbol("C")), Symbol("h")), []), false), true), "c" => FunDefn(Symbol("c"), [[]], Return(Call(ValueRef(Symbol("i")), []), false), true), "d" => FunDefn(Symbol("d"), [[]], Return(Call(Select(ValueRef(Symbol("A")), Symbol("g")), [Arg(None, ValueLit(1))]), false), true)}) +//│ > FunCache( +//│ > Map(5) { +//│ > "ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), +//│ > "a" => FunDefn( +//│ > Symbol("a"), +//│ > [[]], +//│ > Return(Call(Select(ValueRef(Symbol("A")), Symbol("f")), []), false), +//│ > true +//│ > ), +//│ > "b" => FunDefn( +//│ > Symbol("b"), +//│ > [[]], +//│ > Return(Call(Select(ValueRef(Symbol("C")), Symbol("h")), []), false), +//│ > true +//│ > ), +//│ > "c" => FunDefn( +//│ > Symbol("c"), +//│ > [[]], +//│ > Return(Call(ValueRef(Symbol("i")), []), false), +//│ > true +//│ > ), +//│ > "d" => FunDefn( +//│ > Symbol("d"), +//│ > [[]], +//│ > Return( +//│ > Call( +//│ > Select(ValueRef(Symbol("A")), Symbol("g")), +//│ > [Arg(None, ValueLit(1))] +//│ > ), +//│ > false +//│ > ), +//│ > true +//│ > ) +//│ > } +//│ > ) //│ > Map(4) { -//│ > 'ValueRef(Symbol("i"))' => [ [Function: i], false ], //│ > 'Select(ValueRef(Symbol("C")), Symbol("h"))' => [ [Function: h], false ], //│ > 'Select(ValueRef(Symbol("A")), Symbol("f"))' => [ [Function: f_gen], true ], +//│ > 'ValueRef(Symbol("i"))' => [ [Function: i], false ], //│ > 'Select(ValueRef(Symbol("A")), Symbol("g"))' => [ [Function: g_gen], true ] //│ > } From dd8378bcee2059384a8865df5c0273cff176a16f Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 26 Feb 2026 14:39:30 +0800 Subject: [PATCH 304/654] Fix shape prop --- .../src/test/mlscript-compile/Block.mls | 4 +- .../src/test/mlscript-compile/ShapeSet.mls | 174 +++++++----- .../test/mlscript/block-staging/ShapeProp.mls | 262 ++++++++---------- 3 files changed, 219 insertions(+), 221 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 460a14e297..5bc8787ebf 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -64,13 +64,13 @@ class Block with fun concat(b1: Block, b2: Block) = if b1 is Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, concat(rest, b2)) - Return(res, implct) then b2 // discard return? + Return(res, implct) then b1 Assign(lhs, rhs, rest) then Assign(lhs, rhs, concat(rest, b2)) Define(defn, rest) then Define(defn, concat(rest, b2)) Scoped(symbols, rest) then Scoped(symbols, concat(rest, b2)) Label(labelSymbol, loop, body, rest) then Label(labelSymbol, loop, body, concat(rest, b2)) Break then ??? // unreachable - End() then b2 + End then b2 fun showBool(b: Bool) = if b then "true" else "false" diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 5356e7088a..bc1a61dc3c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -1,12 +1,15 @@ -import "./Predef.mls" -import "./Option.mls" import "./Block.mls" -import "./Shape.mls" import "./CachedHash.mls" +import "./Option.mls" +import "./Predef.mls" +import "./Shape.mls" +import "./StrOps.mls" -open Predef open Block {ClassSymbol} +open Shape {Dyn, Lit, Arr, Class} +open Predef open Option +open StrOps type ShapeSet = ShapeSet.ShapeSet @@ -23,7 +26,11 @@ class ShapeSet(val underlying: Map[String, Shape]) extends CachedHash with fun flatMap(f) = liftMany(values().flatMap(f)) - fun toString() = underlying.keys().toArray().toSorted().toString() + fun toString() = "{" ~ underlying.keys().toArray().toSorted().toString() ~ "}" + + fun isDynArr() = + if underlying.size == 1 and values().0 is Arr(shapes, _) then shapes.every(s => s is Dyn) else false + module ShapeSet with fun empty = ShapeSet(new Map) @@ -45,8 +52,6 @@ fun prod(xs) = 1 then xs else xs.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat()))) -open Shape { Dyn, Lit, Arr, Class } - // lifted constructors fun mkBot() = ShapeSet.empty @@ -71,16 +76,16 @@ fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = // helper functions -fun filter(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) +fun filterSet(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) -fun rest(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.rest(_, p)) +fun restSet(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.rest(_, p)) -fun sel(s1: ShapeSet, s2: ShapeSet) = +fun selSet(s1: ShapeSet, s2: ShapeSet) = prod([s1.values(), s2.values()]) .flatMap(pair => Shape.sel(pair.0, pair.1)) |> liftMany -fun static(s: ShapeSet) = +fun staticSet(s: ShapeSet) = let v = s.values() if v.length == 0 then throw Error("Some variables have bottom shape.") @@ -89,25 +94,6 @@ fun static(s: ShapeSet) = open Block -fun concat(b1, b2) = if b1 is - Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, concat(rest, b2)) - Return(res, implct) then b1 - Assign(lhs, rhs, rest) then Assign(lhs, rhs, concat(rest, b2)) - Define(defn, rest) then Define(defn, concat(rest, b2)) - Scoped(symbols, rest) then Scoped(symbols, concat(rest, b2)) - Label(labelSymbol, loop, body, rest) then Label(labelSymbol, loop, body, concat(rest, b2)) - End then b2 - -// fun concat(b1, b2) = -// if b1 is -// End() then b2 -// Return(res, implct) then b2 -// Match(p, arms, dflt, rest) then Match(p, arms, dflt, concat(rest, b2)) -// Scoped(syms, rest) then Scoped(syms, concat(rest, b2)) -// Assign(x, r, rest) then Assign(x, r, concat(rest, b2)) -// Define(d, rest) then Define(d, concat(rest, b2)) -// _ then throw Error("Unknown block type") - fun valOf(s : ShapeSet) = ??? // fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = @@ -120,52 +106,74 @@ class Ctx(val maps: Map[String, ShapeSet]) with let ps = showPath(path) if maps.has(ps) then Some(maps.get(ps)) else None - // fun nest = Ctx(new Map(), Some of this) fun clone = Ctx(new Map(maps)) fun add(path, ss) = let ps = showPath(path) - maps.set(ps, ss) - this - fun update(path, ss) = - let ps = showPath(path) - if maps.has(ps) then do maps.set(ps, ss) - // else if parent is Some(ctx) then do ctx.update(path, ss) + if maps.has(ps) then + maps.set(ps, union(maps.get(ps), ss)) + else + maps.set(ps, ss) this module Ctx with fun empty = Ctx(new Map()) - -class DefCtx(val defs) with - fun get(path) = - let p = showPath(path) - if defs.has(p) then Some(defs.get(p)) +class DefCtx(val defs: Map[String, Function]) with + fun get(sym) = + if defs.has(sym.name) then Some(defs.get(sym.name)) else None - fun add(path, node) = - let p = showPath(path) - defs.set(p, node) + fun add(sym, genFunc) = + defs.set(sym.name, genFunc) this module DefCtx with fun empty = DefCtx(new Map()) -class Cache(val underlying: Map[String, [Shape, Symbol, FunDefn]]) with - fun key(f, args) = - showPath(f) + "(" + args.map(s => s.toString()).join(",") + ")" - fun get(f, args) = - let k = key(f, args) - if underlying.has(k) then Some(underlying.get(k)) else None - fun add(f, args, res) = - underlying.set(key(f, args), res) - this +// TODO: improve it +class Cache(underlying: Map[String, [String, ShapeSet, Block.Block]], names: Map[String, Int]) with + fun add(fname, argShape, codefrag, resShape) = + let key = fname ~ argShape.hash() + let newName = + if argShape.isDynArr() then fname + else if underlying.has(key) then underlying.get(key).0 + else freshName(fname) // TODO: hygiene + let s = if underlying.has(key) then union(underlying.get(key).1, resShape) else resShape // Why + let newDef = if codefrag is + FunDefn(sym, params, body, stage) then FunDefn(Symbol(newName), params, body, stage) + else codefrag + underlying.set(key, [newName, s, newDef]) + Symbol(newName) + fun has(fname, argShape) = + let key = fname ~ argShape.hash() + underlying.has(key) + fun get(fname, argShape) = + let key = fname ~ argShape.hash() + if underlying.has(key) then underlying.get(key) + else ??? + fun getSimp(fname, argShape) = + let key = fname ~ argShape.hash() + if underlying.has(key) then + let res = underlying.get(key) + [res.1, Symbol(res.0)] + else ??? + fun freshName(name) = + if not names.has(name) do + names.set(name, 0) + let i = names.get(name) + names.set(name, i + 1) + StrOps.concat of name, "_", i.toString() + fun getImps() = + underlying.values().toArray().map(_.2) // TODO: remove impls with all-dyn params + +// fun emptyCache() = Cache(new Map(), new Map()) module Cache with - fun empty = Cache(new Map()) + fun empty = Cache(new Map(), new Map()) fun sop(ctx, p: Path): ShapeSet = if ctx.get(p) is Some(s) then s else if p is - Select(qual, sym) then sel(sop(ctx, qual), mkLit(sym.name)) - DynSelect(qual, fld, _) then sel(sop(ctx, qual), sop(ctx, fld)) + Select(qual, sym) then selSet(sop(ctx, qual), mkLit(sym.name)) + DynSelect(qual, fld, _) then selSet(sop(ctx, qual), sop(ctx, fld)) ValueLit(lit) then mkLit(lit) ValueRef(l) then mkDyn() @@ -179,9 +187,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is Call(f, args) then fun lit(l) = [ValueLit(l), mkLit(l)] let argShapes = args.map(a => sop(ctx, a.value)) - let def = if f is - Select(_, _) then defs.get(f) - else None + let def = if f is Select(_, symb) then defs.get(f) else None if def is Some(gen) then if gen(...argShapes) is [shape, implSymb] then @@ -242,34 +248,52 @@ fun prop(defs, ctx, cache, b: Block) = if b is End then [b, mkBot()] Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s1] then [Return(r1, implct), s1] - // TODO: let syntax, presumably for Scoped - Scoped(symbols, rest) then // just set all shape to bottom? + Scoped(symbols, rest) then symbols.forEach((x, i, arr) => ctx.add(ValueRef(x), mkBot())) - [Scoped(symbols, prop(defs, ctx, cache, rest).0)] + let res = prop(defs, ctx, cache, rest) + [Scoped(symbols, res.0), res.1] Assign(x, r, b) and sor(defs, ctx, cache, r) is [r1, s1] then - if prop(defs, ctx.update(ValueRef(x), union(ctx.get(ValueRef(x)).value, s1)), cache, b) is [b2, s2] then + if prop(defs, ctx.add(ValueRef(x), s1), cache, b) is [b2, s2] then [Assign(x, r1, b2), s2] + else + print(prop(defs, ctx.add(ValueRef(x), s1), cache, b)) Match(p, arms, dflt, restBlock) then let s = sop(ctx, p) let filteredArms = foldl((r, arm) => - let fs = filter(r.0, arm.0) + let fs = filterSet(r.0, arm.0) if fs.isEmpty() then r else let branchCtx = ctx.clone if not p is ValueLit do branchCtx.add(p, fs) let res = prop(defs, branchCtx, cache, concat(arm.1, restBlock)) - [rest(r.0, arm.0), union(r.1, res.1), [...r.2, [arm.0, res.0]]] + [restSet(r.0, arm.0), union(r.1, res.1), [...r.2, [arm.0, res.0]]] )([s, mkBot(), []], ...arms) - let newDflt = - let branchCtx = ctx.clone - if - filteredArms.0.isEmpty() do prop(defs, branchCtx, cache, restBlock) - not p is ValueLit do - branchCtx.add(p, filteredArms.0) - prop(defs, branchCtx, cache, concat(dflt, restBlock)) - [Match(p, filteredArms.2, newDflt.0, End()), union(filteredArms.1, newDflt.1)] - + if filteredArms.2.length is + 0 and + filteredArms.0.isEmpty() then prop(defs, ctx, cache, restBlock) + else prop(defs, ctx, cache, concat(if dflt is Some(d) then d else End(), restBlock)) + 1 and + filteredArms.0.isEmpty() then + let newRest = prop(defs, ctx, cache, restBlock) + [concat(filteredArms.2.0.1, newRest.0), union(filteredArms.1, newRest.1)] + dflt is + Some(d) then + let branchCtx = ctx.clone + if not p is ValueLit then do branchCtx.add(p, filteredArms.0) + let newDflt = prop(defs, branchCtx, cache, concat(d, restBlock)) + [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] + else + [Match(p, filteredArms.2, None, End()), filteredArms.1] + else + dflt is + Some(d) then + let branchCtx = ctx.clone + if not p is ValueLit then do branchCtx.add(p, filteredArms.0) + let newDflt = prop(defs, branchCtx, cache, concat(d, restBlock)) + [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] + else + [Match(p, filteredArms.2, None, End()), filteredArms.1] // TODO: remove it. this can be done in module static blocks fun exec(defs, ctx, cache, b: Block) = if b is Define(d, rest) and d is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 131f8125fe..e2134256fb 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -11,19 +11,19 @@ open Shape { Arr, Class, Dyn, Lit } open ShapeSet mkBot() -//│ = +//│ = {} mkLit(0) -//│ = Lit(0) +//│ = {Lit(0)} mkDyn() -//│ = Dyn() +//│ = {Dyn()} mkDyn() == mkDyn() //│ = false mkArr([mkLit(0)], false) -//│ = Arr([Lit(0)], false) +//│ = {Arr([Lit(0)], false)} assert(mkBot().isEmpty()) @@ -33,78 +33,122 @@ Shape.static(Shape.Lit("Hi")) // sel let arrSp = mkArr([mkLit(0), mkDyn()], false) -//│ arrSp = Arr([Lit(0), Dyn()], false) +//│ arrSp = {Arr([Lit(0), Dyn()], false)} -sel(arrSp, mkLit(0)) -//│ = Lit(0) +selSet(arrSp, mkLit(0)) +//│ = {Lit(0)} -sel(arrSp, mkLit(1)) -//│ = Dyn() +selSet(arrSp, mkLit(1)) +//│ = {Dyn()} -sel(mkDyn(), mkLit(5)) -//│ = Dyn() +selSet(mkDyn(), mkLit(5)) +//│ = {Dyn()} let a = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)], false)]) -sel(x, liftMany([Lit("a"), Lit(2)])) -//│ = Dyn(),Lit(42),Lit(undefined) +selSet(x, liftMany([Lit("a"), Lit(2)])) +//│ = {Dyn(),Lit(42),Lit(undefined)} //│ a = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) -//│ x = Arr([Lit(100), Lit(false), Lit(undefined)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn() +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} -sel(lift(Arr([Dyn(), Lit(1), a], false)), mkLit(1)) -//│ = Lit(1) +selSet(lift(Arr([Dyn(), Lit(1), a], false)), mkLit(1)) +//│ = {Lit(1)} // union let x = liftMany([Lit(1), Lit(2)]) let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) union(x, y) -//│ = Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1),Lit(2) -//│ x = Lit(1),Lit(2) -//│ y = Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1) +//│ = {Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1),Lit(2)} +//│ x = {Lit(1),Lit(2)} +//│ y = {Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1)} -// filter +// filterSet -filter(mkDyn(), Block.Lit("a")) -//│ = Lit("a") +filterSet(mkDyn(), Block.Lit("a")) +//│ = {Lit("a")} -filter(mkDyn(), Block.Tup(2, true)) -//│ = Arr([Dyn(), Dyn()], true) +filterSet(mkDyn(), Block.Tup(2, true)) +//│ = {Arr([Dyn(), Dyn()], true)} let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) -//│ filterShapes = Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null) +//│ filterShapes = {Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match -filter(filterShapes, Block.Lit(1)) -//│ = Lit(1) +filterSet(filterShapes, Block.Lit(1)) +//│ = {Lit(1)} -assert(filter(filterShapes, Block.Lit(2)).isEmpty()) +assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) -filter(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) +filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) +//│ = {Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")])} -filter(filterShapes, Block.Cls(Symbol("Int"), undefined)) -//│ = Lit(1) +filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) +//│ = {Lit(1)} -filter(filterShapes, Tup(3, false)) -//│ = Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false) +filterSet(filterShapes, Tup(3, false)) +//│ = {Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false)} -filter(filterShapes, Tup(4, true)) -//│ = Arr([Dyn()], true) +filterSet(filterShapes, Tup(4, true)) +//│ = {Arr([Dyn()], true)} -assert(filter(filterShapes, Tup(0, false)).isEmpty()) +assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) open Block +// Ctx + +let ctx = Ctx.empty +let x = ValueRef(Symbol("x")) +//│ ctx = Ctx(Map(0) {}) +//│ x = ValueRef(Symbol("x")) + +ctx.add(x, mkLit(1)) +ctx.get(x) +//│ = Some({Lit(1)}) + +ctx.add(x, mkLit(2)) +ctx.get(x) +//│ = Some({Lit(1),Lit(2)}) + +let y = ValueRef(Symbol("y")) +ctx.add(y, mkLit("a")) +ctx.get(y) +//│ = Some({Lit("a")}) +//│ y = ValueRef(Symbol("y")) + +let ctx2 = ctx.clone +ctx2.add(y, mkLit("b")) +ctx2.get(y) +//│ = Some({Lit("a"),Lit("b")}) +//│ ctx2 = Ctx( +//│ Map(2) { +//│ "ValueRef(Symbol(\"x\"))" => {Lit(1),Lit(2)}, +//│ "ValueRef(Symbol(\"y\"))" => {Lit("a"),Lit("b")} +//│ } +//│ ) + +ctx.get(y) +//│ = Some({Lit("a")}) + + +// DefCtx + + +// Cache + + +// sop + sop(Ctx.empty, ValueLit(42)) -//│ = Lit(42) +//│ = {Lit(42)} sop(Ctx.empty, ValueLit(false)) -//│ = Lit(false) +//│ = {Lit(false)} sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) -//│ = +//│ = {} val x = Symbol("x") @@ -113,24 +157,23 @@ val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) let ctx = Ctx.empty ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) -//│ = Lit("pass") +//│ = {Lit("pass")} //│ C = ClassSymbol("C", Some(["a"])) //│ ctx = Ctx( //│ Map(1) { -//│ "ValueRef(Symbol(\"x\"))" => Class(ClassSymbol("C", Some(["a"])), [Lit("pass")]) +//│ "ValueRef(Symbol(\"x\"))" => {Class(ClassSymbol("C", Some(["a"])), [Lit("pass")])} //│ } //│ ) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") -print(showPath(ValueRef(Symbol("x")))) -//│ > ValueRef(Symbol("x")) +// sor val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) sor(DefCtx.empty, Ctx.empty, Cache.empty, tup) //│ = [ //│ Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]), -//│ Arr([Lit(1), Lit(true)], false) +//│ {Arr([Lit(1), Lit(true)], false)} //│ ] //│ tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) @@ -142,7 +185,7 @@ sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) //│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), //│ [Arg(None, ValueLit(123))] //│ ), -//│ Class(ClassSymbol("C", Some([Symbol("p")])), [Lit(123)]) +//│ {Class(ClassSymbol("C", Some([Symbol("p")])), [Lit(123)])} //│ ] //│ c = ClassSymbol("C", Some([Symbol("p")])) //│ inst = Instantiate( @@ -155,7 +198,6 @@ fun testBinOp(op, v1, v2) = let c = Call(ValueRef(Symbol(op)), args) sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit - :expect 12 testBinOp("+", 10, 2) //│ = 12 @@ -189,6 +231,9 @@ testUnaryOp("!", true) testUnaryOp("~", 10) //│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' + +// prop + let x = Symbol("x") let y = Symbol("y") let z = Symbol("z") @@ -207,7 +252,8 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ Scoped( //│ [Symbol("x")], //│ Assign(Symbol("x"), ValueLit(2), Return(ValueLit(3), false)) -//│ ) +//│ ), +//│ {Lit(3)} //│ ] //│ c = Scoped( //│ [Symbol("x")], @@ -238,25 +284,9 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ = [ //│ Scoped( //│ [Symbol("x")], -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(9), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ -//│ [ -//│ Cls( -//│ ClassSymbol("Int", None), -//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) -//│ ), -//│ Return(ValueLit(3), false) -//│ ] -//│ ], -//│ End(), -//│ End() -//│ ) -//│ ) -//│ ) +//│ Assign(Symbol("x"), ValueLit(9), Return(ValueLit(3), false)) +//│ ), +//│ {Lit(3)} //│ ] //│ c = Scoped( //│ [Symbol("x")], @@ -296,15 +326,13 @@ val M = ValueRef(Symbol("M")) val fPath = Select(M, fSym) val defs = DefCtx.empty.add(fPath, f_gen) //│ M = ValueRef(Symbol("M")) -//│ defs = DefCtx( -//│ Map(1) {"Select(ValueRef(Symbol(\"M\")), Symbol(\"f\"))" => fun f_gen} -//│ ) +//│ defs = DefCtx(Map(1) {Symbol("f") => fun f_gen}) //│ fPath = Select(ValueRef(Symbol("M")), Symbol("f")) //│ fSym = Symbol("f") val callF = Call(fPath, [Arg(None, ValueLit(12))]) sor(defs, Ctx.empty, Cache.empty, callF) -//│ = [Call(ValueRef(Symbol("f_int")), [Arg(None, ValueLit(12))]), Lit(24)] +//│ = [Call(ValueRef(Symbol("f_int")), [Arg(None, ValueLit(12))]), {Lit(24)}] //│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None, ValueLit(12))]) val ctxXY = Ctx.empty @@ -312,15 +340,15 @@ val ctxXY = Ctx.empty .add(ValueRef(y), mkLit(32)) //│ ctxXY = Ctx( //│ Map(2) { -//│ "ValueRef(Symbol(\"x\"))" => Lit(10), -//│ "ValueRef(Symbol(\"y\"))" => Lit(32) +//│ "ValueRef(Symbol(\"x\"))" => {Lit(10)}, +//│ "ValueRef(Symbol(\"y\"))" => {Lit(32)} //│ } //│ ) // x + y val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) prop(defs, ctxXY, Cache.empty, blockAdd) -//│ = [Return(ValueLit(42), false), Lit(42)] +//│ = [Return(ValueLit(42), false), {Lit(42)}] //│ blockAdd = Return( //│ Call( //│ ValueRef(Symbol("+")), @@ -329,10 +357,6 @@ prop(defs, ctxXY, Cache.empty, blockAdd) //│ false //│ ) -val ctxZ = Ctx.empty - .add(ValueRef(z), mkDyn()) -//│ ctxZ = Ctx(Map(1) {"ValueRef(Symbol(\"z\"))" => Dyn()}) - // let z; // if 1 is // 1 then z = 1 @@ -340,26 +364,13 @@ val ctxZ = Ctx.empty // _ then z = 3 // z val blockBranch = Scoped([z], Match(ValueLit(1), [[Lit(1), Assign(z, ValueLit(1), End())], [Lit(2), Assign(z, ValueLit(2), End())]], Assign(z, ValueLit(3), End()), Return(ValueRef(z), false))) -prop(defs, ctxZ, Cache.empty, blockBranch) +prop(defs, Ctx.empty, Cache.empty, blockBranch) //│ = [ //│ Scoped( //│ [Symbol("z")], -//│ Match( -//│ ValueLit(1), -//│ [ -//│ [ -//│ Lit(1), -//│ Assign( -//│ Symbol("z"), -//│ ValueLit(1), -//│ Return(ValueRef(Symbol("z")), false) -//│ ) -//│ ] -//│ ], -//│ Return(ValueRef(Symbol("z")), false), -//│ End() -//│ ) -//│ ) +//│ Assign(Symbol("z"), ValueLit(1), Return(ValueRef(Symbol("z")), false)) +//│ ), +//│ {Lit(1)} //│ ] //│ blockBranch = Scoped( //│ [Symbol("z")], @@ -374,44 +385,30 @@ prop(defs, ctxZ, Cache.empty, blockBranch) //│ ) //│ ) -val ctxXY = Ctx.empty - .add(ValueRef(x), mkDyn()) - .add(ValueRef(y), mkDyn()) // let x = true // if x // is true then return 10 // is false then // y = 20 // return y + val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [[Lit(true), Return(ValueLit(10), false)], [Lit(false), Assign(y, ValueLit(20), End())]], End(), Return(ValueRef(y), false)))) -prop(defs, ctxXY, Cache.empty, earlyRetBlock) +prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) //│ = [ //│ Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( //│ Symbol("x"), //│ ValueLit(false), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ -//│ [ -//│ Lit(false), -//│ Assign( -//│ Symbol("y"), -//│ ValueLit(20), -//│ Return(ValueRef(Symbol("y")), false) -//│ ) -//│ ] -//│ ], -//│ Return(ValueRef(Symbol("y")), false), -//│ End() +//│ Assign( +//│ Symbol("y"), +//│ ValueLit(20), +//│ Return(ValueRef(Symbol("y")), false) //│ ) //│ ) -//│ ) +//│ ), +//│ {Lit(20)} //│ ] -//│ ctxXY = Ctx( -//│ Map(2) {"ValueRef(Symbol(\"x\"))" => Lit(false), "ValueRef(Symbol(\"y\"))" => } -//│ ) //│ earlyRetBlock = Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( @@ -439,35 +436,17 @@ prop(defs, ctxXY, Cache.empty, earlyRetBlock) // else return 3 // return 4 val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [[Lit(true), Match(ValueRef(y), [[Lit(true), Return(ValueLit(1), false)]], Return(ValueLit(2), false), End())]], Return(ValueLit(3), false), Return(ValueLit(4), false))))) -prop(defs, ctxXY, Cache.empty, nestedBlock) +prop(defs, Ctx.empty, Cache.empty, nestedBlock) //│ = [ //│ Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( //│ Symbol("x"), //│ ValueLit(true), -//│ Assign( -//│ Symbol("y"), -//│ ValueLit(false), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ -//│ [ -//│ Lit(true), -//│ Match( -//│ ValueRef(Symbol("y")), -//│ [], -//│ Return(ValueLit(2), false), -//│ End() -//│ ) -//│ ] -//│ ], -//│ Return(ValueLit(4), false), -//│ End() -//│ ) -//│ ) +//│ Assign(Symbol("y"), ValueLit(false), Return(ValueLit(4), false)) //│ ) -//│ ) +//│ ), +//│ {Lit(4)} //│ ] //│ nestedBlock = Scoped( //│ [Symbol("x"), Symbol("y")], @@ -497,8 +476,3 @@ prop(defs, ctxXY, Cache.empty, nestedBlock) //│ ) //│ ) -class A(val x) - -let a = A(new Map([["haha", 1], ["hehe", 2]])) - -//│ a = A(Map(2) {"haha" => 1, "hehe" => 2}) From 17d395f2ff1ec4591e8ee9be23fe4ee3e0322c50 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 27 Feb 2026 22:24:32 +0800 Subject: [PATCH 305/654] combine pretty printing to funcache output --- .../scala/hkmc2/codegen/Instrumentation.scala | 19 +-- .../mlscript-compile/SpecializeHelpers.mls | 3 +- .../test/mlscript/block-staging/DefCtx.mls | 59 ++------ .../test/mlscript/block-staging/Functions.mls | 137 +++++++++++++++--- 4 files changed, 137 insertions(+), 81 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b6d65109b5..885e71d998 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -454,17 +454,14 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") val renderFun = State.runtimeSymbol.asPath.selSN("render") val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) - val tmp = TempSymbol(N, "tmp") - val debug = - assign(options): options => - // call(cachePath.selSN("toString"), Nil, false): str => - call(renderFun, Ls(cachePath, options), false): str => - call(printFun, Ls(str), false): _ => - // call(sym.asPath.selSN("defCtx").selSN("toString"), Nil, false): str => - call(printFun, Ls(sym.asPath.selSN("defCtx")), false): _ => - rest - - Scoped(Set(tmp), debug) + + assign(options): options => + // call(cachePath.selSN("toString"), Nil, false): str => + call(renderFun, Ls(cachePath, options), false): str => + call(printFun, Ls(str), false): _ => + // call(sym.asPath.selSN("defCtx").selSN("toString"), Nil, false): str => + call(printFun, Ls(sym.asPath.selSN("defCtx")), false): _ => + rest val (newCtor, defs) = transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) val allDefs = defsList.fold(defs)((l, r) => l ++ r) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a903109f8d..e7153f0b27 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -37,4 +37,5 @@ fun specialize(cache, block, shapes) = if block is FunDefn(Symbol(funName), ps, class FunCache(val cache: Map[String, Symbol]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions - fun setFun(k, v) = cache.set(k, v); v \ No newline at end of file + fun setFun(k, v) = cache.set(k, v); v + fun toString() = cache.values().map(showDefn).toArray().join("\n") \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index d6cd98f401..ce65e10f66 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -4,18 +4,10 @@ staged module A with fun f() = 1 fun g(x) = x -//│ > FunCache( -//│ > Map(3) { -//│ > "ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), -//│ > "f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true), -//│ > "g" => FunDefn( -//│ > Symbol("g"), -//│ > [[Symbol("x")]], -//│ > Return(ValueRef(Symbol("x")), false), -//│ > true -//│ > ) -//│ > } -//│ > ) +//│ > fun ctor_() = \ +//│ > () \ +//│ > fun f() = 1 \ +//│ > fun g(x) = x //│ > Map(0) {} module C with @@ -28,44 +20,15 @@ staged module B with fun b() = C.h() fun c() = i() fun d() = A.g(1) -//│ > FunCache( -//│ > Map(5) { -//│ > "ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), -//│ > "a" => FunDefn( -//│ > Symbol("a"), -//│ > [[]], -//│ > Return(Call(Select(ValueRef(Symbol("A")), Symbol("f")), []), false), -//│ > true -//│ > ), -//│ > "b" => FunDefn( -//│ > Symbol("b"), -//│ > [[]], -//│ > Return(Call(Select(ValueRef(Symbol("C")), Symbol("h")), []), false), -//│ > true -//│ > ), -//│ > "c" => FunDefn( -//│ > Symbol("c"), -//│ > [[]], -//│ > Return(Call(ValueRef(Symbol("i")), []), false), -//│ > true -//│ > ), -//│ > "d" => FunDefn( -//│ > Symbol("d"), -//│ > [[]], -//│ > Return( -//│ > Call( -//│ > Select(ValueRef(Symbol("A")), Symbol("g")), -//│ > [Arg(None, ValueLit(1))] -//│ > ), -//│ > false -//│ > ), -//│ > true -//│ > ) -//│ > } -//│ > ) +//│ > fun ctor_() = \ +//│ > () \ +//│ > fun a() = A.f() \ +//│ > fun b() = C.h() \ +//│ > fun c() = i() \ +//│ > fun d() = A.g(1) //│ > Map(4) { +//│ > 'ValueRef(Symbol("i"))' => [ [Function: i], false ], //│ > 'Select(ValueRef(Symbol("C")), Symbol("h"))' => [ [Function: h], false ], //│ > 'Select(ValueRef(Symbol("A")), Symbol("f"))' => [ [Function: f_gen], true ], -//│ > 'ValueRef(Symbol("i"))' => [ [Function: i], false ], //│ > 'Select(ValueRef(Symbol("A")), Symbol("g"))' => [ [Function: g_gen], true ] //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e7d4ce5162..b2323a28c9 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,7 +24,67 @@ staged module Expressions with [1, 2] then 2 [a, ...] then 3 else 0 -//│ > FunCache(Map(8) {"ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), "lit" => FunDefn(Symbol("lit"), [[]], Return(ValueLit(1), false), true), "assign" => FunDefn(Symbol("assign"), [[]], Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(42), Assign(Symbol("y"), ValueRef(Symbol("x")), Return(ValueRef(Symbol("y")), false)))), true), "tup1" => FunDefn(Symbol("tup1"), [[]], Return(Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false), true), "tup2" => FunDefn(Symbol("tup2"), [[]], Return(Tuple([Arg(None, ValueLit(1)), Arg(Some(false), ValueRef(Symbol("x1")))]), false), true), "dynsel" => FunDefn(Symbol("dynsel"), [[]], Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Arg(None, ValueLit(1))]), Return(DynSelect(ValueRef(Symbol("tmp")), ValueLit(0), false), false))), true), "match1" => FunDefn(Symbol("match1"), [[]], Scoped([Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(9), Match(ValueRef(Symbol("scrut")), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))), true), "match2" => FunDefn(Symbol("match2"), [[]], Scoped([Symbol("middleElements"), Symbol("element0$"), Symbol("element1$"), Symbol("scrut1"), Symbol("a"), Symbol("tmp1")], Assign(Symbol("scrut1"), Tuple([Arg(Some(true), ValueRef(Symbol("x1")))]), Match(ValueRef(Symbol("scrut1")), [Arm(Tup(0, false), Assign(Symbol("tmp1"), ValueLit(1), End())), Arm(Tup(2, false), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut1"))), Arg(None, ValueLit(0))]), Assign(Symbol("element1$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut1"))), Arg(None, ValueLit(1))]), Match(ValueRef(Symbol("element0$")), [Arm(Lit(1), Match(ValueRef(Symbol("element1$")), [Arm(Lit(2), Assign(Symbol("tmp1"), ValueLit(2), End()))], Some(Match(ValueRef(Symbol("scrut1")), [Arm(Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut1"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Assign(Symbol("tmp1"), ValueLit(3), End()))))], Some(Assign(Symbol("tmp1"), ValueLit(0), End())), End())), End()))], Some(Match(ValueRef(Symbol("scrut1")), [Arm(Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut1"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Assign(Symbol("tmp1"), ValueLit(3), End()))))], Some(Assign(Symbol("tmp1"), ValueLit(0), End())), End())), End())))), Arm(Tup(1, true), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut1"))), Arg(None, ValueLit(0))]), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut1"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Assign(Symbol("tmp1"), ValueLit(3), End())))))], Some(Assign(Symbol("tmp1"), ValueLit(0), End())), Return(ValueRef(Symbol("tmp1")), false)))), true)}) +//│ > fun ctor_() = \ +//│ > () \ +//│ > fun lit() = 1 \ +//│ > fun assign() = \ +//│ > let x \ +//│ > let y \ +//│ > x = 42 \ +//│ > y = x \ +//│ > y \ +//│ > fun tup1() = [1, 2] \ +//│ > fun tup2() = [1, ..x1] \ +//│ > fun dynsel() = \ +//│ > let tmp \ +//│ > tmp = [1] \ +//│ > tmp.(0) \ +//│ > fun match1() = \ +//│ > let scrut \ +//│ > scrut = 9 \ +//│ > if scrut is \ +//│ > Bool then 1 \ +//│ > 8 then 2 \ +//│ > Int then 3 \ +//│ > else 0 \ +//│ > fun match2() = \ +//│ > let middleElements \ +//│ > let element0_ \ +//│ > let element1_ \ +//│ > let scrut1 \ +//│ > let a \ +//│ > let tmp1 \ +//│ > scrut1 = [...x1] \ +//│ > if scrut1 is \ +//│ > [] then \ +//│ > tmp1 = 1 \ +//│ > [_, _] then \ +//│ > element0_ = Runtime.Tuple.get(scrut1, 0) \ +//│ > element1_ = Runtime.Tuple.get(scrut1, 1) \ +//│ > if element0_ is \ +//│ > 1 then \ +//│ > if element1_ is \ +//│ > 2 then \ +//│ > tmp1 = 2 \ +//│ > else if scrut1 is \ +//│ > [_, ...] then \ +//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) \ +//│ > a = element0_ \ +//│ > tmp1 = 3 \ +//│ > else tmp1 = 0 \ +//│ > else if scrut1 is \ +//│ > [_, ...] then \ +//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) \ +//│ > a = element0_ \ +//│ > tmp1 = 3 \ +//│ > else tmp1 = 0 \ +//│ > [_, ...] then \ +//│ > element0_ = Runtime.Tuple.get(scrut1, 0) \ +//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) \ +//│ > a = element0_ \ +//│ > tmp1 = 3 \ +//│ > else tmp1 = 0 \ +//│ > tmp1 //│ > Map(2) { //│ > 'Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get"))' => [ [Function: get], false ], //│ > 'Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice"))' => [ [Function: slice], false ] @@ -43,7 +103,12 @@ staged module ClassInstrumentation with //│ > class Inside1(a1, b) //│ > class NoArg //│ > class Inside1(a1, b) -//│ > FunCache(Map(5) {"ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), "inst1" => FunDefn(Symbol("inst1"), [[]], Return(Instantiate(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false), true), "inst2" => FunDefn(Symbol("inst2"), [[]], Return(Instantiate(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("NoArg", None)), []), false), true), "app1" => FunDefn(Symbol("app1"), [[]], Return(Call(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false), true), "app2" => FunDefn(Symbol("app2"), [[]], Return(Call(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("Inside1", Some([Symbol("a1"), Symbol("b")]))), [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false), true)}) +//│ > fun ctor_() = \ +//│ > () \ +//│ > fun inst1() = new Outside(1) \ +//│ > fun inst2() = new ClassInstrumentation.NoArg() \ +//│ > fun app1() = Outside(1) \ +//│ > fun app2() = ClassInstrumentation.Inside1(1, 2) //│ > Map(2) { //│ > 'Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("Inside1", Some([Symbol("a1"), Symbol("b")])))' => [ undefined, false ], //│ > 'ValueRef(ClassSymbol("Outside", Some([Symbol("a")])))' => [ [Function: Outside] { class: [Function] }, false ] @@ -57,9 +122,16 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > FunCache(Map(2) {"ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), "f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true)}) +//│ > fun ctor_() = \ +//│ > () \ +//│ > fun f() = 1 //│ > Map(0) {} -//│ > FunCache(Map(2) {"ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), "call" => FunDefn(Symbol("call"), [[]], Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(ValueRef(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(ValueRef(Symbol("Staged")), Symbol("f1")), []), false))), true)}) +//│ > fun ctor_() = \ +//│ > () \ +//│ > fun call() = \ +//│ > let tmp \ +//│ > tmp = Nonstaged.f() \ +//│ > Staged.f1() //│ > Map(2) { //│ > 'Select(ValueRef(Symbol("Staged")), Symbol("f1"))' => [ [Function: f_gen], true ], //│ > 'Select(ValueRef(Symbol("Nonstaged")), Symbol("f"))' => [ [Function: f], false ] @@ -73,9 +145,14 @@ staged module Arguments with //│ FAILURE: Unexpected warning //│ FAILURE LOCATION: transformFunDefn (Instrumentation.scala:395) //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.72: fun g(x)(y, z)() = z -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ > FunCache(Map(3) {"ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), "f" => FunDefn(Symbol("f"), [[Symbol("x")]], Assign(Symbol("x"), ValueLit(1), Return(ValueRef(Symbol("x")), false)), true), "g" => FunDefn(Symbol("g"), [[Symbol("x")], [Symbol("y"), Symbol("z")], []], Return(ValueRef(Symbol("z")), false), true)}) +//│ ║ l.144: fun g(x)(y, z)() = z +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ > fun ctor_() = \ +//│ > () \ +//│ > fun f(x) = \ +//│ > x = 1 \ +//│ > x \ +//│ > fun g(x)(y, z)() = z //│ > Map(0) {} staged module OtherBlocks with @@ -89,7 +166,23 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > FunCache(Map(3) {"ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), "scope" => FunDefn(Symbol("scope"), [[]], Scoped([Symbol("a")], Assign(Symbol("a"), ValueLit(1), Return(Call(Select(Select(ValueRef(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Arg(None, ValueRef(Symbol("a")))]), false))), true), "breakAndLabel" => FunDefn(Symbol("breakAndLabel"), [[]], Scoped([Symbol("tmp"), Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(1), Match(ValueRef(Symbol("scrut")), [Arm(Lit(2), Assign(Symbol("tmp"), ValueLit(0), End())), Arm(Lit(3), Assign(Symbol("tmp"), ValueLit(0), End()))], Some(Assign(Symbol("tmp"), ValueLit(0), End())), Return(ValueRef(Symbol("tmp")), false)))), true)}) +//│ > fun ctor_() = \ +//│ > () \ +//│ > fun scope() = \ +//│ > let a \ +//│ > a = 1 \ +//│ > OtherBlocks.scope.locally(a) \ +//│ > fun breakAndLabel() = \ +//│ > let tmp \ +//│ > let scrut \ +//│ > scrut = 1 \ +//│ > if scrut is \ +//│ > 2 then \ +//│ > tmp = 0 \ +//│ > 3 then \ +//│ > tmp = 0 \ +//│ > else tmp = 0 \ +//│ > tmp //│ > Map(1) { //│ > 'Select(Select(ValueRef(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally"))' => [ undefined, false ] //│ > } @@ -108,39 +201,41 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.107: staged module B with +//│ ║ l.200: staged module B with //│ ║ ^^^^^^ -//│ ║ l.108: fun f() = 1 +//│ ║ l.201: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.107: staged module B with +//│ ║ l.200: staged module B with //│ ║ ^^^^^^ -//│ ║ l.108: fun f() = 1 +//│ ║ l.201: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.107: staged module B with +//│ ║ l.200: staged module B with //│ ║ ^^^^^^ -//│ ║ l.108: fun f() = 1 +//│ ║ l.201: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.107: staged module B with +//│ ║ l.200: staged module B with //│ ║ ^^^^^^ -//│ ║ l.108: fun f() = 1 +//│ ║ l.201: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.107: staged module B with +//│ ║ l.200: staged module B with //│ ║ ^^^^^^ -//│ ║ l.108: fun f() = 1 +//│ ║ l.201: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.107: staged module B with +//│ ║ l.200: staged module B with //│ ║ ^^^^^^ -//│ ║ l.108: fun f() = 1 +//│ ║ l.201: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ -//│ > FunCache(Map(2) {"ctor$" => FunDefn(Symbol("ctor$"), [[]], End(), true), "f" => FunDefn(Symbol("f"), [[]], Return(ValueLit(1), false), true)}) +//│ > fun ctor_() = \ +//│ > () \ +//│ > fun f() = 1 //│ > Map(0) {} From 0a61576a8c794dbef5953ab25d8499334b8c6e34 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 27 Feb 2026 23:38:25 +0800 Subject: [PATCH 306/654] WIP: add class staging test --- .../test/mlscript/block-staging/Functions.mls | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index a87675de55..b78d88d38d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -97,12 +97,18 @@ staged module ClassDefs with //│ > Define(ClsLikeDefn(ClassSymbol("A"), TODO), End) //│ > FunDefn(Symbol("ctor$"), ([]), End, true) +staged module ClassFunctions with + class A with + fun f() = 1 +//│ > Define(ClsLikeDefn(ClassSymbol("A"), TODO), End) +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) + // debug printing fails, collision with class name? :fixme class A() staged module A with fun f() = 1 -//│ ═══[RUNTIME ERROR] TypeError: A2.ctor$_instr is not a function +//│ ═══[RUNTIME ERROR] TypeError: A3.ctor$_instr is not a function // debug printing fails, unable to reference the class when calling the instrumented function :fixme @@ -111,15 +117,15 @@ module A with fun f() = 1 //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.110: staged module B with +//│ ║ l.116: staged module B with //│ ║ ^^^^^^ -//│ ║ l.111: fun f() = 1 +//│ ║ l.117: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' //│ ╟── which references the symbol introduced here -//│ ║ l.110: staged module B with +//│ ║ l.116: staged module B with //│ ║ ^^^^^^ -//│ ║ l.111: fun f() = 1 +//│ ║ l.117: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) From 546491a3ef598a836dabf02f5c7838e7f4de464f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Feb 2026 00:04:02 +0800 Subject: [PATCH 307/654] resolve fixmes --- .../scala/hkmc2/codegen/Instrumentation.scala | 10 +++--- .../test/mlscript/block-staging/Functions.mls | 34 +++++-------------- 2 files changed, 13 insertions(+), 31 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index e2005c4209..4cf3b94266 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -276,12 +276,10 @@ class InstrumentationImpl(using State, Raise): blockCtor("Break", Ls(labelSymbol))(k(_, ctx)) case _ => ??? // not supported - // f.owner returns an InnerSymbol, but we need BlockMemberSymbol of the module to call the function - // so we pass modSym instead - def transformFunDefn(modSym: BlockMemberSymbol, f: FunDefn): (FunDefn, Block) = + def transformFunDefn(f: FunDefn): (FunDefn, Block) = val genSymName = f.sym.nme + "_instr" val genSym = BlockMemberSymbol(genSymName, Nil, false) - val sym = modSym.asPath.selSN(genSymName) + val sym = f.owner.get.asPath.selSN(genSymName) // NOTE: this debug printing only works for top-level modules, nested modules don't work // turn into fundefn @@ -324,10 +322,10 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods - .map(impl.transformFunDefn(sym, _)) + .map(impl.transformFunDefn) .unzip val ctor = FunDefn.withFreshSymbol(S(companion.isym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), companion.ctor)(false) - val (stagedCtor, ctorPrint) = impl.transformFunDefn(sym, ctor) + val (stagedCtor, ctorPrint) = impl.transformFunDefn(ctor) val unit = State.runtimeSymbol.asPath.selSN("Unit") val debugBlock = (ctorPrint :: debugPrintCode).foldRight(Return(unit, true))(concat) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index b78d88d38d..3893e109e1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -42,9 +42,7 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) -//│ > Define(ClsLikeDefn(ClassSymbol("Inside1":[Symbol("a1"), Symbol("b")]), TODO), End) -//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("Inside1":[Symbol("a1"), Symbol("b")]), TODO), Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End)), true) //│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) //│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) //│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) @@ -71,7 +69,7 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.72: fun g(x)(y, z)() = z +//│ ║ l.70: fun g(x)(y, z)() = z //│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) @@ -94,38 +92,24 @@ staged module OtherBlocks with staged module ClassDefs with class A -//│ > Define(ClsLikeDefn(ClassSymbol("A"), TODO), End) -//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A"), TODO), End), true) staged module ClassFunctions with class A with fun f() = 1 -//│ > Define(ClsLikeDefn(ClassSymbol("A"), TODO), End) -//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A"), TODO), End), true) -// debug printing fails, collision with class name? -:fixme + +// name collision class A() staged module A with fun f() = 1 -//│ ═══[RUNTIME ERROR] TypeError: A3.ctor$_instr is not a function +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) -// debug printing fails, unable to reference the class when calling the instrumented function -:fixme +// nested module module A with staged module B with fun f() = 1 -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.116: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.117: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.116: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.117: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) From 0fb3e2e7bd75533034e1a869f19b65a90f94c9e0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Feb 2026 01:18:21 +0800 Subject: [PATCH 308/654] stage class functions --- .../scala/hkmc2/codegen/Instrumentation.scala | 53 +++++++++++-------- .../src/test/mlscript-compile/Block.mls | 6 +-- .../test/mlscript/block-staging/Functions.mls | 32 +++++++++-- 3 files changed, 63 insertions(+), 28 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 4cf3b94266..cf4d6feece 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -245,11 +245,12 @@ class InstrumentationImpl(using State, Raise): assert(cls.companion.isEmpty, "nested module not supported") transformBlock(rest): p => transformSymbol(cls.isym): c => - optionNone(): none => // TODO: handle companion object - blockCtor("ClsLikeDefn", Ls(c, none)): cls => - blockCtor("Define", Ls(cls, p)): p => - ruleEnd(): end => - fnPrintCode(p)(k(end, ctx)) + // staging the methods within the module + cls.methods.map(transformFunDefn2).collectApply: methods => + tuple(methods): methods => + optionNone(): none => // TODO: handle companion object + blockCtor("ClsLikeDefn", Ls(c, methods, none)): cls => + blockCtor("Define", Ls(cls, p))(k(_, ctx)) case End(_) => ruleEnd()(k(_, ctx)) case Match(p, ks, dflt, rest) => transformPath(p): x => @@ -276,6 +277,19 @@ class InstrumentationImpl(using State, Raise): blockCtor("Break", Ls(labelSymbol))(k(_, ctx)) case _ => ??? // not supported + def transformFunDefn2(f: FunDefn)(using Context)(k: Path => Block): Block = + transformBlock(f.body): body => + if f.params.length != 1 then + raise(WarningReport(msg"Multiple parameter lists are not supported in shape propagation yet." -> f.sym.toLoc :: Nil)) + // maintain parameter names in instrumented code + f.params.map( + _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply + ).collectApply: paramListSyms => + blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => + paramListSyms.map(tuple(_)).collectApply: tups => + tuple(tups): tup => + blockCtor("FunDefn", Ls(sym, tup, body, toValue(true)))(k) + def transformFunDefn(f: FunDefn): (FunDefn, Block) = val genSymName = f.sym.nme + "_instr" val genSym = BlockMemberSymbol(genSymName, Nil, false) @@ -285,20 +299,7 @@ class InstrumentationImpl(using State, Raise): // turn into fundefn val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_instr")) val argSyms = f.params.flatMap(_.params).map(_.sym) - val newBody = - val rest = transformBlock(f.body)(using new HashMap): body => - if f.params.length != 1 then - raise(WarningReport(msg"Multiple parameter lists are not supported in shape propagation yet." -> f.sym.toLoc :: Nil)) - // maintain parameter names in instrumented code - f.params.map( - _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply - ).collectApply: paramListSyms => - blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => - paramListSyms.map(tuple(_)).collectApply: tups => - tuple(tups): tup => - blockCtor("FunDefn", Ls(sym, tup, body, toValue(true))): block => - Return(block, false) - Scoped(Set(argSyms*), rest) + val newBody = Scoped(Set(argSyms*), transformFunDefn2(f)(using new HashMap)(Return(_, false))) // TODO: remove it. only for test val debug = call(sym, Nil)(fnPrintCode(_)(End())) @@ -331,8 +332,18 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub val debugBlock = (ctorPrint :: debugPrintCode).foldRight(Return(unit, true))(concat) def debugCont(rest: Block) = Begin(debugBlock, rest) - // stage the constructor - val newCompanion = companion.copy(methods = stagedCtor :: companion.methods ++ stagedMethods, ctor = companion.ctor.mapTail(debugCont)) + // add generator functions for classes within the constructor + val genCls = new BlockTransformer(new SymbolSubst()): + override def applyBlock(b: Block): Block = super.applyBlock(b) match + case Define(c: ClsLikeDefn, rest) if c.companion.isEmpty => + val (stagedMethods, debugPrintCode) = c.methods + .map(impl.transformFunDefn) + .unzip + val newModule = c.copy(methods = c.methods ++ stagedMethods) + Define(newModule, rest) + case b => b + val newCtor = genCls.applyBlock(companion.ctor) + val newCompanion = companion.copy(methods = stagedCtor :: companion.methods ++ stagedMethods, ctor = newCtor.mapTail(debugCont)) val newModule = c.copy(sym = sym, companion = S(newCompanion)) Define(newModule, rest) case b => b diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 425005973c..a73e74384f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -45,7 +45,7 @@ class Path extends Result with class Defn with constructor ValDefn(val sym: Symbol, val rhs: Path) - ClsLikeDefn(val sym: ClassSymbol, val companion: Opt[ClsLikeBody]) // companion unused + ClsLikeDefn(val sym: ClassSymbol, val methods: Array[FunDefn], val companion: Opt[ClsLikeBody]) // companion unused FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block, val stage: Bool) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused @@ -141,9 +141,9 @@ fun showDefn(d: Defn): Str = "(" + params.map(showParamList) + "), " + showBlock(body) + ", " + stage + ")" - ClsLikeDefn(sym, companion) then + ClsLikeDefn(sym, methods, companion) then // TODO: print rest of the arguments - "ClsLikeDefn(" + showSymbol(sym) + ", " + "TODO" + ")" + "ClsLikeDefn(" + showSymbol(sym) + ", [" + methods.map(showDefn) + "], TODO" + ")" fun showOptBlock(ob: Opt[Block]) = if ob is Some(b) then showBlock(b) else "None" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 3893e109e1..f18a78625f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -42,7 +42,7 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("Inside1":[Symbol("a1"), Symbol("b")]), TODO), Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End)), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("Inside1":[Symbol("a1"), Symbol("b")]), [], TODO), Define(ClsLikeDefn(ClassSymbol("NoArg"), [], TODO), End)), true) //│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) //│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) //│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) @@ -71,6 +71,31 @@ staged module Arguments with //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. //│ ║ l.70: fun g(x)(y, z)() = z //│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:114) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parent = S of Scope: +//│ parent = S of Scope: +//│ parent = S of Scope: +//│ parent = N +//│ curThis = S of S of globalThis:globalThis +//│ bindings = HashMap($block$res -> block$res3, class:Nonstaged -> Nonstaged, class:Staged -> Staged, $runtime -> runtime, $definitionMetadata -> definitionMetadata, $block$res -> block$res2, $prettyPrint -> prettyPrint, class:ClassInstrumentation -> ClassInstrumentation, $Term -> Term, $Block -> Block, $option -> option, member:Predef -> Predef, $block$res -> block$res1, $tmp -> tmp, class:Expressions -> Expressions, member:CallSubst -> CallSubst1, module:CallSubst -> CallSubst, member:Arguments -> Arguments1, module:Arguments -> Arguments, member:ClassInstrumentation -> ClassInstrumentation1, member:Outside -> Outside1, class:Outside -> Outside, $block$res -> block$res4, class:CallSubst -> CallSubst, $block$res -> block$res, module:ClassInstrumentation -> ClassInstrumentation, class:Inside -> Inside, $block$res -> block$res5, class:Arguments -> Arguments, member:x -> x, member:Expressions -> Expressions1, member:Staged -> Staged1, class:NoArg -> NoArg, member:Nonstaged -> Nonstaged1, module:Nonstaged -> Nonstaged, module:Expressions -> Expressions, module:Staged -> Staged) +//│ curThis = S of S of module:Arguments +//│ bindings = HashMap() +//│ curThis = N +//│ bindings = HashMap($args -> args) +//│ curThis = N +//│ bindings = HashMap($lit -> lit, $sym -> sym, $tmp -> tmp1, $return -> return1, $assign -> assign, $tmp -> tmp2, $tmp -> tmp3, $tmp -> tmp4, $tmp -> tmp5, $tmp -> tmp6) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.67: fun f(x) = +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.67: fun f(x) = +//│ ╙── ^ //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) //│ > FunDefn(Symbol("g"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) @@ -92,13 +117,12 @@ staged module OtherBlocks with staged module ClassDefs with class A -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A"), TODO), End), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A"), [], TODO), End), true) staged module ClassFunctions with class A with fun f() = 1 -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A"), TODO), End), true) - +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A"), [FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true)], TODO), End), true) // name collision class A() From c9c677ec97c939cb8cab1fb54fe37330ebe8d80e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Feb 2026 02:31:18 +0800 Subject: [PATCH 309/654] print class functions --- .../src/test/mlscript-compile/Block.mls | 4 +- .../test/mlscript/block-staging/Functions.mls | 85 ++----------------- 2 files changed, 11 insertions(+), 78 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 75bf295394..98f0af827d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -156,7 +156,9 @@ fun showDefn(d: Defn): Str = FunDefn(sym, ps, body, _) then "fun " + showSymbol(sym) + showParamList(ps) + " =" + (if body is Return then " " else "\n ") + indent(showBlock(body)) - ClsLikeDefn(sym, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + ClsLikeDefn(sym, methods, _) then + "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + + if methods is [] then "" else " with \n " + indent(methods.map(showDefn).join("\n")) _ then "" fun showBlock(b) = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 7891d79b4e..0146a9516b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -95,10 +95,9 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > class NoArg -//│ > class Inside1(a1, b) //│ > fun ctor_() = -//│ > () +//│ > class Inside1(a1, b) +//│ > class NoArg //│ > fun inst1() = new Outside(1) //│ > fun inst2() = new ClassInstrumentation.NoArg() //│ > fun app1() = Outside(1) @@ -132,7 +131,7 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.133: fun g(x)(y, z)() = z +//│ ║ l.132: fun g(x)(y, z)() = z //│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -172,17 +171,15 @@ staged module OtherBlocks with staged module ClassDefs with class A -//│ > class A //│ > fun ctor_() = -//│ > () +//│ > class A staged module ClassFunctions with class A with fun f() = 1 fun g() = 1 -//│ > class A //│ > fun ctor_() = -//│ > () +//│ > class A :todo staged module ValClass with @@ -193,80 +190,14 @@ staged module ValClass with class A() staged module A with fun f() = 1 -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:161) -//│ ═══[RUNTIME ERROR] TypeError: A3.ctor$_instr is not a function -//│ at (REPL37:1:265) -//│ at REPL37:1:1555 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:600:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:935:10) -//│ at REPLServer.emit (node:events:508:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 // nested module module A with staged module B with fun f() = 1 -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:114) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = member:B -//│ _2 = class hkmc2.semantics.BlockMemberSymbol -//│ _2 = Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = N -//│ curThis = S of S of globalThis:globalThis -//│ bindings = HashMap($block$res -> block$res3, $block$res -> block$res10, class:Nonstaged -> Nonstaged, class:A -> A4, $block$res -> block$res2, class:Staged -> Staged, class:B -> B, class:ClassInstrumentation -> ClassInstrumentation, member:ClassDefs -> ClassDefs1, module:ClassDefs -> ClassDefs, $runtime -> runtime, $definitionMetadata -> definitionMetadata, class:A -> A, $prettyPrint -> prettyPrint, $Term -> Term, $Block -> Block, $block$res -> block$res7, $option -> option, member:Predef -> Predef, class:ClassDefs -> ClassDefs, member:CallSubst -> CallSubst1, module:CallSubst -> CallSubst, member:OtherBlocks -> OtherBlocks1, module:OtherBlocks -> OtherBlocks, member:ClassFunctions -> ClassFunctions1, module:ClassFunctions -> ClassFunctions, $block$res -> block$res4, class:A -> A1, class:CallSubst -> CallSubst, $block$res -> block$res6, class:OtherBlocks -> OtherBlocks, $block$res -> block$res, $block$res -> block$res8, class:ClassFunctions -> ClassFunctions, member:Expressions -> Expressions1, x -> x, module:Expressions -> Expressions, $block$res -> block$res1, class:Expressions -> Expressions, member:A -> A3, class:A -> A2, module:A -> A2, $block$res -> block$res9, member:ClassInstrumentation -> ClassInstrumentation1, member:Arguments -> Arguments1, member:Outside -> Outside1, module:Arguments -> Arguments, class:Outside -> Outside, module:ClassInstrumentation -> ClassInstrumentation, class:Inside -> Inside, $block$res -> block$res5, class:Arguments -> Arguments, class:NoArg -> NoArg, member:Staged -> Staged1, member:Nonstaged -> Nonstaged1, module:Nonstaged -> Nonstaged, member:A -> A5, module:A -> A4, module:Staged -> Staged, module:B -> B) -//│ curThis = S of S of module:A -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap() -//│ curThis = S of S of module:B -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap($tmp -> tmp2, $tmp -> tmp3, $tmp -> tmp, $tmp -> tmp1) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.212: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.213: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:114) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = member:B -//│ _2 = class hkmc2.semantics.BlockMemberSymbol -//│ _2 = Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = N -//│ curThis = S of S of globalThis:globalThis -//│ bindings = HashMap($block$res -> block$res3, $block$res -> block$res10, class:Nonstaged -> Nonstaged, class:A -> A4, $block$res -> block$res2, class:Staged -> Staged, class:B -> B, class:ClassInstrumentation -> ClassInstrumentation, member:ClassDefs -> ClassDefs1, module:ClassDefs -> ClassDefs, $runtime -> runtime, $definitionMetadata -> definitionMetadata, class:A -> A, $prettyPrint -> prettyPrint, $Term -> Term, $Block -> Block, $block$res -> block$res7, $option -> option, member:Predef -> Predef, class:ClassDefs -> ClassDefs, member:CallSubst -> CallSubst1, module:CallSubst -> CallSubst, member:OtherBlocks -> OtherBlocks1, module:OtherBlocks -> OtherBlocks, member:ClassFunctions -> ClassFunctions1, module:ClassFunctions -> ClassFunctions, $block$res -> block$res4, class:A -> A1, class:CallSubst -> CallSubst, $block$res -> block$res6, class:OtherBlocks -> OtherBlocks, $block$res -> block$res, $block$res -> block$res8, class:ClassFunctions -> ClassFunctions, member:Expressions -> Expressions1, x -> x, module:Expressions -> Expressions, $block$res -> block$res1, class:Expressions -> Expressions, member:A -> A3, class:A -> A2, module:A -> A2, $block$res -> block$res9, member:ClassInstrumentation -> ClassInstrumentation1, member:Arguments -> Arguments1, member:Outside -> Outside1, module:Arguments -> Arguments, class:Outside -> Outside, module:ClassInstrumentation -> ClassInstrumentation, class:Inside -> Inside, $block$res -> block$res5, class:Arguments -> Arguments, class:NoArg -> NoArg, member:Staged -> Staged1, member:Nonstaged -> Nonstaged1, module:Nonstaged -> Nonstaged, member:A -> A5, module:A -> A4, module:Staged -> Staged, module:B -> B) -//│ curThis = S of S of module:A -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap() -//│ curThis = S of S of module:B -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap($tmp -> tmp2, $tmp -> tmp3, $tmp -> tmp, $tmp -> tmp1) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.212: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.213: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun f() = 1 From 1577103c66fdf8a74c54340234d0dfd906f1db30 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Feb 2026 16:26:51 +0800 Subject: [PATCH 310/654] fixup! resolve fixmes --- .../scala/hkmc2/codegen/Instrumentation.scala | 9 +- .../test/mlscript/block-staging/Functions.mls | 136 +----------------- 2 files changed, 9 insertions(+), 136 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index c9531206e8..75e04aa127 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -420,7 +420,6 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub Return(block, false) (Scoped(Set(argSyms*), rest), defs) - // TODO: replace modSym with f.owner.get? def pathCont(k: Path => Block) = call(f.owner.get.asPath.selSN(genSymName), Ls())(instr => tuple(Ls(toValue(f.sym.nme), instr))(k)) val newFun = f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) (newFun, defs, pathCont) @@ -441,7 +440,7 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol("cache", Nil, true) val cacheTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("cache")) - val cachePath = sym.asPath.selSN("cache") + val cachePath = companion.isym.asPath.selSN("cache") // initialize cache for the module def cacheDecl(rest: Block) = (ctorCache :: cacheTups).collectApply: cacheTups => @@ -485,11 +484,11 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub assign(options): options => call(cachePath.selSN("toString"), Nil, false): str => call(printFun, Ls(str), false): _ => - call(printFun, Ls(sym.asPath.selSN("defCtx")), false): _ => + call(printFun, Ls(companion.isym.asPath.selSN("defCtx")), false): _ => rest - // redendant? - val (newCtor, defs) = transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) + // redendant? this collects function calls within the block. maybe this should be a separate function to the staging + val (_, defs) = transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) val allDefs = defsList.fold(defs)((l, r) => l ++ r) val defCtxSym = BlockMemberSymbol("defCtx", Nil, true) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 1e3024f316..53258b3d94 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -208,6 +208,7 @@ staged module ClassDefs with //│ > class A //│ > Map(0) {} +// TODO: how to add the block IR to the cache, for class functions? staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) @@ -232,142 +233,15 @@ staged module ValClass with class A() staged module A with fun f() = 1 -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:163) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'toString') -//│ at (REPL38:1:987) -//│ at REPL38:1:2599 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:600:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:935:10) -//│ at REPLServer.emit (node:events:508:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 +//│ > Map(0) {} // nested module module A with staged module B with fun f() = 1 -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:114) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = member:B -//│ _2 = class hkmc2.semantics.BlockMemberSymbol -//│ _2 = Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = N -//│ curThis = S of S of globalThis:globalThis -//│ bindings = HashMap(member:A -> A2, class:A -> A1, module:A -> A1, member:OtherBlocks -> OtherBlocks1, module:OtherBlocks -> OtherBlocks, $runtime -> runtime, $definitionMetadata -> definitionMetadata, $prettyPrint -> prettyPrint, $Term -> Term, $Block -> Block, member:Staged -> Staged1, $block$res -> block$res9, $SpecializeHelpers -> SpecializeHelpers, member:Nonstaged -> Nonstaged1, $option -> option, member:CallSubst -> CallSubst1, module:Nonstaged -> Nonstaged, $block$res -> block$res6, module:Staged -> Staged, class:OtherBlocks -> OtherBlocks, member:ClassDefs -> ClassDefs1, module:ClassDefs -> ClassDefs, class:A -> A, module:CallSubst -> CallSubst, $block$res -> block$res7, class:ClassDefs -> ClassDefs, $block$res -> block$res3, class:Nonstaged -> Nonstaged, class:Staged -> Staged, member:Staged -> Staged3, class:CallSubst -> CallSubst, member:Nonstaged -> Nonstaged3, member:CallSubst -> CallSubst3, module:Nonstaged -> Nonstaged2, member:Arguments -> Arguments1, module:Arguments -> Arguments, $block$res -> block$res, module:Staged -> Staged2, member:ClassInstrumentation -> ClassInstrumentation1, member:Outside -> Outside1, class:Outside -> Outside, module:CallSubst -> CallSubst2, member:Expressions -> Expressions1, x -> x, module:Expressions -> Expressions, module:ClassInstrumentation -> ClassInstrumentation, class:Inside -> Inside, $block$res -> block$res5, $block$res -> block$res4, class:Arguments -> Arguments, class:Nonstaged -> Nonstaged2, class:Staged -> Staged2, member:A -> A4, module:A -> A3, class:CallSubst -> CallSubst2, module:B -> B, class:NoArg -> NoArg, $block$res -> block$res10, class:A -> A3, class:B -> B, member:ClassFunctions -> ClassFunctions1, module:ClassFunctions -> ClassFunctions, class:InnerClass -> InnerClass, $block$res -> block$res2, class:ClassInstrumentation -> ClassInstrumentation, $block$res -> block$res1, class:Expressions -> Expressions, member:Predef -> Predef, $block$res -> block$res8, class:ClassFunctions -> ClassFunctions) -//│ curThis = S of S of module:A -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap() -//│ curThis = S of S of module:B -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap($tmp -> tmp, $tmp -> tmp1, $tmp -> tmp2, $tmp -> tmp3, $tmp -> tmp4, $tmp -> tmp5, $tmp -> tmp6, $tmp -> tmp7, $tmp -> tmp8, $tmp -> tmp9, $tmp -> tmp10, $tmp -> tmp11, $tmp -> tmp12) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.251: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.252: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:114) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = member:B -//│ _2 = class hkmc2.semantics.BlockMemberSymbol -//│ _2 = Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = N -//│ curThis = S of S of globalThis:globalThis -//│ bindings = HashMap(member:A -> A2, class:A -> A1, module:A -> A1, member:OtherBlocks -> OtherBlocks1, module:OtherBlocks -> OtherBlocks, $runtime -> runtime, $definitionMetadata -> definitionMetadata, $prettyPrint -> prettyPrint, $Term -> Term, $Block -> Block, member:Staged -> Staged1, $block$res -> block$res9, $SpecializeHelpers -> SpecializeHelpers, member:Nonstaged -> Nonstaged1, $option -> option, member:CallSubst -> CallSubst1, module:Nonstaged -> Nonstaged, $block$res -> block$res6, module:Staged -> Staged, class:OtherBlocks -> OtherBlocks, member:ClassDefs -> ClassDefs1, module:ClassDefs -> ClassDefs, class:A -> A, module:CallSubst -> CallSubst, $block$res -> block$res7, class:ClassDefs -> ClassDefs, $block$res -> block$res3, class:Nonstaged -> Nonstaged, class:Staged -> Staged, member:Staged -> Staged3, class:CallSubst -> CallSubst, member:Nonstaged -> Nonstaged3, member:CallSubst -> CallSubst3, module:Nonstaged -> Nonstaged2, member:Arguments -> Arguments1, module:Arguments -> Arguments, $block$res -> block$res, module:Staged -> Staged2, member:ClassInstrumentation -> ClassInstrumentation1, member:Outside -> Outside1, class:Outside -> Outside, module:CallSubst -> CallSubst2, member:Expressions -> Expressions1, x -> x, module:Expressions -> Expressions, module:ClassInstrumentation -> ClassInstrumentation, class:Inside -> Inside, $block$res -> block$res5, $block$res -> block$res4, class:Arguments -> Arguments, class:Nonstaged -> Nonstaged2, class:Staged -> Staged2, member:A -> A4, module:A -> A3, class:CallSubst -> CallSubst2, module:B -> B, class:NoArg -> NoArg, $block$res -> block$res10, class:A -> A3, class:B -> B, member:ClassFunctions -> ClassFunctions1, module:ClassFunctions -> ClassFunctions, class:InnerClass -> InnerClass, $block$res -> block$res2, class:ClassInstrumentation -> ClassInstrumentation, $block$res -> block$res1, class:Expressions -> Expressions, member:Predef -> Predef, $block$res -> block$res8, class:ClassFunctions -> ClassFunctions) -//│ curThis = S of S of module:A -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap() -//│ curThis = S of S of module:B -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap($tmp -> tmp, $tmp -> tmp1, $tmp -> tmp2, $tmp -> tmp3, $tmp -> tmp4, $tmp -> tmp5, $tmp -> tmp6, $tmp -> tmp7, $tmp -> tmp8, $tmp -> tmp9, $tmp -> tmp10, $tmp -> tmp11, $tmp -> tmp12) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.251: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.252: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:114) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = member:B -//│ _2 = class hkmc2.semantics.BlockMemberSymbol -//│ _2 = Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = N -//│ curThis = S of S of globalThis:globalThis -//│ bindings = HashMap(member:A -> A2, class:A -> A1, module:A -> A1, member:OtherBlocks -> OtherBlocks1, module:OtherBlocks -> OtherBlocks, $runtime -> runtime, $definitionMetadata -> definitionMetadata, $prettyPrint -> prettyPrint, $Term -> Term, $Block -> Block, member:Staged -> Staged1, $block$res -> block$res9, $SpecializeHelpers -> SpecializeHelpers, member:Nonstaged -> Nonstaged1, $option -> option, member:CallSubst -> CallSubst1, module:Nonstaged -> Nonstaged, $block$res -> block$res6, module:Staged -> Staged, class:OtherBlocks -> OtherBlocks, member:ClassDefs -> ClassDefs1, module:ClassDefs -> ClassDefs, class:A -> A, module:CallSubst -> CallSubst, $block$res -> block$res7, class:ClassDefs -> ClassDefs, $block$res -> block$res3, class:Nonstaged -> Nonstaged, class:Staged -> Staged, member:Staged -> Staged3, class:CallSubst -> CallSubst, member:Nonstaged -> Nonstaged3, member:CallSubst -> CallSubst3, module:Nonstaged -> Nonstaged2, member:Arguments -> Arguments1, module:Arguments -> Arguments, $block$res -> block$res, module:Staged -> Staged2, member:ClassInstrumentation -> ClassInstrumentation1, member:Outside -> Outside1, class:Outside -> Outside, module:CallSubst -> CallSubst2, member:Expressions -> Expressions1, x -> x, module:Expressions -> Expressions, module:ClassInstrumentation -> ClassInstrumentation, class:Inside -> Inside, $block$res -> block$res5, $block$res -> block$res4, class:Arguments -> Arguments, class:Nonstaged -> Nonstaged2, class:Staged -> Staged2, member:A -> A4, module:A -> A3, class:CallSubst -> CallSubst2, module:B -> B, class:NoArg -> NoArg, $block$res -> block$res10, class:A -> A3, class:B -> B, member:ClassFunctions -> ClassFunctions1, module:ClassFunctions -> ClassFunctions, class:InnerClass -> InnerClass, $block$res -> block$res2, class:ClassInstrumentation -> ClassInstrumentation, $block$res -> block$res1, class:Expressions -> Expressions, member:Predef -> Predef, $block$res -> block$res8, class:ClassFunctions -> ClassFunctions) -//│ curThis = S of S of module:A -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap() -//│ curThis = S of S of module:B -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap($args -> args) -//│ curThis = N -//│ bindings = HashMap($tmp -> tmp, $tmp -> tmp1, $tmp -> tmp2, $tmp -> tmp3) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.251: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.252: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:114) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = member:B -//│ _2 = class hkmc2.semantics.BlockMemberSymbol -//│ _2 = Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = N -//│ curThis = S of S of globalThis:globalThis -//│ bindings = HashMap(member:A -> A2, class:A -> A1, module:A -> A1, member:OtherBlocks -> OtherBlocks1, module:OtherBlocks -> OtherBlocks, $runtime -> runtime, $definitionMetadata -> definitionMetadata, $prettyPrint -> prettyPrint, $Term -> Term, $Block -> Block, member:Staged -> Staged1, $block$res -> block$res9, $SpecializeHelpers -> SpecializeHelpers, member:Nonstaged -> Nonstaged1, $option -> option, member:CallSubst -> CallSubst1, module:Nonstaged -> Nonstaged, $block$res -> block$res6, module:Staged -> Staged, class:OtherBlocks -> OtherBlocks, member:ClassDefs -> ClassDefs1, module:ClassDefs -> ClassDefs, class:A -> A, module:CallSubst -> CallSubst, $block$res -> block$res7, class:ClassDefs -> ClassDefs, $block$res -> block$res3, class:Nonstaged -> Nonstaged, class:Staged -> Staged, member:Staged -> Staged3, class:CallSubst -> CallSubst, member:Nonstaged -> Nonstaged3, member:CallSubst -> CallSubst3, module:Nonstaged -> Nonstaged2, member:Arguments -> Arguments1, module:Arguments -> Arguments, $block$res -> block$res, module:Staged -> Staged2, member:ClassInstrumentation -> ClassInstrumentation1, member:Outside -> Outside1, class:Outside -> Outside, module:CallSubst -> CallSubst2, member:Expressions -> Expressions1, x -> x, module:Expressions -> Expressions, module:ClassInstrumentation -> ClassInstrumentation, class:Inside -> Inside, $block$res -> block$res5, $block$res -> block$res4, class:Arguments -> Arguments, class:Nonstaged -> Nonstaged2, class:Staged -> Staged2, member:A -> A4, module:A -> A3, class:CallSubst -> CallSubst2, module:B -> B, class:NoArg -> NoArg, $block$res -> block$res10, class:A -> A3, class:B -> B, member:ClassFunctions -> ClassFunctions1, module:ClassFunctions -> ClassFunctions, class:InnerClass -> InnerClass, $block$res -> block$res2, class:ClassInstrumentation -> ClassInstrumentation, $block$res -> block$res1, class:Expressions -> Expressions, member:Predef -> Predef, $block$res -> block$res8, class:ClassFunctions -> ClassFunctions) -//│ curThis = S of S of module:A -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap() -//│ curThis = S of S of module:B -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap($args -> args) -//│ curThis = N -//│ bindings = HashMap($tmp -> tmp, $tmp -> tmp1, $tmp -> tmp2, $tmp -> tmp3) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'B' -//│ ╟── which references the symbol introduced here -//│ ║ l.251: staged module B with -//│ ║ ^^^^^^ -//│ ║ l.252: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun f() = 1 From f2a1ad13ae96acb79df03e1b1972464ee3cc8299 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Feb 2026 17:19:46 +0800 Subject: [PATCH 311/654] update tests --- .../main/scala/hkmc2/codegen/Printer.scala | 3 +- .../test/mlscript/block-staging/Functions.mls | 31 ++----------------- .../test/mlscript/block-staging/Syntax.mls | 2 +- 3 files changed, 5 insertions(+), 31 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index 59ca5e756b..08bdf35a6c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -107,7 +107,6 @@ object Printer: val auxClsParams = auxParams.flatMap(_.paramSyms) val ctorParams = (clsParams ++ auxClsParams).map(p => summon[Scope].allocateName(p)) val docCtorParams = if clsParams.isEmpty then doc"" else doc"(${ctorParams.mkDocument(", ")})" - val docStaged = if isym.defn.forall(_.hasStagedModifier.isEmpty) then doc"" else doc"staged " val docBody = mkDocument(privateFields, publicFields, methods, S(preCtor), ctor) val docPreCtor = mkDocument(preCtor) val docCtor = mkDocument(ctor) @@ -116,7 +115,7 @@ object Printer: case Pat => "pattern" case Obj => "object" case Mod => "module" - val docCls = doc"${docStaged}${clsType} ${own.fold("")(_.toString+"::")}${sym.nme}${docCtorParams}${docBody}" + val docCls = doc"${clsType} ${own.fold("")(_.toString+"::")}${sym.nme}${docCtorParams}${docBody}" val docModule = mod match case Some(mod) => val docStaged = if mod.isym.defn.forall(_.hasStagedModifier.isEmpty) then doc"" else doc"staged " diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index f18a78625f..5e2a037dd2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -31,7 +31,7 @@ staged module Expressions with //│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x1"))]), false), true) //│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) //│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) -//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("element1$"), Symbol("scrut1"), Symbol("a"), Symbol("tmp1"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut1"), Tuple([...Ref(Symbol("x1"))]), Match(Ref(Symbol("scrut1")), [Tup(0, false) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) +//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("scrut1"), Symbol("a"), Symbol("tmp1"), Symbol("middleElements"), Symbol("element0$"), Symbol("element1$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut1"), Tuple([...Ref(Symbol("x1"))]), Match(Ref(Symbol("scrut1")), [Tup(0, false) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) //│ x = [1, 2, 3] class Outside(a) @@ -60,7 +60,7 @@ staged module CallSubst with Nonstaged.f() Staged.f() //│ > FunDefn(Symbol("ctor$"), ([]), End, true) -//│ > FunDefn(Symbol("call"), ([]), Scoped([Symbol("tmp"), Symbol("tmp1")], Assign(Symbol("tmp"), Call(Ref(Symbol("+")), [Lit(1), Lit(1)]), Assign(Symbol("tmp1"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false)))), true) +//│ > FunDefn(Symbol("call"), ([]), Assign(Symbol("$_no$_symbol$_"), Call(Ref(Symbol("+")), [Lit(1), Lit(1)]), Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))), true) :w staged module Arguments with @@ -71,31 +71,6 @@ staged module Arguments with //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. //│ ║ l.70: fun g(x)(y, z)() = z //│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:114) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = S of Scope: -//│ parent = N -//│ curThis = S of S of globalThis:globalThis -//│ bindings = HashMap($block$res -> block$res3, class:Nonstaged -> Nonstaged, class:Staged -> Staged, $runtime -> runtime, $definitionMetadata -> definitionMetadata, $block$res -> block$res2, $prettyPrint -> prettyPrint, class:ClassInstrumentation -> ClassInstrumentation, $Term -> Term, $Block -> Block, $option -> option, member:Predef -> Predef, $block$res -> block$res1, $tmp -> tmp, class:Expressions -> Expressions, member:CallSubst -> CallSubst1, module:CallSubst -> CallSubst, member:Arguments -> Arguments1, module:Arguments -> Arguments, member:ClassInstrumentation -> ClassInstrumentation1, member:Outside -> Outside1, class:Outside -> Outside, $block$res -> block$res4, class:CallSubst -> CallSubst, $block$res -> block$res, module:ClassInstrumentation -> ClassInstrumentation, class:Inside -> Inside, $block$res -> block$res5, class:Arguments -> Arguments, member:x -> x, member:Expressions -> Expressions1, member:Staged -> Staged1, class:NoArg -> NoArg, member:Nonstaged -> Nonstaged1, module:Nonstaged -> Nonstaged, module:Expressions -> Expressions, module:Staged -> Staged) -//│ curThis = S of S of module:Arguments -//│ bindings = HashMap() -//│ curThis = N -//│ bindings = HashMap($args -> args) -//│ curThis = N -//│ bindings = HashMap($lit -> lit, $sym -> sym, $tmp -> tmp1, $return -> return1, $assign -> assign, $tmp -> tmp2, $tmp -> tmp3, $tmp -> tmp4, $tmp -> tmp5, $tmp -> tmp6) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.67: fun f(x) = -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.67: fun f(x) = -//│ ╙── ^ //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) //│ > FunDefn(Symbol("g"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) @@ -113,7 +88,7 @@ staged module OtherBlocks with else 0 //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) staged module ClassDefs with class A diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 6b18ffef62..0de1d16765 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -20,4 +20,4 @@ staged fun f() = 0 :slot staged module A //│ Pretty Lowered: -//│ define staged class A with staged module A in set block$res = undefined in end +//│ define class A with staged module A in set block$res = undefined in end From 941fb44a70b2596f940186e26e165ba3715bb0a6 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 1 Mar 2026 15:48:55 +0800 Subject: [PATCH 312/654] fix some syntax issue --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index bc1a61dc3c..d71fd945cd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -136,7 +136,7 @@ class Cache(underlying: Map[String, [String, ShapeSet, Block.Block]], names: Map if argShape.isDynArr() then fname else if underlying.has(key) then underlying.get(key).0 else freshName(fname) // TODO: hygiene - let s = if underlying.has(key) then union(underlying.get(key).1, resShape) else resShape // Why + let s = if underlying.has(key) then union(underlying.get(key).1, resShape) else resShape let newDef = if codefrag is FunDefn(sym, params, body, stage) then FunDefn(Symbol(newName), params, body, stage) else codefrag @@ -256,8 +256,6 @@ fun prop(defs, ctx, cache, b: Block) = if b is sor(defs, ctx, cache, r) is [r1, s1] then if prop(defs, ctx.add(ValueRef(x), s1), cache, b) is [b2, s2] then [Assign(x, r1, b2), s2] - else - print(prop(defs, ctx.add(ValueRef(x), s1), cache, b)) Match(p, arms, dflt, restBlock) then let s = sop(ctx, p) let filteredArms = foldl((r, arm) => @@ -280,16 +278,15 @@ fun prop(defs, ctx, cache, b: Block) = if b is dflt is Some(d) then let branchCtx = ctx.clone - if not p is ValueLit then do branchCtx.add(p, filteredArms.0) + if not p is ValueLit do branchCtx.add(p, filteredArms.0) let newDflt = prop(defs, branchCtx, cache, concat(d, restBlock)) [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] else [Match(p, filteredArms.2, None, End()), filteredArms.1] - else - dflt is + n and dflt is Some(d) then let branchCtx = ctx.clone - if not p is ValueLit then do branchCtx.add(p, filteredArms.0) + if not p is ValueLit do branchCtx.add(p, filteredArms.0) let newDflt = prop(defs, branchCtx, cache, concat(d, restBlock)) [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] else From 3dfa7e038ecbb25d88534409c33e85e45ae2386d Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 1 Mar 2026 15:49:31 +0800 Subject: [PATCH 313/654] some notational differences --- .../test/mlscript/block-staging/Functions.mls | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 30c064fe72..c1843f3dd9 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,13 +24,13 @@ staged module Expressions with [1, 2] then 2 [a, ...] then 3 else 0 -//│ > FunDefn(Symbol("lit_gen"), ([]), Return(Lit(1), false), true) -//│ > FunDefn(Symbol("assign_gen"), ([]), Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))), true) -//│ > FunDefn(Symbol("tup1_gen"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) -//│ > FunDefn(Symbol("tup2_gen"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x"))]), false), true) -//│ > FunDefn(Symbol("dynsel_gen"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) -//│ > FunDefn(Symbol("match1_gen"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) -//│ > FunDefn(Symbol("match2_gen"), ([]), Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([...Ref(Symbol("x"))]), Match(Ref(Symbol("scrut")), [Tup(0, false) -> Assign(Symbol("tmp"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp"), Lit(3), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("lit_gen"), ([]), Return(ValueLit(1), false), true) +//│ > FunDefn(Symbol("assign_gen"), ([]), Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(42), Assign(Symbol("y"), ValueRef(Symbol("x")), Return(ValueRef(Symbol("y")), false)))), true) +//│ > FunDefn(Symbol("tup1_gen"), ([]), Return(Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false), true) +//│ > FunDefn(Symbol("tup2_gen"), ([]), Return(Tuple([Arg(None, ValueLit(1)), Arg(Some(false), ValueRef(Symbol("x")))]), false), true) +//│ > FunDefn(Symbol("dynsel_gen"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Arg(None, ValueLit(1))]), Return(DynSelect(ValueRef(Symbol("tmp")), ValueLit(0), false), false))), true) +//│ > FunDefn(Symbol("match1_gen"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), ValueLit(9), Match(ValueRef(Symbol("scrut")), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Return(ValueLit(0), false), End()))), true) +//│ > FunDefn(Symbol("match2_gen"), ([]), Scoped([Symbol("element1$"), Symbol("scrut"), Symbol("a"), Symbol("tmp"), Symbol("middleElements"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut"), Tuple([Arg(Some(true), ValueRef(Symbol("x")))]), Match(ValueRef(Symbol("scrut")), [[Tup(0, false), Assign(Symbol("tmp"), ValueLit(1), Break(Symbol("split_root$")))], [Tup(2, false), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(0))]), Assign(Symbol("element1$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1))]), Match(ValueRef(Symbol("element0$")), [[Lit(1), Match(ValueRef(Symbol("element1$")), [[Lit(2), Assign(Symbol("tmp"), ValueLit(2), Break(Symbol("split_root$")))]], Match(ValueRef(Symbol("scrut")), [[Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$"))))]], Break(Symbol("split_2$")), End()), End())]], Match(ValueRef(Symbol("scrut")), [[Tup(1, true), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$"))))]], Break(Symbol("split_2$")), End()), End())))], [Tup(1, true), Assign(Symbol("element0$"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(0))]), Assign(Symbol("middleElements"), Call(Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Arg(None, ValueRef(Symbol("scrut"))), Arg(None, ValueLit(1)), Arg(None, ValueLit(0))]), Assign(Symbol("a"), ValueRef(Symbol("element0$")), Break(Symbol("split_1$")))))]], Break(Symbol("split_2$")), End())), Assign(Symbol("tmp"), ValueLit(0), Break(Symbol("split_root$")))), Assign(Symbol("tmp"), ValueLit(3), End())), Return(ValueRef(Symbol("tmp")), false))), true) //│ x = [1, 2, 3] class Outside(a) @@ -41,12 +41,12 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > Define(ClsLikeDefn(ClassSymbol("NoArg"), TODO), End) -//│ > Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a"), Symbol("b")]), TODO), End) -//│ > FunDefn(Symbol("inst1_gen"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("inst2_gen"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) -//│ > FunDefn(Symbol("app1_gen"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("app2_gen"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) +//│ > Define(ClsLikeDefn(ClassSymbol("NoArg", None), TODO), End()) +//│ > Define(ClsLikeDefn(ClassSymbol("Inside", Some([Symbol("a"), Symbol("b")])), TODO), End()) +//│ > FunDefn(Symbol("inst1_gen"), ([]), Return(Instantiate(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false), true) +//│ > FunDefn(Symbol("inst2_gen"), ([]), Return(Instantiate(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("NoArg", None)), []), false), true) +//│ > FunDefn(Symbol("app1_gen"), ([]), Return(Call(ValueRef(ClassSymbol("Outside", Some([Symbol("a")]))), [Arg(None, ValueLit(1))]), false), true) +//│ > FunDefn(Symbol("app2_gen"), ([]), Return(Call(Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("Inside", Some([Symbol("a"), Symbol("b")]))), [Arg(None, ValueLit(1)), Arg(None, ValueLit(2))]), false), true) module Nonstaged with fun f() = 1 @@ -56,16 +56,16 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > FunDefn(Symbol("f_gen"), ([]), Return(Lit(1), false), true) -//│ > FunDefn(Symbol("call_gen"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))), true) +//│ > FunDefn(Symbol("f_gen"), ([]), Return(ValueLit(1), false), true) +//│ > FunDefn(Symbol("call_gen"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(ValueRef(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(ValueRef(Symbol("Staged")), Symbol("f_gen")), []), false))), true) staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z -//│ > FunDefn(Symbol("f_gen"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) -//│ > FunDefn(Symbol("g_gen"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) +//│ > FunDefn(Symbol("f_gen"), ([Symbol("x")]), Assign(Symbol("x"), ValueLit(1), Return(ValueRef(Symbol("x")), false)), true) +//│ > FunDefn(Symbol("g_gen"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(ValueRef(Symbol("z")), false), true) staged module OtherBlocks with fun scope() = @@ -78,8 +78,8 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > FunDefn(Symbol("scope_gen"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel_gen"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("scope_gen"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), ValueLit(1), Return(Call(Select(Select(ValueRef(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Arg(None, ValueRef(Symbol("a")))]), false))), true) +//│ > FunDefn(Symbol("breakAndLabel_gen"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), ValueLit(1), Match(ValueRef(Symbol("scrut")), [[Lit(2), Break(Symbol("split_1$"))], [Lit(3), Break(Symbol("split_1$"))]], Break(Symbol("split_1$")), End())), Assign(Symbol("tmp"), ValueLit(0), End())), Return(ValueRef(Symbol("tmp")), false))), true) // debug printing fails, collision with class name? :fixme @@ -99,4 +99,4 @@ module A with //│ ║ ^^^^^^ //│ ║ l.95: fun f() = 1 //│ ╙── ^^^^^^^^^^^^^^^ -//│ > FunDefn(Symbol("f_gen"), ([]), Return(Lit(1), false), true) +//│ > FunDefn(Symbol("f_gen"), ([]), Return(ValueLit(1), false), true) From ef8beb2208cd99cff646d72c264849d34cf027dd Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 1 Mar 2026 16:43:37 +0800 Subject: [PATCH 314/654] . --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 2336423d1e..ea6ff87a31 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -85,7 +85,7 @@ fun concat(b1: Block, b2: Block) = if b1 is Assign(lhs, rhs, rest) then Assign(lhs, rhs, concat(rest, b2)) Define(defn, rest) then Define(defn, concat(rest, b2)) Scoped(symbols, rest) then Scoped(symbols, concat(rest, b2)) - End then b2 + End() then b2 fun indent(s: Str) = s.replaceAll("\n", "\n ") From 00bf4939be79081dae88f9b37a566b5a49f31ae9 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 1 Mar 2026 20:06:03 +0800 Subject: [PATCH 315/654] special handle runtime.tuple.get --- .../src/test/mlscript-compile/ShapeSet.mls | 8 ++++ .../shared/src/test/mlscript/ShapeSetTest.mls | 44 ++++++++++++------- .../test/mlscript/block-staging/DefCtx.mls | 22 +++++----- .../test/mlscript/block-staging/PrintCode.mls | 4 +- .../test/mlscript/block-staging/ShapeProp.mls | 20 ++------- 5 files changed, 52 insertions(+), 46 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index d71fd945cd..741d388421 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -187,6 +187,14 @@ fun sor(defs, ctx, cache, r: Result) = if r is Call(f, args) then fun lit(l) = [ValueLit(l), mkLit(l)] let argShapes = args.map(a => sop(ctx, a.value)) + // special handle the special Call function + if f is + Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) + and args is [Arg(None, scrut), Arg(None, lit)] do + let recovered = DynSelect(scrut, lit, false) + [recovered, sop(ctx, recovered)] + Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) do + print("runtime.Tuple.slice not handled") // TODO let def = if f is Select(_, symb) then defs.get(f) else None if def is Some(gen) then diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index a5640fd3be..985962ec35 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -11,7 +11,7 @@ open Option open Block { Tup } let x = mkBot() -//│ x = +//│ x = {} if x.isEmpty() then 0 //│ = 0 @@ -19,14 +19,14 @@ if x.isEmpty() then 0 // :silent let x = liftMany([Lit(1), Lit(2)]) let y = liftMany([Arr([Lit(1)], false), Arr([Lit(2)], false)]) -//│ x = Lit(1),Lit(2) -//│ y = Arr([Lit(1)], false),Arr([Lit(2)], false) +//│ x = {Lit(1),Lit(2)} +//│ y = {Arr([Lit(1)], false),Arr([Lit(2)], false)} union(x, y) -//│ = Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1),Lit(2) +//│ = {Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1),Lit(2)} mkArr([x, y], false) -//│ = Arr([Lit(1), Arr([Lit(1)], false)], false),Arr([Lit(1), Arr([Lit(2)], false)], false),Arr([Lit(2), Arr([Lit(1)], false)], false),Arr([Lit(2), Arr([Lit(2)], false)], false) +//│ = {Arr([Lit(1), Arr([Lit(1)], false)], false),Arr([Lit(1), Arr([Lit(2)], false)], false),Arr([Lit(2), Arr([Lit(1)], false)], false),Arr([Lit(2), Arr([Lit(2)], false)], false)} [x, y] @@ -35,11 +35,15 @@ mkArr([x, y], false) let x = liftMany([Dyn(), Class(Symbol(""), [Lit(42)]), Arr([Lit(100), Lit(false), Lit(undefined)], false)]) let y = liftMany([Lit("a"), Lit(1)]) -//│ x = Arr([Lit(100), Lit(false), Lit(undefined)], false),Class(Symbol(""), [Lit(42)]),Dyn() -//│ y = Lit("a"),Lit(1) +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)], false),Class(Symbol(""), [Lit(42)]),Dyn()} +//│ y = {Lit("a"),Lit(1)} sel(x, y) -//│ = Dyn(),Lit(false) +//│ FAILURE: Unexpected type error +//│ FAILURE LOCATION: subterm (Elaborator.scala:483) +//│ ╔══[ERROR] Name not found: sel +//│ ║ l.41: sel(x, y) +//│ ╙── ^^^ let x = Class(Symbol("A"), [[Symbol("b"), Lit(1)], [Symbol("d"), Dyn()]]) let x = Arr([Dyn(), Lit(1), x], false) @@ -54,26 +58,34 @@ val params = [ liftMany([Class(Symbol("A"), [Dyn()]), Class(Symbol("B"), [Dyn()])]) ] mkClass(sym, params) -//│ = Class(Symbol("C"), [Lit(null), Lit(2), Class(Symbol("A"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(2), Class(Symbol("B"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(4), Class(Symbol("A"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(4), Class(Symbol("B"), [Dyn()])]) +//│ = {Class(Symbol("C"), [Lit(null), Lit(2), Class(Symbol("A"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(2), Class(Symbol("B"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(4), Class(Symbol("A"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(4), Class(Symbol("B"), [Dyn()])])} //│ params = [ -//│ Lit(null), -//│ Lit(2),Lit(4), -//│ Class(Symbol("A"), [Dyn()]),Class(Symbol("B"), [Dyn()]) +//│ {Lit(null)}, +//│ {Lit(2),Lit(4)}, +//│ {Class(Symbol("A"), [Dyn()]),Class(Symbol("B"), [Dyn()])} //│ ] //│ sym = Symbol("C") [liftMany([Lit(1), Dyn()]), liftMany([Lit(2), Lit("str")])] -//│ = [Dyn(),Lit(1), Lit("str"),Lit(2)] +//│ = [{Dyn(),Lit(1)}, {Lit("str"),Lit(2)}] filter(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)], false)]), Tup(3, false)) -//│ = Arr([Lit(1), Lit(2), Lit(3)], false) +//│ FAILURE: Unexpected type error +//│ FAILURE LOCATION: subterm (Elaborator.scala:483) +//│ ╔══[ERROR] Name not found: filter +//│ ║ l.72: filter(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)], false)]), Tup(3, false)) +//│ ╙── ^^^^^^ let x = mkLit(1) let y = Block.Cls(Block.Symbol("Bool"), 0) filter(x, y) -//│ = -//│ x = Lit(1) +//│ FAILURE: Unexpected type error +//│ FAILURE LOCATION: subterm (Elaborator.scala:483) +//│ ╔══[ERROR] Name not found: filter +//│ ║ l.82: filter(x, y) +//│ ╙── ^^^^^^ +//│ x = {Lit(1)} //│ y = Cls(Symbol("Bool"), 0) Shape.filter(Shape.Lit(1), Block.Lit(1)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index ce65e10f66..afff953b40 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -4,10 +4,10 @@ staged module A with fun f() = 1 fun g(x) = x -//│ > fun ctor_() = \ -//│ > () \ -//│ > fun f() = 1 \ -//│ > fun g(x) = x +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 +//│ > fun g(x) = x //│ > Map(0) {} module C with @@ -20,15 +20,15 @@ staged module B with fun b() = C.h() fun c() = i() fun d() = A.g(1) -//│ > fun ctor_() = \ -//│ > () \ -//│ > fun a() = A.f() \ -//│ > fun b() = C.h() \ -//│ > fun c() = i() \ -//│ > fun d() = A.g(1) +//│ > fun ctor_() = +//│ > () +//│ > fun a() = A.f() +//│ > fun b() = C.h() +//│ > fun c() = i() +//│ > fun d() = A.g(1) //│ > Map(4) { //│ > 'ValueRef(Symbol("i"))' => [ [Function: i], false ], -//│ > 'Select(ValueRef(Symbol("C")), Symbol("h"))' => [ [Function: h], false ], //│ > 'Select(ValueRef(Symbol("A")), Symbol("f"))' => [ [Function: f_gen], true ], +//│ > 'Select(ValueRef(Symbol("C")), Symbol("h"))' => [ [Function: h], false ], //│ > 'Select(ValueRef(Symbol("A")), Symbol("g"))' => [ [Function: g_gen], true ] //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index d521057352..011621982b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -39,8 +39,8 @@ printCode(Tuple([Arg(Some(true), ValueRef(Symbol("x"))), Arg(Some(false), ValueR //│ > [...x, ..y] printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false)) -printCode(ClsLikeDefn(ClassSymbol("A", Some([Symbol("x")])), undefined)) -printCode(ClsLikeDefn(ClassSymbol("B", None), undefined)) +printCode(ClsLikeDefn(ClassSymbol("A", Some([Symbol("x")])), [], undefined)) +printCode(ClsLikeDefn(ClassSymbol("B", None), [], undefined)) //│ > fun f(x) = 1 //│ > class A(x) //│ > class B diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e2134256fb..b1b770a4df 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -122,12 +122,7 @@ let ctx2 = ctx.clone ctx2.add(y, mkLit("b")) ctx2.get(y) //│ = Some({Lit("a"),Lit("b")}) -//│ ctx2 = Ctx( -//│ Map(2) { -//│ "ValueRef(Symbol(\"x\"))" => {Lit(1),Lit(2)}, -//│ "ValueRef(Symbol(\"y\"))" => {Lit("a"),Lit("b")} -//│ } -//│ ) +//│ ctx2 = Ctx(Map(2) {"x" => {Lit(1),Lit(2)}, "y" => {Lit("a"),Lit("b")}}) ctx.get(y) //│ = Some({Lit("a")}) @@ -159,11 +154,7 @@ ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ = {Lit("pass")} //│ C = ClassSymbol("C", Some(["a"])) -//│ ctx = Ctx( -//│ Map(1) { -//│ "ValueRef(Symbol(\"x\"))" => {Class(ClassSymbol("C", Some(["a"])), [Lit("pass")])} -//│ } -//│ ) +//│ ctx = Ctx(Map(1) {"x" => {Class(ClassSymbol("C", Some(["a"])), [Lit("pass")])}}) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -338,12 +329,7 @@ sor(defs, Ctx.empty, Cache.empty, callF) val ctxXY = Ctx.empty .add(ValueRef(x), mkLit(10)) .add(ValueRef(y), mkLit(32)) -//│ ctxXY = Ctx( -//│ Map(2) { -//│ "ValueRef(Symbol(\"x\"))" => {Lit(10)}, -//│ "ValueRef(Symbol(\"y\"))" => {Lit(32)} -//│ } -//│ ) +//│ ctxXY = Ctx(Map(2) {"x" => {Lit(10)}, "y" => {Lit(32)}}) // x + y val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) From 65725a19abc113994444eab6e2a0db33db5143a4 Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 2 Mar 2026 01:00:43 +0800 Subject: [PATCH 316/654] fix shapesettest --- .../shared/src/test/mlscript/ShapeSetTest.mls | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 985962ec35..6f47901bec 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -38,12 +38,8 @@ let y = liftMany([Lit("a"), Lit(1)]) //│ x = {Arr([Lit(100), Lit(false), Lit(undefined)], false),Class(Symbol(""), [Lit(42)]),Dyn()} //│ y = {Lit("a"),Lit(1)} -sel(x, y) -//│ FAILURE: Unexpected type error -//│ FAILURE LOCATION: subterm (Elaborator.scala:483) -//│ ╔══[ERROR] Name not found: sel -//│ ║ l.41: sel(x, y) -//│ ╙── ^^^ +selSet(x, y) +//│ = {Dyn(),Lit(false)} let x = Class(Symbol("A"), [[Symbol("b"), Lit(1)], [Symbol("d"), Dyn()]]) let x = Arr([Dyn(), Lit(1), x], false) @@ -69,22 +65,14 @@ mkClass(sym, params) [liftMany([Lit(1), Dyn()]), liftMany([Lit(2), Lit("str")])] //│ = [{Dyn(),Lit(1)}, {Lit("str"),Lit(2)}] -filter(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)], false)]), Tup(3, false)) -//│ FAILURE: Unexpected type error -//│ FAILURE LOCATION: subterm (Elaborator.scala:483) -//│ ╔══[ERROR] Name not found: filter -//│ ║ l.72: filter(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)], false)]), Tup(3, false)) -//│ ╙── ^^^^^^ +filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)], false)]), Tup(3, false)) +//│ = {Arr([Lit(1), Lit(2), Lit(3)], false)} let x = mkLit(1) let y = Block.Cls(Block.Symbol("Bool"), 0) -filter(x, y) -//│ FAILURE: Unexpected type error -//│ FAILURE LOCATION: subterm (Elaborator.scala:483) -//│ ╔══[ERROR] Name not found: filter -//│ ║ l.82: filter(x, y) -//│ ╙── ^^^^^^ +filterSet(x, y) +//│ = {} //│ x = {Lit(1)} //│ y = Cls(Symbol("Bool"), 0) From 044d7fd548f2ed1091a931c5ceada884166e3109 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 3 Mar 2026 13:17:01 +0800 Subject: [PATCH 317/654] implementation of valOf (without class) --- .../main/scala/hkmc2/codegen/Lowering.scala | 1 + .../src/test/mlscript-compile/ShapeSet.mls | 42 ++-- .../test/mlscript/block-staging/ShapeProp.mls | 196 ++++++++++++++++-- 3 files changed, 202 insertions(+), 37 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 02c91695a9..7997fdfd46 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -267,6 +267,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): val clsSymb = new ClassSymbol(Tree.DummyTypeDef(syntax.Cls), mod.sym.id) val stagedAnnots = mod.annotations.filter { case Annot.Modifier(Keyword.`staged`) => true + case _ => false } val newDefn = ClassDef.Plain(mod.owner, syntax.Cls, clsSymb, mod.bsym, diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 741d388421..7ca7483a44 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -92,15 +92,26 @@ fun staticSet(s: ShapeSet) = 1 then Shape.static(v.0) else false -open Block - -fun valOf(s : ShapeSet) = ??? +fun valOf(s : Shape) = + if s is + Dyn() then throw Error("valOf on Dyn") + Lit(l) then l + Arr(shapes, inf) then shapes.map((x, _, _) => valOf(x)) + Class(sym, params) then ??? + else throw Error("Unknown shape") + +fun valOfSet(s : ShapeSet) = + if s.values().length == + 1 then valOf(s.values().0) + else throw Error("valOfSet on non-singleton ShapeSet") // fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = // let rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) // [flat(rem.map(_.0)), rem.map(_.1)] // TODO: refactor with hash map? + +open Block class Ctx(val maps: Map[String, ShapeSet]) with fun get(path) = let ps = showPath(path) @@ -117,7 +128,7 @@ class Ctx(val maps: Map[String, ShapeSet]) with module Ctx with fun empty = Ctx(new Map()) -class DefCtx(val defs: Map[String, Function]) with +class DefCtx(val defs: Map[String, [Function, Bool]]) with fun get(sym) = if defs.has(sym.name) then Some(defs.get(sym.name)) else None @@ -127,7 +138,6 @@ class DefCtx(val defs: Map[String, Function]) with module DefCtx with fun empty = DefCtx(new Map()) - // TODO: improve it class Cache(underlying: Map[String, [String, ShapeSet, Block.Block]], names: Map[String, Int]) with fun add(fname, argShape, codefrag, resShape) = @@ -149,12 +159,6 @@ class Cache(underlying: Map[String, [String, ShapeSet, Block.Block]], names: Map let key = fname ~ argShape.hash() if underlying.has(key) then underlying.get(key) else ??? - fun getSimp(fname, argShape) = - let key = fname ~ argShape.hash() - if underlying.has(key) then - let res = underlying.get(key) - [res.1, Symbol(res.0)] - else ??? fun freshName(name) = if not names.has(name) do names.set(name, 0) @@ -178,7 +182,7 @@ fun sop(ctx, p: Path): ShapeSet = ValueRef(l) then mkDyn() -fun sor(defs, ctx, cache, r: Result) = if r is +fun sor(defs, ctx, r: Result) = if r is Path then [r, sop(ctx, r)] Instantiate(cls, args) then let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("Instantiate with non-ClassSymbol") @@ -186,7 +190,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is Tuple(elems) then [r, mkArr(elems.map(a => sop(ctx, a.value)), false)] Call(f, args) then fun lit(l) = [ValueLit(l), mkLit(l)] - let argShapes = args.map(a => sop(ctx, a.value)) + let argShapes = args.map((a, _, _) => sop(ctx, a.value)) // special handle the special Call function if f is Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) @@ -197,7 +201,7 @@ fun sor(defs, ctx, cache, r: Result) = if r is print("runtime.Tuple.slice not handled") // TODO let def = if f is Select(_, symb) then defs.get(f) else None if def is - Some(gen) then + Some([gen, true]) then if gen(...argShapes) is [shape, implSymb] then [Call(ValueRef(implSymb), args), shape] else [r, mkDyn()] @@ -212,6 +216,8 @@ fun sor(defs, ctx, cache, r: Result) = if r is // [res, resShape, cache] // else [r, mkDyn(), cache] // else [r, mkDyn(), cache] + Some([f, false]) and argShapes.every((x, _, _) => staticSet(x)) then + let argVals = argShapes.map((s, _, _) => valOfSet(s)) None and let name = if f is ValueRef(symb) then symb.name args is @@ -254,14 +260,14 @@ fun sor(defs, ctx, cache, r: Result) = if r is fun prop(defs, ctx, cache, b: Block) = if b is End then [b, mkBot()] - Return(res, implct) and sor(defs, ctx, cache, res) is [r1, s1] then + Return(res, implct) and sor(defs, ctx, res) is [r1, s1] then [Return(r1, implct), s1] Scoped(symbols, rest) then - symbols.forEach((x, i, arr) => ctx.add(ValueRef(x), mkBot())) + symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) let res = prop(defs, ctx, cache, rest) [Scoped(symbols, res.0), res.1] Assign(x, r, b) and - sor(defs, ctx, cache, r) is [r1, s1] then + sor(defs, ctx, r) is [r1, s1] then if prop(defs, ctx.add(ValueRef(x), s1), cache, b) is [b2, s2] then [Assign(x, r1, b2), s2] Match(p, arms, dflt, restBlock) then @@ -276,7 +282,7 @@ fun prop(defs, ctx, cache, b: Block) = if b is [restSet(r.0, arm.0), union(r.1, res.1), [...r.2, [arm.0, res.0]]] )([s, mkBot(), []], ...arms) if filteredArms.2.length is - 0 and + 0 and filteredArms.0.isEmpty() then prop(defs, ctx, cache, restBlock) else prop(defs, ctx, cache, concat(if dflt is Some(d) then d else End(), restBlock)) 1 and diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index b1b770a4df..7a836fa7ec 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -30,6 +30,22 @@ assert(mkBot().isEmpty()) Shape.static(Shape.Lit("Hi")) //│ = true +// valOf + +:re +valOf(Dyn()) +//│ ═══[RUNTIME ERROR] Error: valOf on Dyn + +valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)], false)], false)) +//│ = [1, [2, 3]] + +:re +valOf(mkDyn()) +//│ ═══[RUNTIME ERROR] Error: Unknown shape + +valOfSet(mkLit(0)) +//│ = 0 + // sel let arrSp = mkArr([mkLit(0), mkDyn()], false) @@ -162,22 +178,47 @@ sop(ctx, selPath) val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) sor(DefCtx.empty, Ctx.empty, Cache.empty, tup) -//│ = [ -//│ Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]), -//│ {Arr([Lit(1), Lit(true)], false)} -//│ ] +//│ FAILURE: Unexpected type error +//│ FAILURE LOCATION: newDefn (Resolver.scala:658) +//│ ╔══[ERROR] Expected 3 arguments, got 4 +//│ ║ l.180: sor(DefCtx.empty, Ctx.empty, Cache.empty, tup) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) +//│ at REPL144:1:410 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) //│ tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) let c = ClassSymbol("C", Some([Symbol("p")])) let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) -//│ = [ -//│ Instantiate( -//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), -//│ [Arg(None, ValueLit(123))] -//│ ), -//│ {Class(ClassSymbol("C", Some([Symbol("p")])), [Lit(123)])} -//│ ] +//│ FAILURE: Unexpected type error +//│ FAILURE LOCATION: newDefn (Resolver.scala:658) +//│ ╔══[ERROR] Expected 3 arguments, got 4 +//│ ║ l.203: sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) +//│ at REPL148:1:531 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) //│ c = ClassSymbol("C", Some([Symbol("p")])) //│ inst = Instantiate( //│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), @@ -188,39 +229,139 @@ fun testBinOp(op, v1, v2) = let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] let c = Call(ValueRef(Symbol(op)), args) sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit +//│ FAILURE: Unexpected type error +//│ FAILURE LOCATION: newDefn (Resolver.scala:658) +//│ ╔══[ERROR] Expected 3 arguments, got 4 +//│ ║ l.231: sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :expect 12 testBinOp("+", 10, 2) -//│ = 12 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) +//│ at testBinOp (REPL153:1:727) +//│ at REPL156:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' :expect true testBinOp("==", 10, 10) -//│ = true +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) +//│ at testBinOp (REPL153:1:727) +//│ at REPL159:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' :expect false testBinOp("===", 10, "10") -//│ = false +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) +//│ at testBinOp (REPL153:1:727) +//│ at REPL162:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' :expect false testBinOp("&&", true, false) -//│ = false +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) +//│ at testBinOp (REPL153:1:727) +//│ at REPL165:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' fun testUnaryOp(op, v) = let args = [Arg(None, ValueLit(v))] let c = Call(ValueRef(Symbol(op)), args) sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit +//│ FAILURE: Unexpected type error +//│ FAILURE LOCATION: newDefn (Resolver.scala:658) +//│ ╔══[ERROR] Expected 3 arguments, got 4 +//│ ║ l.317: sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :expect -10 testUnaryOp("-", 10) -//│ = -10 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) +//│ at testUnaryOp (REPL168:1:590) +//│ at REPL171:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' :expect false testUnaryOp("!", true) -//│ = false +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) +//│ at testUnaryOp (REPL168:1:590) +//│ at REPL174:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' :re testUnaryOp("~", 10) -//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' +//│ ═══[RUNTIME ERROR] Error: match error // prop @@ -323,7 +464,24 @@ val defs = DefCtx.empty.add(fPath, f_gen) val callF = Call(fPath, [Arg(None, ValueLit(12))]) sor(defs, Ctx.empty, Cache.empty, callF) -//│ = [Call(ValueRef(Symbol("f_int")), [Arg(None, ValueLit(12))]), {Lit(24)}] +//│ FAILURE: Unexpected type error +//│ FAILURE LOCATION: newDefn (Resolver.scala:658) +//│ ╔══[ERROR] Expected 3 arguments, got 4 +//│ ║ l.466: sor(defs, Ctx.empty, Cache.empty, callF) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) +//│ at REPL205:1:283 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) //│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None, ValueLit(12))]) val ctxXY = Ctx.empty From 01dd129ed1bc4a611ed6549d81a3b443096e296c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 4 Mar 2026 23:44:55 +0800 Subject: [PATCH 318/654] always enable staging --- .../main/scala/hkmc2/codegen/Lowering.scala | 4 +--- .../test/mlscript/block-staging/Functions.mls | 4 ++-- .../test/mlscript/block-staging/Syntax.mls | 24 ++++++++++++++++++- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index bef1a63f5c..2162c63bf0 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -1096,9 +1096,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): if config.funcToCls then Lifter(FirstClassFunctionTransformer().transform(merged)).transform else merged - val staged = - if config.stageCode then Instrumentation(using summon).applyBlock(funcToCls) - else funcToCls + val staged = Instrumentation(using summon).applyBlock(funcToCls) val res = if config.tailRecOpt then TailRecOpt().transform(staged) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 5e2a037dd2..78b16cd31e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -31,7 +31,7 @@ staged module Expressions with //│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x1"))]), false), true) //│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) //│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) -//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("scrut1"), Symbol("a"), Symbol("tmp1"), Symbol("middleElements"), Symbol("element0$"), Symbol("element1$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut1"), Tuple([...Ref(Symbol("x1"))]), Match(Ref(Symbol("scrut1")), [Tup(0, false) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) +//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("tmp1"), Symbol("middleElements"), Symbol("element0$"), Symbol("element1$"), Symbol("scrut1"), Symbol("a")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut1"), Tuple([...Ref(Symbol("x1"))]), Match(Ref(Symbol("scrut1")), [Tup(0, false) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) //│ x = [1, 2, 3] class Outside(a) @@ -88,7 +88,7 @@ staged module OtherBlocks with else 0 //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) staged module ClassDefs with class A diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 0de1d16765..f4fa9c3ba3 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -18,6 +18,28 @@ staged fun f() = 0 :js :slot +:staging staged module A //│ Pretty Lowered: -//│ define class A with staged module A in set block$res = undefined in end +//│ +//│ define class A with +//│ staged module A { +//│ ctor { +//│ begin +//│ set tmp = A.ctor$_instr(); +//│ set tmp1 = ‹not in scope: $Block›.printCode(tmp); +//│ return ‹not in scope: $runtime›.Unit; +//│ end +//│ } +//│ fun module:A::ctor$_instr() { +//│ set end = new ‹not in scope: $Block›.End(); +//│ set tmp2 = new ‹not in scope: $Block›.Symbol("ctor$"); +//│ set tmp3 = []; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = new ‹not in scope: $Block›.FunDefn(tmp2, tmp4, end, true); +//│ return tmp5 +//│ } +//│ }; +//│ set block$res = undefined; +//│ end +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) From b25e0b0c1726020d7c8e8d6517f28f340ad9f5c3 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 5 Mar 2026 13:19:10 +0800 Subject: [PATCH 319/654] small fix to shape prop --- .../test/mlscript/block-staging/ShapeProp.mls | 193 +++--------------- 1 file changed, 27 insertions(+), 166 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 7a836fa7ec..6b61b5dfbf 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -177,48 +177,23 @@ sop(ctx, selPath) // sor val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) -sor(DefCtx.empty, Ctx.empty, Cache.empty, tup) -//│ FAILURE: Unexpected type error -//│ FAILURE LOCATION: newDefn (Resolver.scala:658) -//│ ╔══[ERROR] Expected 3 arguments, got 4 -//│ ║ l.180: sor(DefCtx.empty, Ctx.empty, Cache.empty, tup) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) -//│ at REPL144:1:410 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +sor(DefCtx.empty, Ctx.empty, tup) +//│ = [ +//│ Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]), +//│ {Arr([Lit(1), Lit(true)], false)} +//│ ] //│ tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) let c = ClassSymbol("C", Some([Symbol("p")])) let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) -sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) -//│ FAILURE: Unexpected type error -//│ FAILURE LOCATION: newDefn (Resolver.scala:658) -//│ ╔══[ERROR] Expected 3 arguments, got 4 -//│ ║ l.203: sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) -//│ at REPL148:1:531 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +sor(DefCtx.empty, Ctx.empty, inst) +//│ = [ +//│ Instantiate( +//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), +//│ [Arg(None, ValueLit(123))] +//│ ), +//│ {Class(ClassSymbol("C", Some([Symbol("p")])), [Lit(123)])} +//│ ] //│ c = ClassSymbol("C", Some([Symbol("p")])) //│ inst = Instantiate( //│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), @@ -228,140 +203,40 @@ sor(DefCtx.empty, Ctx.empty, Cache.empty, inst) fun testBinOp(op, v1, v2) = let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] let c = Call(ValueRef(Symbol(op)), args) - sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit -//│ FAILURE: Unexpected type error -//│ FAILURE LOCATION: newDefn (Resolver.scala:658) -//│ ╔══[ERROR] Expected 3 arguments, got 4 -//│ ║ l.231: sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + sor(DefCtx.empty, Ctx.empty, c).0.lit :expect 12 testBinOp("+", 10, 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) -//│ at testBinOp (REPL153:1:727) -//│ at REPL156:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' +//│ = 12 :expect true testBinOp("==", 10, 10) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) -//│ at testBinOp (REPL153:1:727) -//│ at REPL159:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' +//│ = true :expect false testBinOp("===", 10, "10") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) -//│ at testBinOp (REPL153:1:727) -//│ at REPL162:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' +//│ = false :expect false testBinOp("&&", true, false) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) -//│ at testBinOp (REPL153:1:727) -//│ at REPL165:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' +//│ = false fun testUnaryOp(op, v) = let args = [Arg(None, ValueLit(v))] let c = Call(ValueRef(Symbol(op)), args) - sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit -//│ FAILURE: Unexpected type error -//│ FAILURE LOCATION: newDefn (Resolver.scala:658) -//│ ╔══[ERROR] Expected 3 arguments, got 4 -//│ ║ l.317: sor(DefCtx.empty, Ctx.empty, Cache.empty, c).0.lit -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + sor(DefCtx.empty, Ctx.empty, c).0.lit :expect -10 testUnaryOp("-", 10) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) -//│ at testUnaryOp (REPL168:1:590) -//│ at REPL171:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' +//│ = -10 :expect false testUnaryOp("!", true) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) -//│ at testUnaryOp (REPL168:1:590) -//│ at REPL174:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' +//│ = false :re testUnaryOp("~", 10) -//│ ═══[RUNTIME ERROR] Error: match error +//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' // prop @@ -463,25 +338,11 @@ val defs = DefCtx.empty.add(fPath, f_gen) //│ fSym = Symbol("f") val callF = Call(fPath, [Arg(None, ValueLit(12))]) -sor(defs, Ctx.empty, Cache.empty, callF) -//│ FAILURE: Unexpected type error -//│ FAILURE LOCATION: newDefn (Resolver.scala:658) -//│ ╔══[ERROR] Expected 3 arguments, got 4 -//│ ║ l.466: sor(defs, Ctx.empty, Cache.empty, callF) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:949:38) -//│ at REPL205:1:283 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +sor(defs, Ctx.empty, callF) +//│ = [ +//│ Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None, ValueLit(12))]), +//│ {Dyn()} +//│ ] //│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None, ValueLit(12))]) val ctxXY = Ctx.empty From ebfe06a0ac7f03d77c77fd741e7c267f323e5b4c Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 5 Mar 2026 13:19:33 +0800 Subject: [PATCH 320/654] somehow there is a swap in order --- hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index a50403ed60..9a73872b73 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -138,8 +138,8 @@ f().foo() //│ } //│ } //│ #Good$cap; -//│ #y; //│ #x; +//│ #y; //│ #scope0$cap; //│ foo() { //│ let tmp6, tmp7; From cd235684e8e53047ce5d1f9900901db5135d63cb Mon Sep 17 00:00:00 2001 From: Ching Long Tin <26105652+ChingLongTin@users.noreply.github.com> Date: Fri, 6 Mar 2026 10:28:13 +0800 Subject: [PATCH 321/654] Update hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala Co-authored-by: Fa1sePRoMiSe --- hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index cf4d6feece..5dafd7d56e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -22,7 +22,7 @@ class InstrumentationImpl(using State, Raise): type ArgWrappable = Path | Symbol type Context = HashMap[Path, Path] // TODO: there could be a fresh scope per function body, instead of a single one for the entire program - var scope = Scope.empty + val scope = Scope.empty def asArg(x: ArgWrappable): Arg = x match From 628218e8adbbac6e597d2b705e61b449673a5532 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 6 Mar 2026 11:18:13 +0800 Subject: [PATCH 322/654] replace ??? with ErrorReport --- .../scala/hkmc2/codegen/Instrumentation.scala | 28 ++++++++++--------- .../test/mlscript/block-staging/Functions.mls | 14 ++++++++++ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index cf4d6feece..8a8cc7df50 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -162,7 +162,9 @@ class InstrumentationImpl(using State, Raise): transformPath(qual): x => transformPath(fld): y => blockCtor("DynSelect", Ls(x, y, toValue(arrayIdx)), "dynsel")(k) - case _ => ??? // not supported + case _: Value.This => + raise(ErrorReport(msg"Value.This not supported in staged module." -> p.toLoc :: Nil)) + End() def transformResult(r: Result)(using Context)(k: Path => Block): Block = r match @@ -197,7 +199,9 @@ class InstrumentationImpl(using State, Raise): transformArgs(args): args => tuple(args.map(_._1)): tup => blockCtor("Call", Ls(fun, tup), "app")(k) - case _ => ??? // not supported + case _ => + raise(ErrorReport(msg"Other Results not supported in staged module: ${r.toString()}" -> r.toLoc :: Nil)) + End() def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = val Arg(spread, value) = a @@ -223,7 +227,9 @@ class InstrumentationImpl(using State, Raise): transformPath(path): path => blockCtor("Cls", Ls(cls, path))(k) case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) - case Case.Field(name, safe) => ??? // not supported + case Case.Field(name, safe) => + raise(ErrorReport(msg"Case.Field not supported in staged module." -> name.toLoc :: Nil)) + End() def transformBlock(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)((p, _) => k(p)) @@ -275,7 +281,9 @@ class InstrumentationImpl(using State, Raise): case Break(labelSymbol) => transformSymbol(labelSymbol): labelSymbol => blockCtor("Break", Ls(labelSymbol))(k(_, ctx)) - case _ => ??? // not supported + case _ => + raise(ErrorReport(msg"Other Blocks not supprted in staged module: ${b.toString()}" -> N :: Nil)) + End() def transformFunDefn2(f: FunDefn)(using Context)(k: Path => Block): Block = transformBlock(f.body): body => @@ -290,7 +298,7 @@ class InstrumentationImpl(using State, Raise): tuple(tups): tup => blockCtor("FunDefn", Ls(sym, tup, body, toValue(true)))(k) - def transformFunDefn(f: FunDefn): (FunDefn, Block) = + def transformFunDefn(f: FunDefn): (FunDefn, Block => Block) = val genSymName = f.sym.nme + "_instr" val genSym = BlockMemberSymbol(genSymName, Nil, false) val sym = f.owner.get.asPath.selSN(genSymName) @@ -302,7 +310,7 @@ class InstrumentationImpl(using State, Raise): val newBody = Scoped(Set(argSyms*), transformFunDefn2(f)(using new HashMap)(Return(_, false))) // TODO: remove it. only for test - val debug = call(sym, Nil)(fnPrintCode(_)(End())) + val debug = (k: Block) => call(sym, Nil)(fnPrintCode(_)(k)) val newFun = f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) (newFun, debug) @@ -310,12 +318,6 @@ class InstrumentationImpl(using State, Raise): class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSubst()): val impl = new InstrumentationImpl - def concat(b1: Block, b2: Block): Block = - b1.mapTail { - case _: End => b2 - case _ => ??? - } - override def applyBlock(b: Block): Block = super.applyBlock(b) match // find modules with staged annotation @@ -329,7 +331,7 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub val (stagedCtor, ctorPrint) = impl.transformFunDefn(ctor) val unit = State.runtimeSymbol.asPath.selSN("Unit") - val debugBlock = (ctorPrint :: debugPrintCode).foldRight(Return(unit, true))(concat) + val debugBlock = (ctorPrint :: debugPrintCode).foldRight((Return(unit, true): Block))(_(_)) def debugCont(rest: Block) = Begin(debugBlock, rest) // add generator functions for classes within the constructor diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 78b16cd31e..a1ab0546b4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -112,3 +112,17 @@ module A with fun f() = 1 //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) + +:e +class C(val a) +staged module A with + let x = C(1) + fun f() = set x.a = 0 + fun g() = {1 : 2} +//│ ═══[COMPILATION ERROR] Other Blocks not supprted in staged module: AssignField(Ref(term:module:A.x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref($runtime,None),Ident(Unit)),false)) +//│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) +//│ ║ l.121: fun g() = {1 : 2} +//│ ╙── ^ +//│ > FunDefn(Symbol("ctor$"), ([]), Assign(Symbol("x"), Call(Ref(ClassSymbol("C1":[Symbol("a")])), [Lit(1)]), End), true) +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. + From cd94b6e00bc3d2b11c67f4f1710b5cb863df7603 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 6 Mar 2026 11:21:19 +0800 Subject: [PATCH 323/654] cleanup --- .../main/scala/hkmc2/codegen/Lowering.scala | 11 ---------- .../src/test/mlscript-compile/Shape.mls | 21 ------------------- 2 files changed, 32 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 2162c63bf0..86a72aff8d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -273,17 +273,6 @@ class Lowering()(using Config, TL, Raise, State, Ctx): val stagedAnnots = mod.annotations.collect { case Annot.Modifier(Keyword.`staged`) => Annot.Modifier(Keyword.`staged`) } - // val newDefn = ClassDef.Plain(mod.owner, syntax.Cls, clsSymb, - // mod.bsym, - // Nil, - // N, - // ObjBody(Blk(Nil, UnitVal())), - // S(mod.sym), - // stagedAnnots - // ) - // clsSymb.defn = S(newDefn) - // newDefn - ClassDef.Plain(mod.owner, syntax.Cls, new ClassSymbol(Tree.DummyTypeDef(syntax.Cls), mod.sym.id), mod.bsym, Nil, diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 0b724cfcd7..531ebc2914 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -38,27 +38,6 @@ fun show(s: Shape) = Arr(shapes, inf) then "Arr([" + shapes.map(show).join(", ") + "], " + inf + ")" Class(sym, params) then "Class(" + showSymbol(sym) + ", [" + params.map(show).join(", ") + "])" -fun zipMrg[A](a: Array[A], b: Array[A]): Array[A] = - a.map((a, i, _) => mrg2(a, b.at(i))) - -// TODO: remove, this is no longer in use -fun mrg2(s1: Shape, s2: Shape) = - if s1 == s2 then s1 - else if [s1, s2] is - [Lit(l), Class(sym, params)] - and isPrimitiveTypeOf(sym, l) - then Class(sym, params) - [Class(sym1, ps), Class(sym2, s2)] - and sym1.name == sym2.name - then Class(sym1, ps.map(p => [p.0, zipMrg(p.1, s2)])) - [Arr(s1, false), Arr(s2, false)] - and s1.length == s2.length - then Arr(zipMrg(s1, s2), false) - else Dyn() - -fun mrg(s1: Array[Shape]) = - s1.reduceRight((acc, s, _, _) => mrg2(s, acc)) - fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is [Class(sym, params), Lit(n)] and n is Str From 5170e25efe8c5a4af563cf1773781a13a3e996a5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 6 Mar 2026 11:43:39 +0800 Subject: [PATCH 324/654] remove some crashes from .get --- .../scala/hkmc2/codegen/Instrumentation.scala | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 06fb3f89a9..7154b18d3e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -94,9 +94,14 @@ class InstrumentationImpl(using State, Raise): def transformSymbol(sym: Symbol, symName: Str = "sym")(k: Path => Block): Block = sym match case clsSym: ClassSymbol => - val name = scope.allocateOrGetName(sym) - transformParamsOpt(clsSym.defn.get.paramsOpt): paramsOpt => - blockCtor("ClassSymbol", Ls(toValue(name), paramsOpt), symName)(k) + clsSym.defn match + case S(defn) => + val name = scope.allocateOrGetName(sym) + transformParamsOpt(defn.paramsOpt): paramsOpt => + blockCtor("ClassSymbol", Ls(toValue(name), paramsOpt), symName)(k) + case N => + raise(ErrorReport(msg"Unable to infer parameters from ClassSymbol in staged module, which are necessary to reconstruct class instances." -> sym.toLoc :: Nil)) + End() case t: TermSymbol if t.defn.exists(_.sym.asCls.isDefined) => val name = scope.allocateOrGetName(sym) transformSymbol(t.defn.get.sym.asCls.get, symName)(k) @@ -150,12 +155,10 @@ class InstrumentationImpl(using State, Raise): blockCtor("ValueRef", Ls(sym), "var")(k) case l: Value.Lit => blockCtor("ValueLit", Ls(l), "lit")(k) - case s @ Select(p, i @ Tree.Ident(name)) => + case s @ Select(p, Tree.Ident(name)) => transformPath(p): x => - val sym = - if s.symbol.isDefined - then transformSymbol(s.symbol.get) - else blockCtor("Symbol", Ls(toValue(name))) + val sym = s.symbol.map(transformSymbol(_)) + .getOrElse(blockCtor("Symbol", Ls(toValue(name)))) sym: sym => blockCtor("Select", Ls(x, sym), "sel")(k) case DynSelect(qual, fld, arrayIdx) => @@ -184,11 +187,10 @@ class InstrumentationImpl(using State, Raise): val stagedFunPath = fun match case s @ Select(qual, Tree.Ident(name)) => s.symbol.flatMap({ - case t: TermSymbol => t.owner.flatMap({ - case sym: DefinitionSymbol[?] => - sym.defn.get.hasStagedModifier.map(_ => - Select(qual, Tree.Ident(name + "_gen"))(N) - ) + case t: TermSymbol => t.owner.flatMap({ case sym: DefinitionSymbol[?] => + sym.defn.flatMap(_.hasStagedModifier.map(_ => + Select(qual, Tree.Ident(name + "_gen"))(N) + )) }) case _ => N }) From 3cb2ebb889ee20b20a744b7570b3bdf650663b41 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 6 Mar 2026 11:57:27 +0800 Subject: [PATCH 325/654] rename transformFunDefn --- .../scala/hkmc2/codegen/Instrumentation.scala | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 7154b18d3e..7d371a6373 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -254,7 +254,7 @@ class InstrumentationImpl(using State, Raise): transformBlock(rest): p => transformSymbol(cls.isym): c => // staging the methods within the module - cls.methods.map(transformFunDefn2).collectApply: methods => + cls.methods.map(transformFunDefn).collectApply: methods => tuple(methods): methods => optionNone(): none => // TODO: handle companion object blockCtor("ClsLikeDefn", Ls(c, methods, none)): cls => @@ -287,7 +287,7 @@ class InstrumentationImpl(using State, Raise): raise(ErrorReport(msg"Other Blocks not supprted in staged module: ${b.toString()}" -> N :: Nil)) End() - def transformFunDefn2(f: FunDefn)(using Context)(k: Path => Block): Block = + def transformFunDefn(f: FunDefn)(using Context)(k: Path => Block): Block = transformBlock(f.body): body => if f.params.length != 1 then raise(WarningReport(msg"Multiple parameter lists are not supported in shape propagation yet." -> f.sym.toLoc :: Nil)) @@ -300,16 +300,15 @@ class InstrumentationImpl(using State, Raise): tuple(tups): tup => blockCtor("FunDefn", Ls(sym, tup, body, toValue(true)))(k) - def transformFunDefn(f: FunDefn): (FunDefn, Block => Block) = + def applyFunDefn(f: FunDefn): (FunDefn, Block => Block) = val genSymName = f.sym.nme + "_instr" val genSym = BlockMemberSymbol(genSymName, Nil, false) val sym = f.owner.get.asPath.selSN(genSymName) - // NOTE: this debug printing only works for top-level modules, nested modules don't work // turn into fundefn val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(f.sym.nme + "_instr")) val argSyms = f.params.flatMap(_.params).map(_.sym) - val newBody = Scoped(Set(argSyms*), transformFunDefn2(f)(using new HashMap)(Return(_, false))) + val newBody = Scoped(Set(argSyms*), transformFunDefn(f)(using new HashMap)(Return(_, false))) // TODO: remove it. only for test val debug = (k: Block) => call(sym, Nil)(fnPrintCode(_)(k)) @@ -327,10 +326,10 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods - .map(impl.transformFunDefn) + .map(impl.applyFunDefn) .unzip val ctor = FunDefn.withFreshSymbol(S(companion.isym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), companion.ctor)(false) - val (stagedCtor, ctorPrint) = impl.transformFunDefn(ctor) + val (stagedCtor, ctorPrint) = impl.applyFunDefn(ctor) val unit = State.runtimeSymbol.asPath.selSN("Unit") val debugBlock = (ctorPrint :: debugPrintCode).foldRight((Return(unit, true): Block))(_(_)) @@ -341,7 +340,7 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub override def applyBlock(b: Block): Block = super.applyBlock(b) match case Define(c: ClsLikeDefn, rest) if c.companion.isEmpty => val (stagedMethods, debugPrintCode) = c.methods - .map(impl.transformFunDefn) + .map(impl.applyFunDefn) .unzip val newModule = c.copy(methods = c.methods ++ stagedMethods) Define(newModule, rest) From 6acee7120bf1cc6cda2e455e25a6d21e04c8bdf1 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 6 Mar 2026 16:00:09 +0800 Subject: [PATCH 326/654] remove inf parameter form Shape.Arr and Block.Tup --- .../scala/hkmc2/codegen/Instrumentation.scala | 13 +++++++--- .../src/test/mlscript-compile/Block.mls | 12 +++------ .../src/test/mlscript-compile/Shape.mls | 22 ++++++---------- .../test/mlscript/block-staging/Functions.mls | 25 ++++++++++++------- 4 files changed, 38 insertions(+), 34 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 7d371a6373..f1639880ec 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -207,9 +207,12 @@ class InstrumentationImpl(using State, Raise): def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = val Arg(spread, value) = a - transformOption(spread, bool => assign(toValue(bool))): spreadStaged => + if spread.isDefined then + raise(ErrorReport(msg"Spread parameters are not supported in staged module: ${a.toString()}" -> N :: Nil)) + End() + else transformPath(value): value => - blockCtor("Arg", Ls(spreadStaged, value)): cde => + blockCtor("Arg", Ls(value)): cde => k(cde, spread.isDefined) def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(Path, Bool)] => Block): Block = @@ -228,7 +231,11 @@ class InstrumentationImpl(using State, Raise): transformSymbol(cls): cls => transformPath(path): path => blockCtor("Cls", Ls(cls, path))(k) - case Case.Tup(len, inf) => blockCtor("Tup", Ls(len, inf).map(toValue))(k) + case Case.Tup(len, true) => + raise(ErrorReport(msg"Spread parameters are not supported in staged module: ${cse.toString()}" -> N :: Nil)) + End() + case Case.Tup(len, false) => + blockCtor("Tup", Ls(toValue(len)))(k) case Case.Field(name, safe) => raise(ErrorReport(msg"Case.Field not supported in staged module." -> name.toLoc :: Nil)) End() diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index a73e74384f..f643643cbd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -21,13 +21,13 @@ type Ident = Symbol // this is so that we're able to retrieve information about the class from the symbol class ClassSymbol(val name: Str, val paramsOpt: Opt[ParamList]) extends Symbol(name) -class Arg(val spread: Opt[Bool], val value: Path) +class Arg(val value: Path) class Case with constructor Lit(val lit: Literal) Cls(val cls: Symbol, val path: Path) - Tup(val len: Int, val inf: Bool) + Tup(val len: Int) class Result with constructor @@ -106,11 +106,7 @@ fun showPath(p: Path): Str = "Lit(" + showLiteral(lit) + ")" fun showArg(arg: Arg) = - if arg.spread is - Some(true) then "..." - Some(false) then ".." - else "" - + showPath(arg.value) + showPath(arg.value) fun showArgs(args: Array[Arg]) = "[" + args.map(showArg).join(", ") + "]" @@ -120,7 +116,7 @@ fun showCase(c: Case): Str = if c is Lit(lit) then "Lit(" + showLiteral(lit) + ")" Cls(cls, path) then "Cls(" + showSymbol(cls) + ", " + showPath(path) + ")" - Tup(len, inf) then "Tup(" + len + ", " + inf + ")" + Tup(len) then "Tup(" + len + ")" fun showResult(r: Result): Str = if r is diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 531ebc2914..70c935ec8f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -28,14 +28,14 @@ class Shape with constructor Dyn() Lit(val l: Literal) - Arr(val shapes: Array[Shape], val inf: Bool) + Arr(val shapes: Array[Shape]) Class(val sym: ClassSymbol, val params: Array[Shape]) fun show(s: Shape) = if s is Dyn then "Dyn" Lit(lit) then "Lit(" + Block.showLiteral(lit) + ")" - Arr(shapes, inf) then "Arr([" + shapes.map(show).join(", ") + "], " + inf + ")" + Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" Class(sym, params) then "Class(" + showSymbol(sym) + ", [" + params.map(show).join(", ") + "])" fun sel(s1: Shape, s2: Shape): Array[Shape] = @@ -47,11 +47,10 @@ fun sel(s1: Shape, s2: Shape): Array[Shape] = is i then [params.(i)] [Dyn, Lit(n)] and n is Str then [Dyn()] - [Arr(shapes, false), Lit(n)] and n is Int + [Arr(shapes), Lit(n)] and n is Int then [shapes.(n)] - [Arr(shapes, false), Dyn] then + [Arr(shapes), Dyn] then shapes - [Arr(shapes, true), _] then [Dyn()] // TODO [Dyn, Lit(n)] and n is Int then [Dyn()] [Dyn, Dyn] @@ -63,8 +62,7 @@ fun static(s: Shape) = Dyn then false Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? Class(_, params) then params.every(static) - Arr(shapes, false) then shapes.every(static) - Arr(shapes, true) then false // TODO + Arr(shapes) then shapes.every(static) open Block { Case } @@ -73,16 +71,14 @@ fun silh(p: Case): Shape = if p is Block.Cls(sym, path) then val size = if sym.args is Some(i) then i else 0 Class(sym, Array(size).fill(Dyn)) - Block.Tup(n, inf) then Arr(Array(n).fill(Dyn), inf) + Block.Tup(n) then Arr(Array(n).fill(Dyn)) // TODO: use Option instead, since all of them return at most one shape fun filter(s: Shape, p: Case): Array[Shape] = if [s, p] is [Lit(l1), Block.Lit(l2)] and l1 == l2 then [s] [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] - [Arr(ls, false), Block.Tup(n, false)] and ls.length == n then [s] - [Arr(ls, true), _] then [s] // TODO - [_, Block.Tup(ls, true)] then [s] // TODO + [Arr(ls), Block.Tup(n)] and ls.length == n then [s] [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [s] [Dyn, _] then [silh(p)] else [] @@ -91,9 +87,7 @@ fun rest(s: Shape, p: Case): Array[Shape] = if [s, p] is [Lit(l1), Block.Lit(l2)] and l1 == l2 then [] [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [] - [Arr(ls, false), Block.Tup(n, false)] and ls.length == n then [] - [Arr(ls, true), _] then [s] // TODO - [_, Block.Tup(ls, true)] then [s] // TODO + [Arr(ls), Block.Tup(n)] and ls.length == n then [] [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [] [Dyn, _] then [s] else [s] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index a1ab0546b4..8107100fb6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -9,7 +9,7 @@ staged module Expressions with let y = x y fun tup1() = [1, 2] - fun tup2() = [1, ..x] + fun tup2() = [1, x] fun dynsel() = [1].(0) fun match1() = if 9 is @@ -19,19 +19,19 @@ staged module Expressions with 9 then 4 else 0 fun match2() = - if [...x] is + if x is [] then 1 [1, 2] then 2 - [a, ...] then 3 + [a, _] then 3 else 0 //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("lit"), ([]), Return(Lit(1), false), true) //│ > FunDefn(Symbol("assign"), ([]), Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), Lit(42), Assign(Symbol("y"), Ref(Symbol("x")), Return(Ref(Symbol("y")), false)))), true) //│ > FunDefn(Symbol("tup1"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) -//│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), ..Ref(Symbol("x1"))]), false), true) +//│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), Ref(Symbol("x1"))]), false), true) //│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) //│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) -//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("tmp1"), Symbol("middleElements"), Symbol("element0$"), Symbol("element1$"), Symbol("scrut1"), Symbol("a")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Label(Symbol("split_2$"), false, Assign(Symbol("scrut1"), Tuple([...Ref(Symbol("x1"))]), Match(Ref(Symbol("scrut1")), [Tup(0, false) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2, false) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End)], Match(Ref(Symbol("scrut1")), [Tup(1, true) -> Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))))], Break(Symbol("split_2$")), End), End))), Tup(1, true) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("scrut1")), Lit(0)]), Assign(Symbol("middleElements"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")), [Ref(Symbol("scrut1")), Lit(1), Lit(0)]), Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$")))))], Break(Symbol("split_2$")), End)), Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$")))NaN, Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) +//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("element1$"), Symbol("element0$"), Symbol("a"), Symbol("tmp1")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Match(Ref(Symbol("x1")), [Tup(0) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)))], Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$"))), End), Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) //│ x = [1, 2, 3] class Outside(a) @@ -42,11 +42,11 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("Inside1":[Symbol("a1"), Symbol("b")]), [], TODO), Define(ClsLikeDefn(ClassSymbol("NoArg"), [], TODO), End)), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a1"), Symbol("b")]), [], TODO), Define(ClsLikeDefn(ClassSymbol("NoArg"), [], TODO), End)), true) //│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) //│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) //│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside1":[Symbol("a1"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) +//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a1"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) module Nonstaged with fun f() = 1 @@ -88,7 +88,7 @@ staged module OtherBlocks with else 0 //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) staged module ClassDefs with class A @@ -123,6 +123,13 @@ staged module A with //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) //│ ║ l.121: fun g() = {1 : 2} //│ ╙── ^ -//│ > FunDefn(Symbol("ctor$"), ([]), Assign(Symbol("x"), Call(Ref(ClassSymbol("C1":[Symbol("a")])), [Lit(1)]), End), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Assign(Symbol("x"), Call(Ref(ClassSymbol("C":[Symbol("a")])), [Lit(1)]), End), true) //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +:e +staged module Spread with + fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 +//│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Arg(Some(false),Ref($tmp,None)) +//│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From 196b54438d355baaf744087b88e506366d63827e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 6 Mar 2026 16:00:26 +0800 Subject: [PATCH 327/654] remove dead code --- hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f1639880ec..7b609fafcf 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -103,7 +103,6 @@ class InstrumentationImpl(using State, Raise): raise(ErrorReport(msg"Unable to infer parameters from ClassSymbol in staged module, which are necessary to reconstruct class instances." -> sym.toLoc :: Nil)) End() case t: TermSymbol if t.defn.exists(_.sym.asCls.isDefined) => - val name = scope.allocateOrGetName(sym) transformSymbol(t.defn.get.sym.asCls.get, symName)(k) case _: BuiltinSymbol => // retain names to built-in functions From 2952b84993c1428ed769996a16d241dc6b816871 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 7 Mar 2026 01:15:43 +0800 Subject: [PATCH 328/654] add the shape propagation and dump --- .../scala/hkmc2/codegen/Instrumentation.scala | 94 ++++-- .../scala/hkmc2/semantics/Elaborator.scala | 2 +- .../src/test/mlscript-compile/Block.mls | 19 +- .../src/test/mlscript-compile/ShapeSet.mls | 225 +++++++------- .../mlscript-compile/SpecializeHelpers.mls | 22 +- .../test/mlscript/block-staging/Functions.mls | 276 ++++++++---------- .../test/mlscript/block-staging/ShapeProp.mls | 268 ++++++++++++----- 7 files changed, 520 insertions(+), 386 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 75e04aa127..0545bebb50 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -443,22 +443,57 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub val cachePath = companion.isym.asPath.selSN("cache") // initialize cache for the module def cacheDecl(rest: Block) = - (ctorCache :: cacheTups).collectApply: cacheTups => - tuple(cacheTups): tup => - assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => - assign(Instantiate(mut = false, helperMod("FunCache"), Ls(Arg(N, map)))): mapInit => - Define(ValDefn(cacheTsym, cacheSym, mapInit), rest) + call(shapeSetMod("emptyCache"), Nil, false): mapInit => + Define(ValDefn(cacheTsym, cacheSym, mapInit), rest) + def shapeSetMod(name: Str) = State.shapeSetSymbol.asPath.selSN(name) def genMethod(f: FunDefn): FunDefn = val genSymName = f.sym.nme + "_gen" val sym = BlockMemberSymbol(genSymName, Nil, false) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) - - val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => - f.params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => - tuple(tups): tups => - call(helperMod("specialize"), Ls(cachePath, instr.selSN("value"), tups)): res => - Return(res, false) + val argSyms = f.params.flatMap(_.params).map(_.sym) + val fnameCode = toValue(f.sym.nme) + + def applyRest(fname: Path, set: Path) = transformBlock(f.body)(using Context(new HashMap(), new HashMap())): rawBody => + val paramSymsTasks = f.params.flatMap(pl => pl.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme))))) + paramSymsTasks.collectApply: flatParamSyms => + val paramListSyms = f.params.foldLeft((flatParamSyms, List.empty[List[Path]])) { case ((rem, acc), pl) => + val (h, t) = rem.splitAt(pl.params.size) + (t, acc :+ h) + }._2 + call(shapeSetMod("emptyCtx"), Nil, true, "ctx"): ctx => + def addParams(params: List[(Path, Symbol)])(cont: => Block): Block = params match + case Nil => cont + case (symPath, argSym) :: tail => + blockCtor("ValueRef", Ls(symPath), "pref"): pref => + call(ctx.selSN("add"), Ls(pref, argSym.asPath), true, "tmp") { _ => addParams(tail)(cont) } + + addParams(paramListSyms.flatten.zip(argSyms)): + blockCtor("Symbol", Ls(toValue(f.sym.nme))): fsym => + paramListSyms.map(tuple(_)).collectApply: tups => + tuple(tups): tup => + val argsToProp = Ls(companion.isym.asPath.selSN("defCtx"), ctx, cachePath, rawBody) + call(shapeSetMod("prop"), argsToProp, true, "proped"): proped => + assign(DynSelect(proped, toValue(0), true), "propedBlock"): propedBlock => + assign(DynSelect(proped, toValue(1), true), "propedShape"): propedShape => + blockCtor("FunDefn", Ls(fsym, tup, propedBlock, toValue(true)), "block"): fundef => + call(cachePath.selSN("add"), Ls(fname, set, fundef, propedShape), true, "newName"): newName => + tuple(Ls(propedShape, newName), "ret"): ret => + Return(ret, false) + + val body = + assign(fnameCode, "fname"): fname => + tuple(argSyms.map(_.asPath), "args"): args => + call(shapeSetMod("mkArr"), Ls(args, toValue(false)), true, "set"): set => + call(cachePath.selSN("has"), Ls(fname, set), true, "scrut"): scrut => + val trueBranch = + call(cachePath.selSN("get"), Ls(fname, set), true, "cached"): cached => + assign(DynSelect(cached, toValue(0), true), "cachedName"): cachedName => + assign(DynSelect(cached, toValue(1), true), "cachedShape"): cachedShape => + blockCtor("Symbol", Ls(cachedName), "cachedSym"): cachedSym => + tuple(Ls(cachedShape, cachedSym), "simpRet"): simpRet => + Return(simpRet, false) + Match(scrut, Ls(Case.Lit(Tree.BoolLit(true)) -> trueBranch), S(applyRest(fname, set)), End()) f.copy(sym = sym, dSym = dSym, body = body)(false) // add generator functions for classes within the constructor @@ -476,16 +511,29 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub // NOTE: this debug printing only works for top-level modules, nested modules don't work // TODO: remove this. only for testing - def debugCont(rest: Block) = - val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") - val renderFun = State.runtimeSymbol.asPath.selSN("render") - val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) + def createDumpMth(mths: Ls[FunDefn], c: ClsLikeDefn): FunDefn = + val body = call(shapeSetMod("mkDyn"), Nil, true, "dyn") { dynVar => + val calls = mths.foldRight[Block] { + call(cachePath.selSN("getImps"), Nil, true, "defs") { defsVar => + blockCall("printModule", Ls(toValue(c.sym.nme), defsVar), "res") { resVar => + Return(resVar, false) + } + } + } { (f, nextBlock) => + val argSyms = f.params.flatMap(_.params).map(_.sym) + call(companion.isym.asPath.selSN(f.sym.nme + "_gen"), argSyms.map(_ => dynVar), true, "restmp") { restmpVar => + nextBlock + } + } + calls + } + val sym = BlockMemberSymbol("dump", Nil, true) + val k = syntax.ImmutVal + val dSym = TermSymbol(k, S(c.isym), Tree.Ident("dump")) + FunDefn.withFreshSymbol(S(companion.isym), sym, Ls(PlainParamList(Nil)), body)(false).copy(dSym = dSym)(false) - assign(options): options => - call(cachePath.selSN("toString"), Nil, false): str => - call(printFun, Ls(str), false): _ => - call(printFun, Ls(companion.isym.asPath.selSN("defCtx")), false): _ => - rest + def debugCont(rest: Block) = + call(companion.isym.asPath.selSN("dump"), Nil)(_ => rest) // redendant? this collects function calls within the block. maybe this should be a separate function to the staging val (_, defs) = transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) @@ -497,12 +545,14 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub allDefs.values.collectApply: defs => tuple(defs): tup => assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => - Define(ValDefn(defCtxTsym, defCtxSym, map), rest) + call(shapeSetMod("DefCtx"), Ls(map)): defCtxVar => + Define(ValDefn(defCtxTsym, defCtxSym, defCtxVar), rest) // used for staging classes inside modules val genMethods = companion.methods.map(genMethod) + val dumpFun = createDumpMth(companion.methods, c) val newCompanion = companion.copy( - methods = stagedCtor :: companion.methods ++ stagedMethods ++ genMethods, + methods = stagedCtor :: dumpFun :: companion.methods ++ stagedMethods ++ genMethods, ctor = defCtxDecl(cacheDecl(debugCont(genCls.applyBlock(companion.ctor)))), publicFields = cacheSym -> cacheTsym :: companion.publicFields ) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 326e72aee1..41ca580f2e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -256,7 +256,7 @@ object Elaborator: val prettyPrintSymbol = TempSymbol(N, "prettyPrint") val termSymbol = TempSymbol(N, "Term") val blockSymbol = TempSymbol(N, "Block") - val shapeSetSymbol = TempSymbol(N, "shapeSet") + val shapeSetSymbol = TempSymbol(N, "ShapeSet") val specializeHelpersSymbol = TempSymbol(N, "SpecializeHelpers") val optionSymbol = TempSymbol(N, "option") val wasmSymbol = TempSymbol(N, "wasm") diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index ea6ff87a31..df71762e13 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -71,7 +71,7 @@ class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicField class Block with constructor - Match(val scrut: Path, val arms: Array[[Case, Block]], val dflt: Opt[Block], val rest: Block) + Match(val scrut: Path, val arms: Array[Arm], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) @@ -125,9 +125,8 @@ fun showResult(r: Result): Str = Call(_fun, args) then showPath(_fun) + "(" + showArgs(args) + ")" Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" Tuple(elems) then "[" + showArgs(elems) + "]" - _ then "" + _ then "" -// Case (match arm patterns) fun showCase(c) = if c is Lit(l) then showLiteral(l) @@ -136,7 +135,7 @@ fun showCase(c) = else showParamsOpt(cls.paramsOpt) Tup(len, inf) then "[" + Array(len).fill("_").join(", ") + (if inf then ", ..." else "") + "]" - _ then "" + _ then "" fun showArm(a) = showCase(a.cse) + " then" + (if a.body is Return then " " else "\n ") + indent(showBlock(a.body)) @@ -160,7 +159,7 @@ fun showDefn(d: Defn): Str = ClsLikeDefn(sym, methods, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + if methods is [] then "" else " with \n " + indent(methods.map(showDefn).join("\n")) - _ then "" + _ then "" fun showBlock(b) = if b is @@ -176,10 +175,9 @@ fun showBlock(b) = + indent(if dflt is Some(db) then "\nelse " + showBlock(db) else "") + showRestBlock(rest) Scoped(symbols, rest) then - // initialize symbols symbols.map(showSymbol).map("let " + _).join("\n") + showRestBlock(rest) End() then "()" - _ then "" + b + _ then "" // removes trailing newline fun showRestBlock(b : Block): Str = @@ -198,9 +196,8 @@ fun show(x) = Case then showCase(x) Defn then showDefn(x) Block then showBlock(x) - else - "" -fun printCode(x) = print(show(x)) +fun printCode(x) = + print(show(x)) -fun compile(p: Block) = ??? \ No newline at end of file +fun printModule(name, methods) = print("module " + name + " with" + indent("\n" + methods.map(showDefn).join("\n"))) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 7ca7483a44..020011a3ec 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -15,21 +15,21 @@ type ShapeSet = ShapeSet.ShapeSet module ShapeSet with... -class ShapeSet(val underlying: Map[String, Shape]) extends CachedHash with - fun keys() = [...underlying.keys()].toSorted() +class ShapeSet(val shapeset: Map[String, Shape]) extends CachedHash with + fun keys() = [...shapeset.keys()].toSorted() - fun values() = underlying.values().toArray() + fun values() = shapeset.values().toArray() - fun isEmpty() = underlying.size == 0 + fun isEmpty() = shapeset.size == 0 - fun contains(s: Shape) = underlying.has(s.hash()) + fun contains(s: Shape) = shapeset.has(s.hash()) fun flatMap(f) = liftMany(values().flatMap(f)) - fun toString() = "{" ~ underlying.keys().toArray().toSorted().toString() ~ "}" + fun toString() = "{" ~ shapeset.keys().toArray().toSorted().toString() ~ "}" fun isDynArr() = - if underlying.size == 1 and values().0 is Arr(shapes, _) then shapes.every(s => s is Dyn) else false + if shapeset.size == 1 and values().0 is Arr(shapes, _) then shapes.every(s => s is Dyn) else false module ShapeSet with @@ -41,9 +41,9 @@ fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [s.hash(), s]))) // combining ShapeSets together -fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(new Map([...s1.underlying, ...s2.underlying])) +fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(new Map([...s1.shapeset, ...s2.shapeset])) -fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.underlying.entries().toArray()).flat())) +fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.shapeset.entries().toArray()).flat())) // Cartesian product: https://stackoverflow.com/a/43053803 fun prod(xs) = @@ -62,14 +62,14 @@ fun mkLit(l) = lift(Lit(l)) fun mkArr(shapes: Array[ShapeSet], inf: Bool) = shapes - .map(_.underlying.values().toArray()) + .map(_.shapeset.values().toArray()) |> prod .map(x => Arr(x, inf)) |> liftMany fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = params - .map(_.underlying.values().toArray()) + .map(_.shapeset.values().toArray()) |> prod .map(Class(sym, _)) |> liftMany @@ -88,7 +88,6 @@ fun selSet(s1: ShapeSet, s2: ShapeSet) = fun staticSet(s: ShapeSet) = let v = s.values() if v.length == - 0 then throw Error("Some variables have bottom shape.") 1 then Shape.static(v.0) else false @@ -104,60 +103,74 @@ fun valOfSet(s : ShapeSet) = if s.values().length == 1 then valOf(s.values().0) else throw Error("valOfSet on non-singleton ShapeSet") + +fun val2path(v) = + if typeof(v) == + "number" then Block.ValueLit(v) + else Block.ValueLit(42) + // fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = -// let rem = arms.filter(arm => not (arm.0.isEmpty() and arm.1 is End)) +// let rem = arms.filter(arm => not (arm.cse.isEmpty() and arm.body is End)) // [flat(rem.map(_.0)), rem.map(_.1)] // TODO: refactor with hash map? open Block -class Ctx(val maps: Map[String, ShapeSet]) with +class Ctx(ctx: Map[String, ShapeSet]) with fun get(path) = let ps = showPath(path) - if maps.has(ps) then Some(maps.get(ps)) + if ctx.has(ps) then Some(ctx.get(ps)) else None - fun clone = Ctx(new Map(maps)) + fun clone = Ctx(new Map(ctx)) fun add(path, ss) = let ps = showPath(path) - if maps.has(ps) then - maps.set(ps, union(maps.get(ps), ss)) + if ctx.has(ps) then + ctx.set(ps, union(ctx.get(ps), ss)) else - maps.set(ps, ss) + ctx.set(ps, ss) this module Ctx with fun empty = Ctx(new Map()) -class DefCtx(val defs: Map[String, [Function, Bool]]) with - fun get(sym) = - if defs.has(sym.name) then Some(defs.get(sym.name)) +fun emptyCtx() = Ctx(new Map()) + +class DefCtx(val defctx: Map[String, [Function, Bool]]) with + fun get(p) = + if defctx.has(p.toString()) then defctx.get(p.toString()) else None - fun add(sym, genFunc) = - defs.set(sym.name, genFunc) + fun add(p, genFunc, staged) = // for debug only + if staged then + defctx.set(showPath(p), [genFunc, true]) + else + defctx.set(showPath(p), [genFunc, false]) this + module DefCtx with fun empty = DefCtx(new Map()) +fun emptyDefCtx() = DefCtx(new Map()) + // TODO: improve it -class Cache(underlying: Map[String, [String, ShapeSet, Block.Block]], names: Map[String, Int]) with +class Cache(shapeset: Map[String, [String, ShapeSet, Block.Block]], names: Map[String, Int]) with fun add(fname, argShape, codefrag, resShape) = let key = fname ~ argShape.hash() let newName = if argShape.isDynArr() then fname - else if underlying.has(key) then underlying.get(key).0 + else if shapeset.has(key) then shapeset.get(key).0 else freshName(fname) // TODO: hygiene - let s = if underlying.has(key) then union(underlying.get(key).1, resShape) else resShape + let s = if shapeset.has(key) then union(shapeset.get(key).1, resShape) else resShape let newDef = if codefrag is FunDefn(sym, params, body, stage) then FunDefn(Symbol(newName), params, body, stage) else codefrag - underlying.set(key, [newName, s, newDef]) + shapeset.set(key, [newName, s, newDef]) Symbol(newName) fun has(fname, argShape) = let key = fname ~ argShape.hash() - underlying.has(key) + shapeset.has(key) fun get(fname, argShape) = let key = fname ~ argShape.hash() - if underlying.has(key) then underlying.get(key) + if shapeset.has(key) then shapeset.get(key) else ??? fun freshName(name) = if not names.has(name) do @@ -166,9 +179,11 @@ class Cache(underlying: Map[String, [String, ShapeSet, Block.Block]], names: Map names.set(name, i + 1) StrOps.concat of name, "_", i.toString() fun getImps() = - underlying.values().toArray().map(_.2) // TODO: remove impls with all-dyn params + shapeset.values().toArray().map(_.2) // TODO: remove impls with all-dyn params + fun printImps() = // TODO: for debug testing only + getImps().map(printCode) -// fun emptyCache() = Cache(new Map(), new Map()) +fun emptyCache() = Cache(new Map(), new Map()) module Cache with fun empty = Cache(new Map(), new Map()) @@ -182,10 +197,15 @@ fun sop(ctx, p: Path): ShapeSet = ValueRef(l) then mkDyn() -fun sor(defs, ctx, r: Result) = if r is - Path then [r, sop(ctx, r)] +fun sor(defctx, ctx, r: Result) = if r is + Path and + let s = sop(ctx, r) + staticSet(s) then + [val2path(valOfSet(s)), s] + else + [r, s] Instantiate(cls, args) then - let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("Instantiate with non-ClassSymbol") + let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("Instantiate with non-ClassSymbol in shape propagation") [r, mkClass(sym, args.map(a => sop(ctx, a.value)))] Tuple(elems) then [r, mkArr(elems.map(a => sop(ctx, a.value)), false)] Call(f, args) then @@ -198,28 +218,12 @@ fun sor(defs, ctx, r: Result) = if r is let recovered = DynSelect(scrut, lit, false) [recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) do - print("runtime.Tuple.slice not handled") // TODO - let def = if f is Select(_, symb) then defs.get(f) else None - if def is - Some([gen, true]) then - if gen(...argShapes) is [shape, implSymb] then - [Call(ValueRef(implSymb), args), shape] - else [r, mkDyn()] - // Some(FunDefn(sym, params, body, false)) then - // if argShapes.forall(static) then - // let staticCtx = ctx.nest - // if params.length > 0 then - // params.0.forEach((p, i) => - // staticCtx.add(ValueRef(p), argShapes.(i)) - // ) - // if prop(defs, staticCtx, cache, body) is [Return(res, _), resShape] then - // [res, resShape, cache] - // else [r, mkDyn(), cache] - // else [r, mkDyn(), cache] - Some([f, false]) and argShapes.every((x, _, _) => staticSet(x)) then - let argVals = argShapes.map((s, _, _) => valOfSet(s)) - None and - let name = if f is ValueRef(symb) then symb.name + throw Error("runtime.Tuple.slice not handled in shape propagation") // TODO + if defctx.get(f) is + [gen, true] and gen(...argShapes) is [shape, implSymb] then + [Call(ValueRef(implSymb), args), shape] + [undefined, false] and f is ValueRef(symb) and // means built in + let name = symb.name args is [x] and sop(ctx, x.value).values() is [Shape.Lit(l)] and name is "!" then lit(not l) @@ -241,6 +245,10 @@ fun sor(defs, ctx, r: Result) = if r is "!==" then lit(l1 !== l2) "&&" then lit(l1 && l2) "||" then lit(l1 || l2) + [f, false] and argShapes.every((x, _, _) => staticSet(x)) then + let argVals = argShapes.map((s, _, _) => valOfSet(s)) + // TODO + [r, mkDyn()] else [r, mkDyn()] // Call(f, args) and @@ -258,59 +266,50 @@ fun sor(defs, ctx, r: Result) = if r is // then [Call(f1, args), s] -fun prop(defs, ctx, cache, b: Block) = if b is - End then [b, mkBot()] - Return(res, implct) and sor(defs, ctx, res) is [r1, s1] then - [Return(r1, implct), s1] - Scoped(symbols, rest) then - symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) - let res = prop(defs, ctx, cache, rest) - [Scoped(symbols, res.0), res.1] - Assign(x, r, b) and - sor(defs, ctx, r) is [r1, s1] then - if prop(defs, ctx.add(ValueRef(x), s1), cache, b) is [b2, s2] then - [Assign(x, r1, b2), s2] - Match(p, arms, dflt, restBlock) then - let s = sop(ctx, p) - let filteredArms = foldl((r, arm) => - let fs = filterSet(r.0, arm.0) - if fs.isEmpty() then r - else - let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, fs) - let res = prop(defs, branchCtx, cache, concat(arm.1, restBlock)) - [restSet(r.0, arm.0), union(r.1, res.1), [...r.2, [arm.0, res.0]]] - )([s, mkBot(), []], ...arms) - if filteredArms.2.length is - 0 and - filteredArms.0.isEmpty() then prop(defs, ctx, cache, restBlock) - else prop(defs, ctx, cache, concat(if dflt is Some(d) then d else End(), restBlock)) - 1 and - filteredArms.0.isEmpty() then - let newRest = prop(defs, ctx, cache, restBlock) - [concat(filteredArms.2.0.1, newRest.0), union(filteredArms.1, newRest.1)] - dflt is - Some(d) then - let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, filteredArms.0) - let newDflt = prop(defs, branchCtx, cache, concat(d, restBlock)) - [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] - else - [Match(p, filteredArms.2, None, End()), filteredArms.1] - n and dflt is - Some(d) then - let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, filteredArms.0) - let newDflt = prop(defs, branchCtx, cache, concat(d, restBlock)) - [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] - else - [Match(p, filteredArms.2, None, End()), filteredArms.1] -// TODO: remove it. this can be done in module static blocks -fun exec(defs, ctx, cache, b: Block) = if b is - Define(d, rest) and d is - ClsLikeDefn then Define(d, exec(defs, ctx, cache, rest)) - FunDefn(sym, params, body, stage) and stage is - true then exec(defs, ctx.add(???), cache, ctx) - false then ??? - _ and prop(defs, ctx, cache, b) is [b1, _] then - ??? +fun prop(defctx, ctx, cache, b: Block) = if b is + End then [b, mkBot()] + Return(res, implct) and sor(defctx, ctx, res) is [r1, s1] then + [Return(r1, implct), s1] + Scoped(symbols, rest) then + symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) + let res = prop(defctx, ctx, cache, rest) + [Scoped(symbols, res.0), res.1] + Assign(x, r, b) and + sor(defctx, ctx, r) is [r1, s1] then + if prop(defctx, ctx.add(ValueRef(x), s1), cache, b) is [b2, s2] then + [Assign(x, r1, b2), s2] + Match(p, arms, dflt, restBlock) then + let s = sop(ctx, p) + let filteredArms = foldl((r, arm) => + let fs = filterSet(r.0, arm.cse) + if fs.isEmpty() then r + else + let branchCtx = ctx.clone + if not p is ValueLit do branchCtx.add(p, fs) + let res = prop(defctx, branchCtx, cache, concat(arm.body, restBlock)) + [restSet(r.0, arm.cse), union(r.1, res.1), [...r.2, Arm(arm.cse, res.0)]] + )([s, mkBot(), []], ...arms) + if filteredArms.2.length is + 0 and + filteredArms.0.isEmpty() then prop(defctx, ctx, cache, restBlock) + else prop(defctx, ctx, cache, concat(if dflt is Some(d) then d else End(), restBlock)) + 1 and + filteredArms.0.isEmpty() then + let newRest = prop(defctx, ctx, cache, restBlock) + [concat(filteredArms.2.0.body, newRest.0), union(filteredArms.1, newRest.1)] + dflt is + Some(d) then + let branchCtx = ctx.clone + if not p is ValueLit do branchCtx.add(p, filteredArms.0) + let newDflt = prop(defctx, branchCtx, cache, concat(d, restBlock)) + [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] + else + [Match(p, filteredArms.2, None, End()), filteredArms.1] + n and dflt is + Some(d) then + let branchCtx = ctx.clone + if not p is ValueLit do branchCtx.add(p, filteredArms.0) + let newDflt = prop(defctx, branchCtx, cache, concat(d, restBlock)) + [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] + else + [Match(p, filteredArms.2, None, End()), filteredArms.1] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index e7153f0b27..5b8569bd74 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -25,17 +25,11 @@ fun specializeName(funName, shapes) = ).join("") fun propStub(block, shapes) = [block, Dyn()] -fun specialize(cache, block, shapes) = if block is FunDefn(Symbol(funName), ps, body, stage) then - // replace function symbol in block definition to new name - let newName = specializeName(funName, shapes) - if cache.getFun(newName) is - Some(x) then x - None then - let newBody = propStub(body, shapes) - cache.setFun(newName, FunDefn(Symbol(newName), ps, newBody, stage)) - -class FunCache(val cache: Map[String, Symbol]) with - fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None - // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions - fun setFun(k, v) = cache.set(k, v); v - fun toString() = cache.values().map(showDefn).toArray().join("\n") \ No newline at end of file +// fun specialize(cache, block, shapes) = if block is FunDefn(Symbol(funName), ps, body, stage) then +// // replace function symbol in block definition to new name +// let newName = specializeName(funName, shapes) +// if cache.getFun(newName) is +// Some(x) then x +// None then +// let newBody = propStub(body, shapes) +// cache.setFun(newName, FunDefn(Symbol(newName), ps, newBody, stage)) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e2579bba91..febbc11807 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,71 +24,19 @@ staged module Expressions with [1, 2] then 2 [a, ...] then 3 else 0 -//│ > fun ctor_() = -//│ > () -//│ > fun lit() = 1 -//│ > fun assign() = -//│ > let x -//│ > let y -//│ > x = 42 -//│ > y = x -//│ > y -//│ > fun tup1() = [1, 2] -//│ > fun tup2() = [1, ..x1] -//│ > fun dynsel() = -//│ > let tmp -//│ > tmp = [1] -//│ > tmp.(0) -//│ > fun match1() = -//│ > let scrut -//│ > scrut = 9 -//│ > if scrut is -//│ > Bool then 1 -//│ > 8 then 2 -//│ > Int then 3 -//│ > else 0 -//│ > fun match2() = -//│ > let tmp1 -//│ > let middleElements -//│ > let element0_ -//│ > let element1_ -//│ > let scrut1 -//│ > let a -//│ > scrut1 = [...x1] -//│ > if scrut1 is -//│ > [] then -//│ > tmp1 = 1 -//│ > [_, _] then -//│ > element0_ = Runtime.Tuple.get(scrut1, 0) -//│ > element1_ = Runtime.Tuple.get(scrut1, 1) -//│ > if element0_ is -//│ > 1 then -//│ > if element1_ is -//│ > 2 then -//│ > tmp1 = 2 -//│ > else if scrut1 is -//│ > [_, ...] then -//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) -//│ > a = element0_ -//│ > tmp1 = 3 -//│ > else tmp1 = 0 -//│ > else if scrut1 is -//│ > [_, ...] then -//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) -//│ > a = element0_ -//│ > tmp1 = 3 -//│ > else tmp1 = 0 -//│ > [_, ...] then -//│ > element0_ = Runtime.Tuple.get(scrut1, 0) -//│ > middleElements = Runtime.Tuple.slice(scrut1, 1, 0) -//│ > a = element0_ -//│ > tmp1 = 3 -//│ > else tmp1 = 0 -//│ > tmp1 -//│ > Map(2) { -//│ > 'Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get"))' => [ [Function: get], false ], -//│ > 'Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice"))' => [ [Function: slice], false ] -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: runtime.Tuple.slice not handled in shape propagation +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:716:65) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1137:29) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1145:31) +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1194:31) +//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1217:43) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1145:31) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1123:27) +//│ at Expressions.match2_gen (REPL14:1:62403) +//│ at Expressions.dump (REPL14:1:2916) //│ x = [1, 2, 3] class Outside(a) @@ -99,17 +47,19 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > fun ctor_() = -//│ > class Inside1(a1, b) -//│ > class NoArg -//│ > fun inst1() = new Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg() -//│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside1(1, 2) -//│ > Map(2) { -//│ > 'Select(ValueRef(Symbol("ClassInstrumentation")), ClassSymbol("Inside1", Some([Symbol("a1"), Symbol("b")])))' => [ undefined, false ], -//│ > 'ValueRef(ClassSymbol("Outside", Some([Symbol("a")])))' => [ [Function: Outside] { class: [Function] }, false ] -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: Instantiate with non-ClassSymbol in shape propagation +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:617:43) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1096:28) +//│ at ClassInstrumentation.inst2_gen (REPL18:1:14047) +//│ at ClassInstrumentation.dump (REPL18:1:4691) +//│ at (REPL18:1:2279) +//│ at REPL18:1:19459 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) module Nonstaged with fun f() = 1 @@ -119,20 +69,13 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 -//│ > Map(0) {} -//│ > fun ctor_() = -//│ > () -//│ > fun call() = -//│ > let tmp -//│ > tmp = Nonstaged.f() -//│ > Staged.f1() -//│ > Map(2) { -//│ > 'Select(ValueRef(Symbol("Nonstaged")), Symbol("f"))' => [ [Function: f], false ], -//│ > 'Select(ValueRef(Symbol("Staged")), Symbol("f1"))' => [ [Function: f_gen], true ] -//│ > } +//│ > module Staged with +//│ > fun f() = 1 +//│ > module CallSubst with +//│ > fun call() = +//│ > let tmp +//│ > tmp = Nonstaged.f() +//│ > f() module Nonstaged with fun f() = 1 @@ -141,16 +84,10 @@ staged module Staged with staged module CallSubst with fun call() = 1 + 1 - // Nonstaged.f() - // Staged.f() -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 -//│ > Map(0) {} -//│ > fun ctor_() = -//│ > () -//│ > fun call() = +(1, 1) -//│ > Map(1) { 'ValueRef(Symbol("+"))' => [ undefined, false ] } +//│ > module Staged with +//│ > fun f() = 1 +//│ > module CallSubst with +//│ > fun call() = 2 :w staged module Arguments with @@ -159,15 +96,21 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.160: fun g(x)(y, z)() = z -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ > fun ctor_() = -//│ > () -//│ > fun f(x) = -//│ > x = 1 -//│ > x -//│ > fun g(x)(y, z)() = z -//│ > Map(0) {} +//│ ║ l.97: fun g(x)(y, z)() = z +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: s1.shapeset is not iterable +//│ at ShapeSet.union (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:341:13) +//│ at Ctx.add (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:144:27) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1144:24) +//│ at Arguments.f_gen (REPL27:1:5232) +//│ at Arguments.dump (REPL27:1:1146) +//│ at (REPL27:1:484) +//│ at REPL27:1:8580 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) staged module OtherBlocks with fun scope() = @@ -180,49 +123,31 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > fun ctor_() = -//│ > () -//│ > fun scope() = -//│ > let a -//│ > a = 1 -//│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel() = -//│ > let tmp -//│ > let scrut -//│ > scrut = 1 -//│ > if scrut is -//│ > 2 then -//│ > tmp = 0 -//│ > 3 then -//│ > tmp = 0 -//│ > else tmp = 0 -//│ > tmp -//│ > Map(1) { -//│ > 'Select(Select(ValueRef(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally"))' => [ undefined, false ] -//│ > } +//│ > module OtherBlocks with +//│ > fun scope() = +//│ > let a +//│ > a = 1 +//│ > OtherBlocks.scope.locally(a) +//│ > fun breakAndLabel() = +//│ > let scrut +//│ > let tmp +//│ > scrut = 1 +//│ > tmp = 0 +//│ > 0 // :sjs staged module ClassDefs with class A -//│ > fun ctor_() = -//│ > class A -//│ > Map(0) {} +//│ > module ClassDefs with +//│ > // TODO: how to add the block IR to the cache, for class functions? staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) // fun g() = f() // TODO -//│ > fun ctor_() = -//│ > class InnerClass() with -//│ > fun f() = -//│ > let tmp -//│ > tmp = Arguments.f(1) -//│ > +(1, tmp) -//│ > Map(2) { -//│ > 'Select(ValueRef(Symbol("Arguments")), Symbol("f"))' => [ [Function: f_gen], true ], -//│ > 'ValueRef(Symbol("+"))' => [ undefined, false ] -//│ > } +//│ > module ClassFunctions with +//│ > :todo staged module ValClass with @@ -233,16 +158,67 @@ staged module ValClass with class A() staged module A with fun f() = 1 -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 -//│ > Map(0) {} +//│ > module A with +//│ > fun f() = 1 // nested module module A with staged module B with fun f() = 1 -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 -//│ > Map(0) {} +//│ > module B with +//│ > fun f() = 1 + +staged module Test with + fun g(x, y) = x + fun k() = g(1, x) +//│ > module Test with +//│ > fun g(x, y) = x +//│ > fun g_0(x, y) = 1 +//│ > fun k() = g_0(1, x1) + +staged module Simple with + fun inc(x) = x + 1 + fun t() = inc(41) +//│ > module Simple with +//│ > fun inc(x) = +(x, 1) +//│ > fun inc_0(x) = 42 +//│ > fun t() = inc_0(41) + +staged module Match with + fun baz(x) = if x is + Str then 0 + Int then x + 1 + else -1 + fun foo() = baz("1") + fun foo2() = baz(1) +//│ > module Match with +//│ > fun baz(x) = +//│ > if x is +//│ > Str then 0 +//│ > Int then +(x, 1) +//│ > else -1 +//│ > fun baz_0(x) = 0 +//│ > fun foo() = baz_0("1") +//│ > fun baz_1(x) = 2 +//│ > fun foo2() = baz_1(1) + +staged module Math with + fun pow(x, n) = if n is + 1 then x + else x * pow(x, n - 1) + fun cube(x) = pow(x, 3) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] RangeError: Maximum call stack size exceeded +//│ at renderSequence (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:444:45) +//│ at renderClassInstance (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:442:14) +//│ at renderValue (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:1185:42) +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:316:24) +//│ at renderSequence (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:479:35) +//│ at renderArray (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:326:14) +//│ at renderValue (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:1071:30) +//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:435:18) +//│ at renderSequence (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:479:35) +//│ at renderClassInstance (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:442:14) + + diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 6b61b5dfbf..fffa4c5382 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -117,7 +117,7 @@ open Block let ctx = Ctx.empty let x = ValueRef(Symbol("x")) -//│ ctx = Ctx(Map(0) {}) +//│ ctx = Ctx(_) //│ x = ValueRef(Symbol("x")) ctx.add(x, mkLit(1)) @@ -138,7 +138,7 @@ let ctx2 = ctx.clone ctx2.add(y, mkLit("b")) ctx2.get(y) //│ = Some({Lit("a"),Lit("b")}) -//│ ctx2 = Ctx(Map(2) {"x" => {Lit(1),Lit(2)}, "y" => {Lit("a"),Lit("b")}}) +//│ ctx2 = Ctx(_) ctx.get(y) //│ = Some({Lit("a")}) @@ -170,7 +170,7 @@ ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ = {Lit("pass")} //│ C = ClassSymbol("C", Some(["a"])) -//│ ctx = Ctx(Map(1) {"x" => {Class(ClassSymbol("C", Some(["a"])), [Lit("pass")])}}) +//│ ctx = Ctx(_) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -207,19 +207,79 @@ fun testBinOp(op, v1, v2) = :expect 12 testBinOp("+", 10, 2) -//│ = 12 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' +//│ at testBinOp (REPL153:1:1143) +//│ at REPL156:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' :expect true testBinOp("==", 10, 10) -//│ = true +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' +//│ at testBinOp (REPL153:1:1143) +//│ at REPL159:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' :expect false testBinOp("===", 10, "10") -//│ = false +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' +//│ at testBinOp (REPL153:1:1143) +//│ at REPL162:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' :expect false testBinOp("&&", true, false) -//│ = false +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' +//│ at testBinOp (REPL153:1:1143) +//│ at REPL165:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' fun testUnaryOp(op, v) = let args = [Arg(None, ValueLit(v))] @@ -228,11 +288,41 @@ fun testUnaryOp(op, v) = :expect -10 testUnaryOp("-", 10) -//│ = -10 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' +//│ at testUnaryOp (REPL168:1:1006) +//│ at REPL171:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' :expect false testUnaryOp("!", true) -//│ = false +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' +//│ at testUnaryOp (REPL168:1:1006) +//│ at REPL174:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' :re testUnaryOp("~", 10) @@ -258,9 +348,22 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ = [ //│ Scoped( //│ [Symbol("x")], -//│ Assign(Symbol("x"), ValueLit(2), Return(ValueLit(3), false)) +//│ Assign( +//│ Symbol("x"), +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))] +//│ ), +//│ Return( +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueRef(Symbol("x"))), Arg(None, ValueLit(1))] +//│ ), +//│ false +//│ ) +//│ ) //│ ), -//│ {Lit(3)} +//│ {Dyn()} //│ ] //│ c = Scoped( //│ [Symbol("x")], @@ -280,13 +383,7 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ ) //│ ) -// let x = 9 -// if x is -// Bool then 1 -// 8 then 2 -// Int then 3 -// else 0 -let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [[Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)], [Lit(8), Return(ValueLit(2), false)], [Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false)]], Return(ValueLit(0), false), End()))) +let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ = [ //│ Scoped( @@ -303,37 +400,37 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ Match( //│ ValueRef(Symbol("x")), //│ [ -//│ [ +//│ Arm( //│ Cls( //│ ClassSymbol("Bool", None), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(1), false) -//│ ], -//│ [Lit(8), Return(ValueLit(2), false)], -//│ [ +//│ ), +//│ Arm(Lit(8), Return(ValueLit(2), false)), +//│ Arm( //│ Cls( //│ ClassSymbol("Int", None), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(3), false) -//│ ] +//│ ) //│ ], -//│ Return(ValueLit(0), false), +//│ Some(Return(ValueLit(0), false)), //│ End() //│ ) //│ ) //│ ) fun f_gen(args) = - [mkLit(24), Symbol("f_int")] // A stub for the actual blockIR + [mkLit(24), Symbol("f1")] // A stub for the actual f_gen val fSym = Symbol("f") val M = ValueRef(Symbol("M")) val fPath = Select(M, fSym) -val defs = DefCtx.empty.add(fPath, f_gen) +val defs = DefCtx.empty.add(fPath, f_gen, true) //│ M = ValueRef(Symbol("M")) -//│ defs = DefCtx(Map(1) {Symbol("f") => fun f_gen}) +//│ defs = DefCtx(Map(1) {"M.f" => [fun f_gen, false]}) //│ fPath = Select(ValueRef(Symbol("M")), Symbol("f")) //│ fSym = Symbol("f") @@ -348,12 +445,23 @@ sor(defs, Ctx.empty, callF) val ctxXY = Ctx.empty .add(ValueRef(x), mkLit(10)) .add(ValueRef(y), mkLit(32)) -//│ ctxXY = Ctx(Map(2) {"x" => {Lit(10)}, "y" => {Lit(32)}}) +//│ ctxXY = Ctx(_) // x + y val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +printCode(blockAdd) prop(defs, ctxXY, Cache.empty, blockAdd) -//│ = [Return(ValueLit(42), false), {Lit(42)}] +//│ > +(x, y) +//│ = [ +//│ Return( +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(None, ValueRef(Symbol("x"))), Arg(None, ValueRef(Symbol("y")))] +//│ ), +//│ false +//│ ), +//│ {Dyn()} +//│ ] //│ blockAdd = Return( //│ Call( //│ ValueRef(Symbol("+")), @@ -362,18 +470,21 @@ prop(defs, ctxXY, Cache.empty, blockAdd) //│ false //│ ) -// let z; -// if 1 is -// 1 then z = 1 -// 2 then z = 2 -// _ then z = 3 -// z -val blockBranch = Scoped([z], Match(ValueLit(1), [[Lit(1), Assign(z, ValueLit(1), End())], [Lit(2), Assign(z, ValueLit(2), End())]], Assign(z, ValueLit(3), End()), Return(ValueRef(z), false))) +val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit(1), End())), Arm(Lit(2), Assign(z, ValueLit(2), End()))], Some(Assign(z, ValueLit(3), End())), Return(ValueRef(z), false))) +printCode(blockBranch) prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ > let z +//│ > if 1 is +//│ > 1 then +//│ > z = 1 +//│ > 2 then +//│ > z = 2 +//│ > else z = 3 +//│ > z //│ = [ //│ Scoped( //│ [Symbol("z")], -//│ Assign(Symbol("z"), ValueLit(1), Return(ValueRef(Symbol("z")), false)) +//│ Assign(Symbol("z"), ValueLit(1), Return(ValueLit(1), false)) //│ ), //│ {Lit(1)} //│ ] @@ -382,34 +493,32 @@ prop(defs, Ctx.empty, Cache.empty, blockBranch) //│ Match( //│ ValueLit(1), //│ [ -//│ [Lit(1), Assign(Symbol("z"), ValueLit(1), End())], -//│ [Lit(2), Assign(Symbol("z"), ValueLit(2), End())] +//│ Arm(Lit(1), Assign(Symbol("z"), ValueLit(1), End())), +//│ Arm(Lit(2), Assign(Symbol("z"), ValueLit(2), End())) //│ ], -//│ Assign(Symbol("z"), ValueLit(3), End()), +//│ Some(Assign(Symbol("z"), ValueLit(3), End())), //│ Return(ValueRef(Symbol("z")), false) //│ ) //│ ) -// let x = true -// if x -// is true then return 10 -// is false then -// y = 20 -// return y - -val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [[Lit(true), Return(ValueLit(10), false)], [Lit(false), Assign(y, ValueLit(20), End())]], End(), Return(ValueRef(y), false)))) +val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Return(ValueLit(10), false)), Arm(Lit(false), Assign(y, ValueLit(20), End()))], End(), Return(ValueRef(y), false)))) +printCode(earlyRetBlock) prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ > let x +//│ > let y +//│ > x = false +//│ > if x is +//│ > true then 10 +//│ > false then +//│ > y = 20 +//│ > y //│ = [ //│ Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( //│ Symbol("x"), -//│ ValueLit(false), -//│ Assign( -//│ Symbol("y"), -//│ ValueLit(20), -//│ Return(ValueRef(Symbol("y")), false) -//│ ) +//│ ValueLit(42), +//│ Assign(Symbol("y"), ValueLit(20), Return(ValueLit(20), false)) //│ ) //│ ), //│ {Lit(20)} @@ -422,8 +531,8 @@ prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) //│ Match( //│ ValueRef(Symbol("x")), //│ [ -//│ [Lit(true), Return(ValueLit(10), false)], -//│ [Lit(false), Assign(Symbol("y"), ValueLit(20), End())] +//│ Arm(Lit(true), Return(ValueLit(10), false)), +//│ Arm(Lit(false), Assign(Symbol("y"), ValueLit(20), End())) //│ ], //│ End(), //│ Return(ValueRef(Symbol("y")), false) @@ -440,19 +549,18 @@ prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) // else return 2 // else return 3 // return 4 -val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [[Lit(true), Match(ValueRef(y), [[Lit(true), Return(ValueLit(1), false)]], Return(ValueLit(2), false), End())]], Return(ValueLit(3), false), Return(ValueLit(4), false))))) -prop(defs, Ctx.empty, Cache.empty, nestedBlock) -//│ = [ -//│ Scoped( -//│ [Symbol("x"), Symbol("y")], -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(true), -//│ Assign(Symbol("y"), ValueLit(false), Return(ValueLit(4), false)) -//│ ) -//│ ), -//│ {Lit(4)} -//│ ] +val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Match(ValueRef(y), [Arm(Lit(true), Return(ValueLit(1), false))], Some(Return(ValueLit(2), false)), End()))], Some(Return(ValueLit(3), false)), Return(ValueLit(4), false))))) +let c = Cache.empty +val res = prop(defs, Ctx.empty, c, nestedBlock) +c.add("f", mkDyn(), res.0, res.1) +c.printImps() +//│ > let x +//│ > let y +//│ > x = 42 +//│ > y = 42 +//│ > 2 +//│ = [()] +//│ c = Cache(_, _) //│ nestedBlock = Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( @@ -464,20 +572,30 @@ prop(defs, Ctx.empty, Cache.empty, nestedBlock) //│ Match( //│ ValueRef(Symbol("x")), //│ [ -//│ [ +//│ Arm( //│ Lit(true), //│ Match( //│ ValueRef(Symbol("y")), -//│ [[Lit(true), Return(ValueLit(1), false)]], -//│ Return(ValueLit(2), false), +//│ [Arm(Lit(true), Return(ValueLit(1), false))], +//│ Some(Return(ValueLit(2), false)), //│ End() //│ ) -//│ ] +//│ ) //│ ], -//│ Return(ValueLit(3), false), +//│ Some(Return(ValueLit(3), false)), //│ Return(ValueLit(4), false) //│ ) //│ ) //│ ) //│ ) - +//│ res = [ +//│ Scoped( +//│ [Symbol("x"), Symbol("y")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(42), +//│ Assign(Symbol("y"), ValueLit(42), Return(ValueLit(2), false)) +//│ ) +//│ ), +//│ {Lit(2),Lit(4)} +//│ ] From b3bc782f9083b8f9f91f19305e94377b923182c0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 9 Mar 2026 00:06:11 +0800 Subject: [PATCH 329/654] use :todo for spread test case --- hkmc2/shared/src/test/mlscript/block-staging/Functions.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 9c08e63a8a..b9294f97d8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -126,7 +126,7 @@ staged module A with //│ > FunDefn(Symbol("ctor$"), ([]), Assign(Symbol("x"), Call(Ref(ClassSymbol("C":[Symbol("a")])), [Lit(1)]), End), true) //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. -:e +:todo staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Arg(Some(Lazy),Ref(tmp:tmp⁰,None)) From 08ea3684baf9b93bb9959b07690a2827b8519503 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 9 Mar 2026 09:59:32 +0800 Subject: [PATCH 330/654] replace defCtx with generatorMap we can more easily find the generator by checking in the generatorMap of each staged module instead of keeping track of called functions during staging --- .../scala/hkmc2/codegen/Instrumentation.scala | 36 +++++++------ .../test/mlscript/block-staging/DefCtx.mls | 30 +++++------ .../test/mlscript/block-staging/Functions.mls | 53 ++++++++++++------- 3 files changed, 69 insertions(+), 50 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index d095bef989..e0fd77ed90 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -449,14 +449,13 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub case Define(defn: ClsLikeDefn, rest) if defn.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => inline.applyDefn(defn) { case c: ClsLikeDefn => - val sym = c.sym.subst val companion = c.companion.get - val (stagedMethods, defsList, cacheTups) = companion.methods + val (stagedMethods, _, cacheTups) = companion.methods .map(applyFunDefnWithDefs) .unzip3 val ctor = FunDefn.withFreshSymbol(S(companion.isym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), companion.ctor)(false) - val (stagedCtor, ctorPrint, ctorCache) = applyFunDefnWithDefs(ctor) + val (stagedCtor, _, ctorCache) = applyFunDefnWithDefs(ctor) // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol("cache", Nil, true) @@ -487,10 +486,10 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub override def applyBlock(b: Block): Block = super.applyBlock(b) match case Define(c: ClsLikeDefn, rest) if c.companion.isEmpty => val genMethods = c.methods.map(genMethod) - val (stagedMethods, debugPrintCode, defs) = c.methods + val (stagedMethods, _, defs) = c.methods .map(applyFunDefnWithDefs) .unzip3 - // FIXME: add the default staged block IRR to the cache + // FIXME: add the default staged block IR to the cache val newModule = c.copy(methods = c.methods ++ stagedMethods ++ genMethods) Define(newModule, rest) case b => b @@ -505,29 +504,32 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub assign(options): options => call(cachePath.selSN("toString"), Nil, false): str => call(printFun, Ls(str), false): _ => - call(printFun, Ls(companion.isym.asPath.selSN("defCtx")), false): _ => + call(printFun, Ls(companion.isym.asPath.selSN("generatorMap")), false): _ => rest // redendant? this collects function calls within the block. maybe this should be a separate function to the staging - val (_, defs) = transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) - - val allDefs = defsList.fold(defs)((l, r) => l ++ r) - val defCtxSym = BlockMemberSymbol("defCtx", Nil, true) - val defCtxTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("defCtx")) - def defCtxDecl(rest: Block) = - allDefs.values.collectApply: defs => + // val (_, defs) = transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) + val (genMethods, generatorEntries) = companion.methods.map(f => { + val gen = genMethod(f) + def generatorEntry = tuple(Ls(toValue(f.sym.nme), companion.isym.asPath.selSN(gen.sym.nme))) + (gen, generatorEntry) + }).unzip + + val generatorMapSym = BlockMemberSymbol("generatorMap", Nil, true) + val generatorMapTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("generatorMap")) + def generatorMapDecl(rest: Block) = + generatorEntries.collectApply: defs => tuple(defs): tup => assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => - Define(ValDefn(defCtxTsym, defCtxSym, map), rest) + Define(ValDefn(generatorMapTsym, generatorMapSym, map), rest) // used for staging classes inside modules - val genMethods = companion.methods.map(genMethod) val newCompanion = companion.copy( methods = stagedCtor :: companion.methods ++ stagedMethods ++ genMethods, - ctor = defCtxDecl(cacheDecl(debugCont(genCls.applyBlock(companion.ctor)))), + ctor = generatorMapDecl(cacheDecl(debugCont(genCls.applyBlock(companion.ctor)))), publicFields = cacheSym -> cacheTsym :: companion.publicFields ) - val newModule = c.copy(sym = sym, companion = S(newCompanion)) + val newModule = c.copy(companion = S(newCompanion)) Define(newModule, rest) case _ => ??? // unreachable, LabelTransformer doesn't change the block type } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index ce65e10f66..08857660fc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -4,11 +4,11 @@ staged module A with fun f() = 1 fun g(x) = x -//│ > fun ctor_() = \ -//│ > () \ -//│ > fun f() = 1 \ -//│ > fun g(x) = x -//│ > Map(0) {} +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 +//│ > fun g(x) = x +//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } module C with fun h() = 0 @@ -20,15 +20,15 @@ staged module B with fun b() = C.h() fun c() = i() fun d() = A.g(1) -//│ > fun ctor_() = \ -//│ > () \ -//│ > fun a() = A.f() \ -//│ > fun b() = C.h() \ -//│ > fun c() = i() \ -//│ > fun d() = A.g(1) +//│ > fun ctor_() = +//│ > () +//│ > fun a() = A.f() +//│ > fun b() = C.h() +//│ > fun c() = i() +//│ > fun d() = A.g(1) //│ > Map(4) { -//│ > 'ValueRef(Symbol("i"))' => [ [Function: i], false ], -//│ > 'Select(ValueRef(Symbol("C")), Symbol("h"))' => [ [Function: h], false ], -//│ > 'Select(ValueRef(Symbol("A")), Symbol("f"))' => [ [Function: f_gen], true ], -//│ > 'Select(ValueRef(Symbol("A")), Symbol("g"))' => [ [Function: g_gen], true ] +//│ > 'a' => [Function: a_gen], +//│ > 'b' => [Function: b_gen], +//│ > 'c' => [Function: c_gen], +//│ > 'd' => [Function: d_gen] //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 66ff7bb1f0..45ff276bec 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -69,7 +69,15 @@ staged module Expressions with //│ > tmp1 = 3 //│ > else tmp1 = 0 //│ > tmp1 -//│ > Map(0) {} +//│ > Map(7) { +//│ > 'lit' => [Function: lit_gen], +//│ > 'assign' => [Function: assign_gen], +//│ > 'tup1' => [Function: tup1_gen], +//│ > 'tup2' => [Function: tup2_gen], +//│ > 'dynsel' => [Function: dynsel_gen], +//│ > 'match1' => [Function: match1_gen], +//│ > 'match2' => [Function: match2_gen] +//│ > } //│ x = [1, 2, 3] class Outside(a) @@ -87,7 +95,12 @@ staged module ClassInstrumentation with //│ > fun inst2() = new ClassInstrumentation.NoArg() //│ > fun app1() = Outside(1) //│ > fun app2() = ClassInstrumentation.Inside(1, 2) -//│ > Map(0) {} +//│ > Map(4) { +//│ > 'inst1' => [Function: inst1_gen], +//│ > 'inst2' => [Function: inst2_gen], +//│ > 'app1' => [Function: app1_gen], +//│ > 'app2' => [Function: app2_gen] +//│ > } module Nonstaged with fun f() = 1 @@ -97,16 +110,16 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > fun ctor_() = +//│ > fun ctor_1() = //│ > () -//│ > fun f() = 1 -//│ > Map(0) {} +//│ > fun f2() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } //│ > fun ctor_() = //│ > () //│ > fun call() = //│ > __no__symbol__ = Nonstaged.f() //│ > Staged.f1() -//│ > Map(0) {} +//│ > Map(1) { 'call' => [Function: call_gen] } module Nonstaged with fun f() = 1 @@ -117,14 +130,14 @@ staged module CallSubst with 1 + 1 // Nonstaged.f() // Staged.f() -//│ > fun ctor_() = +//│ > fun ctor_1() = //│ > () //│ > fun f() = 1 -//│ > Map(0) {} +//│ > Map(1) { 'f' => [Function: f_gen] } //│ > fun ctor_() = //│ > () //│ > fun call() = +(1, 1) -//│ > Map(0) {} +//│ > Map(1) { 'call' => [Function: call_gen] } :w staged module Arguments with @@ -133,7 +146,7 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.134: fun g(x)(y, z)() = z +//│ ║ l.147: fun g(x)(y, z)() = z //│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -141,7 +154,7 @@ staged module Arguments with //│ > x = 1 //│ > x //│ > fun g(x)(y, z)() = z -//│ > Map(0) {} +//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } staged module OtherBlocks with fun scope() = @@ -156,7 +169,7 @@ staged module OtherBlocks with else 0 //│ > fun ctor_() = //│ > () -//│ > fun scope() = +//│ > fun scope1() = //│ > let a //│ > a = 1 //│ > OtherBlocks.scope.locally(a) @@ -171,7 +184,10 @@ staged module OtherBlocks with //│ > tmp = 0 //│ > else tmp = 0 //│ > tmp -//│ > Map(0) {} +//│ > Map(2) { +//│ > 'scope' => [Function: scope_gen], +//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] +//│ > } // :sjs staged module ClassDefs with @@ -184,17 +200,18 @@ staged module ClassDefs with staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) - // fun g() = f() // TODO + fun g() = f() // TODO //│ > fun ctor_() = //│ > class InnerClass() with //│ > fun f() = //│ > let tmp //│ > tmp = Arguments.f(1) //│ > +(1, tmp) +//│ > fun g() = InnerClass.f1() //│ > Map(0) {} :todo -staged module ValClass with +staged module DataClass with class A(val a) //│ /!!!\ Uncaught error: scala.NotImplementedError: ValDefn(term:A⁰.a⁰,member:a¹,Ref(a²,None)) (of class ValDefn) @@ -205,7 +222,7 @@ staged module A with //│ > fun ctor_() = //│ > () //│ > fun f() = 1 -//│ > Map(0) {} +//│ > Map(1) { 'f' => [Function: f_gen] } // nested module module A with @@ -214,7 +231,7 @@ module A with //│ > fun ctor_() = //│ > () //│ > fun f() = 1 -//│ > Map(0) {} +//│ > Map(1) { 'f' => [Function: f_gen] } :e class C(val a) @@ -225,7 +242,7 @@ staged module A with //│ ═══[COMPILATION ERROR] AssignField(Ref(term:A¹.x⁰,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime⁰,None),Ident(Unit)),false)) is not supported yet. //│ ═══[COMPILATION ERROR] Other Blocks not supprted in staged module: AssignField(Ref(term:A¹.x⁰,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime⁰,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.224: fun g() = {1 : 2} +//│ ║ l.241: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From de890812c7035532e5d84d6caccc72caf6e9ac1b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 9 Mar 2026 10:29:07 +0800 Subject: [PATCH 331/654] improve error reporting --- .../scala/hkmc2/codegen/Instrumentation.scala | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index e0fd77ed90..fd517eb955 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -257,12 +257,12 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub r match case p: Path => transformPath(p)(k(_, ctx)) case Tuple(mut, elems) => - assert(!mut, "mutable tuple not supported") + if mut then raise(ErrorReport(msg"Mutable tuples not supported in staged module." -> r.toLoc :: Nil)) transformArgs(elems): xs => tuple(xs.map(_._1)): codes => blockCtor("Tuple", Ls(codes), "tup")(k(_, ctx)) case Instantiate(mut, cls, args) => - assert(!mut, "mutable instantiation not supported") + if mut then raise(ErrorReport(msg"Mutable instantiations not supported in staged module." -> r.toLoc :: Nil)) transformArgs(args): xs => transformPath(cls): cls => tuple(xs.map(_._1)): codes => @@ -300,18 +300,15 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub tuple(args.map(_._1)): tup => blockCtor("Call", Ls(stagedFun, tup), "app")(k(_, ctx)) case _ => - raise(ErrorReport(msg"Other Results not supported in staged module: ${r.toString()}" -> r.toLoc :: Nil)) + raise(ErrorReport(msg"Other Results not supported in staged module." -> r.toLoc :: Nil)) End() def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = val Arg(spread, value) = a - if spread.isDefined then - raise(ErrorReport(msg"Spread parameters are not supported in staged module: ${a.toString()}" -> N :: Nil)) - End() - else - transformPath(value): value => - blockCtor("Arg", Ls(value)): cde => - k(cde, spread.isDefined) + if spread.isDefined then raise(ErrorReport(msg"Spread parameters are not supported in staged module." -> value.toLoc :: Nil)) + transformPath(value): value => + blockCtor("Arg", Ls(value)): cde => + k(cde, spread.isDefined) def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(Path, Bool)] => Block): Block = args.map(transformArg).collectApply(k) @@ -329,10 +326,8 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub transformSymbol(cls): cls => transformPath(path): path => blockCtor("Cls", Ls(cls, path))(k) - case Case.Tup(len, true) => - raise(ErrorReport(msg"Spread parameters are not supported in staged module: ${cse.toString()}" -> N :: Nil)) - End() - case Case.Tup(len, false) => + case Case.Tup(len, inf) => + if inf then raise(ErrorReport(msg"Spread parameters are not supported in staged module: ${cse.toString()}" -> N :: Nil)) blockCtor("Tup", Ls(toValue(len)))(k) case Case.Field(name, safe) => raise(ErrorReport(msg"Case.Field not supported in staged module." -> name.toLoc :: Nil)) From cec21d93abb23cf4b443de634bfcbd17d324552e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 9 Mar 2026 10:29:51 +0800 Subject: [PATCH 332/654] clean up --- .../scala/hkmc2/codegen/Instrumentation.scala | 130 ++++++------------ .../test/mlscript/block-staging/Functions.mls | 30 +++- 2 files changed, 66 insertions(+), 94 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index fd517eb955..c75c124b0c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -16,13 +16,10 @@ import syntax.{Literal, Tree} // it should be possible to cache some common constructions (End, Option) into the context // this avoids having to rebuild the same shapes everytime they are needed -case class Context(cache: HashMap[Path, Path], defs: HashMap[Path, (Path => Block) => Block]): +case class Context(cache: HashMap[Path, Path]): def getCache(p: Path): Option[Path] = cache.get(p) - def addCache(p: Path, v: Path): Context = Context(cache.clone() += (p -> v), defs) - def delCache(p: Path): Context = Context(cache.clone() -= p, defs) - // TODO: the paths for the definitions will be defined at the constructor of the module, is it possible to reference the value at the ctor, instead of rebuilding them in the function body? - def addDef(p: Path, cont: (Path => Block) => Block): Context = Context(cache, defs.clone() += (p -> cont)) - def addDefs(otherDefs: HashMap[Path, (Path => Block) => Block]): Context = Context(cache, defs.clone() ++ otherDefs) + def addCache(p: Path, v: Path): Context = Context(cache.clone() += (p -> v)) + def delCache(p: Path): Context = Context(cache.clone() -= p) extension [A, B](ls: Iterable[(A => B) => B]) def collectApply(f: Ls[A] => B): B = @@ -144,12 +141,6 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub def call(using State)(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = assign(Call(fun, args.map(asArg))(isMlsFun, false, false), symName)(k) - def concat(b1: Block, b2: Block): Block = - b1.mapTail { - case _: End => b2 - case _ => ??? - } - // helpers for constructing Block IR def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) @@ -268,34 +259,7 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub tuple(xs.map(_._1)): codes => blockCtor("Instantiate", Ls(cls, codes), "inst")(k(_, ctx)) case Call(fun, args) => - val isStagedFun: Boolean = - fun match - case s @ Select(qual, Tree.Ident(name)) => s.symbol.exists({ - case t: TermSymbol => t.owner.exists({ - case sym: DefinitionSymbol[?] => - sym.defn.exists(_.hasStagedModifier.isDefined) - }) - case _ => false - }) - case _ => false - // if staged, point to generator function instead of original function - // val transformer = new BlockTransformer(SymbolSubst()): - // override def applyPath(p: Path)(k: Path => Block) = p match - // case Select(qual, Tree.Ident(name)) => k(Select(qual, Tree.Ident(name + "_gen"))(N)) - // case p => k(p) transformPath(fun): stagedFun => - val funPath = (isStagedFun, fun) match - case (true, Select(qual, Tree.Ident(name))) => Select(qual, Tree.Ident(name + "_gen"))(N) - case (true, Value.Ref(l, _)) => Value.Ref(TempSymbol(N, l.nme + "_gen"), N) - // TODO: cannot point to builtin symbols, we may also delete this entry from defCtx - case (false, Value.Ref(l: BuiltinSymbol, _)) => Value.Lit(Tree.UnitLit(false)) - case _ => fun - val cont = (k: Path => Block) => - transformPath(fun): stagedFun => - tuple(Ls(funPath, toValue(isStagedFun))): value => - call(stagedFun.selSN("hash"), Ls()): str => - tuple(Ls(str, value))(k) - val newCtx = ctx.addDef(fun, cont) transformArgs(args): args => tuple(args.map(_._1)): tup => blockCtor("Call", Ls(stagedFun, tup), "app")(k(_, ctx)) @@ -336,15 +300,6 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub def transformBlock(b: Block)(using Context)(k: Path => Block): Block = transformBlock(b)((p, _) => k(p)) - // TODO: there is probably a better way to extract the function definitions... - def transformBlockWithDefs(b: Block)(using Context)(k: Path => Block): (Block, HashMap[Path, (Path => Block) => Block]) = - var defs = new HashMap[Path, (Path => Block) => Block]() - val block = transformBlock(b)((p, ctx) => - defs = ctx.defs - k(p) - ) - (block, defs) - def transformBlock(b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = b match case Return(res, implct) => @@ -364,12 +319,12 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub transformSymbol(cls.isym): c => // staging the methods within the module cls.methods.map(transformFunDefn).collectApply: pairs => - val (methods, ctxs) = pairs.unzip - val newCtx = ctxs.fold(ctx)((acc, ctx) => acc.addDefs(ctx.defs)) + // TODO: ignore ctx? + val (methods, _) = pairs.unzip tuple(methods): methods => optionNone(): none => // TODO: handle companion object blockCtor("ClsLikeDefn", Ls(c, methods, none)): cls => - blockCtor("Define", Ls(cls, p))(k(_, newCtx)) + blockCtor("Define", Ls(cls, p))(k(_, ctx)) case End(_) => ruleEnd()(k(_, ctx)) case Match(p, ks, dflt, rest) => transformPath(p): x => @@ -412,15 +367,15 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => blockCtor("FunDefn", Ls(sym, tup, body, toValue(true)))(k(_, ctx)) - def applyFunDefnWithDefs(f: FunDefn): (FunDefn, HashMap[Path, (Path => Block) => Block], (Path => Block) => Block) = + def stageMethod(f: FunDefn): FunDefn = val genSymName = f.sym.nme + "_instr" val genSym = BlockMemberSymbol(genSymName, Nil, false) // turn into fundefn val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) val argSyms = f.params.flatMap(_.params).map(_.sym) - val (newBody, defs) = - val (rest, defs) = transformBlockWithDefs(f.body)(using Context(new HashMap(), new HashMap())): body => + val newBody = + val rest = transformBlock(f.body)(using Context(new HashMap())): body => if f.params.length != 1 then raise(WarningReport(msg"Multiple parameter lists are not supported in shape propagation yet." -> f.sym.toLoc :: Nil)) // maintain parameter names in instrumented code @@ -429,14 +384,27 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub ).collectApply: paramListSyms => paramListSyms.map(tuple(_)).collectApply: tups => tuple(tups): tup => - blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => + transformSymbol(f.sym): sym => blockCtor("FunDefn", Ls(sym, tup, body, toValue(true))): block => Return(block, false) - (Scoped(Set(argSyms*), rest), defs) + (Scoped(Set(argSyms*), rest)) - def pathCont(k: Path => Block) = call(f.owner.get.asPath.selSN(genSymName), Ls())(instr => tuple(Ls(toValue(f.sym.nme), instr))(k)) - val newFun = f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) - (newFun, defs, pathCont) + f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) + + def cacheEntry(f: FunDefn)(k: Path => Block) = + call(f.owner.get.asPath.selSN(f.sym.nme), Nil)(instr => tuple(Ls(toValue(f.sym.nme), instr))(k)) + + def genMethod(f: FunDefn, cachePath: Path): FunDefn = + val genSymName = f.sym.nme + "_gen" + val sym = BlockMemberSymbol(genSymName, Nil, false) + val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) + + val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => + f.params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => + tuple(tups): tups => + call(helperMod("specialize"), Ls(cachePath, instr.selSN("value"), tups)): res => + Return(res, false) + f.copy(sym = sym, dSym = dSym, body = body)(false) override def applyBlock(b: Block): Block = super.applyBlock(b) match @@ -445,45 +413,30 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub inline.applyDefn(defn) { case c: ClsLikeDefn => val companion = c.companion.get - val (stagedMethods, _, cacheTups) = companion.methods - .map(applyFunDefnWithDefs) - .unzip3 + val isym = companion.isym + val stagedMethods = companion.methods.map(stageMethod) - val ctor = FunDefn.withFreshSymbol(S(companion.isym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), companion.ctor)(false) - val (stagedCtor, _, ctorCache) = applyFunDefnWithDefs(ctor) + val ctor = FunDefn.withFreshSymbol(S(isym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), companion.ctor)(false) + val stagedCtor = stageMethod(ctor) // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol("cache", Nil, true) - val cacheTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("cache")) - val cachePath = companion.isym.asPath.selSN("cache") + val cacheTsym = TermSymbol(syntax.ImmutVal, S(isym), Tree.Ident("cache")) + val cachePath = isym.asPath.selSN("cache") // initialize cache for the module def cacheDecl(rest: Block) = - (ctorCache :: cacheTups).collectApply: cacheTups => + (stagedCtor :: stagedMethods).map(cacheEntry).collectApply: cacheTups => tuple(cacheTups): tup => assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => assign(Instantiate(mut = false, helperMod("FunCache"), Ls(Arg(N, map)))): mapInit => Define(ValDefn(cacheTsym, cacheSym, mapInit), rest) - def genMethod(f: FunDefn): FunDefn = - val genSymName = f.sym.nme + "_gen" - val sym = BlockMemberSymbol(genSymName, Nil, false) - val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) - - val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => - f.params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => - tuple(tups): tups => - call(helperMod("specialize"), Ls(cachePath, instr.selSN("value"), tups)): res => - Return(res, false) - f.copy(sym = sym, dSym = dSym, body = body)(false) - // add generator functions for classes within the constructor val genCls = new BlockTransformer(new SymbolSubst()): override def applyBlock(b: Block): Block = super.applyBlock(b) match case Define(c: ClsLikeDefn, rest) if c.companion.isEmpty => - val genMethods = c.methods.map(genMethod) - val (stagedMethods, _, defs) = c.methods - .map(applyFunDefnWithDefs) - .unzip3 + val genMethods = c.methods.map(genMethod(_, cachePath)) + val stagedMethods = c.methods.map(stageMethod) // FIXME: add the default staged block IR to the cache val newModule = c.copy(methods = c.methods ++ stagedMethods ++ genMethods) Define(newModule, rest) @@ -499,19 +452,16 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub assign(options): options => call(cachePath.selSN("toString"), Nil, false): str => call(printFun, Ls(str), false): _ => - call(printFun, Ls(companion.isym.asPath.selSN("generatorMap")), false): _ => + call(printFun, Ls(isym.asPath.selSN("generatorMap")), false): _ => rest - // redendant? this collects function calls within the block. maybe this should be a separate function to the staging - // val (_, defs) = transformBlockWithDefs(companion.ctor)(using Context(new HashMap(), new HashMap()))(_ => debugCont(End())) val (genMethods, generatorEntries) = companion.methods.map(f => { - val gen = genMethod(f) - def generatorEntry = tuple(Ls(toValue(f.sym.nme), companion.isym.asPath.selSN(gen.sym.nme))) - (gen, generatorEntry) + val gen = genMethod(f, cachePath) + (gen, tuple(Ls(toValue(f.sym.nme), isym.asPath.selSN(gen.sym.nme)))) }).unzip val generatorMapSym = BlockMemberSymbol("generatorMap", Nil, true) - val generatorMapTsym = TermSymbol(syntax.ImmutVal, S(companion.isym), Tree.Ident("generatorMap")) + val generatorMapTsym = TermSymbol(syntax.ImmutVal, S(isym), Tree.Ident("generatorMap")) def generatorMapDecl(rest: Block) = generatorEntries.collectApply: defs => tuple(defs): tup => diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 45ff276bec..7ec94da041 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -241,7 +241,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] AssignField(Ref(term:A¹.x⁰,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime⁰,None),Ident(Unit)),false)) is not supported yet. //│ ═══[COMPILATION ERROR] Other Blocks not supprted in staged module: AssignField(Ref(term:A¹.x⁰,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime⁰,None),Ident(Unit)),false)) -//│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) +//│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. //│ ║ l.241: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -249,6 +249,28 @@ staged module A with :todo staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 -//│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Arg(Some(Lazy),Ref(tmp:tmp⁰,None)) -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. +//│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) +//│ > fun ctor_() = +//│ > () +//│ > fun f() = +//│ > let scrut +//│ > let x +//│ > let tmp +//│ > let tmp1 +//│ > let middleElements +//│ > let element0_ +//│ > tmp = [1, 2] +//│ > scrut = [1, tmp] +//│ > if scrut is +//│ > [_] then +//│ > element0_ = Runtime.Tuple.get(scrut, 0) +//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) +//│ > if element0_ is +//│ > 1 then +//│ > x = middleElements +//│ > tmp1 = x +//│ > else tmp1 = 0 +//│ > else tmp1 = 0 +//│ > tmp1 +//│ > Map(1) { 'f' => [Function: f_gen] } From befdc88bc756daebf59c92b5430fd8095092e800 Mon Sep 17 00:00:00 2001 From: Lionel Parreaux Date: Tue, 10 Mar 2026 15:21:57 +0800 Subject: [PATCH 333/654] Update difftests --- .../shared/src/test/mlscript/block-staging/Functions.mls | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index b9294f97d8..e94fbcb115 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -31,7 +31,7 @@ staged module Expressions with //│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), Ref(Symbol("x1"))]), false), true) //│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) //│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) -//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("tmp1"), Symbol("element1$"), Symbol("element0$"), Symbol("a")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Match(Ref(Symbol("x1")), [Tup(0) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)))], Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$"))), End), Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) +//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("a"), Symbol("tmp1"), Symbol("element1$"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Match(Ref(Symbol("x1")), [Tup(0) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)))], Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$"))), End), Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) //│ x = [1, 2, 3] class Outside(a) @@ -88,7 +88,7 @@ staged module OtherBlocks with else 0 //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) staged module ClassDefs with class A @@ -119,7 +119,7 @@ staged module A with let x = C(1) fun f() = set x.a = 0 fun g() = {1 : 2} -//│ ═══[COMPILATION ERROR] Other Blocks not supprted in staged module: AssignField(Ref(term:A⁰.x¹,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime⁰,None),Ident(Unit)),false)) +//│ ═══[COMPILATION ERROR] Other Blocks not supprted in staged module: AssignField(Ref(term:A⁰.x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) //│ ║ l.121: fun g() = {1 : 2} //│ ╙── ^ @@ -129,7 +129,7 @@ staged module A with :todo staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 -//│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Arg(Some(Lazy),Ref(tmp:tmp⁰,None)) +//│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Arg(Some(Lazy),Ref(tmp:tmp,None)) //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From e9b2ae0c6b2c6585081c61a3abce8e186f289213 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:03:16 +0800 Subject: [PATCH 334/654] fix printing bug --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 2 +- hkmc2/shared/src/test/mlscript/block-staging/Functions.mls | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index f643643cbd..7186b9de89 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -164,7 +164,7 @@ fun showBlock(b: Block): Str = Scoped(symbols, rest) then "Scoped([" + symbols.map(showSymbol).join(", ") + "], " + showBlock(rest) + ")" Label(labelSymbol, loop, body, rest) then - "Label(" + showSymbol(labelSymbol) + ", " + showBool(loop) + ", " + showBlock(body) + ", " + showBlock(rest) + + ")" + "Label(" + showSymbol(labelSymbol) + ", " + showBool(loop) + ", " + showBlock(body) + ", " + showBlock(rest) + ")" Break(labelSymbol) then "Break(" + showSymbol(labelSymbol) + ")" End() then "End" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e94fbcb115..2871fa4f18 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -31,7 +31,7 @@ staged module Expressions with //│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), Ref(Symbol("x1"))]), false), true) //│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) //│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) -//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("a"), Symbol("tmp1"), Symbol("element1$"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Match(Ref(Symbol("x1")), [Tup(0) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)))], Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$"))), End), Assign(Symbol("tmp1"), Lit(3), End)NaN, Return(Ref(Symbol("tmp1")), false)NaN), true) +//│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("a"), Symbol("tmp1"), Symbol("element1$"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Match(Ref(Symbol("x1")), [Tup(0) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)))], Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$"))), End), Assign(Symbol("tmp1"), Lit(3), End)), Return(Ref(Symbol("tmp1")), false))), true) //│ x = [1, 2, 3] class Outside(a) @@ -88,7 +88,7 @@ staged module OtherBlocks with else 0 //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) -//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)NaN, Return(Ref(Symbol("tmp")), false)NaN), true) +//│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)), Return(Ref(Symbol("tmp")), false))), true) staged module ClassDefs with class A From aa49741526f0714eedee48403fd5db3d1da9dd30 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:14:33 +0800 Subject: [PATCH 335/654] update test --- .../src/test/mlscript/block-staging/DefCtx.mls | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index 08857660fc..e48a464fbb 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -1,6 +1,7 @@ :js :staging +fun f() = 1 staged module A with fun f() = 1 fun g(x) = x @@ -10,25 +11,31 @@ staged module A with //│ > fun g(x) = x //│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } -module C with +class C() with fun h() = 0 fun i() = 2 staged module B with fun a() = A.f() - fun b() = C.h() + fun b() = C().h() fun c() = i() fun d() = A.g(1) + fun e() = f() //│ > fun ctor_() = //│ > () //│ > fun a() = A.f() -//│ > fun b() = C.h() +//│ > fun b() = +//│ > let tmp +//│ > tmp = C() +//│ > tmp.h() //│ > fun c() = i() //│ > fun d() = A.g(1) -//│ > Map(4) { +//│ > fun e() = f() +//│ > Map(5) { //│ > 'a' => [Function: a_gen], //│ > 'b' => [Function: b_gen], //│ > 'c' => [Function: c_gen], -//│ > 'd' => [Function: d_gen] +//│ > 'd' => [Function: d_gen], +//│ > 'e' => [Function: e_gen] //│ > } From 28e7b982dad28b2727f4b372ff70b8d89873927d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 12 Mar 2026 14:23:00 +0800 Subject: [PATCH 336/654] extend Block IR Symbol information --- .../scala/hkmc2/codegen/Instrumentation.scala | 79 +++++++++++++------ .../main/scala/hkmc2/codegen/Lowering.scala | 2 +- .../src/test/mlscript-compile/Block.mls | 37 ++++++--- .../test/mlscript/block-staging/Functions.mls | 47 +++++++---- .../mlscript/block-staging/StageSymbols.mls | 51 ++++++++++++ 5 files changed, 163 insertions(+), 53 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 5cced783bf..34019a9d8b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -10,7 +10,7 @@ import scala.util.chaining._ import mlscript.utils.*, shorthands.* import semantics.* -import semantics.Elaborator.State +import semantics.Elaborator.{State, Ctx, ctx} import syntax.{Literal, Tree} @@ -18,7 +18,9 @@ import syntax.{Literal, Tree} // this avoids having to rebuild the same shapes everytime they are needed // transform Block to Block IR so that it can be instrumented in mlscript -class InstrumentationImpl(using State, Raise): +class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new SymbolSubst()): + val defnMap = HashMap[Symbol, ClsLikeDefn]() + type ArgWrappable = Path | Symbol type Context = HashMap[Path, Path] // TODO: there could be a fresh scope per function body, instead of a single one for the entire program @@ -91,22 +93,40 @@ class InstrumentationImpl(using State, Raise): // transformation helpers - def transformSymbol(sym: Symbol, symName: Str = "sym")(k: Path => Block): Block = + // if sym is ClassSymbol, we may need pOpt to link to the path pointing the the value of the symbol + def transformSymbol(sym: Symbol, pOpt: Option[Path] = N, symName: Str = "sym")(k: Path => Block): Block = sym match - case clsSym: ClassSymbol => - clsSym.defn match - case S(defn) => - val name = scope.allocateOrGetName(sym) - transformParamsOpt(defn.paramsOpt): paramsOpt => - blockCtor("ClassSymbol", Ls(toValue(name), paramsOpt), symName)(k) - case N => - raise(ErrorReport(msg"Unable to infer parameters from ClassSymbol in staged module, which are necessary to reconstruct class instances." -> sym.toLoc :: Nil)) - End() - case t: TermSymbol if t.defn.exists(_.sym.asCls.isDefined) => - transformSymbol(t.defn.get.sym.asCls.get, symName)(k) + case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => + transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(k) + // retain names to built-in functions or function definitions + case t: TermSymbol if t.defn.exists(_.k == syntax.Fun) => + blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) case _: BuiltinSymbol => - // retain names to built-in functions blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) + case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => + blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(k) + case baseSym: BaseTypeSymbol => + val name = scope.allocateOrGetName(sym) + val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match + case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) + case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) + case _ => + raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) + return End() + + val path: ArgWrappable = pOpt.getOrElse(owner match + case S(owner) => owner.asPath.selSN(sym.nme) + case N => bsym + ) + baseSym match + case _: ClassSymbol => + transformParamsOpt(paramsOpt): paramsOpt => + auxParams.map(ps => transformParamList(ps)).collectApply: auxParams => + tuple(auxParams): auxParams => + blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(k) + case _: ModuleOrObjectSymbol => + blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(k) + case _ => val name = scope.allocateOrGetName(sym) blockCtor("Symbol", Ls(toValue(name)), symName)(k) @@ -156,7 +176,7 @@ class InstrumentationImpl(using State, Raise): blockCtor("ValueLit", Ls(l), "lit")(k) case s @ Select(p, Tree.Ident(name)) => transformPath(p): x => - val sym = s.symbol.map(transformSymbol(_)) + val sym = s.symbol.map(transformSymbol(_, S(s))) .getOrElse(blockCtor("Symbol", Ls(toValue(name)))) sym: sym => blockCtor("Select", Ls(x, sym), "sel")(k) @@ -306,7 +326,7 @@ class InstrumentationImpl(using State, Raise): tuple(tups): tup => blockCtor("FunDefn", Ls(sym, tup, body, toValue(true)))(k) - def applyFunDefn(f: FunDefn): (FunDefn, Block => Block) = + def applyFunDefnInner(f: FunDefn): (FunDefn, Block => Block) = val genSymName = f.sym.nme + "_instr" val genSym = BlockMemberSymbol(genSymName, Nil, false) val sym = f.owner.get.asPath.selSN(genSymName) @@ -321,10 +341,6 @@ class InstrumentationImpl(using State, Raise): val newFun = f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) (newFun, debug) -// TODO: rename as InstrumentationTransformer? -class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSubst()): - val impl = new InstrumentationImpl - override def applyBlock(b: Block): Block = super.applyBlock(b) match // find modules with staged annotation @@ -332,10 +348,10 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub val sym = c.sym.subst val companion = c.companion.get val (stagedMethods, debugPrintCode) = companion.methods - .map(impl.applyFunDefn) + .map(applyFunDefnInner) .unzip val ctor = FunDefn.withFreshSymbol(S(companion.isym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), companion.ctor)(false) - val (stagedCtor, ctorPrint) = impl.applyFunDefn(ctor) + val (stagedCtor, ctorPrint) = applyFunDefnInner(ctor) val unit = State.runtimeSymbol.asPath.selSN("Unit") val debugBlock = (ctorPrint :: debugPrintCode).foldRight((Return(unit, true): Block))(_(_)) @@ -346,7 +362,7 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub override def applyBlock(b: Block): Block = super.applyBlock(b) match case Define(c: ClsLikeDefn, rest) if c.companion.isEmpty => val (stagedMethods, debugPrintCode) = c.methods - .map(impl.applyFunDefn) + .map(applyFunDefnInner) .unzip val newModule = c.copy(methods = c.methods ++ stagedMethods) Define(newModule, rest) @@ -356,3 +372,18 @@ class Instrumentation(using State, Raise) extends BlockTransformer(new SymbolSub val newModule = c.copy(sym = sym, companion = S(newCompanion)) Define(newModule, rest) case b => b + + // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes + def mkDefnMap(b: Block) = + val transformer = new BlockTransformer(new SymbolSubst()): + override def applyDefn(defn: Defn)(k: Defn => Block) = defn match + case c: ClsLikeDefn => + defnMap.addOne(c.isym, c) + // c.companion.map(defn => defnMap.addOne(defn.isym, defn)) + super.applyDefn(defn)(k) + case _ => super.applyDefn(defn)(k) + transformer.applyBlock(b) + + def applyBlockFinal(b: Block) = + mkDefnMap(b) + applyBlock(b) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 395c2fab97..9d83f84b80 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -1088,7 +1088,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): if config.funcToCls then Lifter(FirstClassFunctionTransformer().transform(merged)).transform else merged - val staged = Instrumentation(using summon).applyBlock(funcToCls) + val staged = Instrumentation(using summon).applyBlockFinal(funcToCls) val res = if config.tailRecOpt then TailRecOpt().transform(staged) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 7186b9de89..33c519a3c8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -18,8 +18,31 @@ type ParamList = Array[Symbol] class Symbol(val name: Str) type Ident = Symbol -// this is so that we're able to retrieve information about the class from the symbol -class ClassSymbol(val name: Str, val paramsOpt: Opt[ParamList]) extends Symbol(name) + +class VirtualClassSymbol(val name: Str) extends Symbol(name) +class ClassSymbol(val name: Str, val value, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList]) extends Symbol(name) +class ModuleSymbol(val name: Str, val value) extends Symbol(name) +class Arm(val cse: Case, val body: Block) + +fun isPrimitiveType(sym: Symbol) = + if sym.name is + "Str" then true + "Int" then true + "Num" then true + "Bool" then true + "TypedArray" then true + else false + +fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = + if [sym.name, l] is + ["Str", l] and l is Str then true + ["Int", i] and i is Int then true + ["Num", n] and n is Num then true + ["Bool", b] and b is Bool then true + ["TypedArray", a] and a is TypedArray then true + else false + +// Classes defined in Block.scala class Arg(val value: Path) @@ -82,15 +105,7 @@ fun showLiteral(l: Literal) = else l.toString() fun showSymbol(s: Symbol) = - // console.log("printing " + s) - if s is - ClassSymbol(name, args) then - "ClassSymbol(" + "\"" + name + "\"" + - if args - is Some(args) then ":[" + args.map(showSymbol).join(", ") + "]" - is None then "" - + ")" - _ then "Symbol(" + "\"" + s.name + "\"" + ")" + s.toString() fun showIdent(i: Ident) = showSymbol(i) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 2871fa4f18..126fd014d7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -30,7 +30,7 @@ staged module Expressions with //│ > FunDefn(Symbol("tup1"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) //│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), Ref(Symbol("x1"))]), false), true) //│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) -//│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) +//│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool", None, undefined, undefined), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int", None, undefined, undefined), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) //│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("a"), Symbol("tmp1"), Symbol("element1$"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Match(Ref(Symbol("x1")), [Tup(0) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)))], Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$"))), End), Assign(Symbol("tmp1"), Lit(3), End)), Return(Ref(Symbol("tmp1")), false))), true) //│ x = [1, 2, 3] @@ -42,11 +42,11 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("Inside":[Symbol("a1"), Symbol("b")]), [], TODO), Define(ClsLikeDefn(ClassSymbol("NoArg"), [], TODO), End)), true) -//│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg")), []), false), true) -//│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside":[Symbol("a")])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside":[Symbol("a1"), Symbol("b")])), [Lit(1), Lit(2)]), false), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("Inside", Some([Symbol("a1"), Symbol("b")]), undefined, undefined), [], TODO), Define(ClsLikeDefn(ClassSymbol("NoArg", None, undefined, undefined), [], TODO), End)), true) +//│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside", Some([Symbol("a")]), undefined, undefined)), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg", None, undefined, undefined)), []), false), true) +//│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside", Some([Symbol("a")]), undefined, undefined)), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside", Some([Symbol("a1"), Symbol("b")]), undefined, undefined)), [Lit(1), Lit(2)]), false), true) module Nonstaged with fun f() = 1 @@ -62,18 +62,30 @@ staged module CallSubst with //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("call"), ([]), Assign(Symbol("$_no$_symbol$_"), Call(Ref(Symbol("+")), [Lit(1), Lit(1)]), Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))), true) -:w +:ftc staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z -//│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.70: fun g(x)(y, z)() = z -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: transformSymbol (Instrumentation.scala:103) +//│ ═══[COMPILATION ERROR] Unable to infer parameters from ClassSymbol in staged module, which are necessary to reconstruct class instances. //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) -//│ > FunDefn(Symbol("g"), ([Symbol("x")],[Symbol("y"), Symbol("z")],[]), Return(Ref(Symbol("z")), false), true) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:172) +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ at Runtime.checkCall (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs:621:41) +//│ at (REPL25:1:2009) +//│ at REPL25:1:3955 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:600:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:935:10) +//│ at REPLServer.emit (node:events:508:28) +//│ at REPLServer.emit (node:domain:489:12) staged module OtherBlocks with fun scope() = @@ -92,12 +104,13 @@ staged module OtherBlocks with staged module ClassDefs with class A -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A"), [], TODO), End), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A", None, undefined, undefined), [], TODO), End), true) staged module ClassFunctions with - class A with - fun f() = 1 -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A"), [FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true)], TODO), End), true) + class InnerClass() with + fun f() = 1 + Arguments.f(1) + fun g() = f() // TODO +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("InnerClass", Some([]), undefined, undefined), [FunDefn(Symbol("f"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Arguments")), Symbol("f_gen")), [Lit(1)]), Return(Call(Ref(Symbol("+")), [Lit(1), Ref(Symbol("tmp"))]), false))), true),FunDefn(Symbol("g"), ([]), Return(Call(Select(Ref(ClassSymbol("InnerClass", Some([]), undefined, undefined)), Symbol("f")), []), false), true)], TODO), End), true) // name collision class A() @@ -121,9 +134,9 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supprted in staged module: AssignField(Ref(term:A⁰.x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.121: fun g() = {1 : 2} +//│ ║ l.134: fun g() = {1 : 2} //│ ╙── ^ -//│ > FunDefn(Symbol("ctor$"), ([]), Assign(Symbol("x"), Call(Ref(ClassSymbol("C":[Symbol("a")])), [Lit(1)]), End), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Assign(Symbol("x"), Call(Ref(ClassSymbol("C", Some([Symbol("a")]), undefined, undefined)), [Lit(1)]), End), true) //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :todo diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls new file mode 100644 index 0000000000..3127385a24 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -0,0 +1,51 @@ +:js +:staging + +staged module M with + class C with + fun f() = 1 + fun g() = f() +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("C", class C, None, []), [FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true),FunDefn(Symbol("g"), ([]), Return(Call(Select(Ref(ClassSymbol("C", class C, None, [])), Symbol("f")), []), false), true)], TODO), End), true) + +// :sir +staged module A with + fun f() = 1 +module B with + fun f() = 1 +class C +staged module D with + class E + fun f() = + A.f() + B.f() + 1 is C + fun builtin() = 1 is Int + fun inner() = D.E +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("E", class E, None, []), [], TODO), End), true) +//│ > FunDefn(Symbol("f"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(ModuleSymbol("A", class A)), Symbol("f_gen")), []), Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(ModuleSymbol("B", class B)), Symbol("f")), []), Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("C", class C, None, []), Ref(ClassSymbol("C", class C, None, []))) -> Return(Lit(true), false)], Return(Lit(false), false), End))))), true) +//│ > FunDefn(Symbol("builtin"), ([]), Scoped([Symbol("scrut1")], Assign(Symbol("scrut1"), Lit(1), Match(Ref(Symbol("scrut1")), [Cls(VirtualClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(true), false)], Return(Lit(false), false), End))), true) +//│ > FunDefn(Symbol("inner"), ([]), Return(Select(Ref(ModuleSymbol("D", class D { E: class E })), ClassSymbol("E", class E, None, [])), false), true) + +// :sjs +// :lot +module A with + module B with + class C(a) +staged module M with + fun f() = D.f() + fun g() = D.E + fun h() = A.B.C(1) + fun i() = A.B.C +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > FunDefn(Symbol("f"), ([]), Return(Call(Select(Ref(ModuleSymbol("D", class D { E: class E })), Symbol("f_gen")), []), false), true) +//│ > FunDefn(Symbol("g"), ([]), Return(Select(Ref(ModuleSymbol("D", class D { E: class E })), ClassSymbol("E", class E, None, [])), false), true) +//│ > FunDefn(Symbol("h"), ([]), Return(Call(Select(Select(Ref(ModuleSymbol("A", class A { B: class B { C: fun C { class: class C } } })), ModuleSymbol("B", class B { C: fun C { class: class C } })), ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), [])), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("i"), ([]), Return(Select(Select(Ref(ModuleSymbol("A", class A { B: class B { C: fun C { class: class C } } })), ModuleSymbol("B", class B { C: fun C { class: class C } })), ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), [])), false), true) + +:ftc +staged module M with + fun f() = x => x +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > FunDefn(Symbol("f"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Instantiate(Ref(ClassSymbol("Function$", class Function$, None, [])), []), Return(Ref(Symbol("tmp")), false))), true) From 6beb77c086bfe251cfec5e830f83f1a12055968e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 12 Mar 2026 22:00:35 +0800 Subject: [PATCH 337/654] update tests --- .../scala/hkmc2/codegen/Instrumentation.scala | 2 +- .../test/mlscript/block-staging/Functions.mls | 50 ++++++++----------- .../mlscript/block-staging/StageSymbols.mls | 38 +++++++------- 3 files changed, 44 insertions(+), 46 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 34019a9d8b..8c6989c2ee 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -316,7 +316,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb def transformFunDefn(f: FunDefn)(using Context)(k: Path => Block): Block = transformBlock(f.body): body => if f.params.length != 1 then - raise(WarningReport(msg"Multiple parameter lists are not supported in shape propagation yet." -> f.sym.toLoc :: Nil)) + raise(WarningReport(msg":ftc must be enabled for functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) // maintain parameter names in instrumented code f.params.map( _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 126fd014d7..660b330507 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -30,7 +30,7 @@ staged module Expressions with //│ > FunDefn(Symbol("tup1"), ([]), Return(Tuple([Lit(1), Lit(2)]), false), true) //│ > FunDefn(Symbol("tup2"), ([]), Return(Tuple([Lit(1), Ref(Symbol("x1"))]), false), true) //│ > FunDefn(Symbol("dynsel"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Tuple([Lit(1)]), Return(DynSelect(Ref(Symbol("tmp")), Lit(0), false), false))), true) -//│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("Bool", None, undefined, undefined), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(ClassSymbol("Int", None, undefined, undefined), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) +//│ > FunDefn(Symbol("match1"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(9), Match(Ref(Symbol("scrut")), [Cls(VirtualClassSymbol("Bool"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(1), false), Lit(8) -> Return(Lit(2), false), Cls(VirtualClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(3), false)], Return(Lit(0), false), End))), true) //│ > FunDefn(Symbol("match2"), ([]), Scoped([Symbol("a"), Symbol("tmp1"), Symbol("element1$"), Symbol("element0$")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Match(Ref(Symbol("x1")), [Tup(0) -> Assign(Symbol("tmp1"), Lit(1), Break(Symbol("split_root$"))), Tup(2) -> Assign(Symbol("element0$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(0)]), Assign(Symbol("element1$"), Call(Select(Select(Ref(Symbol("runtime")), Symbol("Tuple")), Symbol("get")), [Ref(Symbol("x1")), Lit(1)]), Match(Ref(Symbol("element0$")), [Lit(1) -> Match(Ref(Symbol("element1$")), [Lit(2) -> Assign(Symbol("tmp1"), Lit(2), Break(Symbol("split_root$")))], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)], Assign(Symbol("a"), Ref(Symbol("element0$")), Break(Symbol("split_1$"))), End)))], Assign(Symbol("tmp1"), Lit(0), Break(Symbol("split_root$"))), End), Assign(Symbol("tmp1"), Lit(3), End)), Return(Ref(Symbol("tmp1")), false))), true) //│ x = [1, 2, 3] @@ -42,11 +42,11 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("Inside", Some([Symbol("a1"), Symbol("b")]), undefined, undefined), [], TODO), Define(ClsLikeDefn(ClassSymbol("NoArg", None, undefined, undefined), [], TODO), End)), true) -//│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside", Some([Symbol("a")]), undefined, undefined)), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("NoArg", None, undefined, undefined)), []), false), true) -//│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside", Some([Symbol("a")]), undefined, undefined)), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(Symbol("ClassInstrumentation")), ClassSymbol("Inside", Some([Symbol("a1"), Symbol("b")]), undefined, undefined)), [Lit(1), Lit(2)]), false), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("Inside", fun Inside { class: class Inside }, Some([Symbol("a1"), Symbol("b")]), []), [], TODO), Define(ClsLikeDefn(ClassSymbol("NoArg", class NoArg, None, []), [], TODO), End)), true) +//│ > FunDefn(Symbol("inst1"), ([]), Return(Instantiate(Ref(ClassSymbol("Outside", fun Outside { class: class Outside }, Some([Symbol("a")]), [])), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("inst2"), ([]), Return(Instantiate(Select(Ref(ModuleSymbol("ClassInstrumentation", class ClassInstrumentation { Inside: fun Inside { class: class Inside }, NoArg: class NoArg })), ClassSymbol("NoArg", class NoArg, None, [])), []), false), true) +//│ > FunDefn(Symbol("app1"), ([]), Return(Call(Ref(ClassSymbol("Outside", fun Outside { class: class Outside }, Some([Symbol("a")]), [])), [Lit(1)]), false), true) +//│ > FunDefn(Symbol("app2"), ([]), Return(Call(Select(Ref(ModuleSymbol("ClassInstrumentation", class ClassInstrumentation { Inside: fun Inside { class: class Inside }, NoArg: class NoArg })), ClassSymbol("Inside", fun Inside { class: class Inside }, Some([Symbol("a1"), Symbol("b")]), [])), [Lit(1), Lit(2)]), false), true) module Nonstaged with fun f() = 1 @@ -60,7 +60,7 @@ staged module CallSubst with Nonstaged.f() Staged.f() //│ > FunDefn(Symbol("ctor$"), ([]), End, true) -//│ > FunDefn(Symbol("call"), ([]), Assign(Symbol("$_no$_symbol$_"), Call(Ref(Symbol("+")), [Lit(1), Lit(1)]), Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(Symbol("Nonstaged")), Symbol("f")), []), Return(Call(Select(Ref(Symbol("Staged")), Symbol("f_gen")), []), false))), true) +//│ > FunDefn(Symbol("call"), ([]), Assign(Symbol("$_no$_symbol$_"), Call(Ref(Symbol("+")), [Lit(1), Lit(1)]), Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(ModuleSymbol("Nonstaged", class Nonstaged)), Symbol("f")), []), Return(Call(Select(Ref(ModuleSymbol("Staged", class Staged)), Symbol("f_gen")), []), false))), true) :ftc staged module Arguments with @@ -68,24 +68,9 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: transformSymbol (Instrumentation.scala:103) -//│ ═══[COMPILATION ERROR] Unable to infer parameters from ClassSymbol in staged module, which are necessary to reconstruct class instances. //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([Symbol("x")]), Assign(Symbol("x"), Lit(1), Return(Ref(Symbol("x")), false)), true) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:172) -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. -//│ at Runtime.checkCall (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs:621:41) -//│ at (REPL25:1:2009) -//│ at REPL25:1:3955 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:600:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:935:10) -//│ at REPLServer.emit (node:events:508:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ > FunDefn(Symbol("g"), ([Symbol("x")]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Instantiate(Ref(ClassSymbol("Function$", class Function$, None, [])), []), Return(Ref(Symbol("tmp")), false))), true) staged module OtherBlocks with fun scope() = @@ -99,18 +84,18 @@ staged module OtherBlocks with 3 then 0 else 0 //│ > FunDefn(Symbol("ctor$"), ([]), End, true) -//│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(Symbol("OtherBlocks")), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) +//│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(ModuleSymbol("OtherBlocks", class OtherBlocks)), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) //│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut"), Symbol("tmp")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Break(Symbol("split_1$")), Lit(3) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(0), End)), Return(Ref(Symbol("tmp")), false))), true) staged module ClassDefs with class A -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A", None, undefined, undefined), [], TODO), End), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A", class A, None, []), [], TODO), End), true) staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() // TODO -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("InnerClass", Some([]), undefined, undefined), [FunDefn(Symbol("f"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(Symbol("Arguments")), Symbol("f_gen")), [Lit(1)]), Return(Call(Ref(Symbol("+")), [Lit(1), Ref(Symbol("tmp"))]), false))), true),FunDefn(Symbol("g"), ([]), Return(Call(Select(Ref(ClassSymbol("InnerClass", Some([]), undefined, undefined)), Symbol("f")), []), false), true)], TODO), End), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("InnerClass", fun InnerClass { class: class InnerClass }, Some([]), []), [FunDefn(Symbol("f"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Call(Select(Ref(ModuleSymbol("Arguments", class Arguments)), Symbol("f_gen")), [Lit(1)]), Return(Call(Ref(Symbol("+")), [Lit(1), Ref(Symbol("tmp"))]), false))), true),FunDefn(Symbol("g"), ([]), Return(Call(Select(Ref(ClassSymbol("InnerClass", fun InnerClass { class: class InnerClass }, Some([]), [])), Symbol("f")), []), false), true)], TODO), End), true) // name collision class A() @@ -126,6 +111,15 @@ module A with //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) +// TODO: reject this after removing Label and Break from Block IR +staged module M with + fun f() = if 1 is + 0 then 2 + 1 then 2 + else 2 +//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > FunDefn(Symbol("f"), ([]), Scoped([Symbol("tmp"), Symbol("scrut")], Label(Symbol("split_root$"), false, Label(Symbol("split_1$"), false, Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(0) -> Break(Symbol("split_1$")), Lit(1) -> Break(Symbol("split_1$"))], Break(Symbol("split_1$")), End)), Assign(Symbol("tmp"), Lit(2), End)), Return(Ref(Symbol("tmp")), false))), true) + :e class C(val a) staged module A with @@ -134,9 +128,9 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supprted in staged module: AssignField(Ref(term:A⁰.x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.134: fun g() = {1 : 2} +//│ ║ l.128: fun g() = {1 : 2} //│ ╙── ^ -//│ > FunDefn(Symbol("ctor$"), ([]), Assign(Symbol("x"), Call(Ref(ClassSymbol("C", Some([Symbol("a")]), undefined, undefined)), [Lit(1)]), End), true) +//│ > FunDefn(Symbol("ctor$"), ([]), Assign(Symbol("x"), Call(Ref(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), [])), [Lit(1)]), End), true) //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :todo diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 3127385a24..7b1088a2d7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -7,42 +7,46 @@ staged module M with fun g() = f() //│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("C", class C, None, []), [FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true),FunDefn(Symbol("g"), ([]), Return(Call(Select(Ref(ClassSymbol("C", class C, None, [])), Symbol("f")), []), false), true)], TODO), End), true) -// :sir staged module A with fun f() = 1 module B with fun f() = 1 -class C +class C(val a, b)(c)(d) staged module D with class E fun f() = A.f() B.f() + fun matching() = + 1 is Int 1 is C - fun builtin() = 1 is Int - fun inner() = D.E //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) //│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("E", class E, None, []), [], TODO), End), true) -//│ > FunDefn(Symbol("f"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(ModuleSymbol("A", class A)), Symbol("f_gen")), []), Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(ModuleSymbol("B", class B)), Symbol("f")), []), Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Cls(ClassSymbol("C", class C, None, []), Ref(ClassSymbol("C", class C, None, []))) -> Return(Lit(true), false)], Return(Lit(false), false), End))))), true) -//│ > FunDefn(Symbol("builtin"), ([]), Scoped([Symbol("scrut1")], Assign(Symbol("scrut1"), Lit(1), Match(Ref(Symbol("scrut1")), [Cls(VirtualClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Return(Lit(true), false)], Return(Lit(false), false), End))), true) -//│ > FunDefn(Symbol("inner"), ([]), Return(Select(Ref(ModuleSymbol("D", class D { E: class E })), ClassSymbol("E", class E, None, [])), false), true) +//│ > FunDefn(Symbol("f"), ([]), Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(ModuleSymbol("A", class A)), Symbol("f_gen")), []), Return(Call(Select(Ref(ModuleSymbol("B", class B)), Symbol("f")), []), false)), true) +//│ > FunDefn(Symbol("matching"), ([]), Scoped([Symbol("tmp"), Symbol("scrut"), Symbol("scrut1")], Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Cls(VirtualClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Assign(Symbol("tmp"), Lit(true), End)], Assign(Symbol("tmp"), Lit(false), End), Assign(Symbol("scrut1"), Lit(1), Match(Ref(Symbol("scrut1")), [Cls(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a"), Symbol("b")]), [[Symbol("c")], [Symbol("d")]]), Ref(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a"), Symbol("b")]), [[Symbol("c")], [Symbol("d")]]))) -> Return(Lit(true), false)], Return(Lit(false), false), End))))), true) -// :sjs -// :lot module A with module B with class C(a) staged module M with - fun f() = D.f() - fun g() = D.E - fun h() = A.B.C(1) - fun i() = A.B.C + class E + fun f() = + D.E + A.B.C + A.B.C(1) + E +//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("E", class E, None, []), [], TODO), End), true) +//│ > FunDefn(Symbol("f"), ([]), Assign(Symbol("$_no$_symbol$_"), Call(Select(Select(Ref(ModuleSymbol("A", class A { B: class B { C: fun C { class: class C } } })), ModuleSymbol("B", class B { C: fun C { class: class C } })), ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), [])), [Lit(1)]), Return(Select(Ref(ModuleSymbol("M", class M2 { E: class E })), ClassSymbol("E", class E, None, [])), false)), true) + +:w +staged module M with + fun g()() = 1 +//│ ╔══[WARNING] :ftc must be enabled for functions with multiple parameter lists. +//│ ║ l.44: fun g()() = 1 +//│ ╙── ^^^^^^^^^^^^^ //│ > FunDefn(Symbol("ctor$"), ([]), End, true) -//│ > FunDefn(Symbol("f"), ([]), Return(Call(Select(Ref(ModuleSymbol("D", class D { E: class E })), Symbol("f_gen")), []), false), true) -//│ > FunDefn(Symbol("g"), ([]), Return(Select(Ref(ModuleSymbol("D", class D { E: class E })), ClassSymbol("E", class E, None, [])), false), true) -//│ > FunDefn(Symbol("h"), ([]), Return(Call(Select(Select(Ref(ModuleSymbol("A", class A { B: class B { C: fun C { class: class C } } })), ModuleSymbol("B", class B { C: fun C { class: class C } })), ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), [])), [Lit(1)]), false), true) -//│ > FunDefn(Symbol("i"), ([]), Return(Select(Select(Ref(ModuleSymbol("A", class A { B: class B { C: fun C { class: class C } } })), ModuleSymbol("B", class B { C: fun C { class: class C } })), ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), [])), false), true) +//│ > FunDefn(Symbol("g"), ([],[]), Return(Lit(1), false), true) :ftc staged module M with From d3d3305cead8569e164b3903873132cf255c8e80 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 12 Mar 2026 22:31:45 +0800 Subject: [PATCH 338/654] cleanup --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 8 +++----- .../src/test/mlscript/block-staging/StageSymbols.mls | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 8c6989c2ee..e22a5f5354 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -19,6 +19,7 @@ import syntax.{Literal, Tree} // transform Block to Block IR so that it can be instrumented in mlscript class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new SymbolSubst()): + // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes val defnMap = HashMap[Symbol, ClsLikeDefn]() type ArgWrappable = Path | Symbol @@ -116,8 +117,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb val path: ArgWrappable = pOpt.getOrElse(owner match case S(owner) => owner.asPath.selSN(sym.nme) - case N => bsym - ) + case N => bsym) baseSym match case _: ClassSymbol => transformParamsOpt(paramsOpt): paramsOpt => @@ -316,7 +316,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb def transformFunDefn(f: FunDefn)(using Context)(k: Path => Block): Block = transformBlock(f.body): body => if f.params.length != 1 then - raise(WarningReport(msg":ftc must be enabled for functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) + raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) // maintain parameter names in instrumented code f.params.map( _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply @@ -373,13 +373,11 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb Define(newModule, rest) case b => b - // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes def mkDefnMap(b: Block) = val transformer = new BlockTransformer(new SymbolSubst()): override def applyDefn(defn: Defn)(k: Defn => Block) = defn match case c: ClsLikeDefn => defnMap.addOne(c.isym, c) - // c.companion.map(defn => defnMap.addOne(defn.isym, defn)) super.applyDefn(defn)(k) case _ => super.applyDefn(defn)(k) transformer.applyBlock(b) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 7b1088a2d7..f502c47fa8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -39,10 +39,10 @@ staged module M with //│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("E", class E, None, []), [], TODO), End), true) //│ > FunDefn(Symbol("f"), ([]), Assign(Symbol("$_no$_symbol$_"), Call(Select(Select(Ref(ModuleSymbol("A", class A { B: class B { C: fun C { class: class C } } })), ModuleSymbol("B", class B { C: fun C { class: class C } })), ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), [])), [Lit(1)]), Return(Select(Ref(ModuleSymbol("M", class M2 { E: class E })), ClassSymbol("E", class E, None, [])), false)), true) -:w +:e staged module M with fun g()() = 1 -//│ ╔══[WARNING] :ftc must be enabled for functions with multiple parameter lists. +//│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. //│ ║ l.44: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > FunDefn(Symbol("ctor$"), ([]), End, true) From af3147722f562c84b1d63772ea326686e8d02604 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 12 Mar 2026 22:44:36 +0800 Subject: [PATCH 339/654] remove redundant Ident type --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 33c519a3c8..6be8d38c56 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -17,8 +17,6 @@ type Literal = null | undefined | Str | Int | Num | Bool type ParamList = Array[Symbol] class Symbol(val name: Str) -type Ident = Symbol - class VirtualClassSymbol(val name: Str) extends Symbol(name) class ClassSymbol(val name: Str, val value, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList]) extends Symbol(name) class ModuleSymbol(val name: Str, val value) extends Symbol(name) @@ -60,7 +58,7 @@ class Result with class Path extends Result with constructor - Select(val qual: Path, val name: Ident) + Select(val qual: Path, val name: Symbol) DynSelect(val qual: Path, val fld: Path, val arrayIdx: Bool) // is arrayIdx used? ValueRef(val l: Symbol) ValueLit(val lit: Literal) @@ -107,12 +105,10 @@ fun showLiteral(l: Literal) = fun showSymbol(s: Symbol) = s.toString() -fun showIdent(i: Ident) = showSymbol(i) - fun showPath(p: Path): Str = if p is Select(qual, name) then - "Select(" + showPath(qual) + ", " + showIdent(name) + ")" + "Select(" + showPath(qual) + ", " + showSymbol(name) + ")" DynSelect(qual, fld, arrayIdx) then "DynSelect(" + showPath(qual) + ", " + showPath(fld) + ", " + showBool(arrayIdx) + ")" ValueRef(l) then From 0199444692e6e6972a12376e75e3907db7e44e32 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 12 Mar 2026 22:47:56 +0800 Subject: [PATCH 340/654] fixup! update tests --- hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index f502c47fa8..6630944b28 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -51,5 +51,7 @@ staged module M with :ftc staged module M with fun f() = x => x + fun g()() = 1 //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Instantiate(Ref(ClassSymbol("Function$", class Function$, None, [])), []), Return(Ref(Symbol("tmp")), false))), true) +//│ > FunDefn(Symbol("g"), ([]), Scoped([Symbol("tmp1")], Assign(Symbol("tmp1"), Instantiate(Ref(ClassSymbol("Function$1", class Function$, None, [])), []), Return(Ref(Symbol("tmp1")), false))), true) From 79b42cd4cc798905a28e5b2265b1bbf84b4907be Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 13 Mar 2026 11:58:50 +0800 Subject: [PATCH 341/654] cleanup --- .../scala/hkmc2/codegen/Instrumentation.scala | 3 +-- .../src/test/mlscript-compile/Block.mls | 19 ------------------- .../src/test/mlscript-compile/Shape.mls | 2 ++ .../test/mlscript/block-staging/Functions.mls | 5 ++--- 4 files changed, 5 insertions(+), 24 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index e22a5f5354..96cbba39df 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -5,7 +5,7 @@ import utils.* import hkmc2.Message.MessageContext import scala.collection.mutable.HashMap -import scala.util.chaining._ +import scala.util.chaining.* import mlscript.utils.*, shorthands.* @@ -126,7 +126,6 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(k) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(k) - case _ => val name = scope.allocateOrGetName(sym) blockCtor("Symbol", Ls(toValue(name)), symName)(k) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 6be8d38c56..55854af63c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -20,25 +20,6 @@ class Symbol(val name: Str) class VirtualClassSymbol(val name: Str) extends Symbol(name) class ClassSymbol(val name: Str, val value, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList]) extends Symbol(name) class ModuleSymbol(val name: Str, val value) extends Symbol(name) -class Arm(val cse: Case, val body: Block) - -fun isPrimitiveType(sym: Symbol) = - if sym.name is - "Str" then true - "Int" then true - "Num" then true - "Bool" then true - "TypedArray" then true - else false - -fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = - if [sym.name, l] is - ["Str", l] and l is Str then true - ["Int", i] and i is Int then true - ["Num", n] and n is Num then true - ["Bool", b] and b is Bool then true - ["TypedArray", a] and a is TypedArray then true - else false // Classes defined in Block.scala diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 70c935ec8f..ef445557bd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -12,6 +12,7 @@ fun isPrimitiveType(sym: Symbol) = "Int" then true "Num" then true "Bool" then true + "TypedArray" then true else false fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = @@ -20,6 +21,7 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = ["Int", i] and i is Int then true ["Num", n] and n is Num then true ["Bool", b] and b is Bool then true + ["TypedArray", a] and a is TypedArray then true else false module Shape with... diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 089f58858a..705a61fe97 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -87,7 +87,6 @@ staged module OtherBlocks with //│ > FunDefn(Symbol("scope"), ([]), Scoped([Symbol("a")], Assign(Symbol("a"), Lit(1), Return(Call(Select(Select(Ref(ModuleSymbol("OtherBlocks", class OtherBlocks)), Symbol("scope")), Symbol("locally")), [Ref(Symbol("a"))]), false))), true) //│ > FunDefn(Symbol("breakAndLabel"), ([]), Scoped([Symbol("scrut")], Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Lit(2) -> Return(Lit(0), false), Lit(3) -> Return(Lit(0), false)], Return(Lit(0), false), End))), true) - staged module ClassDefs with class A //│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("A", class A, None, []), [], TODO), End), true) @@ -112,7 +111,7 @@ module A with //│ > FunDefn(Symbol("ctor$"), ([]), End, true) //│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) -// TODO: reject this after removing Label and Break from Block IR +// TODO: force enable :ftc to desugar Label and Break staged module M with fun f() = if 1 is 0 then 2 @@ -129,7 +128,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supprted in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.129: fun g() = {1 : 2} +//│ ║ l.128: fun g() = {1 : 2} //│ ╙── ^ //│ > FunDefn(Symbol("ctor$"), ([]), Assign(Symbol("x"), Call(Ref(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), [])), [Lit(1)]), End), true) //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From 15949d074fdaf94c7828da13b50c53d6debaff3b Mon Sep 17 00:00:00 2001 From: Ching Long Tin <26105652+ChingLongTin@users.noreply.github.com> Date: Fri, 13 Mar 2026 13:19:19 +0800 Subject: [PATCH 342/654] fix typo Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 96cbba39df..9f5f49ba23 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -94,7 +94,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb // transformation helpers - // if sym is ClassSymbol, we may need pOpt to link to the path pointing the the value of the symbol + // if sym is ClassSymbol, we may need pOpt to link to the path pointing to the value of the symbol def transformSymbol(sym: Symbol, pOpt: Option[Path] = N, symName: Str = "sym")(k: Path => Block): Block = sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => From f62f6a8443ee2fdce4ece7fe15eeb23c3df3ddc1 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 13 Mar 2026 13:23:37 +0800 Subject: [PATCH 343/654] implement fixes --- .../shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 4 ++-- hkmc2/shared/src/test/mlscript/block-staging/Functions.mls | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 9f5f49ba23..c84834dcbf 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -309,7 +309,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb transformSymbol(labelSymbol): labelSymbol => blockCtor("Break", Ls(labelSymbol))(k(_, ctx)) case _ => - raise(ErrorReport(msg"Other Blocks not supprted in staged module: ${b.toString()}" -> N :: Nil)) + raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}" -> N :: Nil)) End() def transformFunDefn(f: FunDefn)(using Context)(k: Path => Block): Block = @@ -372,7 +372,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb Define(newModule, rest) case b => b - def mkDefnMap(b: Block) = + def mkDefnMap(b: Block): Unit = val transformer = new BlockTransformer(new SymbolSubst()): override def applyDefn(defn: Defn)(k: Defn => Block) = defn match case c: ClsLikeDefn => diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 705a61fe97..304094d79b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -126,7 +126,7 @@ staged module A with let x = C(1) fun f() = set x.a = 0 fun g() = {1 : 2} -//│ ═══[COMPILATION ERROR] Other Blocks not supprted in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) //│ ║ l.128: fun g() = {1 : 2} //│ ╙── ^ From d861b58f5f954e8adea8c01d801a84698cdec300 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 13 Mar 2026 13:29:17 +0800 Subject: [PATCH 344/654] remove TypedArray branch classes staged into VirtualSymbol and literals in Block IR are independent, and Literals do not have TypedArray --- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 2 -- 1 file changed, 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index ef445557bd..70c935ec8f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -12,7 +12,6 @@ fun isPrimitiveType(sym: Symbol) = "Int" then true "Num" then true "Bool" then true - "TypedArray" then true else false fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = @@ -21,7 +20,6 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = ["Int", i] and i is Int then true ["Num", n] and n is Num then true ["Bool", b] and b is Bool then true - ["TypedArray", a] and a is TypedArray then true else false module Shape with... From f01778c253b386c0bdeb0e8b88c475b81b8f4a27 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 19 Mar 2026 00:25:15 +0800 Subject: [PATCH 345/654] val2path --- .../src/test/mlscript-compile/ShapeSet.mls | 66 +- .../test/mlscript/block-staging/Functions.mls | 648 +++++++++++++++--- .../test/mlscript/block-staging/ShapeProp.mls | 97 ++- 3 files changed, 698 insertions(+), 113 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 020011a3ec..bb9794c91e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -104,10 +104,34 @@ fun valOfSet(s : ShapeSet) = 1 then valOf(s.values().0) else throw Error("valOfSet on non-singleton ShapeSet") +let idCounter = 0 +fun freshId(prefix) = + set idCounter = idCounter + 1 + Block.Symbol(prefix + "_" + idCounter.toString()) + fun val2path(v) = - if typeof(v) == - "number" then Block.ValueLit(v) - else Block.ValueLit(42) + if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then [Block.End(), Block.ValueLit(v)] + else if Array.isArray(v) then + let mapped = v.map(val2path) + let blocks = mapped.filter(_ is [_, _]).map(_ => _.0) + let paths = mapped.map((m, _, _) => if m is [_, p] then p else m) + let tupSym = freshId("tup") + let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map((p, _, _) => Block.Arg(None, p))), Block.End()) + let fullBlock = foldl((b, acc) => Block.concat(b, acc))(tupAssign, ...blocks) + [fullBlock, Block.ValueRef(tupSym)] + else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then + let md = v.constructor.(Symbols.definitionMetadata) + let clsName = md.0 + let paramNames = md.2 + let classSym = Block.ClassSymbol(clsName, None) + let mapped = paramNames.map((fld, _, _) => val2path(v.(fld))) + let blocks = mapped.filter(_ is [_, _]).map(_ => _.0) + let paths = mapped.map((m, _, _) => if m is [_, p] then p else m) + let objSym = freshId("obj") + let objAssign = Block.Assign(objSym, Block.Instantiate(Block.ValueRef(classSym), paths.map((p, _, _) => Block.Arg(None, p))), Block.End()) + let fullBlock = foldl((b, acc) => Block.concat(b, acc))(objAssign, ...blocks) + [fullBlock, Block.ValueRef(objSym)] + else [Block.End(), Block.ValueLit(42)] // fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = @@ -139,8 +163,8 @@ class DefCtx(val defctx: Map[String, [Function, Bool]]) with fun get(p) = if defctx.has(p.toString()) then defctx.get(p.toString()) else None - fun add(p, genFunc, staged) = // for debug only - if staged then + fun add(p, genFunc, stage) = // ?? using stage as variable name causes error + if stage then defctx.set(showPath(p), [genFunc, true]) else defctx.set(showPath(p), [genFunc, false]) @@ -201,27 +225,27 @@ fun sor(defctx, ctx, r: Result) = if r is Path and let s = sop(ctx, r) staticSet(s) then - [val2path(valOfSet(s)), s] + if val2path(valOfSet(s)) is [blk, res] then [blk, res, s] else throw Error("val2path failed") else - [r, s] + [End(), r, s] Instantiate(cls, args) then let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("Instantiate with non-ClassSymbol in shape propagation") - [r, mkClass(sym, args.map(a => sop(ctx, a.value)))] - Tuple(elems) then [r, mkArr(elems.map(a => sop(ctx, a.value)), false)] + [End(), r, mkClass(sym, args.map(a => sop(ctx, a.value)))] + Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)), false)] Call(f, args) then - fun lit(l) = [ValueLit(l), mkLit(l)] + fun lit(l) = [End(), ValueLit(l), mkLit(l)] let argShapes = args.map((a, _, _) => sop(ctx, a.value)) // special handle the special Call function if f is Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) - and args is [Arg(None, scrut), Arg(None, lit)] do - let recovered = DynSelect(scrut, lit, false) - [recovered, sop(ctx, recovered)] + and args is [Arg(None, scrut), Arg(None, litArg)] do + let recovered = DynSelect(scrut, litArg, false) + [End(), recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) do throw Error("runtime.Tuple.slice not handled in shape propagation") // TODO if defctx.get(f) is [gen, true] and gen(...argShapes) is [shape, implSymb] then - [Call(ValueRef(implSymb), args), shape] + [End(), Call(ValueRef(implSymb), args), shape] [undefined, false] and f is ValueRef(symb) and // means built in let name = symb.name args is @@ -245,11 +269,11 @@ fun sor(defctx, ctx, r: Result) = if r is "!==" then lit(l1 !== l2) "&&" then lit(l1 && l2) "||" then lit(l1 || l2) - [f, false] and argShapes.every((x, _, _) => staticSet(x)) then + [funct, false] and argShapes.every((x, _, _) => staticSet(x)) then let argVals = argShapes.map((s, _, _) => valOfSet(s)) // TODO - [r, mkDyn()] - else [r, mkDyn()] + [End(), r, mkDyn()] + else [End(), r, mkDyn()] // Call(f, args) and // let k = [f, args.map(sop(ctx, _))] @@ -268,16 +292,16 @@ fun sor(defctx, ctx, r: Result) = if r is fun prop(defctx, ctx, cache, b: Block) = if b is End then [b, mkBot()] - Return(res, implct) and sor(defctx, ctx, res) is [r1, s1] then - [Return(r1, implct), s1] + Return(res, implct) and sor(defctx, ctx, res) is [blk, r1, s1] then + [concat(blk, Return(r1, implct)), s1] Scoped(symbols, rest) then symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) let res = prop(defctx, ctx, cache, rest) [Scoped(symbols, res.0), res.1] Assign(x, r, b) and - sor(defctx, ctx, r) is [r1, s1] then + sor(defctx, ctx, r) is [blk, r1, s1] then if prop(defctx, ctx.add(ValueRef(x), s1), cache, b) is [b2, s2] then - [Assign(x, r1, b2), s2] + [concat(blk, Assign(x, r1, b2)), s2] Match(p, arms, dflt, restBlock) then let s = sop(ctx, p) let filteredArms = foldl((r, arm) => diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index febbc11807..9cb6b0a6f7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -26,17 +26,17 @@ staged module Expressions with else 0 //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: runtime.Tuple.slice not handled in shape propagation -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:716:65) -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1137:29) -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1145:31) -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1194:31) -//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1217:43) -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1145:31) -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1123:27) -//│ at Expressions.match2_gen (REPL14:1:62403) -//│ at Expressions.dump (REPL14:1:2916) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL14:1:1705) +//│ at REPL14:1:62880 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) //│ x = [1, 2, 3] class Outside(a) @@ -49,17 +49,17 @@ staged module ClassInstrumentation with fun app2() = Inside(1, 2) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: Instantiate with non-ClassSymbol in shape propagation -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:617:43) -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1096:28) -//│ at ClassInstrumentation.inst2_gen (REPL18:1:14047) -//│ at ClassInstrumentation.dump (REPL18:1:4691) -//│ at (REPL18:1:2279) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL18:1:2114) //│ at REPL18:1:19459 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) //│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) module Nonstaged with fun f() = 1 @@ -69,13 +69,19 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > module Staged with -//│ > fun f() = 1 -//│ > module CallSubst with -//│ > fun call() = -//│ > let tmp -//│ > tmp = Nonstaged.f() -//│ > f() +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL21:1:663) +//│ at REPL21:1:3810 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) module Nonstaged with fun f() = 1 @@ -84,10 +90,19 @@ staged module Staged with staged module CallSubst with fun call() = 1 + 1 -//│ > module Staged with -//│ > fun f() = 1 -//│ > module CallSubst with -//│ > fun call() = 2 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL24:1:665) +//│ at REPL24:1:3820 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) :w staged module Arguments with @@ -96,21 +111,21 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.97: fun g(x)(y, z)() = z -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ ║ l.112: fun g(x)(y, z)() = z +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: s1.shapeset is not iterable -//│ at ShapeSet.union (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:341:13) -//│ at Ctx.add (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:144:27) -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1144:24) -//│ at Arguments.f_gen (REPL27:1:5232) -//│ at Arguments.dump (REPL27:1:1146) -//│ at (REPL27:1:484) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL27:1:332) //│ at REPL27:1:8580 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) staged module OtherBlocks with fun scope() = @@ -123,31 +138,55 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > module OtherBlocks with -//│ > fun scope() = -//│ > let a -//│ > a = 1 -//│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel() = -//│ > let scrut -//│ > let tmp -//│ > scrut = 1 -//│ > tmp = 0 -//│ > 0 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL30:1:1002) +//│ at REPL30:1:14393 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) // :sjs staged module ClassDefs with class A -//│ > module ClassDefs with -//│ > +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL33:1:332) +//│ at REPL33:1:1828 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) // TODO: how to add the block IR to the cache, for class functions? staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) // fun g() = f() // TODO -//│ > module ClassFunctions with -//│ > +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL36:1:1204) +//│ at REPL36:1:11129 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) :todo staged module ValClass with @@ -158,31 +197,71 @@ staged module ValClass with class A() staged module A with fun f() = 1 -//│ > module A with -//│ > fun f() = 1 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL39:1:381) +//│ at REPL39:1:3491 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) // nested module module A with staged module B with fun f() = 1 -//│ > module B with -//│ > fun f() = 1 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL42:1:474) +//│ at (REPL42:1:3916) +//│ at REPL42:1:4023 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) staged module Test with fun g(x, y) = x fun k() = g(1, x) -//│ > module Test with -//│ > fun g(x, y) = x -//│ > fun g_0(x, y) = 1 -//│ > fun k() = g_0(1, x1) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL45:1:809) +//│ at REPL45:1:8485 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) staged module Simple with fun inc(x) = x + 1 fun t() = inc(41) -//│ > module Simple with -//│ > fun inc(x) = +(x, 1) -//│ > fun inc_0(x) = 42 -//│ > fun t() = inc_0(41) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL48:1:1177) +//│ at REPL48:1:9229 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) staged module Match with fun baz(x) = if x is @@ -191,34 +270,433 @@ staged module Match with else -1 fun foo() = baz("1") fun foo2() = baz(1) -//│ > module Match with -//│ > fun baz(x) = -//│ > if x is -//│ > Str then 0 -//│ > Int then +(x, 1) -//│ > else -1 -//│ > fun baz_0(x) = 0 -//│ > fun foo() = baz_0("1") -//│ > fun baz_1(x) = 2 -//│ > fun foo2() = baz_1(1) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL51:1:1532) +//│ at REPL51:1:17470 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +:sjs staged module Math with fun pow(x, n) = if n is 1 then x else x * pow(x, n - 1) fun cube(x) = pow(x, 3) +//│ JS (unsanitized): +//│ let Math1; +//│ (class Math { +//│ static { +//│ Math1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static { +//│ let tmp, tmp1, sym, var1, sym1, sel, tmp2, tmp3, tmp4, sym2, var2, tmp5, tmp6, tmp7, sym3, var3, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13; +//│ sym = globalThis.Object.freeze(new Block.Symbol("Math")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("pow")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp2 = globalThis.Object.freeze([ +//│ Math.pow_gen, +//│ true +//│ ]); +//│ tmp3 = sel.hash(); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3, +//│ tmp2 +//│ ]); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("*")); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ tmp5 = globalThis.Object.freeze([ +//│ undefined, +//│ false +//│ ]); +//│ tmp6 = var2.hash(); +//│ tmp7 = globalThis.Object.freeze([ +//│ tmp6, +//│ tmp5 +//│ ]); +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("-")); +//│ var3 = globalThis.Object.freeze(new Block.ValueRef(sym3)); +//│ tmp8 = globalThis.Object.freeze([ +//│ undefined, +//│ false +//│ ]); +//│ tmp9 = var3.hash(); +//│ tmp10 = globalThis.Object.freeze([ +//│ tmp9, +//│ tmp8 +//│ ]); +//│ tmp11 = globalThis.Object.freeze([ +//│ tmp4, +//│ tmp7, +//│ tmp10 +//│ ]); +//│ tmp12 = globalThis.Object.freeze(new globalThis.Map(tmp11)); +//│ tmp13 = ShapeSet.DefCtx(tmp12); +//│ this.defCtx = tmp13; +//│ tmp1 = runtime.safeCall(ShapeSet.emptyCache()); +//│ this.cache = tmp1; +//│ tmp = Math.dump(); +//│ } +//│ static ctor$_instr() { +//│ let end, tmp, tmp1, tmp2, tmp3; +//│ end = globalThis.Object.freeze(new Block.End()); +//│ tmp = globalThis.Object.freeze([]); +//│ tmp1 = globalThis.Object.freeze([ +//│ tmp +//│ ]); +//│ tmp2 = globalThis.Object.freeze(new Block.Symbol("ctor$")); +//│ tmp3 = globalThis.Object.freeze(new Block.FunDefn(tmp2, tmp1, end, true)); +//│ return tmp3 +//│ } +//│ static dump() { +//│ let dyn, defs, res, restmp, restmp1; +//│ dyn = ShapeSet.mkDyn(); +//│ restmp1 = Math.pow_gen(dyn, dyn); +//│ restmp = Math.cube_gen(dyn); +//│ defs = Math.cache.getImps(); +//│ res = Block.printModule("Math", defs); +//│ return res +//│ } +//│ static pow(x1, n) { +//│ let tmp, tmp1; +//│ if (n === 1) { +//│ return x1 +//│ } else { +//│ tmp = n - 1; +//│ tmp1 = Math.pow(x1, tmp); +//│ return x1 * tmp1 +//│ } +//│ } +//│ static cube(x1) { +//│ return Math.pow(x1, 3) +//│ } +//│ static pow_instr() { +//│ let x1, n, tmp, tmp1, sym, sym1, tmp2, sym2, var1, tmp3, sym3, var2, return1, tmp4, tmp5, end, sym4, var3, tmp6, tmp7, tmp8, lit, tmp9, tmp10, app, sym5, tmp11, end1, assign, sym6, var4, sym7, sel, tmp12, sym8, var5, tmp13, tmp14, tmp15, tmp16, app1, sym9, tmp17, sym10, var6, tmp18, sym11, var7, tmp19, tmp20, tmp21, tmp22, app2, return2, assign1, concat, tmp23, branches, end2, match, tmp24, tmp25, tmp26, tmp27, tmp28, tmp29, tmp30; +//│ sym = globalThis.Object.freeze(new Block.Symbol("tmp")); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("tmp1")); +//│ tmp2 = globalThis.Object.freeze([ +//│ sym, +//│ sym1 +//│ ]); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("n")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ tmp3 = globalThis.Object.freeze(new Block.Lit(1)); +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym3)); +//│ return1 = globalThis.Object.freeze(new Block.Return(var2, false)); +//│ tmp4 = globalThis.Object.freeze(new Block.Arm(tmp3, return1)); +//│ tmp5 = globalThis.Object.freeze([ +//│ tmp4 +//│ ]); +//│ end = globalThis.Object.freeze(new Block.End()); +//│ sym4 = globalThis.Object.freeze(new Block.Symbol("-")); +//│ var3 = globalThis.Object.freeze(new Block.ValueRef(sym4)); +//│ tmp6 = option.None; +//│ tmp7 = globalThis.Object.freeze(new Block.Arg(tmp6, var1)); +//│ tmp8 = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp9 = globalThis.Object.freeze(new Block.Arg(tmp8, lit)); +//│ tmp10 = globalThis.Object.freeze([ +//│ tmp7, +//│ tmp9 +//│ ]); +//│ app = globalThis.Object.freeze(new Block.Call(var3, tmp10)); +//│ sym5 = globalThis.Object.freeze(new Block.Symbol("tmp")); +//│ tmp11 = globalThis.Object.freeze(new Block.ValueRef(sym5)); +//│ tmp = tmp11; +//│ end1 = globalThis.Object.freeze(new Block.End()); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym5, app, end1)); +//│ sym6 = globalThis.Object.freeze(new Block.Symbol("Math")); +//│ var4 = globalThis.Object.freeze(new Block.ValueRef(sym6)); +//│ sym7 = globalThis.Object.freeze(new Block.Symbol("pow")); +//│ sel = globalThis.Object.freeze(new Block.Select(var4, sym7)); +//│ tmp12 = option.None; +//│ sym8 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ var5 = globalThis.Object.freeze(new Block.ValueRef(sym8)); +//│ tmp13 = globalThis.Object.freeze(new Block.Arg(tmp12, var5)); +//│ tmp14 = option.None; +//│ tmp15 = globalThis.Object.freeze(new Block.Arg(tmp14, tmp11)); +//│ tmp16 = globalThis.Object.freeze([ +//│ tmp13, +//│ tmp15 +//│ ]); +//│ app1 = globalThis.Object.freeze(new Block.Call(sel, tmp16)); +//│ sym9 = globalThis.Object.freeze(new Block.Symbol("tmp1")); +//│ tmp17 = globalThis.Object.freeze(new Block.ValueRef(sym9)); +//│ tmp1 = tmp17; +//│ sym10 = globalThis.Object.freeze(new Block.Symbol("*")); +//│ var6 = globalThis.Object.freeze(new Block.ValueRef(sym10)); +//│ tmp18 = option.None; +//│ sym11 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ var7 = globalThis.Object.freeze(new Block.ValueRef(sym11)); +//│ tmp19 = globalThis.Object.freeze(new Block.Arg(tmp18, var7)); +//│ tmp20 = option.None; +//│ tmp21 = globalThis.Object.freeze(new Block.Arg(tmp20, tmp17)); +//│ tmp22 = globalThis.Object.freeze([ +//│ tmp19, +//│ tmp21 +//│ ]); +//│ app2 = globalThis.Object.freeze(new Block.Call(var6, tmp22)); +//│ return2 = globalThis.Object.freeze(new Block.Return(app2, false)); +//│ assign1 = globalThis.Object.freeze(new Block.Assign(sym9, app1, return2)); +//│ concat = Block.concat(assign, assign1); +//│ tmp23 = globalThis.Object.freeze(new option.Some(concat)); +//│ branches = globalThis.Object.freeze(new Block.Match(var1, tmp5, tmp23, end)); +//│ end2 = globalThis.Object.freeze(new Block.End()); +//│ match = Block.concat(branches, end2); +//│ tmp24 = globalThis.Object.freeze(new Block.Scoped(tmp2, match)); +//│ tmp25 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ tmp26 = globalThis.Object.freeze(new Block.Symbol("n")); +//│ tmp27 = globalThis.Object.freeze([ +//│ tmp25, +//│ tmp26 +//│ ]); +//│ tmp28 = globalThis.Object.freeze([ +//│ tmp27 +//│ ]); +//│ tmp29 = globalThis.Object.freeze(new Block.Symbol("pow")); +//│ tmp30 = globalThis.Object.freeze(new Block.FunDefn(tmp29, tmp28, tmp24, true)); +//│ return tmp30 +//│ } +//│ static cube_instr() { +//│ let x1, sym, var1, sym1, sel, tmp, sym2, var2, tmp1, tmp2, lit, tmp3, tmp4, app, return1, tmp5, tmp6, tmp7, tmp8, tmp9; +//│ sym = globalThis.Object.freeze(new Block.Symbol("Math")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("pow")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp = option.None; +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("x1")); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ tmp1 = globalThis.Object.freeze(new Block.Arg(tmp, var2)); +//│ tmp2 = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(3)); +//│ tmp3 = globalThis.Object.freeze(new Block.Arg(tmp2, lit)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp1, +//│ tmp3 +//│ ]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp4)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ tmp5 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ tmp6 = globalThis.Object.freeze([ +//│ tmp5 +//│ ]); +//│ tmp7 = globalThis.Object.freeze([ +//│ tmp6 +//│ ]); +//│ tmp8 = globalThis.Object.freeze(new Block.Symbol("cube")); +//│ tmp9 = globalThis.Object.freeze(new Block.FunDefn(tmp8, tmp7, return1, true)); +//│ return tmp9 +//│ } +//│ static pow_gen(x1, n) { +//│ let fname, args, set, scrut; +//│ fname = "pow"; +//│ args = globalThis.Object.freeze([ +//│ x1, +//│ n +//│ ]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = Math.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = Math.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let tmp, tmp1, sym, sym1, tmp2, sym2, var1, tmp3, sym3, var2, return1, tmp4, tmp5, end, sym4, var3, tmp6, tmp7, tmp8, lit, tmp9, tmp10, app, sym5, tmp11, end1, assign, sym6, var4, sym7, sel, tmp12, sym8, var5, tmp13, tmp14, tmp15, tmp16, app1, sym9, tmp17, sym10, var6, tmp18, sym11, var7, tmp19, tmp20, tmp21, tmp22, app2, return2, assign1, concat, tmp23, branches, end2, match, tmp24, tmp25, tmp26, ctx, pref, tmp27, pref1, tmp28, tmp29, tmp30, tmp31, proped, propedBlock, propedShape, block, newName, ret; +//│ sym = globalThis.Object.freeze(new Block.Symbol("tmp")); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("tmp1")); +//│ tmp2 = globalThis.Object.freeze([ +//│ sym, +//│ sym1 +//│ ]); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("n")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ tmp3 = globalThis.Object.freeze(new Block.Lit(1)); +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym3)); +//│ return1 = globalThis.Object.freeze(new Block.Return(var2, false)); +//│ tmp4 = globalThis.Object.freeze(new Block.Arm(tmp3, return1)); +//│ tmp5 = globalThis.Object.freeze([ +//│ tmp4 +//│ ]); +//│ end = globalThis.Object.freeze(new Block.End()); +//│ sym4 = globalThis.Object.freeze(new Block.Symbol("-")); +//│ var3 = globalThis.Object.freeze(new Block.ValueRef(sym4)); +//│ tmp6 = option.None; +//│ tmp7 = globalThis.Object.freeze(new Block.Arg(tmp6, var1)); +//│ tmp8 = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp9 = globalThis.Object.freeze(new Block.Arg(tmp8, lit)); +//│ tmp10 = globalThis.Object.freeze([ +//│ tmp7, +//│ tmp9 +//│ ]); +//│ app = globalThis.Object.freeze(new Block.Call(var3, tmp10)); +//│ sym5 = globalThis.Object.freeze(new Block.Symbol("tmp")); +//│ tmp11 = globalThis.Object.freeze(new Block.ValueRef(sym5)); +//│ tmp = tmp11; +//│ end1 = globalThis.Object.freeze(new Block.End()); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym5, app, end1)); +//│ sym6 = globalThis.Object.freeze(new Block.Symbol("Math")); +//│ var4 = globalThis.Object.freeze(new Block.ValueRef(sym6)); +//│ sym7 = globalThis.Object.freeze(new Block.Symbol("pow")); +//│ sel = globalThis.Object.freeze(new Block.Select(var4, sym7)); +//│ tmp12 = option.None; +//│ sym8 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ var5 = globalThis.Object.freeze(new Block.ValueRef(sym8)); +//│ tmp13 = globalThis.Object.freeze(new Block.Arg(tmp12, var5)); +//│ tmp14 = option.None; +//│ tmp15 = globalThis.Object.freeze(new Block.Arg(tmp14, tmp11)); +//│ tmp16 = globalThis.Object.freeze([ +//│ tmp13, +//│ tmp15 +//│ ]); +//│ app1 = globalThis.Object.freeze(new Block.Call(sel, tmp16)); +//│ sym9 = globalThis.Object.freeze(new Block.Symbol("tmp1")); +//│ tmp17 = globalThis.Object.freeze(new Block.ValueRef(sym9)); +//│ tmp1 = tmp17; +//│ sym10 = globalThis.Object.freeze(new Block.Symbol("*")); +//│ var6 = globalThis.Object.freeze(new Block.ValueRef(sym10)); +//│ tmp18 = option.None; +//│ sym11 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ var7 = globalThis.Object.freeze(new Block.ValueRef(sym11)); +//│ tmp19 = globalThis.Object.freeze(new Block.Arg(tmp18, var7)); +//│ tmp20 = option.None; +//│ tmp21 = globalThis.Object.freeze(new Block.Arg(tmp20, tmp17)); +//│ tmp22 = globalThis.Object.freeze([ +//│ tmp19, +//│ tmp21 +//│ ]); +//│ app2 = globalThis.Object.freeze(new Block.Call(var6, tmp22)); +//│ return2 = globalThis.Object.freeze(new Block.Return(app2, false)); +//│ assign1 = globalThis.Object.freeze(new Block.Assign(sym9, app1, return2)); +//│ concat = Block.concat(assign, assign1); +//│ tmp23 = globalThis.Object.freeze(new option.Some(concat)); +//│ branches = globalThis.Object.freeze(new Block.Match(var1, tmp5, tmp23, end)); +//│ end2 = globalThis.Object.freeze(new Block.End()); +//│ match = Block.concat(branches, end2); +//│ tmp24 = globalThis.Object.freeze(new Block.Scoped(tmp2, match)); +//│ tmp25 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ tmp26 = globalThis.Object.freeze(new Block.Symbol("n")); +//│ ctx = ShapeSet.emptyCtx(); +//│ pref = globalThis.Object.freeze(new Block.ValueRef(tmp25)); +//│ tmp27 = ctx.add(pref, x1); +//│ pref1 = globalThis.Object.freeze(new Block.ValueRef(tmp26)); +//│ tmp28 = ctx.add(pref1, n); +//│ tmp29 = globalThis.Object.freeze(new Block.Symbol("pow")); +//│ tmp30 = globalThis.Object.freeze([ +//│ tmp25, +//│ tmp26 +//│ ]); +//│ tmp31 = globalThis.Object.freeze([ +//│ tmp30 +//│ ]); +//│ proped = ShapeSet.prop(Math.defCtx, ctx, Math.cache, tmp24); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp29, tmp31, propedBlock, true)); +//│ newName = Math.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ static cube_gen(x1) { +//│ let fname, args, set, scrut; +//│ fname = "cube"; +//│ args = globalThis.Object.freeze([ +//│ x1 +//│ ]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = Math.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = Math.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let sym, var1, sym1, sel, tmp, sym2, var2, tmp1, tmp2, lit, tmp3, tmp4, app, return1, tmp5, ctx, pref, tmp6, tmp7, tmp8, tmp9, proped, propedBlock, propedShape, block, newName, ret; +//│ sym = globalThis.Object.freeze(new Block.Symbol("Math")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("pow")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp = option.None; +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("x1")); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ tmp1 = globalThis.Object.freeze(new Block.Arg(tmp, var2)); +//│ tmp2 = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(3)); +//│ tmp3 = globalThis.Object.freeze(new Block.Arg(tmp2, lit)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp1, +//│ tmp3 +//│ ]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp4)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ tmp5 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ ctx = ShapeSet.emptyCtx(); +//│ pref = globalThis.Object.freeze(new Block.ValueRef(tmp5)); +//│ tmp6 = ctx.add(pref, x1); +//│ tmp7 = globalThis.Object.freeze(new Block.Symbol("cube")); +//│ tmp8 = globalThis.Object.freeze([ +//│ tmp5 +//│ ]); +//│ tmp9 = globalThis.Object.freeze([ +//│ tmp8 +//│ ]); +//│ proped = ShapeSet.prop(Math.defCtx, ctx, Math.cache, return1); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp7, tmp9, propedBlock, true)); +//│ newName = Math.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "Math"]; +//│ }); //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] RangeError: Maximum call stack size exceeded -//│ at renderSequence (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:444:45) -//│ at renderClassInstance (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:442:14) -//│ at renderValue (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:1185:42) -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:316:24) -//│ at renderSequence (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:479:35) -//│ at renderArray (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:326:14) -//│ at renderValue (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:1071:30) -//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:435:18) -//│ at renderSequence (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:479:35) -//│ at renderClassInstance (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:442:14) +//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function +//│ at (REPL54:1:1527) +//│ at REPL54:1:17105 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index fffa4c5382..f4b4e16367 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -179,6 +179,7 @@ sop(ctx, selPath) val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) sor(DefCtx.empty, Ctx.empty, tup) //│ = [ +//│ End(), //│ Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]), //│ {Arr([Lit(1), Lit(true)], false)} //│ ] @@ -188,6 +189,7 @@ let c = ClassSymbol("C", Some([Symbol("p")])) let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) sor(DefCtx.empty, Ctx.empty, inst) //│ = [ +//│ End(), //│ Instantiate( //│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), //│ [Arg(None, ValueLit(123))] @@ -430,14 +432,18 @@ val M = ValueRef(Symbol("M")) val fPath = Select(M, fSym) val defs = DefCtx.empty.add(fPath, f_gen, true) //│ M = ValueRef(Symbol("M")) -//│ defs = DefCtx(Map(1) {"M.f" => [fun f_gen, false]}) +//│ defs = DefCtx(Map(1) {"M.f" => [fun f_gen, true]}) //│ fPath = Select(ValueRef(Symbol("M")), Symbol("f")) //│ fSym = Symbol("f") val callF = Call(fPath, [Arg(None, ValueLit(12))]) sor(defs, Ctx.empty, callF) //│ = [ -//│ Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None, ValueLit(12))]), +//│ End(), +//│ Call( +//│ Select(ValueRef(Symbol("M")), Symbol("f")), +//│ [Arg(None, ValueLit(12))] +//│ ), //│ {Dyn()} //│ ] //│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None, ValueLit(12))]) @@ -517,7 +523,7 @@ prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) //│ [Symbol("x"), Symbol("y")], //│ Assign( //│ Symbol("x"), -//│ ValueLit(42), +//│ ValueLit(false), //│ Assign(Symbol("y"), ValueLit(20), Return(ValueLit(20), false)) //│ ) //│ ), @@ -556,8 +562,8 @@ c.add("f", mkDyn(), res.0, res.1) c.printImps() //│ > let x //│ > let y -//│ > x = 42 -//│ > y = 42 +//│ > x = true +//│ > y = false //│ > 2 //│ = [()] //│ c = Cache(_, _) @@ -593,9 +599,86 @@ c.printImps() //│ [Symbol("x"), Symbol("y")], //│ Assign( //│ Symbol("x"), -//│ ValueLit(42), -//│ Assign(Symbol("y"), ValueLit(42), Return(ValueLit(2), false)) +//│ ValueLit(true), +//│ Assign(Symbol("y"), ValueLit(false), Return(ValueLit(2), false)) //│ ) //│ ), //│ {Lit(2),Lit(4)} //│ ] + +val2path(1) +//│ = [End(), ValueLit(1)] + +val2path([1, 2, 3]) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) +//│ at lambda6 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:602:24) +//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:605:38) +//│ at REPL234:1:114 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) + +class TestClass(val a, val b) +val2path(TestClass(1, 2)) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) +//│ at lambda12 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:671:36) +//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:674:51) +//│ at REPL237:1:494 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) + + +val2path(TestClass(1, [1,2])) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) +//│ at lambda6 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:602:24) +//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:605:38) +//│ at lambda7 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:627:39) +//│ at Array.map () +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:629:59) +//│ at REPL240:1:168 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) + +:sjs +class C(val x) +//│ JS (unsanitized): +//│ let C2; +//│ C2 = function C(x5) { +//│ return globalThis.Object.freeze(new C.class(x5)); +//│ }; +//│ (class C1 { +//│ static { +//│ C2.class = this +//│ } +//│ constructor(x5) { +//│ this.x = x5; +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "C", ["x"]]; +//│ }); + +:sjs +let a = new C(0) +//│ JS (unsanitized): +//│ let a1; a1 = globalThis.Object.freeze(new C2.class(0)); +//│ a = C(0) + +new C +//│ = C(undefined) From 145b0da594e73b9f869bc062632eebe36b97f806 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 19 Mar 2026 00:30:54 +0800 Subject: [PATCH 346/654] small fix to val2path --- .../src/test/mlscript-compile/ShapeSet.mls | 6 +-- .../test/mlscript/block-staging/ShapeProp.mls | 37 +++++++++---------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index bb9794c91e..2e1cfb7f01 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -113,10 +113,10 @@ fun val2path(v) = if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then [Block.End(), Block.ValueLit(v)] else if Array.isArray(v) then let mapped = v.map(val2path) - let blocks = mapped.filter(_ is [_, _]).map(_ => _.0) - let paths = mapped.map((m, _, _) => if m is [_, p] then p else m) + let blocks = mapped.map(_.0) + let paths = mapped.map(_.0) let tupSym = freshId("tup") - let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map((p, _, _) => Block.Arg(None, p))), Block.End()) + let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map(Block.Arg(None, _))), Block.End()) let fullBlock = foldl((b, acc) => Block.concat(b, acc))(tupAssign, ...blocks) [fullBlock, Block.ValueRef(tupSym)] else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index f4b4e16367..31b8ebd1d4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -610,19 +610,15 @@ val2path(1) //│ = [End(), ValueLit(1)] val2path([1, 2, 3]) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) -//│ at lambda6 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:602:24) -//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:605:38) -//│ at REPL234:1:114 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ > Assign(Symbol("tup_1"), Tuple([Arg(None, End()), Arg(None, End()), Arg(None, End())]), End()) +//│ = [ +//│ Assign( +//│ Symbol("tup_1"), +//│ Tuple([Arg(None, End()), Arg(None, End()), Arg(None, End())]), +//│ End() +//│ ), +//│ ValueRef(Symbol("tup_1")) +//│ ] class TestClass(val a, val b) val2path(TestClass(1, 2)) @@ -631,9 +627,9 @@ val2path(TestClass(1, 2)) //│ ═══[RUNTIME ERROR] Error: match error //│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) //│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) -//│ at lambda12 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:671:36) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:649:36) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:674:51) +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:652:51) //│ at REPL237:1:494 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) @@ -642,19 +638,20 @@ val2path(TestClass(1, 2)) val2path(TestClass(1, [1,2])) +//│ > Assign(Symbol("tup_3"), Tuple([Arg(None, End()), Arg(None, End())]), End()) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) //│ ═══[RUNTIME ERROR] Error: match error //│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) //│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) -//│ at lambda6 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:602:24) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:649:36) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:605:38) -//│ at lambda7 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:627:39) -//│ at Array.map () -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:629:59) +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:652:51) //│ at REPL240:1:168 //│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) :sjs class C(val x) From b62888d6da3ba421eb228545c1698cc0f84d1ece Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 19 Mar 2026 11:42:25 +0800 Subject: [PATCH 347/654] switch to using BlockTraverser --- .../src/main/scala/hkmc2/codegen/Instrumentation.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index c84834dcbf..1cd1a9bc4f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -373,12 +373,12 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb case b => b def mkDefnMap(b: Block): Unit = - val transformer = new BlockTransformer(new SymbolSubst()): - override def applyDefn(defn: Defn)(k: Defn => Block) = defn match + val transformer = new BlockTraverser: + override def applyDefn(defn: Defn) = defn match case c: ClsLikeDefn => defnMap.addOne(c.isym, c) - super.applyDefn(defn)(k) - case _ => super.applyDefn(defn)(k) + super.applyDefn(defn) + case _ => super.applyDefn(defn) transformer.applyBlock(b) def applyBlockFinal(b: Block) = From e05a36f597159c8b83351f22467c85eaa684fc78 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 19 Mar 2026 12:16:30 +0800 Subject: [PATCH 348/654] fix tests --- .../src/test/mlscript-compile/Block.mls | 5 +- .../test/mlscript/block-staging/PrintCode.mls | 42 +++++++++----- .../mlscript/block-staging/StageSymbols.mls | 58 ++++++++++++++----- .../test/mlscript/block-staging/Syntax.mls | 3 +- 4 files changed, 77 insertions(+), 31 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 4e7ff81a82..999b46c9ae 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -48,7 +48,7 @@ class Case with constructor Lit(val lit: Literal) Cls(val cls: ClassSymbol, val path: Path) - Tup(val len: Int, val inf: Bool) + Tup(val len: Int) class Result with constructor @@ -129,8 +129,7 @@ fun showCase(c) = Cls(cls, p) then showSymbol(cls) + if isPrimitiveType(cls) then "" else showParamsOpt(cls.paramsOpt) - Tup(len, inf) then "[" + Array(len).fill("_").join(", ") + - (if inf then ", ..." else "") + "]" + Tup(len) then "[" + Array(len).fill("_").join(", ") + "]" _ then "" fun showArm(a) = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index d521057352..d84e90d531 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -26,23 +26,39 @@ printCode(Symbol("runtime")) //│ > internal_ //│ > Runtime -printCode(Select(ValueRef(Symbol("A")), Symbol("x"))) -printCode(DynSelect(ValueRef(Symbol("B")), ValueRef(Symbol("field")), false)) -//│ > A.x -//│ > B.(field) - -printCode(Call(ValueRef(Symbol("f")), [Arg(None, ValueLit(3))])) -printCode(Instantiate(ValueRef(ClassSymbol("A", Some([[Symbol("x")]]))), [Arg(None, ValueLit(0))])) -printCode(Tuple([Arg(Some(true), ValueRef(Symbol("x"))), Arg(Some(false), ValueRef(Symbol("y")))])) +printCode(Select(ValueRef(Symbol("p")), Symbol("x"))) +printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) +//│ > p.x +//│ > p.(field) + +class A(val x)(y) +class B +let aSym = ClassSymbol("A", A, Some([Symbol("x")]), [Symbol("y")]) +let bSym = ClassSymbol("B", B, None, None) +//│ aSym = ClassSymbol( +//│ "A", +//│ fun A { class: class A }, +//│ Some([Symbol("x")]), +//│ [Symbol("y")] +//│ ) +//│ bSym = ClassSymbol("B", class B, None, None) + +printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) +printCode(Instantiate(ValueRef(aSym), [Arg(ValueLit(0))])) +printCode(Tuple([Arg(ValueRef(Symbol("x"))), Arg(ValueRef(Symbol("y")))])) //│ > f(3) //│ > new A(0) -//│ > [...x, ..y] +//│ > [x, y] -printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false)) -printCode(ClsLikeDefn(ClassSymbol("A", Some([Symbol("x")])), undefined)) -printCode(ClsLikeDefn(ClassSymbol("B", None), undefined)) +let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false) +//│ f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false) + +printCode(f) +printCode(ClsLikeDefn(aSym, [f], None)) +printCode(ClsLikeDefn(bSym, [], None)) //│ > fun f(x) = 1 -//│ > class A(x) +//│ > class A(x) with +//│ > fun f(x) = 1 //│ > class B printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), Return(ValueRef(Symbol("x")), true)))) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 6630944b28..aa6d32ef4a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -5,7 +5,10 @@ staged module M with class C with fun f() = 1 fun g() = f() -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("C", class C, None, []), [FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true),FunDefn(Symbol("g"), ([]), Return(Call(Select(Ref(ClassSymbol("C", class C, None, [])), Symbol("f")), []), false), true)], TODO), End), true) +//│ > fun ctor_() = +//│ > class C with +//│ > fun f() = 1 +//│ > fun g() = C.f() staged module A with fun f() = 1 @@ -20,11 +23,27 @@ staged module D with fun matching() = 1 is Int 1 is C -//│ > FunDefn(Symbol("ctor$"), ([]), End, true) -//│ > FunDefn(Symbol("f"), ([]), Return(Lit(1), false), true) -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("E", class E, None, []), [], TODO), End), true) -//│ > FunDefn(Symbol("f"), ([]), Assign(Symbol("$_no$_symbol$_"), Call(Select(Ref(ModuleSymbol("A", class A)), Symbol("f_gen")), []), Return(Call(Select(Ref(ModuleSymbol("B", class B)), Symbol("f")), []), false)), true) -//│ > FunDefn(Symbol("matching"), ([]), Scoped([Symbol("tmp"), Symbol("scrut"), Symbol("scrut1")], Assign(Symbol("scrut"), Lit(1), Match(Ref(Symbol("scrut")), [Cls(VirtualClassSymbol("Int"), Select(Ref(Symbol("runtime")), Symbol("unreachable"))) -> Assign(Symbol("tmp"), Lit(true), End)], Assign(Symbol("tmp"), Lit(false), End), Assign(Symbol("scrut1"), Lit(1), Match(Ref(Symbol("scrut1")), [Cls(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a"), Symbol("b")]), [[Symbol("c")], [Symbol("d")]]), Ref(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a"), Symbol("b")]), [[Symbol("c")], [Symbol("d")]]))) -> Return(Lit(true), false)], Return(Lit(false), false), End))))), true) +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 +//│ > fun ctor_() = +//│ > class E +//│ > fun f() = +//│ > __no__symbol__ = A.f_gen() +//│ > B.f() +//│ > fun matching() = +//│ > let tmp +//│ > let scrut +//│ > let scrut1 +//│ > scrut = 1 +//│ > if scrut is +//│ > Int then +//│ > tmp = true +//│ > else tmp = false +//│ > scrut1 = 1 +//│ > if scrut1 is +//│ > C(a, b) then true +//│ > else false module A with module B with @@ -36,22 +55,33 @@ staged module M with A.B.C A.B.C(1) E -//│ > FunDefn(Symbol("ctor$"), ([]), Define(ClsLikeDefn(ClassSymbol("E", class E, None, []), [], TODO), End), true) -//│ > FunDefn(Symbol("f"), ([]), Assign(Symbol("$_no$_symbol$_"), Call(Select(Select(Ref(ModuleSymbol("A", class A { B: class B { C: fun C { class: class C } } })), ModuleSymbol("B", class B { C: fun C { class: class C } })), ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), [])), [Lit(1)]), Return(Select(Ref(ModuleSymbol("M", class M2 { E: class E })), ClassSymbol("E", class E, None, [])), false)), true) +//│ > fun ctor_() = +//│ > class E +//│ > fun f() = +//│ > __no__symbol__ = A.B.C(1) +//│ > M.E :e staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.44: fun g()() = 1 +//│ ║ l.66: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ -//│ > FunDefn(Symbol("ctor$"), ([]), End, true) -//│ > FunDefn(Symbol("g"), ([],[]), Return(Lit(1), false), true) +//│ > fun ctor_() = +//│ > () +//│ > fun g()() = 1 :ftc staged module M with fun f() = x => x fun g()() = 1 -//│ > FunDefn(Symbol("ctor$"), ([]), End, true) -//│ > FunDefn(Symbol("f"), ([]), Scoped([Symbol("tmp")], Assign(Symbol("tmp"), Instantiate(Ref(ClassSymbol("Function$", class Function$, None, [])), []), Return(Ref(Symbol("tmp")), false))), true) -//│ > FunDefn(Symbol("g"), ([]), Scoped([Symbol("tmp1")], Assign(Symbol("tmp1"), Instantiate(Ref(ClassSymbol("Function$1", class Function$, None, [])), []), Return(Ref(Symbol("tmp1")), false))), true) +//│ > fun ctor_() = +//│ > () +//│ > fun f() = +//│ > let tmp +//│ > tmp = new Function_() +//│ > tmp +//│ > fun g() = +//│ > let tmp1 +//│ > tmp1 = new Function_1() +//│ > tmp1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index bc3ba5f3c4..5dd1585fa0 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -45,4 +45,5 @@ staged module A //│ } //│ }; //│ end -//│ > FunDefn(Symbol("ctor$"), ([]), End, true) +//│ > fun ctor_() = +//│ > () From d7b83620929c88ef7df89334ae29079e7ac6b2f0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 19 Mar 2026 12:18:02 +0800 Subject: [PATCH 349/654] minor: remove functions --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 999b46c9ae..431e8d2d8b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -179,11 +179,6 @@ fun showBlock(b) = fun showRestBlock(b : Block): Str = if b is End then "" else "\n" + showBlock(b) -fun showOptBlock(b: Block): Str = - if b is - Some(b) then showBlock(b) - else "" - fun show(x) = if x is Symbol then showSymbol(x) @@ -195,6 +190,4 @@ fun show(x) = else "" -fun printCode(x) = print(show(x)) - -fun compile(p: Block) = ??? \ No newline at end of file +fun printCode(x) = print(show(x)) \ No newline at end of file From fe99a356716ca204f80de99933d96abbe23c9f8a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 19 Mar 2026 12:33:07 +0800 Subject: [PATCH 350/654] update tests --- .../scala/hkmc2/codegen/Instrumentation.scala | 2 +- .../src/test/mlscript-compile/Block.mls | 2 +- .../test/mlscript/block-staging/PrintCode.mls | 10 +++--- .../mlscript/block-staging/StageSymbols.mls | 19 +++++++--- .../test/mlscript/block-staging/Syntax.mls | 35 ++++++++++++------- 5 files changed, 44 insertions(+), 24 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 227f2ae269..a0a8890b3f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -321,7 +321,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb val newBody = val rest = transformBlock(f.body)(using Context(new HashMap())): body => if f.params.length != 1 then - raise(WarningReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) + raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) // maintain parameter names in instrumented code f.params.map( _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index f0aa705c8b..805705b957 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -153,7 +153,7 @@ fun showDefn(d: Defn): Str = "fun " + showSymbol(sym) + showParamList(ps) + " =" + (if body is Return then " " else "\n ") + indent(showBlock(body)) ClsLikeDefn(sym, methods, _) then - "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams).join("") + if methods is [] then "" else " with \n " + indent(methods.map(showDefn).join("\n")) _ then "" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index d84e90d531..1964474ddd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -33,15 +33,15 @@ printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) class A(val x)(y) class B -let aSym = ClassSymbol("A", A, Some([Symbol("x")]), [Symbol("y")]) -let bSym = ClassSymbol("B", B, None, None) +let aSym = ClassSymbol("A", A, Some([Symbol("x")]), [[Symbol("y")]]) +let bSym = ClassSymbol("B", B, None, []) //│ aSym = ClassSymbol( //│ "A", //│ fun A { class: class A }, //│ Some([Symbol("x")]), -//│ [Symbol("y")] +//│ [[Symbol("y")]] //│ ) -//│ bSym = ClassSymbol("B", class B, None, None) +//│ bSym = ClassSymbol("B", class B, None, []) printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) printCode(Instantiate(ValueRef(aSym), [Arg(ValueLit(0))])) @@ -57,7 +57,7 @@ printCode(f) printCode(ClsLikeDefn(aSym, [f], None)) printCode(ClsLikeDefn(bSym, [], None)) //│ > fun f(x) = 1 -//│ > class A(x) with +//│ > class A(x)(y) with //│ > fun f(x) = 1 //│ > class B diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index aa6d32ef4a..328925aca4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -9,6 +9,7 @@ staged module M with //│ > class C with //│ > fun f() = 1 //│ > fun g() = C.f() +//│ > Map(0) {} staged module A with fun f() = 1 @@ -23,18 +24,19 @@ staged module D with fun matching() = 1 is Int 1 is C -//│ > fun ctor_() = +//│ > fun ctor_1() = //│ > () -//│ > fun f() = 1 +//│ > fun f1() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } //│ > fun ctor_() = //│ > class E //│ > fun f() = -//│ > __no__symbol__ = A.f_gen() +//│ > __no__symbol__ = A.f() //│ > B.f() //│ > fun matching() = -//│ > let tmp //│ > let scrut //│ > let scrut1 +//│ > let tmp //│ > scrut = 1 //│ > if scrut is //│ > Int then @@ -44,6 +46,10 @@ staged module D with //│ > if scrut1 is //│ > C(a, b) then true //│ > else false +//│ > Map(2) { +//│ > 'f' => [Function: f_gen], +//│ > 'matching' => [Function: matching_gen] +//│ > } module A with module B with @@ -60,16 +66,18 @@ staged module M with //│ > fun f() = //│ > __no__symbol__ = A.B.C(1) //│ > M.E +//│ > Map(1) { 'f' => [Function: f_gen] } :e staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.66: fun g()() = 1 +//│ ║ l.73: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun g()() = 1 +//│ > Map(1) { 'g' => [Function: g_gen] } :ftc staged module M with @@ -85,3 +93,4 @@ staged module M with //│ > let tmp1 //│ > tmp1 = new Function_1() //│ > tmp1 +//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 5dd1585fa0..c42ef2a7f2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -26,24 +26,35 @@ staged module A //│ staged //│ } //│ module A² { +//│ val cache⁰; //│ constructor { -//│ let tmp, tmp1; -//│ begin -//│ set tmp = A².ctor$_instr﹖(); -//│ set tmp1 = Block⁰.printCode﹖(tmp); -//│ runtime⁰.Unit﹖; -//│ end +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10; +//│ set tmp9 = []; +//│ set tmp10 = new globalThis⁰.Map﹖(tmp9); +//│ define generatorMap⁰ as val generatorMap¹ = tmp10; +//│ set tmp4 = A².ctor$_instr﹖(); +//│ set tmp5 = ["ctor$_instr", tmp4]; +//│ set tmp6 = [tmp5]; +//│ set tmp7 = new globalThis⁰.Map﹖(tmp6); +//│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp7); +//│ define cache⁰ as val cache¹ = tmp8; +//│ set tmp = { "indent": true }; +//│ set tmp1 = A².cache﹖.toString﹖(); +//│ set tmp2 = globalThis⁰.console﹖.log﹖(tmp1); +//│ set tmp3 = globalThis⁰.console﹖.log﹖(A².generatorMap﹖); +//│ end //│ } //│ method ctor$_instr⁰ = fun () { -//│ let end, tmp, tmp1, tmp2, tmp3; +//│ let end, tmp, tmp1, sym, tmp2; //│ set end = new Block⁰.End﹖(); -//│ set tmp = new Block⁰.Symbol﹖("ctor$"); -//│ set tmp1 = []; -//│ set tmp2 = [tmp1]; -//│ set tmp3 = new Block⁰.FunDefn﹖(tmp, tmp2, end, true); -//│ return tmp3 +//│ set tmp = []; +//│ set tmp1 = [tmp]; +//│ set sym = new Block⁰.Symbol﹖("ctor$"); +//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, end, true); +//│ return tmp2 //│ } //│ }; //│ end //│ > fun ctor_() = //│ > () +//│ > Map(0) {} From 10f1e5c3dfb7ba5b935bc762e3a405ecf7c2a1a6 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 19 Mar 2026 12:47:20 +0800 Subject: [PATCH 351/654] some fix to defctx --- .../src/test/mlscript-compile/ShapeSet.mls | 9 +- .../test/mlscript/block-staging/Functions.mls | 887 ++++++++++++++---- .../test/mlscript/block-staging/ShapeProp.mls | 134 +-- 3 files changed, 726 insertions(+), 304 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 2e1cfb7f01..1a1de8b463 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -161,13 +161,10 @@ fun emptyCtx() = Ctx(new Map()) class DefCtx(val defctx: Map[String, [Function, Bool]]) with fun get(p) = - if defctx.has(p.toString()) then defctx.get(p.toString()) + if defctx.has(showPath(p)) then defctx.get(showPath(p)) else None - fun add(p, genFunc, stage) = // ?? using stage as variable name causes error - if stage then - defctx.set(showPath(p), [genFunc, true]) - else - defctx.set(showPath(p), [genFunc, false]) + fun add(p, genFunc, stage) = + defctx.set(showPath(p), [genFunc, stage]) this module DefCtx with diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 9cb6b0a6f7..3fa43cd8db 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,6 +1,7 @@ :js :staging +:sjs let x = [1, 2, 3] staged module Expressions with fun lit() = 1 @@ -18,25 +19,621 @@ staged module Expressions with Int then 3 9 then 4 else 0 - fun match2() = - if [...x] is - [] then 1 - [1, 2] then 2 - [a, ...] then 3 - else 0 -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL14:1:1705) -//│ at REPL14:1:62880 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) + // fun match2() = + // if [...x] is + // [] then 1 + // [1, 2] then 2 + // [a, ...] then 3 + // else 0 +//│ JS (unsanitized): +//│ let Expressions1, x; +//│ x = globalThis.Object.freeze([ +//│ 1, +//│ 2, +//│ 3 +//│ ]); +//│ (class Expressions { +//│ static { +//│ Expressions1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static { +//│ let tmp, tmp1, tmp2, tmp3, tmp4; +//│ tmp2 = globalThis.Object.freeze([]); +//│ tmp3 = globalThis.Object.freeze(new globalThis.Map(tmp2)); +//│ tmp4 = ShapeSet.DefCtx(tmp3); +//│ this.defCtx = tmp4; +//│ tmp1 = runtime.safeCall(ShapeSet.emptyCache()); +//│ this.cache = tmp1; +//│ tmp = Expressions.dump(); +//│ } +//│ static ctor$_instr() { +//│ let end, tmp, tmp1, tmp2, tmp3; +//│ end = globalThis.Object.freeze(new Block.End()); +//│ tmp = globalThis.Object.freeze([]); +//│ tmp1 = globalThis.Object.freeze([ +//│ tmp +//│ ]); +//│ tmp2 = globalThis.Object.freeze(new Block.Symbol("ctor$")); +//│ tmp3 = globalThis.Object.freeze(new Block.FunDefn(tmp2, tmp1, end, true)); +//│ return tmp3 +//│ } +//│ static dump() { +//│ let dyn, defs, res, restmp, restmp1, restmp2, restmp3, restmp4, restmp5; +//│ dyn = ShapeSet.mkDyn(); +//│ restmp5 = Expressions.lit_gen(); +//│ restmp4 = Expressions.assign_gen(); +//│ restmp3 = Expressions.tup1_gen(); +//│ restmp2 = Expressions.tup2_gen(); +//│ restmp1 = Expressions.dynsel_gen(); +//│ restmp = Expressions.match1_gen(); +//│ defs = Expressions.cache.getImps(); +//│ res = Block.printModule("Expressions", defs); +//│ return res +//│ } +//│ static lit() { +//│ return 1 +//│ } +//│ static assign() { +//│ let x1, y; +//│ x1 = 42; +//│ y = x1; +//│ return y +//│ } +//│ static tup1() { +//│ return globalThis.Object.freeze([ +//│ 1, +//│ 2 +//│ ]) +//│ } +//│ static tup2() { +//│ return globalThis.Object.freeze(runtime.Tuple.lazyConcat(1, runtime.Tuple.split, x)) +//│ } +//│ static dynsel() { +//│ let tmp; +//│ tmp = globalThis.Object.freeze([ +//│ 1 +//│ ]); +//│ return tmp[0] +//│ } +//│ static match1() { +//│ let scrut; +//│ scrut = 9; +//│ if (typeof scrut === 'boolean') { +//│ return 1 +//│ } else if (scrut === 8) { +//│ return 2 +//│ } else if (globalThis.Number.isInteger(scrut)) { +//│ return 3 +//│ } else { +//│ return 0 +//│ } +//│ } +//│ static lit_instr() { +//│ let lit, return1, tmp, tmp1, tmp2, tmp3; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ return1 = globalThis.Object.freeze(new Block.Return(lit, false)); +//│ tmp = globalThis.Object.freeze([]); +//│ tmp1 = globalThis.Object.freeze([ +//│ tmp +//│ ]); +//│ tmp2 = globalThis.Object.freeze(new Block.Symbol("lit")); +//│ tmp3 = globalThis.Object.freeze(new Block.FunDefn(tmp2, tmp1, return1, true)); +//│ return tmp3 +//│ } +//│ static assign_instr() { +//│ let x1, y, sym, sym1, tmp, lit, sym2, tmp1, sym3, tmp2, return1, assign, assign1, tmp3, tmp4, tmp5, tmp6, tmp7; +//│ sym = globalThis.Object.freeze(new Block.Symbol("x")); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("y")); +//│ tmp = globalThis.Object.freeze([ +//│ sym, +//│ sym1 +//│ ]); +//│ lit = globalThis.Object.freeze(new Block.ValueLit(42)); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ tmp1 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ x1 = tmp1; +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("y")); +//│ tmp2 = globalThis.Object.freeze(new Block.ValueRef(sym3)); +//│ y = tmp2; +//│ return1 = globalThis.Object.freeze(new Block.Return(tmp2, false)); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym3, tmp1, return1)); +//│ assign1 = globalThis.Object.freeze(new Block.Assign(sym2, lit, assign)); +//│ tmp3 = globalThis.Object.freeze(new Block.Scoped(tmp, assign1)); +//│ tmp4 = globalThis.Object.freeze([]); +//│ tmp5 = globalThis.Object.freeze([ +//│ tmp4 +//│ ]); +//│ tmp6 = globalThis.Object.freeze(new Block.Symbol("assign")); +//│ tmp7 = globalThis.Object.freeze(new Block.FunDefn(tmp6, tmp5, tmp3, true)); +//│ return tmp7 +//│ } +//│ static tup1_instr() { +//│ let tmp, lit, tmp1, tmp2, lit1, tmp3, tmp4, tup, return1, tmp5, tmp6, tmp7, tmp8; +//│ tmp = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp1 = globalThis.Object.freeze(new Block.Arg(tmp, lit)); +//│ tmp2 = option.None; +//│ lit1 = globalThis.Object.freeze(new Block.ValueLit(2)); +//│ tmp3 = globalThis.Object.freeze(new Block.Arg(tmp2, lit1)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp1, +//│ tmp3 +//│ ]); +//│ tup = globalThis.Object.freeze(new Block.Tuple(tmp4)); +//│ return1 = globalThis.Object.freeze(new Block.Return(tup, false)); +//│ tmp5 = globalThis.Object.freeze([]); +//│ tmp6 = globalThis.Object.freeze([ +//│ tmp5 +//│ ]); +//│ tmp7 = globalThis.Object.freeze(new Block.Symbol("tup1")); +//│ tmp8 = globalThis.Object.freeze(new Block.FunDefn(tmp7, tmp6, return1, true)); +//│ return tmp8 +//│ } +//│ static tup2_instr() { +//│ let tmp, lit, tmp1, tmp2, tmp3, sym, var1, tmp4, tmp5, tup, return1, tmp6, tmp7, tmp8, tmp9; +//│ tmp = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp1 = globalThis.Object.freeze(new Block.Arg(tmp, lit)); +//│ tmp2 = false; +//│ tmp3 = globalThis.Object.freeze(new option.Some(tmp2)); +//│ sym = globalThis.Object.freeze(new Block.Symbol("x1")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ tmp4 = globalThis.Object.freeze(new Block.Arg(tmp3, var1)); +//│ tmp5 = globalThis.Object.freeze([ +//│ tmp1, +//│ tmp4 +//│ ]); +//│ tup = globalThis.Object.freeze(new Block.Tuple(tmp5)); +//│ return1 = globalThis.Object.freeze(new Block.Return(tup, false)); +//│ tmp6 = globalThis.Object.freeze([]); +//│ tmp7 = globalThis.Object.freeze([ +//│ tmp6 +//│ ]); +//│ tmp8 = globalThis.Object.freeze(new Block.Symbol("tup2")); +//│ tmp9 = globalThis.Object.freeze(new Block.FunDefn(tmp8, tmp7, return1, true)); +//│ return tmp9 +//│ } +//│ static dynsel_instr() { +//│ let tmp, sym, tmp1, tmp2, lit, tmp3, tmp4, tup, sym1, tmp5, lit1, dynsel, return1, assign, tmp6, tmp7, tmp8, tmp9, tmp10; +//│ sym = globalThis.Object.freeze(new Block.Symbol("tmp")); +//│ tmp1 = globalThis.Object.freeze([ +//│ sym +//│ ]); +//│ tmp2 = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp3 = globalThis.Object.freeze(new Block.Arg(tmp2, lit)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ tup = globalThis.Object.freeze(new Block.Tuple(tmp4)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("tmp")); +//│ tmp5 = globalThis.Object.freeze(new Block.ValueRef(sym1)); +//│ tmp = tmp5; +//│ lit1 = globalThis.Object.freeze(new Block.ValueLit(0)); +//│ dynsel = globalThis.Object.freeze(new Block.DynSelect(tmp5, lit1, false)); +//│ return1 = globalThis.Object.freeze(new Block.Return(dynsel, false)); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym1, tup, return1)); +//│ tmp6 = globalThis.Object.freeze(new Block.Scoped(tmp1, assign)); +//│ tmp7 = globalThis.Object.freeze([]); +//│ tmp8 = globalThis.Object.freeze([ +//│ tmp7 +//│ ]); +//│ tmp9 = globalThis.Object.freeze(new Block.Symbol("dynsel")); +//│ tmp10 = globalThis.Object.freeze(new Block.FunDefn(tmp9, tmp8, tmp6, true)); +//│ return tmp10 +//│ } +//│ static match1_instr() { +//│ let scrut, sym, tmp, lit, sym1, tmp1, tmp2, sym2, sym3, var1, tmp3, sel, tmp4, lit1, return1, tmp5, tmp6, lit2, return2, tmp7, tmp8, sym4, sym5, var2, tmp9, sel1, tmp10, lit3, return3, tmp11, tmp12, end, lit4, return4, tmp13, branches, end1, match, assign, tmp14, tmp15, tmp16, tmp17, tmp18; +//│ sym = globalThis.Object.freeze(new Block.Symbol("scrut")); +//│ tmp = globalThis.Object.freeze([ +//│ sym +//│ ]); +//│ lit = globalThis.Object.freeze(new Block.ValueLit(9)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("scrut")); +//│ tmp1 = globalThis.Object.freeze(new Block.ValueRef(sym1)); +//│ scrut = tmp1; +//│ tmp2 = option.None; +//│ sym2 = globalThis.Object.freeze(new Block.ClassSymbol("Bool", tmp2)); +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("runtime")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym3)); +//│ tmp3 = globalThis.Object.freeze(new Block.Symbol("unreachable")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, tmp3)); +//│ tmp4 = globalThis.Object.freeze(new Block.Cls(sym2, sel)); +//│ lit1 = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ return1 = globalThis.Object.freeze(new Block.Return(lit1, false)); +//│ tmp5 = globalThis.Object.freeze(new Block.Arm(tmp4, return1)); +//│ tmp6 = globalThis.Object.freeze(new Block.Lit(8)); +//│ lit2 = globalThis.Object.freeze(new Block.ValueLit(2)); +//│ return2 = globalThis.Object.freeze(new Block.Return(lit2, false)); +//│ tmp7 = globalThis.Object.freeze(new Block.Arm(tmp6, return2)); +//│ tmp8 = option.None; +//│ sym4 = globalThis.Object.freeze(new Block.ClassSymbol("Int", tmp8)); +//│ sym5 = globalThis.Object.freeze(new Block.Symbol("runtime")); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym5)); +//│ tmp9 = globalThis.Object.freeze(new Block.Symbol("unreachable")); +//│ sel1 = globalThis.Object.freeze(new Block.Select(var2, tmp9)); +//│ tmp10 = globalThis.Object.freeze(new Block.Cls(sym4, sel1)); +//│ lit3 = globalThis.Object.freeze(new Block.ValueLit(3)); +//│ return3 = globalThis.Object.freeze(new Block.Return(lit3, false)); +//│ tmp11 = globalThis.Object.freeze(new Block.Arm(tmp10, return3)); +//│ tmp12 = globalThis.Object.freeze([ +//│ tmp5, +//│ tmp7, +//│ tmp11 +//│ ]); +//│ end = globalThis.Object.freeze(new Block.End()); +//│ lit4 = globalThis.Object.freeze(new Block.ValueLit(0)); +//│ return4 = globalThis.Object.freeze(new Block.Return(lit4, false)); +//│ tmp13 = globalThis.Object.freeze(new option.Some(return4)); +//│ branches = globalThis.Object.freeze(new Block.Match(tmp1, tmp12, tmp13, end)); +//│ end1 = globalThis.Object.freeze(new Block.End()); +//│ match = Block.concat(branches, end1); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym1, lit, match)); +//│ tmp14 = globalThis.Object.freeze(new Block.Scoped(tmp, assign)); +//│ tmp15 = globalThis.Object.freeze([]); +//│ tmp16 = globalThis.Object.freeze([ +//│ tmp15 +//│ ]); +//│ tmp17 = globalThis.Object.freeze(new Block.Symbol("match1")); +//│ tmp18 = globalThis.Object.freeze(new Block.FunDefn(tmp17, tmp16, tmp14, true)); +//│ return tmp18 +//│ } +//│ static lit_gen() { +//│ let fname, args, set, scrut; +//│ fname = "lit"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = Expressions.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = Expressions.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let lit, return1, ctx, tmp, tmp1, tmp2, proped, propedBlock, propedShape, block, newName, ret; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ return1 = globalThis.Object.freeze(new Block.Return(lit, false)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp = globalThis.Object.freeze(new Block.Symbol("lit")); +//│ tmp1 = globalThis.Object.freeze([]); +//│ tmp2 = globalThis.Object.freeze([ +//│ tmp1 +//│ ]); +//│ proped = ShapeSet.prop(Expressions.defCtx, ctx, Expressions.cache, return1); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp, tmp2, propedBlock, true)); +//│ newName = Expressions.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ static assign_gen() { +//│ let fname, args, set, scrut; +//│ fname = "assign"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = Expressions.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = Expressions.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let x1, y, sym, sym1, tmp, lit, sym2, tmp1, sym3, tmp2, return1, assign, assign1, tmp3, ctx, tmp4, tmp5, tmp6, proped, propedBlock, propedShape, block, newName, ret; +//│ sym = globalThis.Object.freeze(new Block.Symbol("x")); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("y")); +//│ tmp = globalThis.Object.freeze([ +//│ sym, +//│ sym1 +//│ ]); +//│ lit = globalThis.Object.freeze(new Block.ValueLit(42)); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("x")); +//│ tmp1 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ x1 = tmp1; +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("y")); +//│ tmp2 = globalThis.Object.freeze(new Block.ValueRef(sym3)); +//│ y = tmp2; +//│ return1 = globalThis.Object.freeze(new Block.Return(tmp2, false)); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym3, tmp1, return1)); +//│ assign1 = globalThis.Object.freeze(new Block.Assign(sym2, lit, assign)); +//│ tmp3 = globalThis.Object.freeze(new Block.Scoped(tmp, assign1)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp4 = globalThis.Object.freeze(new Block.Symbol("assign")); +//│ tmp5 = globalThis.Object.freeze([]); +//│ tmp6 = globalThis.Object.freeze([ +//│ tmp5 +//│ ]); +//│ proped = ShapeSet.prop(Expressions.defCtx, ctx, Expressions.cache, tmp3); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp4, tmp6, propedBlock, true)); +//│ newName = Expressions.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ static tup1_gen() { +//│ let fname, args, set, scrut; +//│ fname = "tup1"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = Expressions.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = Expressions.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let tmp, lit, tmp1, tmp2, lit1, tmp3, tmp4, tup, return1, ctx, tmp5, tmp6, tmp7, proped, propedBlock, propedShape, block, newName, ret; +//│ tmp = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp1 = globalThis.Object.freeze(new Block.Arg(tmp, lit)); +//│ tmp2 = option.None; +//│ lit1 = globalThis.Object.freeze(new Block.ValueLit(2)); +//│ tmp3 = globalThis.Object.freeze(new Block.Arg(tmp2, lit1)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp1, +//│ tmp3 +//│ ]); +//│ tup = globalThis.Object.freeze(new Block.Tuple(tmp4)); +//│ return1 = globalThis.Object.freeze(new Block.Return(tup, false)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp5 = globalThis.Object.freeze(new Block.Symbol("tup1")); +//│ tmp6 = globalThis.Object.freeze([]); +//│ tmp7 = globalThis.Object.freeze([ +//│ tmp6 +//│ ]); +//│ proped = ShapeSet.prop(Expressions.defCtx, ctx, Expressions.cache, return1); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp5, tmp7, propedBlock, true)); +//│ newName = Expressions.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ static tup2_gen() { +//│ let fname, args, set, scrut; +//│ fname = "tup2"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = Expressions.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = Expressions.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let tmp, lit, tmp1, tmp2, tmp3, sym, var1, tmp4, tmp5, tup, return1, ctx, tmp6, tmp7, tmp8, proped, propedBlock, propedShape, block, newName, ret; +//│ tmp = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp1 = globalThis.Object.freeze(new Block.Arg(tmp, lit)); +//│ tmp2 = false; +//│ tmp3 = globalThis.Object.freeze(new option.Some(tmp2)); +//│ sym = globalThis.Object.freeze(new Block.Symbol("x1")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ tmp4 = globalThis.Object.freeze(new Block.Arg(tmp3, var1)); +//│ tmp5 = globalThis.Object.freeze([ +//│ tmp1, +//│ tmp4 +//│ ]); +//│ tup = globalThis.Object.freeze(new Block.Tuple(tmp5)); +//│ return1 = globalThis.Object.freeze(new Block.Return(tup, false)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp6 = globalThis.Object.freeze(new Block.Symbol("tup2")); +//│ tmp7 = globalThis.Object.freeze([]); +//│ tmp8 = globalThis.Object.freeze([ +//│ tmp7 +//│ ]); +//│ proped = ShapeSet.prop(Expressions.defCtx, ctx, Expressions.cache, return1); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp6, tmp8, propedBlock, true)); +//│ newName = Expressions.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ static dynsel_gen() { +//│ let fname, args, set, scrut; +//│ fname = "dynsel"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = Expressions.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = Expressions.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let tmp, sym, tmp1, tmp2, lit, tmp3, tmp4, tup, sym1, tmp5, lit1, dynsel, return1, assign, tmp6, ctx, tmp7, tmp8, tmp9, proped, propedBlock, propedShape, block, newName, ret; +//│ sym = globalThis.Object.freeze(new Block.Symbol("tmp")); +//│ tmp1 = globalThis.Object.freeze([ +//│ sym +//│ ]); +//│ tmp2 = option.None; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp3 = globalThis.Object.freeze(new Block.Arg(tmp2, lit)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ tup = globalThis.Object.freeze(new Block.Tuple(tmp4)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("tmp")); +//│ tmp5 = globalThis.Object.freeze(new Block.ValueRef(sym1)); +//│ tmp = tmp5; +//│ lit1 = globalThis.Object.freeze(new Block.ValueLit(0)); +//│ dynsel = globalThis.Object.freeze(new Block.DynSelect(tmp5, lit1, false)); +//│ return1 = globalThis.Object.freeze(new Block.Return(dynsel, false)); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym1, tup, return1)); +//│ tmp6 = globalThis.Object.freeze(new Block.Scoped(tmp1, assign)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp7 = globalThis.Object.freeze(new Block.Symbol("dynsel")); +//│ tmp8 = globalThis.Object.freeze([]); +//│ tmp9 = globalThis.Object.freeze([ +//│ tmp8 +//│ ]); +//│ proped = ShapeSet.prop(Expressions.defCtx, ctx, Expressions.cache, tmp6); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp7, tmp9, propedBlock, true)); +//│ newName = Expressions.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ static match1_gen() { +//│ let fname, args, set, scrut; +//│ fname = "match1"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = Expressions.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = Expressions.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let scrut1, sym, tmp, lit, sym1, tmp1, tmp2, sym2, sym3, var1, tmp3, sel, tmp4, lit1, return1, tmp5, tmp6, lit2, return2, tmp7, tmp8, sym4, sym5, var2, tmp9, sel1, tmp10, lit3, return3, tmp11, tmp12, end, lit4, return4, tmp13, branches, end1, match, assign, tmp14, ctx, tmp15, tmp16, tmp17, proped, propedBlock, propedShape, block, newName, ret; +//│ sym = globalThis.Object.freeze(new Block.Symbol("scrut")); +//│ tmp = globalThis.Object.freeze([ +//│ sym +//│ ]); +//│ lit = globalThis.Object.freeze(new Block.ValueLit(9)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("scrut")); +//│ tmp1 = globalThis.Object.freeze(new Block.ValueRef(sym1)); +//│ scrut1 = tmp1; +//│ tmp2 = option.None; +//│ sym2 = globalThis.Object.freeze(new Block.ClassSymbol("Bool", tmp2)); +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("runtime")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym3)); +//│ tmp3 = globalThis.Object.freeze(new Block.Symbol("unreachable")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, tmp3)); +//│ tmp4 = globalThis.Object.freeze(new Block.Cls(sym2, sel)); +//│ lit1 = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ return1 = globalThis.Object.freeze(new Block.Return(lit1, false)); +//│ tmp5 = globalThis.Object.freeze(new Block.Arm(tmp4, return1)); +//│ tmp6 = globalThis.Object.freeze(new Block.Lit(8)); +//│ lit2 = globalThis.Object.freeze(new Block.ValueLit(2)); +//│ return2 = globalThis.Object.freeze(new Block.Return(lit2, false)); +//│ tmp7 = globalThis.Object.freeze(new Block.Arm(tmp6, return2)); +//│ tmp8 = option.None; +//│ sym4 = globalThis.Object.freeze(new Block.ClassSymbol("Int", tmp8)); +//│ sym5 = globalThis.Object.freeze(new Block.Symbol("runtime")); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym5)); +//│ tmp9 = globalThis.Object.freeze(new Block.Symbol("unreachable")); +//│ sel1 = globalThis.Object.freeze(new Block.Select(var2, tmp9)); +//│ tmp10 = globalThis.Object.freeze(new Block.Cls(sym4, sel1)); +//│ lit3 = globalThis.Object.freeze(new Block.ValueLit(3)); +//│ return3 = globalThis.Object.freeze(new Block.Return(lit3, false)); +//│ tmp11 = globalThis.Object.freeze(new Block.Arm(tmp10, return3)); +//│ tmp12 = globalThis.Object.freeze([ +//│ tmp5, +//│ tmp7, +//│ tmp11 +//│ ]); +//│ end = globalThis.Object.freeze(new Block.End()); +//│ lit4 = globalThis.Object.freeze(new Block.ValueLit(0)); +//│ return4 = globalThis.Object.freeze(new Block.Return(lit4, false)); +//│ tmp13 = globalThis.Object.freeze(new option.Some(return4)); +//│ branches = globalThis.Object.freeze(new Block.Match(tmp1, tmp12, tmp13, end)); +//│ end1 = globalThis.Object.freeze(new Block.End()); +//│ match = Block.concat(branches, end1); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym1, lit, match)); +//│ tmp14 = globalThis.Object.freeze(new Block.Scoped(tmp, assign)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp15 = globalThis.Object.freeze(new Block.Symbol("match1")); +//│ tmp16 = globalThis.Object.freeze([]); +//│ tmp17 = globalThis.Object.freeze([ +//│ tmp16 +//│ ]); +//│ proped = ShapeSet.prop(Expressions.defCtx, ctx, Expressions.cache, tmp14); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp15, tmp17, propedBlock, true)); +//│ newName = Expressions.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "Expressions"]; +//│ }); +//│ > module Expressions with +//│ > fun lit() = 1 +//│ > fun assign() = +//│ > let x +//│ > let y +//│ > x = 42 +//│ > y = 42 +//│ > 42 +//│ > fun tup1() = [1, 2] +//│ > fun tup2() = [1, ..x1] +//│ > fun dynsel() = +//│ > let tmp +//│ > tmp = [1] +//│ > 1 +//│ > fun match1() = +//│ > let scrut +//│ > scrut = 9 +//│ > 3 //│ x = [1, 2, 3] class Outside(a) @@ -49,17 +646,17 @@ staged module ClassInstrumentation with fun app2() = Inside(1, 2) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL18:1:2114) +//│ ═══[RUNTIME ERROR] Error: Instantiate with non-ClassSymbol in shape propagation +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:785:43) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1278:28) +//│ at ClassInstrumentation.inst2_gen (REPL18:1:14047) +//│ at ClassInstrumentation.dump (REPL18:1:4691) +//│ at (REPL18:1:2279) //│ at REPL18:1:19459 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) //│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) module Nonstaged with fun f() = 1 @@ -69,19 +666,13 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL21:1:663) -//│ at REPL21:1:3810 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ > module Staged with +//│ > fun f() = 1 +//│ > module CallSubst with +//│ > fun call() = +//│ > let tmp +//│ > tmp = Nonstaged.f() +//│ > f() module Nonstaged with fun f() = 1 @@ -90,19 +681,10 @@ staged module Staged with staged module CallSubst with fun call() = 1 + 1 -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL24:1:665) -//│ at REPL24:1:3820 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ > module Staged with +//│ > fun f() = 1 +//│ > module CallSubst with +//│ > fun call() = 2 :w staged module Arguments with @@ -111,21 +693,21 @@ staged module Arguments with x fun g(x)(y, z)() = z //│ ╔══[WARNING] Multiple parameter lists are not supported in shape propagation yet. -//│ ║ l.112: fun g(x)(y, z)() = z +//│ ║ l.694: fun g(x)(y, z)() = z //│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL27:1:332) +//│ ═══[RUNTIME ERROR] TypeError: s1.shapeset is not iterable +//│ at ShapeSet.union (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:352:13) +//│ at Ctx.add (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:146:27) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1331:24) +//│ at Arguments.f_gen (REPL27:1:5232) +//│ at Arguments.dump (REPL27:1:1146) +//│ at (REPL27:1:484) //│ at REPL27:1:8580 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) staged module OtherBlocks with fun scope() = @@ -138,55 +720,31 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL30:1:1002) -//│ at REPL30:1:14393 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ > module OtherBlocks with +//│ > fun scope() = +//│ > let a +//│ > a = 1 +//│ > OtherBlocks.scope.locally(a) +//│ > fun breakAndLabel() = +//│ > let tmp +//│ > let scrut +//│ > scrut = 1 +//│ > tmp = 0 +//│ > 0 // :sjs staged module ClassDefs with class A -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL33:1:332) -//│ at REPL33:1:1828 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ > module ClassDefs with +//│ > // TODO: how to add the block IR to the cache, for class functions? staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) // fun g() = f() // TODO -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL36:1:1204) -//│ at REPL36:1:11129 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ > module ClassFunctions with +//│ > :todo staged module ValClass with @@ -197,71 +755,31 @@ staged module ValClass with class A() staged module A with fun f() = 1 -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL39:1:381) -//│ at REPL39:1:3491 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ > module A with +//│ > fun f() = 1 // nested module module A with staged module B with fun f() = 1 -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL42:1:474) -//│ at (REPL42:1:3916) -//│ at REPL42:1:4023 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ > module B with +//│ > fun f() = 1 staged module Test with fun g(x, y) = x fun k() = g(1, x) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL45:1:809) -//│ at REPL45:1:8485 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ > module Test with +//│ > fun g(x, y) = x +//│ > fun g_0(x, y) = 1 +//│ > fun k() = g_0(1, x1) staged module Simple with fun inc(x) = x + 1 fun t() = inc(41) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL48:1:1177) -//│ at REPL48:1:9229 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ > module Simple with +//│ > fun inc(x) = +(x, 1) +//│ > fun inc_0(x) = 42 +//│ > fun t() = inc_0(41) staged module Match with fun baz(x) = if x is @@ -270,19 +788,16 @@ staged module Match with else -1 fun foo() = baz("1") fun foo2() = baz(1) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL51:1:1532) -//│ at REPL51:1:17470 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ > module Match with +//│ > fun baz(x) = +//│ > if x is +//│ > Str then 0 +//│ > Int then +(x, 1) +//│ > else -1 +//│ > fun baz_0(x) = 0 +//│ > fun foo() = baz_0("1") +//│ > fun baz_1(x) = 2 +//│ > fun foo2() = baz_1(1) :sjs staged module Math with @@ -300,27 +815,27 @@ staged module Math with //│ runtime.Unit; //│ } //│ static { -//│ let tmp, tmp1, sym, var1, sym1, sel, tmp2, tmp3, tmp4, sym2, var2, tmp5, tmp6, tmp7, sym3, var3, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13; -//│ sym = globalThis.Object.freeze(new Block.Symbol("Math")); +//│ let tmp, tmp1, sym, var1, tmp2, tmp3, tmp4, sym1, var2, sym2, sel, tmp5, tmp6, tmp7, sym3, var3, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13; +//│ sym = globalThis.Object.freeze(new Block.Symbol("*")); //│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); -//│ sym1 = globalThis.Object.freeze(new Block.Symbol("pow")); -//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); //│ tmp2 = globalThis.Object.freeze([ -//│ Math.pow_gen, -//│ true +//│ undefined, +//│ false //│ ]); -//│ tmp3 = sel.hash(); +//│ tmp3 = var1.hash(); //│ tmp4 = globalThis.Object.freeze([ //│ tmp3, //│ tmp2 //│ ]); -//│ sym2 = globalThis.Object.freeze(new Block.Symbol("*")); -//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("Math")); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym1)); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("pow")); +//│ sel = globalThis.Object.freeze(new Block.Select(var2, sym2)); //│ tmp5 = globalThis.Object.freeze([ -//│ undefined, -//│ false +//│ Math.pow_gen, +//│ true //│ ]); -//│ tmp6 = var2.hash(); +//│ tmp6 = sel.hash(); //│ tmp7 = globalThis.Object.freeze([ //│ tmp6, //│ tmp5 @@ -687,16 +1202,16 @@ staged module Math with //│ }); //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] TypeError: ShapeSet.DefCtx is not a function -//│ at (REPL54:1:1527) -//│ at REPL54:1:17105 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ ═══[RUNTIME ERROR] RangeError: Maximum call stack size exceeded +//│ at renderValue (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:982:39) +//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:435:18) +//│ at renderSequence (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:479:35) +//│ at renderClassInstance (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:442:14) +//│ at renderValue (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:1185:42) +//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:435:18) +//│ at renderSequence (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:479:35) +//│ at renderClassInstance (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:442:14) +//│ at renderValue (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:1185:42) +//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:435:18) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 31b8ebd1d4..26530b9b2d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -205,126 +205,45 @@ sor(DefCtx.empty, Ctx.empty, inst) fun testBinOp(op, v1, v2) = let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] let c = Call(ValueRef(Symbol(op)), args) - sor(DefCtx.empty, Ctx.empty, c).0.lit + let def = DefCtx.empty + def.add(ValueRef(Symbol("+")), undefined, false) + def.add(ValueRef(Symbol("==")), undefined, false) + def.add(ValueRef(Symbol("===")), undefined, false) + def.add(ValueRef(Symbol("&&")), undefined, false) + sor(def, Ctx.empty, c).1.lit :expect 12 testBinOp("+", 10, 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' -//│ at testBinOp (REPL153:1:1143) -//│ at REPL156:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' +//│ = 12 :expect true testBinOp("==", 10, 10) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' -//│ at testBinOp (REPL153:1:1143) -//│ at REPL159:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' +//│ = true :expect false testBinOp("===", 10, "10") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' -//│ at testBinOp (REPL153:1:1143) -//│ at REPL162:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' +//│ = false :expect false testBinOp("&&", true, false) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' -//│ at testBinOp (REPL153:1:1143) -//│ at REPL165:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' +//│ = false fun testUnaryOp(op, v) = let args = [Arg(None, ValueLit(v))] let c = Call(ValueRef(Symbol(op)), args) - sor(DefCtx.empty, Ctx.empty, c).0.lit + let def = DefCtx.empty + def.add(ValueRef(Symbol("-")), undefined, false) + def.add(ValueRef(Symbol("!")), undefined, false) + def.add(ValueRef(Symbol("~")), undefined, false) + sor(def, Ctx.empty, c).1.lit :expect -10 testUnaryOp("-", 10) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' -//│ at testUnaryOp (REPL168:1:1006) -//│ at REPL171:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' +//│ = -10 :expect false testUnaryOp("!", true) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) -//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' -//│ at testUnaryOp (REPL168:1:1006) -//│ at REPL174:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:214) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' +//│ = false :re testUnaryOp("~", 10) @@ -438,14 +357,7 @@ val defs = DefCtx.empty.add(fPath, f_gen, true) val callF = Call(fPath, [Arg(None, ValueLit(12))]) sor(defs, Ctx.empty, callF) -//│ = [ -//│ End(), -//│ Call( -//│ Select(ValueRef(Symbol("M")), Symbol("f")), -//│ [Arg(None, ValueLit(12))] -//│ ), -//│ {Dyn()} -//│ ] +//│ = [End(), Call(ValueRef(Symbol("f1")), [Arg(None, ValueLit(12))]), {Lit(24)}] //│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None, ValueLit(12))]) val ctxXY = Ctx.empty @@ -610,7 +522,6 @@ val2path(1) //│ = [End(), ValueLit(1)] val2path([1, 2, 3]) -//│ > Assign(Symbol("tup_1"), Tuple([Arg(None, End()), Arg(None, End()), Arg(None, End())]), End()) //│ = [ //│ Assign( //│ Symbol("tup_1"), @@ -627,9 +538,9 @@ val2path(TestClass(1, 2)) //│ ═══[RUNTIME ERROR] Error: match error //│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) //│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:649:36) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:639:36) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:652:51) +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:642:51) //│ at REPL237:1:494 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) @@ -638,15 +549,14 @@ val2path(TestClass(1, 2)) val2path(TestClass(1, [1,2])) -//│ > Assign(Symbol("tup_3"), Tuple([Arg(None, End()), Arg(None, End())]), End()) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) //│ ═══[RUNTIME ERROR] Error: match error //│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) //│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:649:36) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:639:36) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:652:51) +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:642:51) //│ at REPL240:1:168 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) From 2ab853f084a93f6b655d6e596a0badddd299f00c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 19 Mar 2026 21:02:44 +0800 Subject: [PATCH 352/654] fix key for cache entry --- .../scala/hkmc2/codegen/Instrumentation.scala | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index a0a8890b3f..967dd0ce44 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -356,10 +356,13 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb case Define(c: ClsLikeDefn, rest) if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => val companion = c.companion.get val isym = companion.isym - val stagedMethods = companion.methods.map(stageMethod) val ctor = FunDefn.withFreshSymbol(S(isym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), companion.ctor)(false) - val stagedCtor = stageMethod(ctor) + // val stagedCtor = stageMethod(ctor) + val (stagedMethods, cacheEntries) = (ctor :: companion.methods).map(f => + val staged = stageMethod(f) + (staged, (k: Path => Block) => call(isym.asPath.selSN(staged.sym.nme), Nil)(p => tuple(Ls(toValue(f.sym.nme), p))(k))) + ).unzip // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol("cache", Nil, true) @@ -367,7 +370,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb val cachePath = isym.asPath.selSN("cache") // initialize cache for the module def cacheDecl(rest: Block) = - (stagedCtor :: stagedMethods).map(cacheEntry).collectApply: cacheTups => + cacheEntries.collectApply: cacheTups => tuple(cacheTups): tup => assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => assign(Instantiate(mut = false, helperMod("FunCache"), Ls(Arg(N, map)))): mapInit => @@ -397,10 +400,10 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb call(printFun, Ls(isym.asPath.selSN("generatorMap")), false): _ => rest - val (genMethods, generatorEntries) = companion.methods.map(f => { + val (genMethods, generatorEntries) = companion.methods.map(f => val gen = genMethod(f, cachePath) (gen, tuple(Ls(toValue(f.sym.nme), isym.asPath.selSN(gen.sym.nme)))) - }).unzip + ).unzip val generatorMapSym = BlockMemberSymbol("generatorMap", Nil, true) val generatorMapTsym = TermSymbol(syntax.ImmutVal, S(isym), Tree.Ident("generatorMap")) @@ -412,7 +415,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb // used for staging classes inside modules val newCompanion = companion.copy( - methods = stagedCtor :: companion.methods ++ stagedMethods ++ genMethods, + methods = companion.methods ++ stagedMethods ++ genMethods, ctor = generatorMapDecl(cacheDecl(debugCont(genCls.applyBlock(companion.ctor)))), publicFields = cacheSym -> cacheTsym :: companion.publicFields ) From d37bc3e2b8e014709984666b5fb5fb013dc4a06c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 19 Mar 2026 23:00:59 +0800 Subject: [PATCH 353/654] formatting --- hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 967dd0ce44..9d05ed66d5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -123,7 +123,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb baseSym match case _: ClassSymbol => transformParamsOpt(paramsOpt): paramsOpt => - auxParams.map(ps => transformParamList(ps)).collectApply: auxParams => + auxParams.map(transformParamList).collectApply: auxParams => tuple(auxParams): auxParams => blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(k) case _: ModuleOrObjectSymbol => From c2e23c1e134e840ba265034d8e289bc8264dc899 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:17:55 +0800 Subject: [PATCH 354/654] restrict symbol renaming to TempSymbol and NoSymbol only --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 13 +++++-------- .../src/test/mlscript/block-staging/Functions.mls | 12 ++++++------ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 9d05ed66d5..ba5a5927e7 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -101,11 +101,10 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(k) - // retain names to built-in functions or function definitions - case t: TermSymbol if t.defn.exists(_.k == syntax.Fun) => - blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) - case _: BuiltinSymbol => - blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) + // avoid name collision + case _: TempSymbol | _: NoSymbol => + val name = scope.allocateOrGetName(sym) + blockCtor("Symbol", Ls(toValue(name)), symName)(k) case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(k) case baseSym: BaseTypeSymbol => @@ -128,9 +127,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(k) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(k) - case _ => - val name = scope.allocateOrGetName(sym) - blockCtor("Symbol", Ls(toValue(name)), symName)(k) + case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e97a982dcf..7a4a816ed1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -34,7 +34,7 @@ staged module Expressions with //│ > y = x //│ > y //│ > fun tup1() = [1, 2] -//│ > fun tup2() = [1, x1] +//│ > fun tup2() = [1, x] //│ > fun dynsel() = //│ > let tmp //│ > tmp = [1] @@ -51,11 +51,11 @@ staged module Expressions with //│ > let a //│ > let element1_ //│ > let element0_ -//│ > if x1 is +//│ > if x is //│ > [] then 1 //│ > [_, _] then -//│ > element0_ = Runtime.Tuple.get(x1, 0) -//│ > element1_ = Runtime.Tuple.get(x1, 1) +//│ > element0_ = Runtime.Tuple.get(x, 0) +//│ > element1_ = Runtime.Tuple.get(x, 1) //│ > if element0_ is //│ > 1 then //│ > if element1_ is @@ -85,7 +85,7 @@ staged module ClassInstrumentation with fun app1() = Outside(1) fun app2() = Inside(1, 2) //│ > fun ctor_() = -//│ > class Inside(a1, b) +//│ > class Inside(a, b) //│ > class NoArg //│ > fun inst1() = new Outside(1) //│ > fun inst2() = new ClassInstrumentation.NoArg() @@ -106,7 +106,7 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > fun ctor_1() = +//│ > fun ctor_() = //│ > () //│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } From e9f052804efef99d6640772f6334a9b307f0841c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:30:45 +0800 Subject: [PATCH 355/654] WIP: extend Block IR --- .../main/scala/hkmc2/codegen/Instrumentation.scala | 11 ++++++++++- hkmc2/shared/src/test/mlscript-compile/Block.mls | 8 ++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index ba5a5927e7..263e871d30 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -109,6 +109,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(k) case baseSym: BaseTypeSymbol => val name = scope.allocateOrGetName(sym) + // FIXME: we want the parent path for subtyping, but it is only available for ClsLikeDefn, not ClassDef val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) @@ -124,7 +125,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb transformParamsOpt(paramsOpt): paramsOpt => auxParams.map(transformParamList).collectApply: auxParams => tuple(auxParams): auxParams => - blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(k) + blockCtor("ClassSymbol", Ls(toValue(name), path, toValue(0), paramsOpt, auxParams, toValue(0)), symName)(k) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(k) case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) @@ -266,6 +267,14 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb optionNone(): none => // TODO: handle companion object blockCtor("ClsLikeDefn", Ls(c, methods, none)): cls => blockCtor("Define", Ls(cls, p))(k(_, ctx)) + case Define(v: ValDefn, rest) => + // TODO: only allow ValDefn inside ctors + transformBlock(rest): p => + transformOption(v.tsym.owner, transformSymbol(_, N, "test")): owner => + transformSymbol(v.sym): sym => + transformPath(v.rhs): rhs => + blockCtor("ValDefn", Ls(owner, sym, rhs)): v => + blockCtor("Define", Ls(v, p))(k(_, ctx)) case End(_) => ruleEnd()(k(_, ctx)) case Match(p, ks, dflt, rest) => transformPath(p): x => diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 805705b957..f1860ee49f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -20,7 +20,7 @@ type ParamList = Array[Symbol] class Symbol(val name: Str) // this is so that we're able to retrieve information about the class from the symbol class VirtualClassSymbol(val name: Str) extends Symbol(name) -class ClassSymbol(val name: Str, val value, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList]) extends Symbol(name) +class ClassSymbol(val name: Str, val value, val moduleValue, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList], parentPath) extends Symbol(name) class ModuleSymbol(val name: Str, val value) extends Symbol(name) class Arm(val cse: Case, val body: Block) @@ -66,6 +66,7 @@ class Path extends Result with class Defn with constructor + ValDefn(val tsym: Symbol, val sym: Symbol, val rhs: Path) ClsLikeDefn(val sym: ClassSymbol, val methods: Array[FunDefn], val companion: Opt[ClsLikeBody]) // companion unused FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block, val stage: Bool) @@ -155,7 +156,10 @@ fun showDefn(d: Defn): Str = ClsLikeDefn(sym, methods, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams).join("") + if methods is [] then "" else " with \n " + indent(methods.map(showDefn).join("\n")) - _ then "" + ValDefn(owner, sym, rhs) then + (if owner is Some(owner) then showSymbol(owner) else "") + + "." + showSymbol(sym) + " = " + showPath(rhs) + _ then "" fun showBlock(b) = if b is From bfcc26c58ff21fb083d661e0094ba03f978c4df4 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:32:53 +0800 Subject: [PATCH 356/654] refactor --- .../scala/hkmc2/codegen/Instrumentation.scala | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 263e871d30..b88a2e9c82 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -151,7 +151,6 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb ctx => tuple(arms): arms => ruleEnd(): e => - // TODO: use transformOption here def dfltStaged(k: (Path, Context) => Block) = dflt match case S(dflt) => @@ -219,12 +218,16 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(Path, Bool)] => Block): Block = args.map(transformArg).collectApply(k) + // maintain parameter names in instrumented code def transformParamList(ps: ParamList)(k: Path => Block) = ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) def transformParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = transformOption(pOpt, transformParamList)(k) + def transformParams(params: Ls[ParamList])(k: Path => Block) = + params.map(transformParamList).collectApply(tuple(_)(k)) + def transformCase(cse: Case)(using Context)(k: Path => Block): Block = cse match case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) @@ -306,16 +309,12 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb // TODO: rename, this is the continuation version of the function def transformFunDefn(f: FunDefn)(using Context)(k: ((Path, Context)) => Block): Block = transformBlock(f.body): (body, ctx) => - if f.params.length != 1 then + if f.params.length > 1 then raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) // maintain parameter names in instrumented code - f.params.map( - _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply - ).collectApply: paramListSyms => - paramListSyms.map(tuple(_)).collectApply: tups => - tuple(tups): tup => - blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => - blockCtor("FunDefn", Ls(sym, tup, body, toValue(true)))(k(_, ctx)) + transformParams(f.params): paramList => + blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => + blockCtor("FunDefn", Ls(sym, paramList, body, toValue(true)))(k(_, ctx)) def stageMethod(f: FunDefn): FunDefn = val genSymName = f.sym.nme + "_instr" @@ -326,17 +325,13 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb val argSyms = f.params.flatMap(_.params).map(_.sym) val newBody = val rest = transformBlock(f.body)(using Context(new HashMap())): body => - if f.params.length != 1 then + if f.params.length > 1 then raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) // maintain parameter names in instrumented code - f.params.map( - _.params.map(p => blockCtor("Symbol", Ls(toValue(p.sym.nme)))).collectApply - ).collectApply: paramListSyms => - paramListSyms.map(tuple(_)).collectApply: tups => - tuple(tups): tup => - transformSymbol(f.sym): sym => - blockCtor("FunDefn", Ls(sym, tup, body, toValue(true))): block => - Return(block, false) + transformParams(f.params): paramList => + transformSymbol(f.sym): sym => + blockCtor("FunDefn", Ls(sym, paramList, body, toValue(true))): block => + Return(block, false) (Scoped(Set(argSyms*), rest)) f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) From 4c6459ad9c069fb57082f9124e881cf44599aaa8 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:47:39 +0800 Subject: [PATCH 357/654] remove unused field from FunDefn --- .../scala/hkmc2/codegen/Instrumentation.scala | 4 +-- .../src/test/mlscript-compile/Block.mls | 4 +-- .../mlscript-compile/SpecializeHelpers.mls | 4 +-- .../test/mlscript/block-staging/PrintCode.mls | 26 ++++++++++--------- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index b88a2e9c82..f240ff0a3e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -313,8 +313,8 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) // maintain parameter names in instrumented code transformParams(f.params): paramList => - blockCtor("Symbol", Ls(toValue(f.sym.nme))): sym => - blockCtor("FunDefn", Ls(sym, paramList, body, toValue(true)))(k(_, ctx)) + transformSymbol(f.sym): sym => + blockCtor("FunDefn", Ls(sym, paramList, body))(k(_, ctx)) def stageMethod(f: FunDefn): FunDefn = val genSymName = f.sym.nme + "_instr" diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index f1860ee49f..7c9631d596 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -68,7 +68,7 @@ class Defn with constructor ValDefn(val tsym: Symbol, val sym: Symbol, val rhs: Path) ClsLikeDefn(val sym: ClassSymbol, val methods: Array[FunDefn], val companion: Opt[ClsLikeBody]) // companion unused - FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block, val stage: Bool) + FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused @@ -150,7 +150,7 @@ fun showParamList(ps: Array[ParamList]) = fun showDefn(d: Defn): Str = if d is - FunDefn(sym, ps, body, _) then + FunDefn(sym, ps, body) then "fun " + showSymbol(sym) + showParamList(ps) + " =" + (if body is Return then " " else "\n ") + indent(showBlock(body)) ClsLikeDefn(sym, methods, _) then diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index e7153f0b27..7d35e6d5fd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -25,14 +25,14 @@ fun specializeName(funName, shapes) = ).join("") fun propStub(block, shapes) = [block, Dyn()] -fun specialize(cache, block, shapes) = if block is FunDefn(Symbol(funName), ps, body, stage) then +fun specialize(cache, block, shapes) = if block is FunDefn(Symbol(funName), ps, body) then // replace function symbol in block definition to new name let newName = specializeName(funName, shapes) if cache.getFun(newName) is Some(x) then x None then let newBody = propStub(body, shapes) - cache.setFun(newName, FunDefn(Symbol(newName), ps, newBody, stage)) + cache.setFun(newName, FunDefn(Symbol(newName), ps, newBody)) class FunCache(val cache: Map[String, Symbol]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 1964474ddd..430b5ffd71 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -7,7 +7,7 @@ import "../../mlscript-compile/Option.mls" open Block open Option -printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false)) +printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false))) //│ > fun f(x) = 1 printCode(ValueLit(true)) @@ -31,30 +31,32 @@ printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) //│ > p.x //│ > p.(field) -class A(val x)(y) class B -let aSym = ClassSymbol("A", A, Some([Symbol("x")]), [[Symbol("y")]]) -let bSym = ClassSymbol("B", B, None, []) -//│ aSym = ClassSymbol( +class D(val x)(y) extends B +let bSym = ClassSymbol("B", B, undefined, None, [], undefined) +let dSym = ClassSymbol("A", D, undefined, Some([Symbol("x")]), [[Symbol("y")]], B) +//│ bSym = ClassSymbol("B", class B, undefined, None, [], _) +//│ dSym = ClassSymbol( //│ "A", -//│ fun A { class: class A }, +//│ fun D { class: class D }, +//│ undefined, //│ Some([Symbol("x")]), -//│ [[Symbol("y")]] +//│ [[Symbol("y")]], +//│ _ //│ ) -//│ bSym = ClassSymbol("B", class B, None, []) printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) -printCode(Instantiate(ValueRef(aSym), [Arg(ValueLit(0))])) +printCode(Instantiate(ValueRef(dSym), [Arg(ValueLit(0))])) printCode(Tuple([Arg(ValueRef(Symbol("x"))), Arg(ValueRef(Symbol("y")))])) //│ > f(3) //│ > new A(0) //│ > [x, y] -let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false) -//│ f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false) +let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) +//│ f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) printCode(f) -printCode(ClsLikeDefn(aSym, [f], None)) +printCode(ClsLikeDefn(dSym, [f], None)) printCode(ClsLikeDefn(bSym, [], None)) //│ > fun f(x) = 1 //│ > class A(x)(y) with From 5bc8b798dc4c0814963cd295ae353de41b4abf17 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:10:10 +0800 Subject: [PATCH 358/654] extend staging to classes --- .../scala/hkmc2/codegen/Instrumentation.scala | 107 +++++++++--------- .../test/mlscript/block-staging/Classes.mls | 87 ++++++++++++++ .../test/mlscript/block-staging/Syntax.mls | 29 +++-- 3 files changed, 155 insertions(+), 68 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/Classes.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index f240ff0a3e..cf775046d6 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -339,56 +339,71 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb def cacheEntry(f: FunDefn)(k: Path => Block) = call(f.owner.get.asPath.selSN(f.sym.nme), Nil)(instr => tuple(Ls(toValue(f.sym.nme), instr))(k)) - def genMethod(f: FunDefn, cachePath: Path): FunDefn = + def genMethod(f: FunDefn, cachePath: Path, forClass: Bool): FunDefn = val genSymName = f.sym.nme + "_gen" val sym = BlockMemberSymbol(genSymName, Nil, false) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) + val params = if forClass then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: f.params else f.params val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => - f.params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => - tuple(tups): tups => - call(helperMod("specialize"), Ls(cachePath, instr.selSN("value"), tups)): res => + params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => + tuple(tups): args => + call(helperMod("specialize"), Ls(cachePath, instr.selSN("value"), args)): res => Return(res, false) - f.copy(sym = sym, dSym = dSym, body = body)(false) + f.copy(params = params, sym = sym, dSym = dSym, body = body)(false) override def applyBlock(b: Block): Block = super.applyBlock(b) match - // find modules with staged annotation - case Define(c: ClsLikeDefn, rest) if c.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) => - val companion = c.companion.get - val isym = companion.isym - - val ctor = FunDefn.withFreshSymbol(S(isym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), companion.ctor)(false) - // val stagedCtor = stageMethod(ctor) - val (stagedMethods, cacheEntries) = (ctor :: companion.methods).map(f => + // TODO: assume staged classes have no companion module + // find modules with staged annotation, or classes without companion module + case Define(defn: ClsLikeDefn, rest) + if defn.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) || + defn.companion.isEmpty && defn.isym.defn.exists(_.hasStagedModifier.isDefined) => + val (sym, companion, ctor, methods) = defn.companion match + case S(companion) => (companion.isym, companion, companion.ctor, companion.methods) + case N => + if !defn.privateFields.isEmpty then + raise(ErrorReport(msg"Staged classes must be a data class." -> defn.sym.toLoc :: Nil)) + return End() + (defn.sym, ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End()), defn.ctor, defn.methods) + + val modSym = companion.isym + + // avoid name clash of cache and generator map for derived staged classes + val suffix = "$" + scope.allocateOrGetName(sym) + // for storing specialized functions in each staged module + val cacheNme = "cache" + suffix + val cacheSym = BlockMemberSymbol(cacheNme, Nil, true) + val cacheTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(cacheNme)) + val cachePath = modSym.asPath.selSN(cacheNme) + val generatorMapNme = "generatorMap" + suffix + val generatorMapSym = BlockMemberSymbol(generatorMapNme, Nil, true) + val generatorMapTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(generatorMapNme)) + + val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), ctor)(false) + val (stagedMethods, cacheEntries) = (ctorFun :: methods).map(f => val staged = stageMethod(f) - (staged, (k: Path => Block) => call(isym.asPath.selSN(staged.sym.nme), Nil)(p => tuple(Ls(toValue(f.sym.nme), p))(k))) + (staged, (k: Path => Block) => call(modSym.asPath.selSN(staged.sym.nme), Nil)(p => tuple(Ls(toValue(f.sym.nme), p))(k))) + ).unzip + val (genMethods, generatorEntries) = methods.map(f => + val gen = genMethod(f, cachePath, defn.companion.isEmpty) + (gen, tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme)))) ).unzip - // for storing specialized functions in each staged module - val cacheSym = BlockMemberSymbol("cache", Nil, true) - val cacheTsym = TermSymbol(syntax.ImmutVal, S(isym), Tree.Ident("cache")) - val cachePath = isym.asPath.selSN("cache") // initialize cache for the module def cacheDecl(rest: Block) = cacheEntries.collectApply: cacheTups => tuple(cacheTups): tup => - assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => - assign(Instantiate(mut = false, helperMod("FunCache"), Ls(Arg(N, map)))): mapInit => - Define(ValDefn(cacheTsym, cacheSym, mapInit), rest) - - // add generator functions for classes within the constructor - val genCls = new BlockTransformer(new SymbolSubst()): - override def applyBlock(b: Block): Block = super.applyBlock(b) match - case Define(c: ClsLikeDefn, rest) if c.companion.isEmpty => - val genMethods = c.methods.map(genMethod(_, cachePath)) - val stagedMethods = c.methods.map(stageMethod) - // FIXME: add the default staged block IR to the cache - val newModule = c.copy(methods = c.methods ++ stagedMethods ++ genMethods) - Define(newModule, rest) - case b => b - - // NOTE: this debug printing only works for top-level modules, nested modules don't work + this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => + assign(Instantiate(mut = false, helperMod("FunCache"), Ls(Arg(N, map)))): funCache => + Define(ValDefn(cacheTsym, cacheSym, funCache), rest) + + def generatorMapDecl(rest: Block) = + generatorEntries.collectApply: defs => + tuple(defs): tup => + this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => + Define(ValDefn(generatorMapTsym, generatorMapSym, map), rest) + // TODO: remove this. only for testing def debugCont(rest: Block) = val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") @@ -398,30 +413,16 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb assign(options): options => call(cachePath.selSN("toString"), Nil, false): str => call(printFun, Ls(str), false): _ => - call(printFun, Ls(isym.asPath.selSN("generatorMap")), false): _ => - rest - - val (genMethods, generatorEntries) = companion.methods.map(f => - val gen = genMethod(f, cachePath) - (gen, tuple(Ls(toValue(f.sym.nme), isym.asPath.selSN(gen.sym.nme)))) - ).unzip - - val generatorMapSym = BlockMemberSymbol("generatorMap", Nil, true) - val generatorMapTsym = TermSymbol(syntax.ImmutVal, S(isym), Tree.Ident("generatorMap")) - def generatorMapDecl(rest: Block) = - generatorEntries.collectApply: defs => - tuple(defs): tup => - assign(Instantiate(mut = false, State.globalThisSymbol.asPath.selSN("Map"), Ls(Arg(N, tup)))): map => - Define(ValDefn(generatorMapTsym, generatorMapSym, map), rest) + call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false)(_ => rest) // used for staging classes inside modules val newCompanion = companion.copy( methods = companion.methods ++ stagedMethods ++ genMethods, - ctor = generatorMapDecl(cacheDecl(debugCont(genCls.applyBlock(companion.ctor)))), - publicFields = cacheSym -> cacheTsym :: companion.publicFields + ctor = cacheDecl(generatorMapDecl(debugCont(companion.ctor))), + publicFields = companion.publicFields ) - val newModule = c.copy(companion = S(newCompanion)) - Define(newModule, rest) + val newClsLikeDefn = defn.copy(companion = S(newCompanion)) + Define(newClsLikeDefn, rest) case b => b def mkDefnMap(b: Block): Unit = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls new file mode 100644 index 0000000000..0381958ae9 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -0,0 +1,87 @@ +:js +:staging + +:sir +staged class C with + fun f() = 1 +//│ Lowered: +//│ let C⁰; +//│ define C⁰ as staged class C¹ { +//│ method f⁰ = fun () { +//│ return 1 +//│ } +//│ } {} +//│ module C² { +//│ constructor { +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13; +//│ set tmp7 = C².ctor$_instr﹖(); +//│ set tmp8 = ["ctor$", tmp7]; +//│ set tmp9 = C².f_instr﹖(); +//│ set tmp10 = ["f", tmp9]; +//│ set tmp11 = [tmp8, tmp10]; +//│ set tmp12 = new globalThis⁰.Map﹖(tmp11); +//│ set tmp13 = new SpecializeHelpers⁰.FunCache﹖(tmp12); +//│ define cache$C⁰ as val cache$C¹ = tmp13; +//│ set tmp4 = ["f", C².f_gen﹖]; +//│ set tmp5 = [tmp4]; +//│ set tmp6 = new globalThis⁰.Map﹖(tmp5); +//│ define generatorMap$C⁰ as val generatorMap$C¹ = tmp6; +//│ set tmp = { "indent": true }; +//│ set tmp1 = C².cache$C﹖.toString﹖(); +//│ set tmp2 = globalThis⁰.console﹖.log﹖(tmp1); +//│ set tmp3 = globalThis⁰.console﹖.log﹖(C².generatorMap$C﹖); +//│ end +//│ } +//│ method ctor$_instr⁰ = fun () { +//│ let end, tmp, tmp1, sym, tmp2; +//│ set end = new Block⁰.End﹖(); +//│ set tmp = []; +//│ set tmp1 = [tmp]; +//│ set sym = new Block⁰.Symbol﹖("ctor$"); +//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, end, true); +//│ return tmp2 +//│ } +//│ method f_instr⁰ = fun () { +//│ let lit, return1, tmp, tmp1, sym, tmp2; +//│ set lit = new Block⁰.ValueLit﹖(1); +//│ set return1 = new Block⁰.Return﹖(lit, false); +//│ set tmp = []; +//│ set tmp1 = [tmp]; +//│ set sym = new Block⁰.Symbol﹖("f"); +//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, return1, true); +//│ return tmp2 +//│ } +//│ method f_gen⁰ = fun (cls)() { +//│ let tmp, tmp1, tmp2, tmp3, tmp4; +//│ set tmp = C².cache$C﹖.getFun﹖("f"); +//│ set tmp1 = [cls]; +//│ set tmp2 = []; +//│ set tmp3 = [tmp1, tmp2]; +//│ set tmp4 = SpecializeHelpers⁰.specialize﹖(C².cache$C﹖, tmp.value﹖, tmp3); +//│ return tmp4 +//│ } +//│ }; +//│ end +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } + +:e +staged class C(x) +//│ ╔══[COMPILATION ERROR] Staged classes must be a data class. +//│ ║ l.71: staged class C(x) +//│ ╙── ^^^^^^^^^^ + +staged class B(val x) with + fun f(y) = this.x + y +staged class D(val x) extends B(x+1) with + fun f() = 42 +//│ > fun ctor_() = +//│ > B1.x = x +//│ > fun f(y) = +(B1.x, y) +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > fun ctor_() = +//│ > D1.x = x +//│ > fun f() = 42 +//│ > Map(1) { 'f' => [Function: f_gen] } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index c42ef2a7f2..c9b35b4a7f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -9,16 +9,16 @@ staged module A //│ head = Ident of "A" //│ rhs = N +staged class Foo + // TODO: reject these annotations? staged object Foo -staged class Foo - staged fun f() = 0 :js :sir -:staging +:staging // TODO: this is only used to import Block, the printout is undesired staged module A //│ Lowered: //│ let A⁰; @@ -26,22 +26,21 @@ staged module A //│ staged //│ } //│ module A² { -//│ val cache⁰; //│ constructor { //│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10; -//│ set tmp9 = []; -//│ set tmp10 = new globalThis⁰.Map﹖(tmp9); -//│ define generatorMap⁰ as val generatorMap¹ = tmp10; -//│ set tmp4 = A².ctor$_instr﹖(); -//│ set tmp5 = ["ctor$_instr", tmp4]; -//│ set tmp6 = [tmp5]; -//│ set tmp7 = new globalThis⁰.Map﹖(tmp6); -//│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp7); -//│ define cache⁰ as val cache¹ = tmp8; +//│ set tmp6 = A².ctor$_instr﹖(); +//│ set tmp7 = ["ctor$", tmp6]; +//│ set tmp8 = [tmp7]; +//│ set tmp9 = new globalThis⁰.Map﹖(tmp8); +//│ set tmp10 = new SpecializeHelpers⁰.FunCache﹖(tmp9); +//│ define cache$A⁰ as val cache$A¹ = tmp10; +//│ set tmp4 = []; +//│ set tmp5 = new globalThis⁰.Map﹖(tmp4); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp5; //│ set tmp = { "indent": true }; -//│ set tmp1 = A².cache﹖.toString﹖(); +//│ set tmp1 = A².cache$A﹖.toString﹖(); //│ set tmp2 = globalThis⁰.console﹖.log﹖(tmp1); -//│ set tmp3 = globalThis⁰.console﹖.log﹖(A².generatorMap﹖); +//│ set tmp3 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); //│ end //│ } //│ method ctor$_instr⁰ = fun () { From 9c94565bf62530525b9575ae8d54aca9f055141a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:10:26 +0800 Subject: [PATCH 359/654] fixup! restrict symbol renaming to TempSymbol and NoSymbol only --- hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 328925aca4..3075bfe734 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -24,9 +24,9 @@ staged module D with fun matching() = 1 is Int 1 is C -//│ > fun ctor_1() = +//│ > fun ctor_() = //│ > () -//│ > fun f1() = 1 +//│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } //│ > fun ctor_() = //│ > class E From ea46c75d42064a7693967e1a007436e8df32218f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:23:03 +0800 Subject: [PATCH 360/654] various fixes for staging class ctors combine preCtor and ctor for staged classes add params for staged class ctors --- .../scala/hkmc2/codegen/Instrumentation.scala | 85 ++++++++++--------- .../mlscript-compile/SpecializeHelpers.mls | 14 +-- .../test/mlscript/block-staging/Classes.mls | 71 ++++++++++------ .../test/mlscript/block-staging/Functions.mls | 61 ++++++------- 4 files changed, 126 insertions(+), 105 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index cf775046d6..ef9c157497 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -306,7 +306,6 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}" -> N :: Nil)) End() - // TODO: rename, this is the continuation version of the function def transformFunDefn(f: FunDefn)(using Context)(k: ((Path, Context)) => Block): Block = transformBlock(f.body): (body, ctx) => if f.params.length > 1 then @@ -317,40 +316,17 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb blockCtor("FunDefn", Ls(sym, paramList, body))(k(_, ctx)) def stageMethod(f: FunDefn): FunDefn = - val genSymName = f.sym.nme + "_instr" - val genSym = BlockMemberSymbol(genSymName, Nil, false) + val stageSymName = f.sym.nme + "_instr" + val stageSym = BlockMemberSymbol(stageSymName, Nil, false) // turn into fundefn - val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) + val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(stageSymName)) val argSyms = f.params.flatMap(_.params).map(_.sym) val newBody = - val rest = transformBlock(f.body)(using Context(new HashMap())): body => - if f.params.length > 1 then - raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) - // maintain parameter names in instrumented code - transformParams(f.params): paramList => - transformSymbol(f.sym): sym => - blockCtor("FunDefn", Ls(sym, paramList, body, toValue(true))): block => - Return(block, false) + val rest = transformFunDefn(f)(using Context(new HashMap()))((block, _) => Return(block, false)) (Scoped(Set(argSyms*), rest)) - f.copy(sym = genSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) - - def cacheEntry(f: FunDefn)(k: Path => Block) = - call(f.owner.get.asPath.selSN(f.sym.nme), Nil)(instr => tuple(Ls(toValue(f.sym.nme), instr))(k)) - - def genMethod(f: FunDefn, cachePath: Path, forClass: Bool): FunDefn = - val genSymName = f.sym.nme + "_gen" - val sym = BlockMemberSymbol(genSymName, Nil, false) - val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) - - val params = if forClass then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: f.params else f.params - val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => - params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => - tuple(tups): args => - call(helperMod("specialize"), Ls(cachePath, instr.selSN("value"), args)): res => - Return(res, false) - f.copy(params = params, sym = sym, dSym = dSym, body = body)(false) + f.copy(sym = stageSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) override def applyBlock(b: Block): Block = super.applyBlock(b) match @@ -359,13 +335,22 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb case Define(defn: ClsLikeDefn, rest) if defn.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) || defn.companion.isEmpty && defn.isym.defn.exists(_.hasStagedModifier.isDefined) => - val (sym, companion, ctor, methods) = defn.companion match - case S(companion) => (companion.isym, companion, companion.ctor, companion.methods) + val (sym, companion, ctor, ctorParams, methods) = defn.companion match + // TODO: combine prector and ctor here + case S(companion) => (companion.isym, companion, companion.ctor, N, companion.methods) case N => if !defn.privateFields.isEmpty then - raise(ErrorReport(msg"Staged classes must be a data class." -> defn.sym.toLoc :: Nil)) + raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) return End() - (defn.sym, ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End()), defn.ctor, defn.methods) + val companion = ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End()) + val ctor = defn.preCtor.mapTail({ + case Return(res, implct) => assign(res)(_ => defn.ctor) + case _: End => defn.ctor + case _ => + raise(ErrorReport(msg"Unexpected BlockTail of preCtor, the tail will be discarded." -> defn.sym.toLoc :: Nil)) + defn.ctor + }) + (defn.sym, companion, ctor, defn.paramsOpt, defn.methods) val modSym = companion.isym @@ -380,15 +365,31 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb val generatorMapSym = BlockMemberSymbol(generatorMapNme, Nil, true) val generatorMapTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(generatorMapNme)) - val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil), Ls(PlainParamList(Nil)), ctor)(false) - val (stagedMethods, cacheEntries) = (ctorFun :: methods).map(f => + def genMethod(f: FunDefn, stagedPath: Path) = + val genSymName = f.sym.nme + "_gen" + val sym = BlockMemberSymbol(genSymName, Nil, false) + val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) + + val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: f.params else f.params + val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => + params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => + tuple(tups): args => + call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => + Return(res, false) + f.copy(params = params, sym = sym, dSym = dSym, body = body)(false) + + val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false) + val (helperMethods, cacheEntries, generatorEntries) = (ctorFun :: methods).map(f => val staged = stageMethod(f) - (staged, (k: Path => Block) => call(modSym.asPath.selSN(staged.sym.nme), Nil)(p => tuple(Ls(toValue(f.sym.nme), p))(k))) - ).unzip - val (genMethods, generatorEntries) = methods.map(f => - val gen = genMethod(f, cachePath, defn.companion.isEmpty) - (gen, tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme)))) - ).unzip + val stagedPath = modSym.asPath.selSN(staged.sym.nme) + val gen = genMethod(f, stagedPath) + + ( + Ls(staged, gen), + (k: Path => Block) => call(stagedPath, Nil)(p => tuple(Ls(toValue(f.sym.nme), p))(k)), + tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))) + ) + ).unzip3 // initialize cache for the module def cacheDecl(rest: Block) = @@ -417,7 +418,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb // used for staging classes inside modules val newCompanion = companion.copy( - methods = companion.methods ++ stagedMethods ++ genMethods, + methods = companion.methods ++ helperMethods.flatten, ctor = cacheDecl(generatorMapDecl(debugCont(companion.ctor))), publicFields = companion.publicFields ) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 7d35e6d5fd..2abe3ccae6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -23,16 +23,20 @@ fun specializeName(funName, shapes) = "," then "_2c" else s ).join("") -fun propStub(block, shapes) = [block, Dyn()] +fun propStub(block, shapes) = [block, shapes] -fun specialize(cache, block, shapes) = if block is FunDefn(Symbol(funName), ps, body) then +fun specialize(cache, funName, dflt, shapes) = // replace function symbol in block definition to new name let newName = specializeName(funName, shapes) + // console.log(cache.getFun(newName)) if cache.getFun(newName) is - Some(x) then x + Some(x) then [x.0.sym, x.1] None then - let newBody = propStub(body, shapes) - cache.setFun(newName, FunDefn(Symbol(newName), ps, newBody)) + let defn = dflt() + if defn is FunDefn(Symbol(_), ps, _) then + let res = propStub(defn, shapes) + let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, res.0.body), res.1]) + [entry.0.sym, entry.1] class FunCache(val cache: Map[String, Symbol]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 0381958ae9..0a4c0ea5c2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -1,6 +1,11 @@ :js :staging +staged class A(val a) +//│ > fun ctor_(a) = +//│ > A1.a = a +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } + :sir staged class C with fun f() = 1 @@ -13,19 +18,20 @@ staged class C with //│ } {} //│ module C² { //│ constructor { -//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13; -//│ set tmp7 = C².ctor$_instr﹖(); -//│ set tmp8 = ["ctor$", tmp7]; -//│ set tmp9 = C².f_instr﹖(); -//│ set tmp10 = ["f", tmp9]; -//│ set tmp11 = [tmp8, tmp10]; -//│ set tmp12 = new globalThis⁰.Map﹖(tmp11); -//│ set tmp13 = new SpecializeHelpers⁰.FunCache﹖(tmp12); -//│ define cache$C⁰ as val cache$C¹ = tmp13; -//│ set tmp4 = ["f", C².f_gen﹖]; -//│ set tmp5 = [tmp4]; -//│ set tmp6 = new globalThis⁰.Map﹖(tmp5); -//│ define generatorMap$C⁰ as val generatorMap$C¹ = tmp6; +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13, tmp14; +//│ set tmp8 = C².ctor$_instr﹖(); +//│ set tmp9 = ["ctor$", tmp8]; +//│ set tmp10 = C².f_instr﹖(); +//│ set tmp11 = ["f", tmp10]; +//│ set tmp12 = [tmp9, tmp11]; +//│ set tmp13 = new globalThis⁰.Map﹖(tmp12); +//│ set tmp14 = new SpecializeHelpers⁰.FunCache﹖(tmp13); +//│ define cache$C⁰ as val cache$C¹ = tmp14; +//│ set tmp4 = ["ctor$", C².ctor$_gen﹖]; +//│ set tmp5 = ["f", C².f_gen﹖]; +//│ set tmp6 = [tmp4, tmp5]; +//│ set tmp7 = new globalThis⁰.Map﹖(tmp6); +//│ define generatorMap$C⁰ as val generatorMap$C¹ = tmp7; //│ set tmp = { "indent": true }; //│ set tmp1 = C².cache$C﹖.toString﹖(); //│ set tmp2 = globalThis⁰.console﹖.log﹖(tmp1); @@ -38,9 +44,18 @@ staged class C with //│ set tmp = []; //│ set tmp1 = [tmp]; //│ set sym = new Block⁰.Symbol﹖("ctor$"); -//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, end, true); +//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, end); //│ return tmp2 //│ } +//│ method ctor$_gen⁰ = fun (cls)() { +//│ let tmp, tmp1, tmp2, tmp3, tmp4; +//│ set tmp = C².cache$C﹖.getFun﹖("ctor$"); +//│ set tmp1 = [cls]; +//│ set tmp2 = []; +//│ set tmp3 = [tmp1, tmp2]; +//│ set tmp4 = SpecializeHelpers⁰.specialize﹖(C².cache$C﹖, "ctor$", C².ctor$_instr﹖, tmp3); +//│ return tmp4 +//│ } //│ method f_instr⁰ = fun () { //│ let lit, return1, tmp, tmp1, sym, tmp2; //│ set lit = new Block⁰.ValueLit﹖(1); @@ -48,16 +63,16 @@ staged class C with //│ set tmp = []; //│ set tmp1 = [tmp]; //│ set sym = new Block⁰.Symbol﹖("f"); -//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, return1, true); +//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, return1); //│ return tmp2 //│ } -//│ method f_gen⁰ = fun (cls)() { +//│ method f_gen⁰ = fun (cls1)() { //│ let tmp, tmp1, tmp2, tmp3, tmp4; //│ set tmp = C².cache$C﹖.getFun﹖("f"); -//│ set tmp1 = [cls]; +//│ set tmp1 = [cls1]; //│ set tmp2 = []; //│ set tmp3 = [tmp1, tmp2]; -//│ set tmp4 = SpecializeHelpers⁰.specialize﹖(C².cache$C﹖, tmp.value﹖, tmp3); +//│ set tmp4 = SpecializeHelpers⁰.specialize﹖(C².cache$C﹖, "f", C².f_instr﹖, tmp3); //│ return tmp4 //│ } //│ }; @@ -65,23 +80,29 @@ staged class C with //│ > fun ctor_() = //│ > () //│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e staged class C(x) -//│ ╔══[COMPILATION ERROR] Staged classes must be a data class. -//│ ║ l.71: staged class C(x) +//│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. +//│ ║ l.86: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with fun f(y) = this.x + y staged class D(val x) extends B(x+1) with + val y = 1 fun f() = 42 -//│ > fun ctor_() = +//│ > fun ctor_(x) = //│ > B1.x = x //│ > fun f(y) = +(B1.x, y) -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > fun ctor_() = +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > fun ctor_(x) = +//│ > let tmp +//│ > let tmp1 +//│ > tmp1 = +(x, 1) +//│ > tmp = super(tmp1) //│ > D1.x = x +//│ > D1.y = 1 //│ > fun f() = 42 -//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 7a4a816ed1..54824239d0 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -65,7 +65,8 @@ staged module Expressions with //│ > else a = element0_ //│ > 3 //│ > else 0 -//│ > Map(7) { +//│ > Map(8) { +//│ > 'ctor$' => [Function: ctor$_gen], //│ > 'lit' => [Function: lit_gen], //│ > 'assign' => [Function: assign_gen], //│ > 'tup1' => [Function: tup1_gen], @@ -91,7 +92,8 @@ staged module ClassInstrumentation with //│ > fun inst2() = new ClassInstrumentation.NoArg() //│ > fun app1() = Outside(1) //│ > fun app2() = ClassInstrumentation.Inside(1, 2) -//│ > Map(4) { +//│ > Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], //│ > 'inst1' => [Function: inst1_gen], //│ > 'inst2' => [Function: inst2_gen], //│ > 'app1' => [Function: app1_gen], @@ -109,13 +111,16 @@ staged module CallSubst with //│ > fun ctor_() = //│ > () //│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > fun ctor_() = //│ > () //│ > fun call() = //│ > __no__symbol__ = Nonstaged.f() //│ > Staged.f() -//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'call' => [Function: call_gen] +//│ > } :ftc staged module Arguments with @@ -132,7 +137,11 @@ staged module Arguments with //│ > let tmp //│ > tmp = new Function_() //│ > tmp -//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } staged module OtherBlocks with fun scope() = @@ -158,7 +167,8 @@ staged module OtherBlocks with //│ > 2 then 0 //│ > 3 then 0 //│ > else 0 -//│ > Map(2) { +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], //│ > 'scope' => [Function: scope_gen], //│ > 'breakAndLabel' => [Function: breakAndLabel_gen] //│ > } @@ -167,7 +177,7 @@ staged module ClassDefs with class A //│ > fun ctor_() = //│ > class A -//│ > Map(0) {} +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } // TODO: how to add the block IR to the cache, for class functions? staged module ClassFunctions with @@ -181,28 +191,13 @@ staged module ClassFunctions with //│ > tmp = Arguments.f(1) //│ > +(1, tmp) //│ > fun g() = InnerClass.f() -//│ > Map(0) {} - -:todo ValDefn in ctor of class -staged module DataClass with - class A(val a) -//│ > fun ctor_() = -//│ > class A(a) -//│ > Map(0) {} - -// :lot -:todo ValDefn in class -staged module ValClass with - class A(val a) -//│ > fun ctor_() = -//│ > class A(a) -//│ > Map(0) {} +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } staged module ClassDefs with class A //│ > fun ctor_() = //│ > class A -//│ > Map(0) {} +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } staged module ClassFunctions with class InnerClass() with @@ -215,7 +210,7 @@ staged module ClassFunctions with //│ > tmp = Arguments.f(1) //│ > +(1, tmp) //│ > fun g() = InnerClass.f() -//│ > Map(0) {} +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } // name collision class A() @@ -224,7 +219,7 @@ staged module A with //│ > fun ctor_() = //│ > () //│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } // nested module module A with @@ -233,7 +228,7 @@ module A with //│ > fun ctor_() = //│ > () //│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo force enable :ftc to desugar Label and Break staged module M with @@ -243,18 +238,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.241: let x = 1 +//│ ║ l.236: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.241: let x = 1 +//│ ║ l.236: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.241: let x = 1 +//│ ║ l.236: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.241: let x = 1 +//│ ║ l.236: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -266,7 +261,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.266: fun g() = {1 : 2} +//│ ║ l.261: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -295,4 +290,4 @@ staged module Spread with //│ > x //│ > else 0 //│ > else 0 -//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } From 6411aa91fa0c0420c4003b57d82617a7a57fe03e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 24 Mar 2026 00:05:05 +0800 Subject: [PATCH 361/654] make ClassSymbols and ModuleSymbols unique --- .../scala/hkmc2/codegen/Instrumentation.scala | 30 +++- .../src/test/mlscript-compile/Block.mls | 19 ++- .../test/mlscript/block-staging/Classes.mls | 36 ++++- .../test/mlscript/block-staging/Functions.mls | 138 ++++++++++++++---- .../test/mlscript/block-staging/SymbolMap.mls | 27 ++++ 5 files changed, 213 insertions(+), 37 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index ef9c157497..0c2f78e65a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -52,6 +52,9 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb // TODO: there could be a fresh scope per function body, instead of a single one for the entire program val scope = Scope.empty(Scope.Cfg.default) val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() + val symbolMapSym: Symbol = TempSymbol(N, "symbolMap") + // only create symbolMap if we create entries to avoid changing IR for unrelated tests + var symbolMapUsed: Bool = false // helpers for constructing Block @@ -98,6 +101,9 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb // if sym is ClassSymbol, we may need pOpt to link to the path pointing to the value of the symbol def transformSymbol(sym: Symbol, pOpt: Option[Path] = N, symName: Str = "sym")(k: Path => Block): Block = + def checkMap(p: Path) = + symbolMapUsed = true + blockCall("checkMap", Ls(symbolMapSym, p))(k) sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(k) @@ -106,7 +112,7 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb val name = scope.allocateOrGetName(sym) blockCtor("Symbol", Ls(toValue(name)), symName)(k) case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => - blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(k) + blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap) case baseSym: BaseTypeSymbol => val name = scope.allocateOrGetName(sym) // FIXME: we want the parent path for subtyping, but it is only available for ClsLikeDefn, not ClassDef @@ -125,9 +131,9 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb transformParamsOpt(paramsOpt): paramsOpt => auxParams.map(transformParamList).collectApply: auxParams => tuple(auxParams): auxParams => - blockCtor("ClassSymbol", Ls(toValue(name), path, toValue(0), paramsOpt, auxParams, toValue(0)), symName)(k) + blockCtor("ClassSymbol", Ls(toValue(name), path, toValue(0), paramsOpt, auxParams, toValue(0)), symName)(checkMap) case _: ModuleOrObjectSymbol => - blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(k) + blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap) case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = @@ -336,7 +342,6 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb if defn.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) || defn.companion.isEmpty && defn.isym.defn.exists(_.hasStagedModifier.isDefined) => val (sym, companion, ctor, ctorParams, methods) = defn.companion match - // TODO: combine prector and ctor here case S(companion) => (companion.isym, companion, companion.ctor, N, companion.methods) case N => if !defn.privateFields.isEmpty then @@ -414,7 +419,10 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb assign(options): options => call(cachePath.selSN("toString"), Nil, false): str => call(printFun, Ls(str), false): _ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false)(_ => rest) + call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => + if symbolMapUsed + then call(printFun, Ls(symbolMapSym), false)(_ => rest) + else rest // used for staging classes inside modules val newCompanion = companion.copy( @@ -437,4 +445,14 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb def applyBlockFinal(b: Block) = mkDefnMap(b) - applyBlock(b) + val rest = applyBlock(b) + if symbolMapUsed then + Scoped( + Set(symbolMapSym), + Assign( + symbolMapSym, + Instantiate(false, State.globalThisSymbol.asPath.selSN("Map"), Nil), + rest + ) + ) + else rest diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 7c9631d596..263166729d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -17,8 +17,7 @@ type Literal = null | undefined | Str | Int | Num | Bool type ParamList = Array[Symbol] -class Symbol(val name: Str) -// this is so that we're able to retrieve information about the class from the symbol +class Symbol(val name: Str) extends CachedHash class VirtualClassSymbol(val name: Str) extends Symbol(name) class ClassSymbol(val name: Str, val value, val moduleValue, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList], parentPath) extends Symbol(name) class ModuleSymbol(val name: Str, val value) extends Symbol(name) @@ -40,8 +39,20 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = ["Bool", b] and b is Bool then true else false - -// Classes defined in Block.scala +// TODO: move this to somewhere appropriate +// TODO: is this the only way? we cannot assign a property to a class that is not extensible +fun checkMap(symbolMap, value) = + // this approach of updating the class value doesn't work if the class is not extensible + // if classValue.("stagedSymbol") is + // v and v is Symbol then v + // else set classValue.("stagedSymbol") = value; value + // console.log(symbolMap, value) + // FIXME: depends on hashes of equal data classes to be equal + let key = value.hash() + let v = symbolMap.get(key) + if v is + Symbol then v + else symbolMap.set(key, value); value class Arg(val value: Path) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 0a4c0ea5c2..2f852f7a06 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -5,6 +5,15 @@ staged class A(val a) //│ > fun ctor_(a) = //│ > A1.a = a //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } +//│ > Map(1) { +//│ > 'ClassSymbol("A1", fun A { class: class A }, 0, Some([Symbol("a")]), [], _)' => ClassSymbol { +//│ > name: 'A1', +//│ > value: [Function: A] { class: [Function] }, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } +//│ > } :sir staged class C with @@ -85,7 +94,7 @@ staged class C with :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.86: staged class C(x) +//│ ║ l.95: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with @@ -97,6 +106,15 @@ staged class D(val x) extends B(x+1) with //│ > B1.x = x //│ > fun f(y) = +(B1.x, y) //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(1) { +//│ > 'ClassSymbol("B1", fun B { class: class B }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { +//│ > name: 'B1', +//│ > value: [Function: B] { class: [Function] }, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } +//│ > } //│ > fun ctor_(x) = //│ > let tmp //│ > let tmp1 @@ -106,3 +124,19 @@ staged class D(val x) extends B(x+1) with //│ > D1.y = 1 //│ > fun f() = 42 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(2) { +//│ > 'ClassSymbol("B1", fun B { class: class B }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { +//│ > name: 'B1', +//│ > value: [Function: B] { class: [Function] }, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > 'ClassSymbol("D1", fun D { class: class D }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { +//│ > name: 'D1', +//│ > value: [Function: D] { class: [Function] }, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } +//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 54824239d0..53e8da4111 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -28,8 +28,8 @@ staged module Expressions with //│ > () //│ > fun lit() = 1 //│ > fun assign() = -//│ > let x //│ > let y +//│ > let x //│ > x = 42 //│ > y = x //│ > y @@ -75,6 +75,10 @@ staged module Expressions with //│ > 'match1' => [Function: match1_gen], //│ > 'match2' => [Function: match2_gen] //│ > } +//│ > Map(2) { +//│ > 'VirtualClassSymbol("Bool")' => VirtualClassSymbol { name: 'Bool' }, +//│ > 'VirtualClassSymbol("Int")' => VirtualClassSymbol { name: 'Int' } +//│ > } //│ x = [1, 2, 3] class Outside(a) @@ -99,6 +103,36 @@ staged module ClassInstrumentation with //│ > 'app1' => [Function: app1_gen], //│ > 'app2' => [Function: app2_gen] //│ > } +//│ > Map(4) { +//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { +//│ > name: 'NoArg', +//│ > value: undefined, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > 'ClassSymbol("Inside", undefined, 0, Some([Symbol("a"), Symbol("b")]), [], _)' => ClassSymbol { +//│ > name: 'Inside', +//│ > value: undefined, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > 'ClassSymbol("Outside", fun Outside { class: class Outside }, 0, Some([Symbol("a")]), [], _)' => ClassSymbol { +//│ > name: 'Outside', +//│ > value: [Function: Outside] { class: [Function] }, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > 'ModuleSymbol("ClassInstrumentation", class ClassInstrumentation)' => ModuleSymbol { +//│ > name: 'ClassInstrumentation', +//│ > value: [class ClassInstrumentation] { +//│ > 'cache$ClassInstrumentation': [FunCache], +//│ > 'generatorMap$ClassInstrumentation': [Map] +//│ > } +//│ > } +//│ > } module Nonstaged with fun f() = 1 @@ -112,6 +146,7 @@ staged module CallSubst with //│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(0) {} //│ > fun ctor_() = //│ > () //│ > fun call() = @@ -121,6 +156,23 @@ staged module CallSubst with //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'call' => [Function: call_gen] //│ > } +//│ > Map(2) { +//│ > 'ModuleSymbol("Nonstaged", class Nonstaged)' => ModuleSymbol { +//│ > name: 'Nonstaged', +//│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > }, +//│ > 'ModuleSymbol("Staged", class Staged { cache$Staged: fun ctor_() =\n' + +//│ > ' ()\n' + +//│ > 'fun f() = 1, generatorMap$Staged: Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} })' => ModuleSymbol { +//│ > name: 'Staged', +//│ > value: [class Staged] { +//│ > 'cache$Staged': [FunCache], +//│ > 'generatorMap$Staged': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > } +//│ > } + :ftc staged module Arguments with @@ -142,6 +194,17 @@ staged module Arguments with //│ > 'f' => [Function: f_gen], //│ > 'g' => [Function: g_gen] //│ > } +//│ > Map(1) { +//│ > 'ClassSymbol("Function$", class Function$, 0, None, [], _)' => ClassSymbol { +//│ > name: 'Function$', +//│ > value: [class Function$1 extends Function] { +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > }, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } staged module OtherBlocks with fun scope() = @@ -172,32 +235,30 @@ staged module OtherBlocks with //│ > 'scope' => [Function: scope_gen], //│ > 'breakAndLabel' => [Function: breakAndLabel_gen] //│ > } +//│ > Map(1) { +//│ > 'ModuleSymbol("OtherBlocks", class OtherBlocks)' => ModuleSymbol { +//│ > name: 'OtherBlocks', +//│ > value: [class OtherBlocks] { +//│ > 'cache$OtherBlocks': [FunCache], +//│ > 'generatorMap$OtherBlocks': [Map] +//│ > } +//│ > } +//│ > } staged module ClassDefs with class A //│ > fun ctor_() = //│ > class A //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } - -// TODO: how to add the block IR to the cache, for class functions? -staged module ClassFunctions with - class InnerClass() with - fun f() = 1 + Arguments.f(1) - fun g() = f() // TODO -//│ > fun ctor_() = -//│ > class InnerClass() with -//│ > fun f() = -//│ > let tmp -//│ > tmp = Arguments.f(1) -//│ > +(1, tmp) -//│ > fun g() = InnerClass.f() -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } - -staged module ClassDefs with - class A -//│ > fun ctor_() = -//│ > class A -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } +//│ > Map(1) { +//│ > 'ClassSymbol("A", undefined, 0, None, [], _)' => ClassSymbol { +//│ > name: 'A', +//│ > value: undefined, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } staged module ClassFunctions with class InnerClass() with @@ -211,6 +272,31 @@ staged module ClassFunctions with //│ > +(1, tmp) //│ > fun g() = InnerClass.f() //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } +//│ > Map(2) { +//│ > 'ClassSymbol("InnerClass", undefined, 0, Some([]), [], _)' => ClassSymbol { +//│ > name: 'InnerClass', +//│ > value: undefined, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > }, +//│ > 'ModuleSymbol("Arguments", class Arguments { cache$Arguments: fun ctor_() =\n' + +//│ > ' ()\n' + +//│ > 'fun f(x) =\n' + +//│ > ' x = 1\n' + +//│ > ' x\n' + +//│ > 'fun g(x) =\n' + +//│ > ' let tmp\n' + +//│ > ' tmp = new Function_()\n' + +//│ > ' tmp, generatorMap$Arguments: Map(3) {"ctor$" => fun ctor$_gen, "f" => fun f_gen, "g" => fun g_gen} })' => ModuleSymbol { +//│ > name: 'Arguments', +//│ > value: [class Arguments] { +//│ > 'cache$Arguments': [FunCache], +//│ > 'generatorMap$Arguments': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > } +//│ > } // name collision class A() @@ -238,18 +324,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.236: let x = 1 +//│ ║ l.322: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.236: let x = 1 +//│ ║ l.322: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.236: let x = 1 +//│ ║ l.322: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.236: let x = 1 +//│ ║ l.322: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -261,7 +347,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.261: fun g() = {1 : 2} +//│ ║ l.347: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls new file mode 100644 index 0000000000..f75b8a32a2 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls @@ -0,0 +1,27 @@ +:js +:staging + +class C(val x) + +staged module A with + fun g() = C(1) + fun h() = C(2) +//│ > fun ctor_() = +//│ > () +//│ > fun g() = C(1) +//│ > fun h() = C(2) +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'g' => [Function: g_gen], +//│ > 'h' => [Function: h_gen] +//│ > } +//│ > Map(1) { +//│ > 'ClassSymbol("C", fun C { class: class C }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } +//│ > } + From dfef0bda0910fe9cd4f9ecc36b2a390245df4019 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 24 Mar 2026 00:05:44 +0800 Subject: [PATCH 362/654] update tests --- .../mlscript/block-staging/StageSymbols.mls | 21 ++++++++++++------- .../src/test/mlscript/lifter/ClassInFun.mls | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 3075bfe734..34abdc73a7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -9,7 +9,7 @@ staged module M with //│ > class C with //│ > fun f() = 1 //│ > fun g() = C.f() -//│ > Map(0) {} +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } staged module A with fun f() = 1 @@ -27,16 +27,16 @@ staged module D with //│ > fun ctor_() = //│ > () //│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > fun ctor_() = //│ > class E //│ > fun f() = //│ > __no__symbol__ = A.f() //│ > B.f() //│ > fun matching() = +//│ > let tmp //│ > let scrut //│ > let scrut1 -//│ > let tmp //│ > scrut = 1 //│ > if scrut is //│ > Int then @@ -46,7 +46,8 @@ staged module D with //│ > if scrut1 is //│ > C(a, b) then true //│ > else false -//│ > Map(2) { +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'matching' => [Function: matching_gen] //│ > } @@ -66,18 +67,18 @@ staged module M with //│ > fun f() = //│ > __no__symbol__ = A.B.C(1) //│ > M.E -//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.73: fun g()() = 1 +//│ ║ l.74: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun g()() = 1 -//│ > Map(1) { 'g' => [Function: g_gen] } +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } :ftc staged module M with @@ -93,4 +94,8 @@ staged module M with //│ > let tmp1 //│ > tmp1 = new Function_1() //│ > tmp1 -//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index 1c124cf47e..2389dfa158 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -138,8 +138,8 @@ f().foo() //│ } //│ } //│ #Good$cap; -//│ #y; //│ #x; +//│ #y; //│ #scope0$cap; //│ foo() { //│ let tmp6, tmp7; From 54cebcf6e73416bae4a64a7d7f420a3cb3d661b4 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 24 Mar 2026 09:49:00 +0800 Subject: [PATCH 363/654] . --- .../src/test/mlscript-compile/ShapeSet.mls | 15 +- .../test/mlscript/block-staging/Functions.mls | 770 ++++++++++++++---- .../test/mlscript/block-staging/ShapeProp.mls | 462 ++++++++--- 3 files changed, 989 insertions(+), 258 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 1a1de8b463..500c0a57dd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -29,7 +29,7 @@ class ShapeSet(val shapeset: Map[String, Shape]) extends CachedHash with fun toString() = "{" ~ shapeset.keys().toArray().toSorted().toString() ~ "}" fun isDynArr() = - if shapeset.size == 1 and values().0 is Arr(shapes, _) then shapes.every(s => s is Dyn) else false + if shapeset.size == 1 and values().0 is Arr(shapes) then shapes.every(s => s is Dyn) else false module ShapeSet with @@ -60,11 +60,11 @@ fun mkDyn() = lift(Dyn()) fun mkLit(l) = lift(Lit(l)) -fun mkArr(shapes: Array[ShapeSet], inf: Bool) = +fun mkArr(shapes: Array[ShapeSet]) = shapes .map(_.shapeset.values().toArray()) |> prod - .map(x => Arr(x, inf)) + .map(x => Arr(x)) |> liftMany fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = @@ -95,7 +95,7 @@ fun valOf(s : Shape) = if s is Dyn() then throw Error("valOf on Dyn") Lit(l) then l - Arr(shapes, inf) then shapes.map((x, _, _) => valOf(x)) + Arr(shapes) then shapes.map((x, _, _) => valOf(x)) Class(sym, params) then ??? else throw Error("Unknown shape") @@ -226,9 +226,12 @@ fun sor(defctx, ctx, r: Result) = if r is else [End(), r, s] Instantiate(cls, args) then - let sym = if cls is ValueRef(s) and s is ClassSymbol then s else throw Error("Instantiate with non-ClassSymbol in shape propagation") + let sym = if cls is ValueRef(s) and s is ClassSymbol then s + else + print(cls) + throw Error("Instantiate with non-ClassSymbol in shape propagation") [End(), r, mkClass(sym, args.map(a => sop(ctx, a.value)))] - Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)), false)] + Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] Call(f, args) then fun lit(l) = [End(), ValueLit(l), mkLit(l)] let argShapes = args.map((a, _, _) => sop(ctx, a.value)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 003b7ecd96..90a0dfbbd2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,7 +1,6 @@ :js :staging -:sjs let x = [1, 2, 3] staged module Expressions with fun lit() = 1 @@ -25,47 +24,42 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 -//│ > fun ctor_() = -//│ > () -//│ > fun lit() = 1 -//│ > fun assign() = -//│ > let x -//│ > let y -//│ > x = 42 -//│ > y = x -//│ > y -//│ > fun tup1() = [1, 2] -//│ > fun tup2() = [1, x1] -//│ > fun dynsel() = -//│ > let tmp -//│ > tmp = [1] -//│ > tmp.(0) -//│ > fun match1() = -//│ > let scrut -//│ > scrut = 9 -//│ > if scrut is -//│ > Bool then 1 -//│ > 8 then 2 -//│ > Int then 3 -//│ > else 0 -//│ > fun match2() = -//│ > let a -//│ > let element1_ -//│ > let element0_ -//│ > if x1 is -//│ > [] then 1 -//│ > [_, _] then -//│ > element0_ = Runtime.Tuple.get(x1, 0) -//│ > element1_ = Runtime.Tuple.get(x1, 1) -//│ > if element0_ is -//│ > 1 then -//│ > if element1_ is -//│ > 2 then 2 -//│ > else a = element0_ -//│ > 3 -//│ > else a = element0_ -//│ > 3 -//│ > else 0 +//│ > module Expressions with +//│ > fun lit() = 1 +//│ > fun assign() = +//│ > let y +//│ > let x +//│ > x = 42 +//│ > y = 42 +//│ > 42 +//│ > fun tup1() = [1, 2] +//│ > fun tup2() = [1, x1] +//│ > fun dynsel() = +//│ > let tmp +//│ > tmp = [1] +//│ > 1 +//│ > fun match1() = +//│ > let scrut +//│ > scrut = 9 +//│ > 3 +//│ > fun match2() = +//│ > let a +//│ > let element1_ +//│ > let element0_ +//│ > if x1 is +//│ > [] then 1 +//│ > [_, _] then +//│ > element0_ = Runtime.Tuple.get(x1, 0) +//│ > element1_ = Runtime.Tuple.get(x1, 1) +//│ > if element0_ is +//│ > 1 then +//│ > if element1_ is +//│ > 2 then 2 +//│ > else a = element0_ +//│ > 3 +//│ > else a = element0_ +//│ > 3 +//│ > else 0 //│ > Map(7) { //│ > 'lit' => [Function: lit_gen], //│ > 'assign' => [Function: assign_gen], @@ -77,28 +71,277 @@ staged module Expressions with //│ > } //│ x = [1, 2, 3] -class Outside(a) +:sjs +// class Outside(a) staged module ClassInstrumentation with - class Inside(a, b) + // class Inside(a, b) + class Outside(a) class NoArg - fun inst1() = new Outside(1) + fun inst1() = Outside(1) fun inst2() = new NoArg - fun app1() = Outside(1) - fun app2() = Inside(1, 2) -//│ > fun ctor_() = -//│ > class Inside(a1, b) -//│ > class NoArg -//│ > fun inst1() = new Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg() -//│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside(1, 2) -//│ > Map(4) { -//│ > 'inst1' => [Function: inst1_gen], -//│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen], -//│ > 'app2' => [Function: app2_gen] -//│ > } + // fun app1() = Outside(1) + // fun app2() = Inside(1, 2) +//│ JS (unsanitized): +//│ let ClassInstrumentation1; +//│ (class ClassInstrumentation { +//│ static { +//│ ClassInstrumentation1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static { +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6; +//│ tmp3 = globalThis.Object.freeze([ +//│ "inst1", +//│ ClassInstrumentation.inst1_gen +//│ ]); +//│ tmp4 = globalThis.Object.freeze([ +//│ "inst2", +//│ ClassInstrumentation.inst2_gen +//│ ]); +//│ tmp5 = globalThis.Object.freeze([ +//│ tmp3, +//│ tmp4 +//│ ]); +//│ tmp6 = globalThis.Object.freeze(new globalThis.Map(tmp5)); +//│ this.generatorMap = tmp6; +//│ tmp2 = runtime.safeCall(ShapeSet.emptyCache()); +//│ this.cache = tmp2; +//│ tmp = ClassInstrumentation.dump(); +//│ tmp1 = runtime.safeCall(globalThis.console.log(ClassInstrumentation.generatorMap)); +//│ this.Outside = function Outside(a) { +//│ return globalThis.Object.freeze(new Outside.class(a)); +//│ }; +//│ (class Outside { +//│ static { +//│ ClassInstrumentation.Outside.class = this +//│ } +//│ constructor(a) { +//│ this.#a = a; +//│ } +//│ #a; +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "Outside", [null]]; +//│ }); +//│ (class NoArg { +//│ static { +//│ ClassInstrumentation.NoArg = this +//│ } +//│ constructor() {} +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "NoArg"]; +//│ }); +//│ } +//│ static ctor$_instr() { +//│ let end, tmp, tmp1, sym, tmp2, tmp3, tmp4, tmp5, sym1, tmp6, tmp7, tmp8, sym2, tmp9, tmp10, tmp11, tmp12, tmp13, tmp14, sym3, tmp15; +//│ end = globalThis.Object.freeze(new Block.End()); +//│ tmp = option.None; +//│ tmp1 = globalThis.Object.freeze([]); +//│ sym = globalThis.Object.freeze(new Block.ClassSymbol("NoArg", ClassInstrumentation.NoArg, tmp, tmp1)); +//│ tmp2 = globalThis.Object.freeze([]); +//│ tmp3 = option.None; +//│ tmp4 = globalThis.Object.freeze(new Block.ClsLikeDefn(sym, tmp2, tmp3)); +//│ tmp5 = globalThis.Object.freeze(new Block.Define(tmp4, end)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("a")); +//│ tmp6 = globalThis.Object.freeze([ +//│ sym1 +//│ ]); +//│ tmp7 = globalThis.Object.freeze(new option.Some(tmp6)); +//│ tmp8 = globalThis.Object.freeze([]); +//│ sym2 = globalThis.Object.freeze(new Block.ClassSymbol("Outside", ClassInstrumentation.Outside, tmp7, tmp8)); +//│ tmp9 = globalThis.Object.freeze([]); +//│ tmp10 = option.None; +//│ tmp11 = globalThis.Object.freeze(new Block.ClsLikeDefn(sym2, tmp9, tmp10)); +//│ tmp12 = globalThis.Object.freeze(new Block.Define(tmp11, tmp5)); +//│ tmp13 = globalThis.Object.freeze([]); +//│ tmp14 = globalThis.Object.freeze([ +//│ tmp13 +//│ ]); +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("ctor$")); +//│ tmp15 = globalThis.Object.freeze(new Block.FunDefn(sym3, tmp14, tmp12, true)); +//│ return tmp15 +//│ } +//│ static dump() { +//│ let dyn, defs, res, restmp, restmp1; +//│ dyn = ShapeSet.mkDyn(); +//│ restmp1 = ClassInstrumentation.inst1_gen(); +//│ restmp = ClassInstrumentation.inst2_gen(); +//│ defs = ClassInstrumentation.cache.getImps(); +//│ res = Block.printModule("ClassInstrumentation", defs); +//│ return res +//│ } +//│ static inst1() { +//│ return ClassInstrumentation.Outside(1) +//│ } +//│ static inst2() { +//│ return globalThis.Object.freeze(new ClassInstrumentation.NoArg()) +//│ } +//│ static inst1_instr() { +//│ let sym, var1, sym1, tmp, tmp1, tmp2, sym2, sel, lit, tmp3, tmp4, app, return1, tmp5, tmp6, sym3, tmp7; +//│ sym = globalThis.Object.freeze(new Block.ModuleSymbol("ClassInstrumentation", ClassInstrumentation1)); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("a")); +//│ tmp = globalThis.Object.freeze([ +//│ sym1 +//│ ]); +//│ tmp1 = globalThis.Object.freeze(new option.Some(tmp)); +//│ tmp2 = globalThis.Object.freeze([]); +//│ sym2 = globalThis.Object.freeze(new Block.ClassSymbol("Outside", ClassInstrumentation.Outside, tmp1, tmp2)); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym2)); +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp3 = globalThis.Object.freeze(new Block.Arg(lit)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp4)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ tmp5 = globalThis.Object.freeze([]); +//│ tmp6 = globalThis.Object.freeze([ +//│ tmp5 +//│ ]); +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("inst1")); +//│ tmp7 = globalThis.Object.freeze(new Block.FunDefn(sym3, tmp6, return1, true)); +//│ return tmp7 +//│ } +//│ static inst2_instr() { +//│ let sym, var1, tmp, tmp1, sym1, sel, tmp2, inst, return1, tmp3, tmp4, sym2, tmp5; +//│ sym = globalThis.Object.freeze(new Block.ModuleSymbol("ClassInstrumentation", ClassInstrumentation1)); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ tmp = option.None; +//│ tmp1 = globalThis.Object.freeze([]); +//│ sym1 = globalThis.Object.freeze(new Block.ClassSymbol("NoArg", ClassInstrumentation.NoArg, tmp, tmp1)); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp2 = globalThis.Object.freeze([]); +//│ inst = globalThis.Object.freeze(new Block.Instantiate(sel, tmp2)); +//│ return1 = globalThis.Object.freeze(new Block.Return(inst, false)); +//│ tmp3 = globalThis.Object.freeze([]); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("inst2")); +//│ tmp5 = globalThis.Object.freeze(new Block.FunDefn(sym2, tmp4, return1, true)); +//│ return tmp5 +//│ } +//│ static inst1_gen() { +//│ let fname, args, set, scrut; +//│ fname = "inst1"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = ClassInstrumentation.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = ClassInstrumentation.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let sym, var1, sym1, tmp, tmp1, tmp2, sym2, sel, lit, tmp3, tmp4, app, return1, ctx, tmp5, tmp6, tmp7, proped, propedBlock, propedShape, block, newName, ret; +//│ sym = globalThis.Object.freeze(new Block.ModuleSymbol("ClassInstrumentation", ClassInstrumentation1)); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("a")); +//│ tmp = globalThis.Object.freeze([ +//│ sym1 +//│ ]); +//│ tmp1 = globalThis.Object.freeze(new option.Some(tmp)); +//│ tmp2 = globalThis.Object.freeze([]); +//│ sym2 = globalThis.Object.freeze(new Block.ClassSymbol("Outside", ClassInstrumentation.Outside, tmp1, tmp2)); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym2)); +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ tmp3 = globalThis.Object.freeze(new Block.Arg(lit)); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp4)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app, false)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp5 = globalThis.Object.freeze(new Block.Symbol("inst1")); +//│ tmp6 = globalThis.Object.freeze([]); +//│ tmp7 = globalThis.Object.freeze([ +//│ tmp6 +//│ ]); +//│ proped = ShapeSet.prop(ClassInstrumentation.generatorMap, ctx, ClassInstrumentation.cache, return1); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp5, tmp7, propedBlock, true)); +//│ newName = ClassInstrumentation.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ static inst2_gen() { +//│ let fname, args, set, scrut; +//│ fname = "inst2"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = ClassInstrumentation.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = ClassInstrumentation.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let sym, var1, tmp, tmp1, sym1, sel, tmp2, inst, return1, ctx, tmp3, tmp4, tmp5, proped, propedBlock, propedShape, block, newName, ret; +//│ sym = globalThis.Object.freeze(new Block.ModuleSymbol("ClassInstrumentation", ClassInstrumentation1)); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ tmp = option.None; +//│ tmp1 = globalThis.Object.freeze([]); +//│ sym1 = globalThis.Object.freeze(new Block.ClassSymbol("NoArg", ClassInstrumentation.NoArg, tmp, tmp1)); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp2 = globalThis.Object.freeze([]); +//│ inst = globalThis.Object.freeze(new Block.Instantiate(sel, tmp2)); +//│ return1 = globalThis.Object.freeze(new Block.Return(inst, false)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp3 = globalThis.Object.freeze(new Block.Symbol("inst2")); +//│ tmp4 = globalThis.Object.freeze([]); +//│ tmp5 = globalThis.Object.freeze([ +//│ tmp4 +//│ ]); +//│ proped = ShapeSet.prop(ClassInstrumentation.generatorMap, ctx, ClassInstrumentation.cache, return1); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp3, tmp5, propedBlock, true)); +//│ newName = ClassInstrumentation.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "ClassInstrumentation"]; +//│ }); +//│ > Select(ValueRef(ModuleSymbol("ClassInstrumentation", class ClassInstrumentation { generatorMap: Map(2) {"inst1" => fun inst1_gen, "inst2" => fun inst2_gen}, cache: Cache(_, _) })), ClassSymbol("NoArg", undefined, None, [])) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: Instantiate with non-ClassSymbol in shape propagation +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:768:43) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1230:28) +//│ at ClassInstrumentation.inst2_gen (REPL18:1:10248) +//│ at ClassInstrumentation.dump (REPL18:1:3236) +//│ at (REPL18:1:717) +//│ at REPL18:1:10758 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +:sjs module Nonstaged with fun f() = 1 staged module Staged with @@ -107,15 +350,257 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > fun ctor_1() = -//│ > () -//│ > fun f() = 1 +//│ JS (unsanitized): +//│ let Staged1, Nonstaged1, CallSubst1; +//│ (class Nonstaged { +//│ static { +//│ Nonstaged1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static f() { +//│ return 1 +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "Nonstaged"]; +//│ }); +//│ (class Staged { +//│ static { +//│ Staged1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static { +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5; +//│ tmp3 = globalThis.Object.freeze([ +//│ "f", +//│ Staged.f_gen +//│ ]); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ tmp5 = globalThis.Object.freeze(new globalThis.Map(tmp4)); +//│ this.generatorMap = tmp5; +//│ tmp2 = runtime.safeCall(ShapeSet.emptyCache()); +//│ this.cache = tmp2; +//│ tmp = Staged.dump(); +//│ tmp1 = runtime.safeCall(globalThis.console.log(Staged.generatorMap)); +//│ } +//│ static ctor$_instr() { +//│ let end, tmp, tmp1, sym, tmp2; +//│ end = globalThis.Object.freeze(new Block.End()); +//│ tmp = globalThis.Object.freeze([]); +//│ tmp1 = globalThis.Object.freeze([ +//│ tmp +//│ ]); +//│ sym = globalThis.Object.freeze(new Block.Symbol("ctor$1")); +//│ tmp2 = globalThis.Object.freeze(new Block.FunDefn(sym, tmp1, end, true)); +//│ return tmp2 +//│ } +//│ static dump() { +//│ let dyn, defs, res, restmp; +//│ dyn = ShapeSet.mkDyn(); +//│ restmp = Staged.f_gen(); +//│ defs = Staged.cache.getImps(); +//│ res = Block.printModule("Staged", defs); +//│ return res +//│ } +//│ static f() { +//│ return 1 +//│ } +//│ static f_instr() { +//│ let lit, return1, tmp, tmp1, sym, tmp2; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ return1 = globalThis.Object.freeze(new Block.Return(lit, false)); +//│ tmp = globalThis.Object.freeze([]); +//│ tmp1 = globalThis.Object.freeze([ +//│ tmp +//│ ]); +//│ sym = globalThis.Object.freeze(new Block.Symbol("f")); +//│ tmp2 = globalThis.Object.freeze(new Block.FunDefn(sym, tmp1, return1, true)); +//│ return tmp2 +//│ } +//│ static f_gen() { +//│ let fname, args, set, scrut; +//│ fname = "f"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = Staged.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = Staged.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let lit, return1, ctx, tmp, tmp1, tmp2, proped, propedBlock, propedShape, block, newName, ret; +//│ lit = globalThis.Object.freeze(new Block.ValueLit(1)); +//│ return1 = globalThis.Object.freeze(new Block.Return(lit, false)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp = globalThis.Object.freeze(new Block.Symbol("f")); +//│ tmp1 = globalThis.Object.freeze([]); +//│ tmp2 = globalThis.Object.freeze([ +//│ tmp1 +//│ ]); +//│ proped = ShapeSet.prop(Staged.generatorMap, ctx, Staged.cache, return1); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp, tmp2, propedBlock, true)); +//│ newName = Staged.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "Staged"]; +//│ }); +//│ (class CallSubst { +//│ static { +//│ CallSubst1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static { +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5; +//│ tmp3 = globalThis.Object.freeze([ +//│ "call", +//│ CallSubst.call_gen +//│ ]); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ tmp5 = globalThis.Object.freeze(new globalThis.Map(tmp4)); +//│ this.generatorMap = tmp5; +//│ tmp2 = runtime.safeCall(ShapeSet.emptyCache()); +//│ this.cache = tmp2; +//│ tmp = CallSubst.dump(); +//│ tmp1 = runtime.safeCall(globalThis.console.log(CallSubst.generatorMap)); +//│ } +//│ static ctor$_instr() { +//│ let end, tmp, tmp1, sym, tmp2; +//│ end = globalThis.Object.freeze(new Block.End()); +//│ tmp = globalThis.Object.freeze([]); +//│ tmp1 = globalThis.Object.freeze([ +//│ tmp +//│ ]); +//│ sym = globalThis.Object.freeze(new Block.Symbol("ctor$")); +//│ tmp2 = globalThis.Object.freeze(new Block.FunDefn(sym, tmp1, end, true)); +//│ return tmp2 +//│ } +//│ static dump() { +//│ let dyn, defs, res, restmp; +//│ dyn = ShapeSet.mkDyn(); +//│ restmp = CallSubst.call_gen(); +//│ defs = CallSubst.cache.getImps(); +//│ res = Block.printModule("CallSubst", defs); +//│ return res +//│ } +//│ static call() { +//│ Nonstaged1.f(); +//│ return Staged1.f() +//│ } +//│ static call_instr() { +//│ let sym, var1, sym1, sel, tmp, app, sym2, tmp1, sym3, var2, sym4, sel1, tmp2, app1, return1, assign, tmp3, tmp4, sym5, tmp5; +//│ sym = globalThis.Object.freeze(new Block.ModuleSymbol("Nonstaged", Nonstaged1)); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("f")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp = globalThis.Object.freeze([]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp)); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("$_no$_symbol$_")); +//│ tmp1 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ tmp1; +//│ sym3 = globalThis.Object.freeze(new Block.ModuleSymbol("Staged", Staged1)); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym3)); +//│ sym4 = globalThis.Object.freeze(new Block.Symbol("f")); +//│ sel1 = globalThis.Object.freeze(new Block.Select(var2, sym4)); +//│ tmp2 = globalThis.Object.freeze([]); +//│ app1 = globalThis.Object.freeze(new Block.Call(sel1, tmp2)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app1, false)); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym2, app, return1)); +//│ tmp3 = globalThis.Object.freeze([]); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ sym5 = globalThis.Object.freeze(new Block.Symbol("call")); +//│ tmp5 = globalThis.Object.freeze(new Block.FunDefn(sym5, tmp4, assign, true)); +//│ return tmp5 +//│ } +//│ static call_gen() { +//│ let fname, args, set, scrut; +//│ fname = "call"; +//│ args = globalThis.Object.freeze([]); +//│ set = ShapeSet.mkArr(args, false); +//│ scrut = CallSubst.cache.has(fname, set); +//│ if (scrut === true) { +//│ let cached, cachedName, cachedShape, cachedSym, simpRet; +//│ cached = CallSubst.cache.get(fname, set); +//│ cachedName = cached.at(0); +//│ cachedShape = cached.at(1); +//│ cachedSym = globalThis.Object.freeze(new Block.Symbol(cachedName)); +//│ simpRet = globalThis.Object.freeze([ +//│ cachedShape, +//│ cachedSym +//│ ]); +//│ return simpRet +//│ } else { +//│ let sym, var1, sym1, sel, tmp, app, sym2, tmp1, sym3, var2, sym4, sel1, tmp2, app1, return1, assign, ctx, tmp3, tmp4, tmp5, proped, propedBlock, propedShape, block, newName, ret; +//│ sym = globalThis.Object.freeze(new Block.ModuleSymbol("Nonstaged", Nonstaged1)); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("f")); +//│ sel = globalThis.Object.freeze(new Block.Select(var1, sym1)); +//│ tmp = globalThis.Object.freeze([]); +//│ app = globalThis.Object.freeze(new Block.Call(sel, tmp)); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("$_no$_symbol$_")); +//│ tmp1 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ tmp1; +//│ sym3 = globalThis.Object.freeze(new Block.ModuleSymbol("Staged", Staged1)); +//│ var2 = globalThis.Object.freeze(new Block.ValueRef(sym3)); +//│ sym4 = globalThis.Object.freeze(new Block.Symbol("f")); +//│ sel1 = globalThis.Object.freeze(new Block.Select(var2, sym4)); +//│ tmp2 = globalThis.Object.freeze([]); +//│ app1 = globalThis.Object.freeze(new Block.Call(sel1, tmp2)); +//│ return1 = globalThis.Object.freeze(new Block.Return(app1, false)); +//│ assign = globalThis.Object.freeze(new Block.Assign(sym2, app, return1)); +//│ ctx = ShapeSet.emptyCtx(); +//│ tmp3 = globalThis.Object.freeze(new Block.Symbol("call")); +//│ tmp4 = globalThis.Object.freeze([]); +//│ tmp5 = globalThis.Object.freeze([ +//│ tmp4 +//│ ]); +//│ proped = ShapeSet.prop(CallSubst.generatorMap, ctx, CallSubst.cache, assign); +//│ propedBlock = proped.at(0); +//│ propedShape = proped.at(1); +//│ block = globalThis.Object.freeze(new Block.FunDefn(tmp3, tmp5, propedBlock, true)); +//│ newName = CallSubst.cache.add(fname, set, block, propedShape); +//│ ret = globalThis.Object.freeze([ +//│ propedShape, +//│ newName +//│ ]); +//│ return ret +//│ } +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "CallSubst"]; +//│ }); +//│ > module Staged with +//│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > fun ctor_() = -//│ > () -//│ > fun call() = -//│ > __no__symbol__ = Nonstaged.f() -//│ > Staged.f() +//│ > module CallSubst with +//│ > fun call() = +//│ > __no__symbol__ = Nonstaged.f() +//│ > Staged.f() //│ > Map(1) { 'call' => [Function: call_gen] } :ftc @@ -124,16 +609,19 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > fun ctor_() = -//│ > () -//│ > fun f(x) = -//│ > x = 1 -//│ > x -//│ > fun g(x) = -//│ > let tmp -//│ > tmp = new Function_() -//│ > tmp -//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] TypeError: s1.shapeset is not iterable +//│ at ShapeSet.union (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:333:13) +//│ at Ctx.add (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:138:27) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1283:24) +//│ at Arguments.f_gen (REPL24:1:7189) +//│ at Arguments.dump (REPL24:1:2941) +//│ at (REPL24:1:2209) +//│ at REPL24:1:10261 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) staged module OtherBlocks with fun scope() = @@ -146,19 +634,15 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > fun ctor_() = -//│ > () -//│ > fun scope() = -//│ > let a -//│ > a = 1 -//│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel() = -//│ > let scrut -//│ > scrut = 1 -//│ > if scrut is -//│ > 2 then 0 -//│ > 3 then 0 -//│ > else 0 +//│ > module OtherBlocks with +//│ > fun scope() = +//│ > let a +//│ > a = 1 +//│ > OtherBlocks.scope.locally(a) +//│ > fun breakAndLabel() = +//│ > let scrut +//│ > scrut = 1 +//│ > 0 //│ > Map(2) { //│ > 'scope' => [Function: scope_gen], //│ > 'breakAndLabel' => [Function: breakAndLabel_gen] @@ -168,71 +652,60 @@ staged module ClassDefs with class A //│ > module ClassDefs with //│ > +//│ > Map(0) {} // TODO: how to add the block IR to the cache, for class functions? staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() // TODO -//│ > fun ctor_() = -//│ > class InnerClass() with -//│ > fun f() = -//│ > let tmp -//│ > tmp = Arguments.f(1) -//│ > +(1, tmp) -//│ > fun g() = InnerClass.f() +//│ > module ClassFunctions with +//│ > //│ > Map(0) {} :todo ValDefn in ctor of class staged module DataClass with class A(val a) -//│ > fun ctor_() = -//│ > class A(a) +//│ > module DataClass with +//│ > //│ > Map(0) {} // :lot :todo ValDefn in class staged module ValClass with class A(val a) -//│ > fun ctor_() = -//│ > class A(a) +//│ > module ValClass with +//│ > //│ > Map(0) {} staged module ClassDefs with class A -//│ > fun ctor_() = -//│ > class A +//│ > module ClassDefs with +//│ > //│ > Map(0) {} staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() // TODO -//│ > fun ctor_() = -//│ > class InnerClass() with -//│ > fun f() = -//│ > let tmp -//│ > tmp = Arguments.f(1) -//│ > +(1, tmp) -//│ > fun g() = InnerClass.f() +//│ > module ClassFunctions with +//│ > //│ > Map(0) {} // name collision class A() staged module A with fun f() = 1 -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 +//│ > module A with +//│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } // nested module module A with staged module B with fun f() = 1 -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 +//│ > module B with +//│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } :todo force enable :ftc to desugar Label and Break @@ -242,21 +715,36 @@ staged module M with while x == 1 do set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.714: let x = 1 +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.714: let x = 1 +//│ ╙── ^ +//│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' +//│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.714: let x = 1 +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.714: let x = 1 +//│ ╙── ^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.241: let x = 1 +//│ ║ l.714: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.241: let x = 1 +//│ ║ l.714: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.241: let x = 1 +//│ ║ l.714: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.241: let x = 1 +//│ ║ l.714: let x = 1 //│ ╙── ^ -//│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :e class C(val a) @@ -266,7 +754,11 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.266: fun g() = {1 : 2} +//│ ║ l.754: fun g() = {1 : 2} +//│ ╙── ^ +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) +//│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. +//│ ║ l.754: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -275,24 +767,16 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) -//│ > fun ctor_() = -//│ > () -//│ > fun f() = -//│ > let middleElements -//│ > let element0_ -//│ > let scrut -//│ > let tmp -//│ > let x -//│ > tmp = [1, 2] -//│ > scrut = [1, tmp] -//│ > if scrut is -//│ > [_] then -//│ > element0_ = Runtime.Tuple.get(scrut, 0) -//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) -//│ > if element0_ is -//│ > 1 then -//│ > x = middleElements -//│ > x -//│ > else 0 -//│ > else 0 +//│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. +//│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) +//│ > module Spread with +//│ > fun f() = +//│ > let scrut +//│ > let tmp +//│ > let x +//│ > let middleElements +//│ > let element0_ +//│ > tmp = [1, 2] +//│ > scrut = [1, tmp] +//│ > 0 //│ > Map(1) { 'f' => [Function: f_gen] } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 26530b9b2d..e59977cc9e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -22,8 +22,8 @@ mkDyn() mkDyn() == mkDyn() //│ = false -mkArr([mkLit(0)], false) -//│ = {Arr([Lit(0)], false)} +mkArr([mkLit(0)]) +//│ = {Arr([Lit(0)])} assert(mkBot().isEmpty()) @@ -37,6 +37,16 @@ valOf(Dyn()) //│ ═══[RUNTIME ERROR] Error: valOf on Dyn valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)], false)], false)) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.39: valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)], false)], false)) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.39: valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)], false)], false)) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^ //│ = [1, [2, 3]] :re @@ -48,8 +58,8 @@ valOfSet(mkLit(0)) // sel -let arrSp = mkArr([mkLit(0), mkDyn()], false) -//│ arrSp = {Arr([Lit(0), Dyn()], false)} +let arrSp = mkArr([mkLit(0), mkDyn()]) +//│ arrSp = {Arr([Lit(0), Dyn()])} selSet(arrSp, mkLit(0)) //│ = {Lit(0)} @@ -63,11 +73,29 @@ selSet(mkDyn(), mkLit(5)) let a = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)], false)]) selSet(x, liftMany([Lit("a"), Lit(2)])) -//│ = {Dyn(),Lit(42),Lit(undefined)} -//│ a = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.73: let a = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.74: let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)], false)]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ = {Dyn(),Lit(undefined)} +//│ a = Class( +//│ ClassSymbol("A", Some(["a", "b"]), undefined, undefined), +//│ [Lit(42), Lit("c")] +//│ ) +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", Some(["a", "b"]), undefined, undefined), [Lit(42), Lit("c")]),Dyn()} selSet(lift(Arr([Dyn(), Lit(1), a], false)), mkLit(1)) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.93: selSet(lift(Arr([Dyn(), Lit(1), a], false)), mkLit(1)) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ = {Lit(1)} // union @@ -75,9 +103,19 @@ selSet(lift(Arr([Dyn(), Lit(1), a], false)), mkLit(1)) let x = liftMany([Lit(1), Lit(2)]) let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) union(x, y) -//│ = {Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1),Lit(2)} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.104: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +//│ ╙── ^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.104: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +//│ ╙── ^^^^^^^^^^^^^^^^^ +//│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} //│ x = {Lit(1),Lit(2)} -//│ y = {Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1)} +//│ y = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1)} // filterSet @@ -85,10 +123,25 @@ filterSet(mkDyn(), Block.Lit("a")) //│ = {Lit("a")} filterSet(mkDyn(), Block.Tup(2, true)) -//│ = {Arr([Dyn(), Dyn()], true)} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.125: filterSet(mkDyn(), Block.Tup(2, true)) +//│ ╙── ^^^^^^^^^ +//│ = {Arr([fun Dyn { class: class Dyn }, fun Dyn { class: class Dyn }])} let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) -//│ filterShapes = {Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false),Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null)} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.133: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ ╙── ^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.133: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", Some(["a", "b"]), undefined, undefined), [Lit(42), Lit("c")]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match @@ -98,18 +151,33 @@ filterSet(filterShapes, Block.Lit(1)) assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = {Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")])} +//│ = {Class(ClassSymbol("A", Some(["a", "b"]), undefined, undefined), [Lit(42), Lit("c")])} filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) //│ = {Lit(1)} filterSet(filterShapes, Tup(3, false)) -//│ = {Arr([Dyn()], true),Arr([Lit(1), Lit(2), Lit(3)], false)} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.159: filterSet(filterShapes, Tup(3, false)) +//│ ╙── ^^^^^^^^^^ +//│ = {Arr([Lit(1), Lit(2), Lit(3)])} filterSet(filterShapes, Tup(4, true)) -//│ = {Arr([Dyn()], true)} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.167: filterSet(filterShapes, Tup(4, true)) +//│ ╙── ^^^^^^^^^ +//│ = {} assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.175: assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) +//│ ╙── ^^^^^^^^^^ open Block @@ -168,8 +236,13 @@ val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) let ctx = Ctx.empty ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) -//│ = {Lit("pass")} -//│ C = ClassSymbol("C", Some(["a"])) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.234: val C = ClassSymbol("C", Some(["a"])) +//│ ╙── ^^^^^^^^^^^^^^^^^^ +//│ = {} +//│ C = ClassSymbol("C", Some(["a"]), undefined, undefined) //│ ctx = Ctx(_) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -178,28 +251,61 @@ sop(ctx, selPath) val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) sor(DefCtx.empty, Ctx.empty, tup) -//│ = [ -//│ End(), -//│ Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]), -//│ {Arr([Lit(1), Lit(true)], false)} -//│ ] -//│ tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.252: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.252: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:787:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:789:37) +//│ at REPL144:1:411 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ tup = Tuple([Arg(None), Arg(None)]) let c = ClassSymbol("C", Some([Symbol("p")])) let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) sor(DefCtx.empty, Ctx.empty, inst) -//│ = [ -//│ End(), -//│ Instantiate( -//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), -//│ [Arg(None, ValueLit(123))] -//│ ), -//│ {Class(ClassSymbol("C", Some([Symbol("p")])), [Lit(123)])} -//│ ] -//│ c = ClassSymbol("C", Some([Symbol("p")])) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.279: let c = ClassSymbol("C", Some([Symbol("p")])) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.280: let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:773:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:775:36) +//│ at REPL148:1:532 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ c = ClassSymbol("C", Some([Symbol("p")]), undefined, undefined) //│ inst = Instantiate( -//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]))), -//│ [Arg(None, ValueLit(123))] +//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]), undefined, undefined)), +//│ [Arg(None)] //│ ) fun testBinOp(op, v1, v2) = @@ -211,22 +317,92 @@ fun testBinOp(op, v1, v2) = def.add(ValueRef(Symbol("===")), undefined, false) def.add(ValueRef(Symbol("&&")), undefined, false) sor(def, Ctx.empty, c).1.lit +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.312: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.312: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ :expect 12 testBinOp("+", 10, 2) -//│ = 12 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) +//│ at testBinOp (REPL153:1:1400) +//│ at REPL156:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' :expect true testBinOp("==", 10, 10) -//│ = true +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) +//│ at testBinOp (REPL153:1:1400) +//│ at REPL159:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' :expect false testBinOp("===", 10, "10") -//│ = false +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) +//│ at testBinOp (REPL153:1:1400) +//│ at REPL162:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' :expect false testBinOp("&&", true, false) -//│ = false +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) +//│ at testBinOp (REPL153:1:1400) +//│ at REPL165:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' fun testUnaryOp(op, v) = let args = [Arg(None, ValueLit(v))] @@ -236,18 +412,53 @@ fun testUnaryOp(op, v) = def.add(ValueRef(Symbol("!")), undefined, false) def.add(ValueRef(Symbol("~")), undefined, false) sor(def, Ctx.empty, c).1.lit +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.408: let args = [Arg(None, ValueLit(v))] +//│ ╙── ^^^^^^^^^^^^^^^^^^^ :expect -10 testUnaryOp("-", 10) -//│ = -10 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) +//│ at testUnaryOp (REPL168:1:1099) +//│ at REPL171:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' :expect false testUnaryOp("!", true) -//│ = false +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) +//│ at testUnaryOp (REPL168:1:1099) +//│ at REPL174:1:39 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' :re testUnaryOp("~", 10) -//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' +//│ ═══[RUNTIME ERROR] Error: match error // prop @@ -266,46 +477,60 @@ let plus = ValueRef(Symbol("+")) // x + 1 let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ = [ -//│ Scoped( -//│ [Symbol("x")], -//│ Assign( -//│ Symbol("x"), -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))] -//│ ), -//│ Return( -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueRef(Symbol("x"))), Arg(None, ValueLit(1))] -//│ ), -//│ false -//│ ) -//│ ) -//│ ), -//│ {Dyn()} -//│ ] +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.478: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.478: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.478: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.478: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1274:29) +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1260:27) +//│ at REPL187:1:910 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ c = Scoped( //│ [Symbol("x")], //│ Assign( //│ Symbol("x"), -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))] -//│ ), -//│ Return( -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueRef(Symbol("x"))), Arg(None, ValueLit(1))] -//│ ), -//│ false -//│ ) +//│ Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), +//│ Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) //│ ) //│ ) let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.522: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ╙── ^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.522: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ╙── ^^^^^^^^^^^^^ //│ = [ //│ Scoped( //│ [Symbol("x")], @@ -323,7 +548,7 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ [ //│ Arm( //│ Cls( -//│ ClassSymbol("Bool", None), +//│ ClassSymbol("Bool", None, undefined, undefined), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(1), false) @@ -331,7 +556,7 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ Arm(Lit(8), Return(ValueLit(2), false)), //│ Arm( //│ Cls( -//│ ClassSymbol("Int", None), +//│ ClassSymbol("Int", None, undefined, undefined), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(3), false) @@ -357,8 +582,25 @@ val defs = DefCtx.empty.add(fPath, f_gen, true) val callF = Call(fPath, [Arg(None, ValueLit(12))]) sor(defs, Ctx.empty, callF) -//│ = [End(), Call(ValueRef(Symbol("f1")), [Arg(None, ValueLit(12))]), {Lit(24)}] -//│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None, ValueLit(12))]) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.583: val callF = Call(fPath, [Arg(None, ValueLit(12))]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) +//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) +//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) +//│ at Array.map () +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) +//│ at REPL205:1:284 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None)]) val ctxXY = Ctx.empty .add(ValueRef(x), mkLit(10)) @@ -369,24 +611,30 @@ val ctxXY = Ctx.empty val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) printCode(blockAdd) prop(defs, ctxXY, Cache.empty, blockAdd) -//│ > +(x, y) -//│ = [ -//│ Return( -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueRef(Symbol("x"))), Arg(None, ValueRef(Symbol("y")))] -//│ ), -//│ false -//│ ), -//│ {Dyn()} -//│ ] -//│ blockAdd = Return( -//│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(None, ValueRef(Symbol("x"))), Arg(None, ValueRef(Symbol("y")))] -//│ ), -//│ false -//│ ) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.611: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.611: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) +//│ at showArg (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:624:18) +//│ at Array.map () +//│ at Block.showArgs (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:628:33) +//│ at Block.showResult (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:642:20) +//│ at Block.showBlock (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:818:20) +//│ at Block.show (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:889:20) +//│ at Block.printCode (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:896:17) +//│ at REPL213:1:436 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ blockAdd = Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit(1), End())), Arm(Lit(2), Assign(z, ValueLit(2), End()))], Some(Assign(z, ValueLit(3), End())), Return(ValueRef(z), false))) printCode(blockBranch) @@ -523,25 +771,21 @@ val2path(1) val2path([1, 2, 3]) //│ = [ -//│ Assign( -//│ Symbol("tup_1"), -//│ Tuple([Arg(None, End()), Arg(None, End()), Arg(None, End())]), -//│ End() -//│ ), +//│ Assign(Symbol("tup_1"), Tuple([Arg(None), Arg(None), Arg(None)]), End()), //│ ValueRef(Symbol("tup_1")) //│ ] class TestClass(val a, val b) val2path(TestClass(1, 2)) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) //│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:639:36) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:559:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:540:20) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:625:32) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:642:51) -//│ at REPL237:1:494 +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:628:47) +//│ at REPL237:1:490 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) @@ -550,13 +794,13 @@ val2path(TestClass(1, 2)) val2path(TestClass(1, [1,2])) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:165) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) //│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:537:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:518:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:639:36) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:559:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:540:20) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:625:32) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:642:51) +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:628:47) //│ at REPL240:1:168 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) From ddf0dcc84dda32a847abbb9bd8475d212e56f1c9 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 26 Mar 2026 14:12:48 +0800 Subject: [PATCH 364/654] use runtime value as key to symbol --- .../codegen/ReflectionInstrumenter.scala | 32 ++-- .../src/test/mlscript-compile/Block.mls | 5 +- .../test/mlscript/block-staging/Classes.mls | 139 ++++++++---------- .../test/mlscript/block-staging/Functions.mls | 107 +++++++++----- .../mlscript/block-staging/StageSymbols.mls | 131 ++++++++++++++++- 5 files changed, 278 insertions(+), 136 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index b35092c4b4..6375550dc5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -41,10 +41,10 @@ def asArg(x: ArgWrappable): Arg = // null and undefined are missing def toValue(lit: Str | Int | BigDecimal | Bool): Value = val l = lit match - case i: Int => Tree.IntLit(i) - case b: Bool => Tree.BoolLit(b) - case s: Str => Tree.StrLit(s) - case n: BigDecimal => Tree.DecLit(n) + case i: Int => Tree.IntLit(i) + case b: Bool => Tree.BoolLit(b) + case s: Str => Tree.StrLit(s) + case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) // transform Block to Block IR so that it can be instrumented in mlscript @@ -101,10 +101,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // if sym is ClassSymbol, we may need pOpt to link to the path pointing to the value of the symbol def transformSymbol(sym: Symbol, pOpt: Option[Path] = N, symName: Str = "sym")(k: Path => Block): Block = - def checkMap(p: Path) = + def checkMap(key: Path, p: Path) = symbolMapUsed = true - blockCall("checkMap", Ls(symbolMapSym, p))(k) - sym match + blockCall("checkMap", Ls(symbolMapSym, key, p))(k) + sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(k) // avoid name collision @@ -112,7 +112,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val name = scope.allocateOrGetName(sym) blockCtor("Symbol", Ls(toValue(name)), symName)(k) case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => - blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap) + blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap(toValue(sym.nme), _)) case baseSym: BaseTypeSymbol => val name = scope.allocateOrGetName(sym) // FIXME: we want the parent path for subtyping, but it is only available for ClsLikeDefn, not ClassDef @@ -123,17 +123,17 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() - val path: ArgWrappable = pOpt.getOrElse(owner match + val path = pOpt.getOrElse(owner match case S(owner) => owner.asPath.selSN(sym.nme) - case N => bsym) + case N => bsym.asPath) baseSym match case _: ClassSymbol => transformParamsOpt(paramsOpt): paramsOpt => auxParams.map(transformParamList).collectApply: auxParams => tuple(auxParams): auxParams => - blockCtor("ClassSymbol", Ls(toValue(name), path, toValue(0), paramsOpt, auxParams, toValue(0)), symName)(checkMap) + blockCtor("ClassSymbol", Ls(toValue(name), path, toValue(0), paramsOpt, auxParams, toValue(0)), symName)(checkMap(path, _)) case _: ModuleOrObjectSymbol => - blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap) + blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap(path, _)) case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match @@ -329,7 +329,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S f.copy(sym = stageSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) - override def applyBlock(b: Block): Block = super.applyBlock(b) match + override def applyBlock(b: Block): Block = b match // TODO: assume staged classes have no companion module // find modules with staged annotation, or classes without companion module case Define(defn: ClsLikeDefn, rest) @@ -421,12 +421,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // used for staging classes inside modules val newCompanion = companion.copy( methods = companion.methods ++ helperMethods.flatten, - ctor = cacheDecl(generatorMapDecl(debugCont(companion.ctor))), + ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), publicFields = companion.publicFields ) val newClsLikeDefn = defn.copy(companion = S(newCompanion)) - Define(newClsLikeDefn, rest) - case b => b + Define(newClsLikeDefn, applyBlock(rest)) + case b => super.applyBlock(b) def mkDefnMap(b: Block): Unit = val transformer = new BlockTraverser: diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 263166729d..01814ea9cc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -41,14 +41,13 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = // TODO: move this to somewhere appropriate // TODO: is this the only way? we cannot assign a property to a class that is not extensible -fun checkMap(symbolMap, value) = +fun checkMap(symbolMap, key, value) = // this approach of updating the class value doesn't work if the class is not extensible // if classValue.("stagedSymbol") is // v and v is Symbol then v // else set classValue.("stagedSymbol") = value; value // console.log(symbolMap, value) - // FIXME: depends on hashes of equal data classes to be equal - let key = value.hash() + // let key = value.hash() let v = symbolMap.get(key) if v is Symbol then v diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 2f852f7a06..18a75d7ac9 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -3,10 +3,12 @@ staged class A(val a) //│ > fun ctor_(a) = -//│ > A1.a = a +//│ > set A1.a = a //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { -//│ > 'ClassSymbol("A1", fun A { class: class A }, 0, Some([Symbol("a")]), [], _)' => ClassSymbol { +//│ > [Function: A] { +//│ > class: [class A] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } +//│ > } => ClassSymbol { //│ > name: 'A1', //│ > value: [Function: A] { class: [Function] }, //│ > moduleValue: 0, @@ -15,77 +17,42 @@ staged class A(val a) //│ > } //│ > } -:sir +staged module C with + class I +//│ > fun ctor_() = +//│ > class I +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } +//│ > Map(1) { +//│ > [class I] { Symbol(mlscript.definitionMetadata): [ 'class', 'I' ] } => ClassSymbol { +//│ > name: 'I', +//│ > value: [class I] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } + +// :sjs +class C +staged module M with + fun f() = C +//│ > fun ctor_() = +//│ > () +//│ > fun f() = C +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(1) { +//│ > [class C2] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { +//│ > name: 'C', +//│ > value: [class C2] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } + +// :sir staged class C with fun f() = 1 -//│ Lowered: -//│ let C⁰; -//│ define C⁰ as staged class C¹ { -//│ method f⁰ = fun () { -//│ return 1 -//│ } -//│ } {} -//│ module C² { -//│ constructor { -//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13, tmp14; -//│ set tmp8 = C².ctor$_instr﹖(); -//│ set tmp9 = ["ctor$", tmp8]; -//│ set tmp10 = C².f_instr﹖(); -//│ set tmp11 = ["f", tmp10]; -//│ set tmp12 = [tmp9, tmp11]; -//│ set tmp13 = new globalThis⁰.Map﹖(tmp12); -//│ set tmp14 = new SpecializeHelpers⁰.FunCache﹖(tmp13); -//│ define cache$C⁰ as val cache$C¹ = tmp14; -//│ set tmp4 = ["ctor$", C².ctor$_gen﹖]; -//│ set tmp5 = ["f", C².f_gen﹖]; -//│ set tmp6 = [tmp4, tmp5]; -//│ set tmp7 = new globalThis⁰.Map﹖(tmp6); -//│ define generatorMap$C⁰ as val generatorMap$C¹ = tmp7; -//│ set tmp = { "indent": true }; -//│ set tmp1 = C².cache$C﹖.toString﹖(); -//│ set tmp2 = globalThis⁰.console﹖.log﹖(tmp1); -//│ set tmp3 = globalThis⁰.console﹖.log﹖(C².generatorMap$C﹖); -//│ end -//│ } -//│ method ctor$_instr⁰ = fun () { -//│ let end, tmp, tmp1, sym, tmp2; -//│ set end = new Block⁰.End﹖(); -//│ set tmp = []; -//│ set tmp1 = [tmp]; -//│ set sym = new Block⁰.Symbol﹖("ctor$"); -//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, end); -//│ return tmp2 -//│ } -//│ method ctor$_gen⁰ = fun (cls)() { -//│ let tmp, tmp1, tmp2, tmp3, tmp4; -//│ set tmp = C².cache$C﹖.getFun﹖("ctor$"); -//│ set tmp1 = [cls]; -//│ set tmp2 = []; -//│ set tmp3 = [tmp1, tmp2]; -//│ set tmp4 = SpecializeHelpers⁰.specialize﹖(C².cache$C﹖, "ctor$", C².ctor$_instr﹖, tmp3); -//│ return tmp4 -//│ } -//│ method f_instr⁰ = fun () { -//│ let lit, return1, tmp, tmp1, sym, tmp2; -//│ set lit = new Block⁰.ValueLit﹖(1); -//│ set return1 = new Block⁰.Return﹖(lit, false); -//│ set tmp = []; -//│ set tmp1 = [tmp]; -//│ set sym = new Block⁰.Symbol﹖("f"); -//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, return1); -//│ return tmp2 -//│ } -//│ method f_gen⁰ = fun (cls1)() { -//│ let tmp, tmp1, tmp2, tmp3, tmp4; -//│ set tmp = C².cache$C﹖.getFun﹖("f"); -//│ set tmp1 = [cls1]; -//│ set tmp2 = []; -//│ set tmp3 = [tmp1, tmp2]; -//│ set tmp4 = SpecializeHelpers⁰.specialize﹖(C².cache$C﹖, "f", C².f_instr﹖, tmp3); -//│ return tmp4 -//│ } -//│ }; -//│ end //│ > fun ctor_() = //│ > () //│ > fun f() = 1 @@ -94,7 +61,7 @@ staged class C with :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.95: staged class C(x) +//│ ║ l.91: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with @@ -103,11 +70,13 @@ staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 //│ > fun ctor_(x) = -//│ > B1.x = x +//│ > set B1.x = x //│ > fun f(y) = +(B1.x, y) //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { -//│ > 'ClassSymbol("B1", fun B { class: class B }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { +//│ > [Function: B] { +//│ > class: [class B] { 'cache$B': [FunCache], 'generatorMap$B': [Map] } +//│ > } => ClassSymbol { //│ > name: 'B1', //│ > value: [Function: B] { class: [Function] }, //│ > moduleValue: 0, @@ -117,22 +86,30 @@ staged class D(val x) extends B(x+1) with //│ > } //│ > fun ctor_(x) = //│ > let tmp -//│ > let tmp1 -//│ > tmp1 = +(x, 1) -//│ > tmp = super(tmp1) -//│ > D1.x = x -//│ > D1.y = 1 +//│ > tmp = +(x, 1) +//│ > super(tmp) //│ > fun f() = 42 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(2) { -//│ > 'ClassSymbol("B1", fun B { class: class B }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { +//│ > [Function: B] { +//│ > class: [class B] { +//│ > 'cache$B': [FunCache], +//│ > 'generatorMap$B': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > } => ClassSymbol { //│ > name: 'B1', //│ > value: [Function: B] { class: [Function] }, //│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, -//│ > 'ClassSymbol("D1", fun D { class: class D }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { +//│ > [Function: D] { +//│ > class: [class D extends B] { +//│ > 'cache$D': [FunCache], +//│ > 'generatorMap$D': [Map] +//│ > } +//│ > } => ClassSymbol { //│ > name: 'D1', //│ > value: [Function: D] { class: [Function] }, //│ > moduleValue: 0, diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 13d539408d..1d6d000c33 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -76,8 +76,8 @@ staged module Expressions with //│ > 'match2' => [Function: match2_gen] //│ > } //│ > Map(2) { -//│ > 'VirtualClassSymbol("Bool")' => VirtualClassSymbol { name: 'Bool' }, -//│ > 'VirtualClassSymbol("Int")' => VirtualClassSymbol { name: 'Int' } +//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, +//│ > 'Int' => VirtualClassSymbol { name: 'Int' } //│ > } //│ x = [1, 2, 3] @@ -104,30 +104,49 @@ staged module ClassInstrumentation with //│ > 'app2' => [Function: app2_gen] //│ > } //│ > Map(4) { -//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { +//│ > [class NoArg] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NoArg' ] +//│ > } => ClassSymbol { //│ > name: 'NoArg', -//│ > value: undefined, +//│ > value: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, -//│ > 'ClassSymbol("Inside", undefined, 0, Some([Symbol("a"), Symbol("b")]), [], _)' => ClassSymbol { +//│ > [Function: Inside] { +//│ > class: [class Inside] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ClassSymbol { //│ > name: 'Inside', -//│ > value: undefined, +//│ > value: [Function: Inside] { class: [Function] }, //│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, -//│ > 'ClassSymbol("Outside", fun Outside { class: class Outside }, 0, Some([Symbol("a")]), [], _)' => ClassSymbol { +//│ > [Function: Outside] { +//│ > class: [class Outside] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ClassSymbol { //│ > name: 'Outside', //│ > value: [Function: Outside] { class: [Function] }, //│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, -//│ > 'ModuleSymbol("ClassInstrumentation", class ClassInstrumentation)' => ModuleSymbol { +//│ > [class ClassInstrumentation] { +//│ > Inside: [Function: Inside] { class: [Function] }, +//│ > NoArg: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > 'cache$ClassInstrumentation': FunCache { cache: [Map] }, +//│ > 'generatorMap$ClassInstrumentation': Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'inst1' => [Function: inst1_gen], +//│ > 'inst2' => [Function: inst2_gen], +//│ > 'app1' => [Function: app1_gen], +//│ > 'app2' => [Function: app2_gen] +//│ > } +//│ > } => ModuleSymbol { //│ > name: 'ClassInstrumentation', //│ > value: [class ClassInstrumentation] { +//│ > Inside: [Function], +//│ > NoArg: [Function], //│ > 'cache$ClassInstrumentation': [FunCache], //│ > 'generatorMap$ClassInstrumentation': [Map] //│ > } @@ -146,7 +165,6 @@ staged module CallSubst with //│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(0) {} //│ > fun ctor_() = //│ > () //│ > fun call() = @@ -157,13 +175,20 @@ staged module CallSubst with //│ > 'call' => [Function: call_gen] //│ > } //│ > Map(2) { -//│ > 'ModuleSymbol("Nonstaged", class Nonstaged)' => ModuleSymbol { +//│ > [class Nonstaged] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Nonstaged' ] +//│ > } => ModuleSymbol { //│ > name: 'Nonstaged', //│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } //│ > }, -//│ > 'ModuleSymbol("Staged", class Staged { cache$Staged: fun ctor_() =\n' + -//│ > ' ()\n' + -//│ > 'fun f() = 1, generatorMap$Staged: Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} })' => ModuleSymbol { +//│ > [class Staged] { +//│ > 'cache$Staged': FunCache { cache: [Map] }, +//│ > 'generatorMap$Staged': Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen] +//│ > }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Staged' ] +//│ > } => ModuleSymbol { //│ > name: 'Staged', //│ > value: [class Staged] { //│ > 'cache$Staged': [FunCache], @@ -195,7 +220,9 @@ staged module Arguments with //│ > 'g' => [Function: g_gen] //│ > } //│ > Map(1) { -//│ > 'ClassSymbol("Function$", class Function$, 0, None, [], _)' => ClassSymbol { +//│ > [class Function$1 extends Function] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] +//│ > } => ClassSymbol { //│ > name: 'Function$', //│ > value: [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [Array] @@ -236,7 +263,14 @@ staged module OtherBlocks with //│ > 'breakAndLabel' => [Function: breakAndLabel_gen] //│ > } //│ > Map(1) { -//│ > 'ModuleSymbol("OtherBlocks", class OtherBlocks)' => ModuleSymbol { +//│ > [class OtherBlocks] { +//│ > 'cache$OtherBlocks': FunCache { cache: [Map] }, +//│ > 'generatorMap$OtherBlocks': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'scope' => [Function: scope_gen], +//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] +//│ > } +//│ > } => ModuleSymbol { //│ > name: 'OtherBlocks', //│ > value: [class OtherBlocks] { //│ > 'cache$OtherBlocks': [FunCache], @@ -251,15 +285,16 @@ staged module ClassDefs with //│ > class A //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { -//│ > 'ClassSymbol("A", undefined, 0, None, [], _)' => ClassSymbol { +//│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ClassSymbol { //│ > name: 'A', -//│ > value: undefined, +//│ > value: [class A] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > } //│ > } +// :sjs staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) @@ -273,22 +308,24 @@ staged module ClassFunctions with //│ > fun g() = InnerClass.f() //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(2) { -//│ > 'ClassSymbol("InnerClass", undefined, 0, Some([]), [], _)' => ClassSymbol { +//│ > [Function: InnerClass] { +//│ > class: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ClassSymbol { //│ > name: 'InnerClass', -//│ > value: undefined, +//│ > value: [Function: InnerClass] { class: [Function] }, //│ > moduleValue: 0, //│ > paramsOpt: Some { value: [] }, //│ > auxParams: [] //│ > }, -//│ > 'ModuleSymbol("Arguments", class Arguments { cache$Arguments: fun ctor_() =\n' + -//│ > ' ()\n' + -//│ > 'fun f(x) =\n' + -//│ > ' x = 1\n' + -//│ > ' x\n' + -//│ > 'fun g(x) =\n' + -//│ > ' let tmp\n' + -//│ > ' tmp = new Function_()\n' + -//│ > ' tmp, generatorMap$Arguments: Map(3) {"ctor$" => fun ctor$_gen, "f" => fun f_gen, "g" => fun g_gen} })' => ModuleSymbol { +//│ > [class Arguments] { +//│ > 'cache$Arguments': FunCache { cache: [Map] }, +//│ > 'generatorMap$Arguments': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Arguments' ] +//│ > } => ModuleSymbol { //│ > name: 'Arguments', //│ > value: [class Arguments] { //│ > 'cache$Arguments': [FunCache], @@ -324,18 +361,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.322: let x = 1 +//│ ║ l.359: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.322: let x = 1 +//│ ║ l.359: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.322: let x = 1 +//│ ║ l.359: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.322: let x = 1 +//│ ║ l.359: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -364,7 +401,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.364: fun g() = {1 : 2} +//│ ║ l.401: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -376,11 +413,11 @@ staged module Spread with //│ > fun ctor_() = //│ > () //│ > fun f() = +//│ > let element0_ //│ > let scrut //│ > let tmp //│ > let x //│ > let middleElements -//│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > if scrut is @@ -394,3 +431,5 @@ staged module Spread with //│ > else 0 //│ > else 0 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } + +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 34abdc73a7..d632edd779 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -10,6 +10,15 @@ staged module M with //│ > fun f() = 1 //│ > fun g() = C.f() //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } +//│ > Map(1) { +//│ > [class C] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { +//│ > name: 'C', +//│ > value: [class C] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } staged module A with fun f() = 1 @@ -51,6 +60,44 @@ staged module D with //│ > 'f' => [Function: f_gen], //│ > 'matching' => [Function: matching_gen] //│ > } +//│ > Map(5) { +//│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { +//│ > name: 'E', +//│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [class A] { +//│ > 'cache$A': FunCache { cache: [Map] }, +//│ > 'generatorMap$A': Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen] +//│ > }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] +//│ > } => ModuleSymbol { +//│ > name: 'A', +//│ > value: [class A] { +//│ > 'cache$A': [FunCache], +//│ > 'generatorMap$A': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > }, +//│ > [class B] { Symbol(mlscript.definitionMetadata): [ 'class', 'B' ] } => ModuleSymbol { +//│ > name: 'B', +//│ > value: [class B] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > }, +//│ > 'Int' => VirtualClassSymbol { name: 'Int' }, +//│ > [Function: C] { +//│ > class: [class C1] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [ [Array], [Array] ] +//│ > } +//│ > } module A with module B with @@ -68,13 +115,69 @@ staged module M with //│ > __no__symbol__ = A.B.C(1) //│ > M.E //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(5) { +//│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { +//│ > name: 'E', +//│ > value: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [class A2] { +//│ > B: [class B2] { +//│ > C: [Function], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] +//│ > } => ModuleSymbol { +//│ > name: 'A', +//│ > value: [class A2] { +//│ > B: [Function], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > }, +//│ > [class B2] { +//│ > C: [Function: C] { class: [Function] }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'B' ] +//│ > } => ModuleSymbol { +//│ > name: 'B', +//│ > value: [class B2] { +//│ > C: [Function], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > }, +//│ > [Function: C] { +//│ > class: [class C3] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > [class M2] { +//│ > E: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > 'cache$M': FunCache { cache: [Map] }, +//│ > 'generatorMap$M': Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'M', +//│ > value: [class M2] { +//│ > E: [Function], +//│ > 'cache$M': [FunCache], +//│ > 'generatorMap$M': [Map] +//│ > } +//│ > } +//│ > } :e staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.74: fun g()() = 1 -//│ ╙── ^^^^^^^^^^^^^ +//│ ║ l.177: fun g()() = 1 +//│ ╙── ^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun g()() = 1 @@ -99,3 +202,27 @@ staged module M with //│ > 'f' => [Function: f_gen], //│ > 'g' => [Function: g_gen] //│ > } +//│ > Map(2) { +//│ > [class Function$1 extends Function] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] +//│ > } => ClassSymbol { +//│ > name: 'Function$', +//│ > value: [class Function$1 extends Function] { +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > }, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [class Function$ extends Function] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] +//│ > } => ClassSymbol { +//│ > name: 'Function$1', +//│ > value: [class Function$ extends Function] { +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > }, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } From 49b9c57ee92824bcadcff4fa376fcb2fa9769823 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 26 Mar 2026 15:24:55 +0800 Subject: [PATCH 365/654] make funcache printing manual --- .../codegen/ReflectionInstrumenter.scala | 27 +- .../mlscript-compile/SpecializeHelpers.mls | 4 +- .../test/mlscript/block-staging/Classes.mls | 20 +- .../test/mlscript/block-staging/Functions.mls | 250 ++++++++++-------- .../mlscript/block-staging/StageSymbols.mls | 45 +--- 5 files changed, 165 insertions(+), 181 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 6375550dc5..4406dff465 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -382,10 +382,15 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val staged = stageMethod(f) val stagedPath = modSym.asPath.selSN(staged.sym.nme) val gen = genMethod(f, stagedPath) + def cacheDebug(k: Path => Block) = + call(stagedPath, Nil): res => + // stub for the returned shape of the function + tuple(Ls(res, toValue(1))): entry => + tuple(Ls(toValue(f.sym.nme), entry))(k) ( Ls(staged, gen), - (k: Path => Block) => call(stagedPath, Nil)(p => tuple(Ls(toValue(f.sym.nme), p))(k)), + cacheDebug, tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))) ) ).unzip3 @@ -407,16 +412,16 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // TODO: remove this. only for testing def debugCont(rest: Block) = val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") - val renderFun = State.runtimeSymbol.asPath.selSN("render") - val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) - - assign(options): options => - call(cachePath.selSN("toString"), Nil, false): str => - call(printFun, Ls(str), false): _ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest + // val renderFun = State.runtimeSymbol.asPath.selSN("render") + // val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) + + // assign(options): options => + // call(cachePath.selSN("toString"), Nil, false): str => + // call(printFun, Ls(str), false): _ => + call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => + if symbolMapUsed + then call(printFun, Ls(symbolMapSym), false)(_ => rest) + else rest // used for staging classes inside modules val newCompanion = companion.copy( diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 2abe3ccae6..c326bf0141 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -38,8 +38,8 @@ fun specialize(cache, funName, dflt, shapes) = let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, res.0.body), res.1]) [entry.0.sym, entry.1] -class FunCache(val cache: Map[String, Symbol]) with +class FunCache(val cache: Map[Any, [Block.Block, Shape]]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions fun setFun(k, v) = cache.set(k, v); v - fun toString() = cache.values().map(showDefn).toArray().join("\n") \ No newline at end of file + fun toString() = cache.values().map(p => showDefn(p.0)).toArray().join("\n") \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 18a75d7ac9..fca1d5e18a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -2,8 +2,6 @@ :staging staged class A(val a) -//│ > fun ctor_(a) = -//│ > set A1.a = a //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [Function: A] { @@ -19,8 +17,6 @@ staged class A(val a) staged module C with class I -//│ > fun ctor_() = -//│ > class I //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [class I] { Symbol(mlscript.definitionMetadata): [ 'class', 'I' ] } => ClassSymbol { @@ -36,9 +32,6 @@ staged module C with class C staged module M with fun f() = C -//│ > fun ctor_() = -//│ > () -//│ > fun f() = C //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [class C2] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { @@ -53,15 +46,12 @@ staged module M with // :sir staged class C with fun f() = 1 -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.91: staged class C(x) +//│ ║ l.85: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with @@ -69,9 +59,6 @@ staged class B(val x) with staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 -//│ > fun ctor_(x) = -//│ > set B1.x = x -//│ > fun f(y) = +(B1.x, y) //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [Function: B] { @@ -84,11 +71,6 @@ staged class D(val x) extends B(x+1) with //│ > auxParams: [] //│ > } //│ > } -//│ > fun ctor_(x) = -//│ > let tmp -//│ > tmp = +(x, 1) -//│ > super(tmp) -//│ > fun f() = 42 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: B] { diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 1d6d000c33..7472403726 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,6 +24,27 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 +//│ > Map(8) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'lit' => [Function: lit_gen], +//│ > 'assign' => [Function: assign_gen], +//│ > 'tup1' => [Function: tup1_gen], +//│ > 'tup2' => [Function: tup2_gen], +//│ > 'dynsel' => [Function: dynsel_gen], +//│ > 'match1' => [Function: match1_gen], +//│ > 'match2' => [Function: match2_gen] +//│ > } +//│ > Map(2) { +//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, +//│ > 'Int' => VirtualClassSymbol { name: 'Int' } +//│ > } +//│ x = [1, 2, 3] + +:e +print(Expressions."cache$Expressions") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Expressions. +//│ ║ l.44: print(Expressions."cache$Expressions") +//│ ╙── ^^^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun lit() = 1 @@ -65,21 +86,6 @@ staged module Expressions with //│ > else a = element0_ //│ > 3 //│ > else 0 -//│ > Map(8) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'lit' => [Function: lit_gen], -//│ > 'assign' => [Function: assign_gen], -//│ > 'tup1' => [Function: tup1_gen], -//│ > 'tup2' => [Function: tup2_gen], -//│ > 'dynsel' => [Function: dynsel_gen], -//│ > 'match1' => [Function: match1_gen], -//│ > 'match2' => [Function: match2_gen] -//│ > } -//│ > Map(2) { -//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, -//│ > 'Int' => VirtualClassSymbol { name: 'Int' } -//│ > } -//│ x = [1, 2, 3] class Outside(a) staged module ClassInstrumentation with @@ -89,13 +95,6 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > fun ctor_() = -//│ > class Inside(a, b) -//│ > class NoArg -//│ > fun inst1() = new Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg() -//│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside(1, 2) //│ > Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'inst1' => [Function: inst1_gen], @@ -153,6 +152,19 @@ staged module ClassInstrumentation with //│ > } //│ > } +:e +print(ClassInstrumentation.("cache$ClassInstrumentation")) +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassInstrumentation. +//│ ║ l.156: print(ClassInstrumentation.("cache$ClassInstrumentation")) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ > fun ctor_() = +//│ > class Inside(a, b) +//│ > class NoArg +//│ > fun inst1() = new Outside(1) +//│ > fun inst2() = new ClassInstrumentation.NoArg() +//│ > fun app1() = Outside(1) +//│ > fun app2() = ClassInstrumentation.Inside(1, 2) + module Nonstaged with fun f() = 1 staged module Staged with @@ -161,15 +173,7 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > fun ctor_() = -//│ > () -//│ > fun call() = -//│ > __no__symbol__ = Nonstaged.f() -//│ > Staged.f() //│ > Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'call' => [Function: call_gen] @@ -198,6 +202,16 @@ staged module CallSubst with //│ > } //│ > } +:e +print(CallSubst."cache$CallSubst") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. +//│ ║ l.206: print(CallSubst."cache$CallSubst") +//│ ╙── ^^^^^^^^^ +//│ > fun ctor_() = +//│ > () +//│ > fun call() = +//│ > __no__symbol__ = Nonstaged.f() +//│ > Staged.f() :ftc staged module Arguments with @@ -205,15 +219,6 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > fun ctor_() = -//│ > () -//│ > fun f(x) = -//│ > x = 1 -//│ > x -//│ > fun g(x) = -//│ > let tmp -//│ > tmp = new Function_() -//│ > tmp //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -233,6 +238,21 @@ staged module Arguments with //│ > } //│ > } +:e +print(Arguments."cache$Arguments") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Arguments. +//│ ║ l.242: print(Arguments."cache$Arguments") +//│ ╙── ^^^^^^^^^ +//│ > fun ctor_() = +//│ > () +//│ > fun f(x) = +//│ > x = 1 +//│ > x +//│ > fun g(x) = +//│ > let tmp +//│ > tmp = new Function_() +//│ > tmp + staged module OtherBlocks with fun scope() = scope.locally of ( @@ -244,19 +264,6 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > fun ctor_() = -//│ > () -//│ > fun scope() = -//│ > let a -//│ > a = 1 -//│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel() = -//│ > let scrut -//│ > scrut = 1 -//│ > if scrut is -//│ > 2 then 0 -//│ > 3 then 0 -//│ > else 0 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'scope' => [Function: scope_gen], @@ -279,10 +286,27 @@ staged module OtherBlocks with //│ > } //│ > } +:e +print(OtherBlocks."cache$OtherBlocks") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type OtherBlocks. +//│ ║ l.290: print(OtherBlocks."cache$OtherBlocks") +//│ ╙── ^^^^^^^^^^^ +//│ > fun ctor_() = +//│ > () +//│ > fun scope() = +//│ > let a +//│ > a = 1 +//│ > OtherBlocks.scope.locally(a) +//│ > fun breakAndLabel() = +//│ > let scrut +//│ > scrut = 1 +//│ > if scrut is +//│ > 2 then 0 +//│ > 3 then 0 +//│ > else 0 + staged module ClassDefs with class A -//│ > fun ctor_() = -//│ > class A //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ClassSymbol { @@ -294,18 +318,19 @@ staged module ClassDefs with //│ > } //│ > } +:e +print(ClassDefs."cache$ClassDefs") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. +//│ ║ l.322: print(ClassDefs."cache$ClassDefs") +//│ ╙── ^^^^^^^^^ +//│ > fun ctor_() = +//│ > class A + // :sjs staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() -//│ > fun ctor_() = -//│ > class InnerClass() with -//│ > fun f() = -//│ > let tmp -//│ > tmp = Arguments.f(1) -//│ > +(1, tmp) -//│ > fun g() = InnerClass.f() //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(2) { //│ > [Function: InnerClass] { @@ -335,25 +360,72 @@ staged module ClassFunctions with //│ > } //│ > } +:e +print(ClassFunctions."cache$ClassFunctions") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassFunctions. +//│ ║ l.364: print(ClassFunctions."cache$ClassFunctions") +//│ ╙── ^^^^^^^^^^^^^^ +//│ > fun ctor_() = +//│ > class InnerClass() with +//│ > fun f() = +//│ > let tmp +//│ > tmp = Arguments.f(1) +//│ > +(1, tmp) +//│ > fun g() = InnerClass.f() + // name collision class A() staged module A with fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } + +print(A."class"."cache$A") //│ > fun ctor_() = //│ > () //│ > fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } // nested module module A with staged module B with fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } + +:e +print(A.B."cache$B") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful selection of type B. +//│ ║ l.394: print(A.B."cache$B") +//│ ╙── ^^^ //│ > fun ctor_() = //│ > () //│ > fun f() = 1 + +staged module Shadowing with + fun f(x, x) = x //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +:todo these symbols may be confused dueing shape propagation +print(Shadowing."cache$Shadowing") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. +//│ ║ l.407: print(Shadowing."cache$Shadowing") +//│ ╙── ^^^^^^^^^ +//│ > fun ctor_() = +//│ > () +//│ > fun f(x, x) = x + +// testing generatorMap +staged module M with + fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } + +:e +M."generatorMap$M" +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. +//│ ║ l.421: M."generatorMap$M" +//│ ╙── ^ +//│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} + :todo force enable :ftc to desugar Label and Break +:ftc staged module M with fun f() = let x = 1 @@ -361,38 +433,21 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.359: let x = 1 +//│ ║ l.431: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.359: let x = 1 +//│ ║ l.431: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.359: let x = 1 +//│ ║ l.431: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.359: let x = 1 +//│ ║ l.431: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined -// TODO: force enable :ftc to desugar Label and Break -staged module M with - fun f() = if 1 is - 0 then 2 - 1 then 2 - else 2 -//│ > fun ctor_() = -//│ > () -//│ > fun f() = -//│ > let scrut -//│ > scrut = 1 -//│ > if scrut is -//│ > 0 then 2 -//│ > 1 then 2 -//│ > else 2 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } - :e class C(val a) staged module A with @@ -401,7 +456,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.401: fun g() = {1 : 2} +//│ ║ l.456: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -410,26 +465,11 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) -//│ > fun ctor_() = -//│ > () -//│ > fun f() = -//│ > let element0_ -//│ > let scrut -//│ > let tmp -//│ > let x -//│ > let middleElements -//│ > tmp = [1, 2] -//│ > scrut = [1, tmp] -//│ > if scrut is -//│ > [_] then -//│ > element0_ = Runtime.Tuple.get(scrut, 0) -//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) -//│ > if element0_ is -//│ > 1 then -//│ > x = middleElements -//│ > x -//│ > else 0 -//│ > else 0 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +:todo +staged module RetUnit with + fun f() = () +//│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. + diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index d632edd779..fc86451192 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -5,10 +5,6 @@ staged module M with class C with fun f() = 1 fun g() = f() -//│ > fun ctor_() = -//│ > class C with -//│ > fun f() = 1 -//│ > fun g() = C.f() //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [class C] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { @@ -33,28 +29,7 @@ staged module D with fun matching() = 1 is Int 1 is C -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > fun ctor_() = -//│ > class E -//│ > fun f() = -//│ > __no__symbol__ = A.f() -//│ > B.f() -//│ > fun matching() = -//│ > let tmp -//│ > let scrut -//│ > let scrut1 -//│ > scrut = 1 -//│ > if scrut is -//│ > Int then -//│ > tmp = true -//│ > else tmp = false -//│ > scrut1 = 1 -//│ > if scrut1 is -//│ > C(a, b) then true -//│ > else false //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -109,11 +84,6 @@ staged module M with A.B.C A.B.C(1) E -//│ > fun ctor_() = -//│ > class E -//│ > fun f() = -//│ > __no__symbol__ = A.B.C(1) -//│ > M.E //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(5) { //│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { @@ -176,27 +146,14 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.177: fun g()() = 1 +//│ ║ l.147: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ -//│ > fun ctor_() = -//│ > () -//│ > fun g()() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } :ftc staged module M with fun f() = x => x fun g()() = 1 -//│ > fun ctor_() = -//│ > () -//│ > fun f() = -//│ > let tmp -//│ > tmp = new Function_() -//│ > tmp -//│ > fun g() = -//│ > let tmp1 -//│ > tmp1 = new Function_1() -//│ > tmp1 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], From 65bd3a5febe785c77424894253b997f4e43ad06c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 26 Mar 2026 15:38:44 +0800 Subject: [PATCH 366/654] clean up --- .../codegen/ReflectionInstrumenter.scala | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 4406dff465..99fe8a4edc 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -33,8 +33,7 @@ extension [A, B](ls: Iterable[(A => B) => B]) type ArgWrappable = Path | Symbol -def asArg(x: ArgWrappable): Arg = - x match +def asArg(x: ArgWrappable): Arg = x match case p: Path => p.asArg case l: Symbol => l.asPath.asArg @@ -327,7 +326,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val rest = transformFunDefn(f)(using Context(new HashMap()))((block, _) => Return(block, false)) (Scoped(Set(argSyms*), rest)) - f.copy(sym = stageSym, dSym = dSym, params = Ls(PlainParamList(Nil)), body = newBody)(false) + FunDefn.withFreshSymbol(f.dSym.owner, stageSym, Ls(PlainParamList(Nil)), newBody)(false) override def applyBlock(b: Block): Block = b match // TODO: assume staged classes have no companion module @@ -336,20 +335,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S if defn.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) || defn.companion.isEmpty && defn.isym.defn.exists(_.hasStagedModifier.isDefined) => val (sym, companion, ctor, ctorParams, methods) = defn.companion match - case S(companion) => (companion.isym, companion, companion.ctor, N, companion.methods) - case N => - if !defn.privateFields.isEmpty then - raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) - return End() - val companion = ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End()) - val ctor = defn.preCtor.mapTail({ - case Return(res, implct) => assign(res)(_ => defn.ctor) - case _: End => defn.ctor - case _ => - raise(ErrorReport(msg"Unexpected BlockTail of preCtor, the tail will be discarded." -> defn.sym.toLoc :: Nil)) - defn.ctor - }) - (defn.sym, companion, ctor, defn.paramsOpt, defn.methods) + case S(companion) => (companion.isym, companion, companion.ctor, N, companion.methods) + case N => + if !defn.privateFields.isEmpty then + raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) + return End() + val companion = ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End()) + val ctor = Begin(defn.preCtor, defn.ctor) + (defn.sym, companion, ctor, defn.paramsOpt, defn.methods) val modSym = companion.isym @@ -368,16 +361,16 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val genSymName = f.sym.nme + "_gen" val sym = BlockMemberSymbol(genSymName, Nil, false) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) - + val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: f.params else f.params val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => tuple(tups): args => call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => Return(res, false) - f.copy(params = params, sym = sym, dSym = dSym, body = body)(false) + FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(false) - val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false) + val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false) val (helperMethods, cacheEntries, generatorEntries) = (ctorFun :: methods).map(f => val staged = stageMethod(f) val stagedPath = modSym.asPath.selSN(staged.sym.nme) From bbd67990bdce571f2c83cc0f11368ffdcbd39162 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 26 Mar 2026 15:58:59 +0800 Subject: [PATCH 367/654] improve staging codegen --- .../codegen/ReflectionInstrumenter.scala | 6 ++-- .../src/test/mlscript-compile/Block.mls | 2 +- .../test/mlscript/block-staging/Functions.mls | 34 ++++++++----------- .../mlscript/block-staging/StageSymbols.mls | 9 +---- 4 files changed, 19 insertions(+), 32 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 99fe8a4edc..039a4fc26d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -66,7 +66,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S assign(Tuple(false, elems.map(asArg)), symName)(k) def ctor(using State)(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - assign(Instantiate(false, cls, args.map(asArg)), symName)(k) + assign(Instantiate(true, cls, args.map(asArg)), symName)(k) def call(using State)(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = assign(Call(fun, args.map(asArg))(isMlsFun, false, false), symName)(k) @@ -130,7 +130,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformParamsOpt(paramsOpt): paramsOpt => auxParams.map(transformParamList).collectApply: auxParams => tuple(auxParams): auxParams => - blockCtor("ClassSymbol", Ls(toValue(name), path, toValue(0), paramsOpt, auxParams, toValue(0)), symName)(checkMap(path, _)) + blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap(path, _)) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap(path, _)) case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) @@ -393,7 +393,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S cacheEntries.collectApply: cacheTups => tuple(cacheTups): tup => this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => - assign(Instantiate(mut = false, helperMod("FunCache"), Ls(Arg(N, map)))): funCache => + assign(Instantiate(false, helperMod("FunCache"), Ls(Arg(N, map)))): funCache => Define(ValDefn(cacheTsym, cacheSym, funCache), rest) def generatorMapDecl(rest: Block) = diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 01814ea9cc..7db721f480 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -19,7 +19,7 @@ type ParamList = Array[Symbol] class Symbol(val name: Str) extends CachedHash class VirtualClassSymbol(val name: Str) extends Symbol(name) -class ClassSymbol(val name: Str, val value, val moduleValue, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList], parentPath) extends Symbol(name) +class ClassSymbol(val name: Str, val value, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList]) extends Symbol(name) class ModuleSymbol(val name: Str, val value) extends Symbol(name) class Arm(val cse: Case, val body: Block) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 7472403726..d1463afa81 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -108,7 +108,6 @@ staged module ClassInstrumentation with //│ > } => ClassSymbol { //│ > name: 'NoArg', //│ > value: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, @@ -117,7 +116,6 @@ staged module ClassInstrumentation with //│ > } => ClassSymbol { //│ > name: 'Inside', //│ > value: [Function: Inside] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, @@ -126,7 +124,6 @@ staged module ClassInstrumentation with //│ > } => ClassSymbol { //│ > name: 'Outside', //│ > value: [Function: Outside] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, @@ -155,7 +152,7 @@ staged module ClassInstrumentation with :e print(ClassInstrumentation.("cache$ClassInstrumentation")) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassInstrumentation. -//│ ║ l.156: print(ClassInstrumentation.("cache$ClassInstrumentation")) +//│ ║ l.153: print(ClassInstrumentation.("cache$ClassInstrumentation")) //│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > class Inside(a, b) @@ -205,7 +202,7 @@ staged module CallSubst with :e print(CallSubst."cache$CallSubst") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. -//│ ║ l.206: print(CallSubst."cache$CallSubst") +//│ ║ l.203: print(CallSubst."cache$CallSubst") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -232,7 +229,6 @@ staged module Arguments with //│ > value: [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > } @@ -241,7 +237,7 @@ staged module Arguments with :e print(Arguments."cache$Arguments") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Arguments. -//│ ║ l.242: print(Arguments."cache$Arguments") +//│ ║ l.238: print(Arguments."cache$Arguments") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -289,7 +285,7 @@ staged module OtherBlocks with :e print(OtherBlocks."cache$OtherBlocks") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type OtherBlocks. -//│ ║ l.290: print(OtherBlocks."cache$OtherBlocks") +//│ ║ l.286: print(OtherBlocks."cache$OtherBlocks") //│ ╙── ^^^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -312,7 +308,6 @@ staged module ClassDefs with //│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ClassSymbol { //│ > name: 'A', //│ > value: [class A] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > } @@ -321,7 +316,7 @@ staged module ClassDefs with :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.322: print(ClassDefs."cache$ClassDefs") +//│ ║ l.317: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > class A @@ -338,7 +333,6 @@ staged module ClassFunctions with //│ > } => ClassSymbol { //│ > name: 'InnerClass', //│ > value: [Function: InnerClass] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [] }, //│ > auxParams: [] //│ > }, @@ -363,7 +357,7 @@ staged module ClassFunctions with :e print(ClassFunctions."cache$ClassFunctions") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassFunctions. -//│ ║ l.364: print(ClassFunctions."cache$ClassFunctions") +//│ ║ l.358: print(ClassFunctions."cache$ClassFunctions") //│ ╙── ^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > class InnerClass() with @@ -393,7 +387,7 @@ module A with :e print(A.B."cache$B") //│ ╔══[COMPILATION ERROR] Unexpected moduleful selection of type B. -//│ ║ l.394: print(A.B."cache$B") +//│ ║ l.388: print(A.B."cache$B") //│ ╙── ^^^ //│ > fun ctor_() = //│ > () @@ -406,7 +400,7 @@ staged module Shadowing with :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.407: print(Shadowing."cache$Shadowing") +//│ ║ l.401: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -420,7 +414,7 @@ staged module M with :e M."generatorMap$M" //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.421: M."generatorMap$M" +//│ ║ l.415: M."generatorMap$M" //│ ╙── ^ //│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} @@ -433,18 +427,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.431: let x = 1 +//│ ║ l.425: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.431: let x = 1 +//│ ║ l.425: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.431: let x = 1 +//│ ║ l.425: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.431: let x = 1 +//│ ║ l.425: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -456,7 +450,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.456: fun g() = {1 : 2} +//│ ║ l.450: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index fc86451192..5245e85379 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -10,7 +10,6 @@ staged module M with //│ > [class C] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { //│ > name: 'C', //│ > value: [class C] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > } @@ -39,7 +38,6 @@ staged module D with //│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', //│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, @@ -68,7 +66,6 @@ staged module D with //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [ [Array], [Array] ] //│ > } @@ -89,7 +86,6 @@ staged module M with //│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', //│ > value: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, @@ -121,7 +117,6 @@ staged module M with //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, @@ -146,7 +141,7 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.147: fun g()() = 1 +//│ ║ l.142: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } @@ -167,7 +162,6 @@ staged module M with //│ > value: [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, @@ -178,7 +172,6 @@ staged module M with //│ > value: [class Function$ extends Function] { //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > } From 5407966062d56f30c05ac8ec6c12ee26191e813f Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 26 Mar 2026 17:40:35 +0800 Subject: [PATCH 368/654] align with the current implementation of generatorMap and Cache --- .../scala/hkmc2/codegen/Instrumentation.scala | 52 +- .../src/test/mlscript-compile/ShapeSet.mls | 214 +------- .../mlscript-compile/SpecializeHelpers.mls | 207 +++++++- .../test/mlscript/block-staging/Classes.mls | 97 +++- .../test/mlscript/block-staging/Functions.mls | 275 +++-------- .../test/mlscript/block-staging/ShapeProp.mls | 458 +++++++++--------- 6 files changed, 622 insertions(+), 681 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala index 0c2f78e65a..f98f81ea05 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Instrumentation.scala @@ -376,11 +376,10 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: f.params else f.params - val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => - params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => - tuple(tups): args => - call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => - Return(res, false) + val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => + tuple(tups): args => + call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => + Return(res, false) f.copy(params = params, sym = sym, dSym = dSym, body = body)(false) val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false) @@ -398,11 +397,9 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb // initialize cache for the module def cacheDecl(rest: Block) = - cacheEntries.collectApply: cacheTups => - tuple(cacheTups): tup => - this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => - assign(Instantiate(mut = false, helperMod("FunCache"), Ls(Arg(N, map)))): funCache => - Define(ValDefn(cacheTsym, cacheSym, funCache), rest) + this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Nil): map => + assign(Instantiate(mut = false, helperMod("FunCache"), Ls(Arg(N, map)))): funCache => + Define(ValDefn(cacheTsym, cacheSym, funCache), rest) def generatorMapDecl(rest: Block) = generatorEntries.collectApply: defs => @@ -416,13 +413,34 @@ class Instrumentation(using State, Raise, Ctx) extends BlockTransformer(new Symb val renderFun = State.runtimeSymbol.asPath.selSN("render") val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) - assign(options): options => - call(cachePath.selSN("toString"), Nil, false): str => - call(printFun, Ls(str), false): _ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest + val gens = methods.map { f => + val genSymName = f.sym.nme + "_gen" + val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: f.params else f.params + (modSym.asPath.selSN(genSymName), params) + } + + call(State.shapeSetSymbol.asPath.selSN("mkDyn"), Nil, isMlsFun = true, symName = "tmp_dyn"): dynVal => + def callAllGens(gens: Ls[(Path, Ls[ParamList])], k: Block): Block = gens match + case Nil => k + case (genPath, params) :: tail => + def curryCall(funPath: Path, paramsLeft: Ls[ParamList], innerK: Block): Block = + paramsLeft match + case Nil => innerK + case pList :: Nil => + val args = pList.params.map(_ => dynVal) + call(funPath, args, isMlsFun = true, symName = "tmp_gen_res")(_ => innerK) + case pList :: xs => + val args = pList.params.map(_ => dynVal) + call(funPath, args, isMlsFun = true, symName = "tmp_gen_curry")(res => curryCall(res, xs, innerK)) + curryCall(genPath, params, callAllGens(tail, k)) + + callAllGens(gens, assign(options)(options => + call(cachePath.selSN("toString"), Nil, false)(str => + call(printFun, Ls(str), false)(_ => + call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false)(_ => + if symbolMapUsed + then call(printFun, Ls(symbolMapSym), false)(_ => rest) + else rest))))) // used for staging classes inside modules val newCompanion = companion.copy( diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 500c0a57dd..965748ae44 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -28,6 +28,9 @@ class ShapeSet(val shapeset: Map[String, Shape]) extends CachedHash with fun toString() = "{" ~ shapeset.keys().toArray().toSorted().toString() ~ "}" + fun isDyn() = + shapeset.size == 1 and values().0 is Dyn + fun isDynArr() = if shapeset.size == 1 and values().0 is Arr(shapes) then shapes.every(s => s is Dyn) else false @@ -116,7 +119,7 @@ fun val2path(v) = let blocks = mapped.map(_.0) let paths = mapped.map(_.0) let tupSym = freshId("tup") - let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map(Block.Arg(None, _))), Block.End()) + let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map(Block.Arg(_))), Block.End()) let fullBlock = foldl((b, acc) => Block.concat(b, acc))(tupAssign, ...blocks) [fullBlock, Block.ValueRef(tupSym)] else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then @@ -128,212 +131,7 @@ fun val2path(v) = let blocks = mapped.filter(_ is [_, _]).map(_ => _.0) let paths = mapped.map((m, _, _) => if m is [_, p] then p else m) let objSym = freshId("obj") - let objAssign = Block.Assign(objSym, Block.Instantiate(Block.ValueRef(classSym), paths.map((p, _, _) => Block.Arg(None, p))), Block.End()) + let objAssign = Block.Assign(objSym, Block.Instantiate(Block.ValueRef(classSym), paths.map((p, _, _) => Block.Arg(p))), Block.End()) let fullBlock = foldl((b, acc) => Block.concat(b, acc))(objAssign, ...blocks) [fullBlock, Block.ValueRef(objSym)] - else [Block.End(), Block.ValueLit(42)] - - -// fun pruneBadArms(arms: Array[[ShapeSet, Block]]) = -// let rem = arms.filter(arm => not (arm.cse.isEmpty() and arm.body is End)) -// [flat(rem.map(_.0)), rem.map(_.1)] - -// TODO: refactor with hash map? - -open Block -class Ctx(ctx: Map[String, ShapeSet]) with - fun get(path) = - let ps = showPath(path) - if ctx.has(ps) then Some(ctx.get(ps)) - else None - fun clone = Ctx(new Map(ctx)) - fun add(path, ss) = - let ps = showPath(path) - if ctx.has(ps) then - ctx.set(ps, union(ctx.get(ps), ss)) - else - ctx.set(ps, ss) - this -module Ctx with - fun empty = Ctx(new Map()) - -fun emptyCtx() = Ctx(new Map()) - -class DefCtx(val defctx: Map[String, [Function, Bool]]) with - fun get(p) = - if defctx.has(showPath(p)) then defctx.get(showPath(p)) - else None - fun add(p, genFunc, stage) = - defctx.set(showPath(p), [genFunc, stage]) - this - -module DefCtx with - fun empty = DefCtx(new Map()) - -fun emptyDefCtx() = DefCtx(new Map()) - -// TODO: improve it -class Cache(shapeset: Map[String, [String, ShapeSet, Block.Block]], names: Map[String, Int]) with - fun add(fname, argShape, codefrag, resShape) = - let key = fname ~ argShape.hash() - let newName = - if argShape.isDynArr() then fname - else if shapeset.has(key) then shapeset.get(key).0 - else freshName(fname) // TODO: hygiene - let s = if shapeset.has(key) then union(shapeset.get(key).1, resShape) else resShape - let newDef = if codefrag is - FunDefn(sym, params, body, stage) then FunDefn(Symbol(newName), params, body, stage) - else codefrag - shapeset.set(key, [newName, s, newDef]) - Symbol(newName) - fun has(fname, argShape) = - let key = fname ~ argShape.hash() - shapeset.has(key) - fun get(fname, argShape) = - let key = fname ~ argShape.hash() - if shapeset.has(key) then shapeset.get(key) - else ??? - fun freshName(name) = - if not names.has(name) do - names.set(name, 0) - let i = names.get(name) - names.set(name, i + 1) - StrOps.concat of name, "_", i.toString() - fun getImps() = - shapeset.values().toArray().map(_.2) // TODO: remove impls with all-dyn params - fun printImps() = // TODO: for debug testing only - getImps().map(printCode) - -fun emptyCache() = Cache(new Map(), new Map()) - -module Cache with - fun empty = Cache(new Map(), new Map()) - -fun sop(ctx, p: Path): ShapeSet = - if ctx.get(p) is Some(s) then s - else if p is - Select(qual, sym) then selSet(sop(ctx, qual), mkLit(sym.name)) - DynSelect(qual, fld, _) then selSet(sop(ctx, qual), sop(ctx, fld)) - ValueLit(lit) then mkLit(lit) - ValueRef(l) then mkDyn() - - -fun sor(defctx, ctx, r: Result) = if r is - Path and - let s = sop(ctx, r) - staticSet(s) then - if val2path(valOfSet(s)) is [blk, res] then [blk, res, s] else throw Error("val2path failed") - else - [End(), r, s] - Instantiate(cls, args) then - let sym = if cls is ValueRef(s) and s is ClassSymbol then s - else - print(cls) - throw Error("Instantiate with non-ClassSymbol in shape propagation") - [End(), r, mkClass(sym, args.map(a => sop(ctx, a.value)))] - Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] - Call(f, args) then - fun lit(l) = [End(), ValueLit(l), mkLit(l)] - let argShapes = args.map((a, _, _) => sop(ctx, a.value)) - // special handle the special Call function - if f is - Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) - and args is [Arg(None, scrut), Arg(None, litArg)] do - let recovered = DynSelect(scrut, litArg, false) - [End(), recovered, sop(ctx, recovered)] - Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) do - throw Error("runtime.Tuple.slice not handled in shape propagation") // TODO - if defctx.get(f) is - [gen, true] and gen(...argShapes) is [shape, implSymb] then - [End(), Call(ValueRef(implSymb), args), shape] - [undefined, false] and f is ValueRef(symb) and // means built in - let name = symb.name - args is - [x] and sop(ctx, x.value).values() is [Shape.Lit(l)] and name is - "!" then lit(not l) - "-" then lit(-l) - "+" then lit(+l) - [x, y] and sop(ctx, x.value).values() is [Shape.Lit(l1)] and sop(ctx, y.value).values() is [Shape.Lit(l2)] and name is - "+" then lit(l1 + l2) - "-" then lit(l1 - l2) - "*" then lit(l1 * l2) - "/" then lit(l1 / l2) - "%" then lit(l1 % l2) - "==" then lit(l1 == l2) - "!=" then lit(l1 != l2) - "<" then lit(l1 < l2) - "<=" then lit(l1 <= l2) - ">" then lit(l1 > l2) - ">=" then lit(l1 >= l2) - "===" then lit(l1 === l2) - "!==" then lit(l1 !== l2) - "&&" then lit(l1 && l2) - "||" then lit(l1 || l2) - [funct, false] and argShapes.every((x, _, _) => staticSet(x)) then - let argVals = argShapes.map((s, _, _) => valOfSet(s)) - // TODO - [End(), r, mkDyn()] - else [End(), r, mkDyn()] - - // Call(f, args) and - // let k = [f, args.map(sop(ctx, _))] - // cache.get(k) is - // Some([FunDefn(f1, _, _, _), s]) then [Call(f1, args), s] - // None and ctx.get(f) is - // Some(FunDefn(_, params, body, stage)) and - // prop(ctx.addMany(params.map([_, sop(ctx, r)])), cache, body) is [s, b] and - // stage is - // // TODO: create new symbols - // true then [Call(???, args), s, cache.add(k, [FunDefn(???, params, b, true), s])] - // false and args.forall(static) then [b, s] - // else if args.exist(not static(_)) and cache.get(ctx, args.map(_ => mkDyn())) is Some([FunDefn(f1, params, body, false), s]) - // then [Call(f1, args), s] - - -fun prop(defctx, ctx, cache, b: Block) = if b is - End then [b, mkBot()] - Return(res, implct) and sor(defctx, ctx, res) is [blk, r1, s1] then - [concat(blk, Return(r1, implct)), s1] - Scoped(symbols, rest) then - symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) - let res = prop(defctx, ctx, cache, rest) - [Scoped(symbols, res.0), res.1] - Assign(x, r, b) and - sor(defctx, ctx, r) is [blk, r1, s1] then - if prop(defctx, ctx.add(ValueRef(x), s1), cache, b) is [b2, s2] then - [concat(blk, Assign(x, r1, b2)), s2] - Match(p, arms, dflt, restBlock) then - let s = sop(ctx, p) - let filteredArms = foldl((r, arm) => - let fs = filterSet(r.0, arm.cse) - if fs.isEmpty() then r - else - let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, fs) - let res = prop(defctx, branchCtx, cache, concat(arm.body, restBlock)) - [restSet(r.0, arm.cse), union(r.1, res.1), [...r.2, Arm(arm.cse, res.0)]] - )([s, mkBot(), []], ...arms) - if filteredArms.2.length is - 0 and - filteredArms.0.isEmpty() then prop(defctx, ctx, cache, restBlock) - else prop(defctx, ctx, cache, concat(if dflt is Some(d) then d else End(), restBlock)) - 1 and - filteredArms.0.isEmpty() then - let newRest = prop(defctx, ctx, cache, restBlock) - [concat(filteredArms.2.0.body, newRest.0), union(filteredArms.1, newRest.1)] - dflt is - Some(d) then - let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, filteredArms.0) - let newDflt = prop(defctx, branchCtx, cache, concat(d, restBlock)) - [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] - else - [Match(p, filteredArms.2, None, End()), filteredArms.1] - n and dflt is - Some(d) then - let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, filteredArms.0) - let newDflt = prop(defctx, branchCtx, cache, concat(d, restBlock)) - [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] - else - [Match(p, filteredArms.2, None, End()), filteredArms.1] \ No newline at end of file + else [Block.End(), Block.ValueLit(42)] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 2abe3ccae6..584305ec8a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -1,45 +1,214 @@ import "./Block.mls" import "./Shape.mls" import "./Option.mls" +import "./ShapeSet.mls" +import "./Predef.mls" open Block open Shape open Option +open Predef +open ShapeSet module SpecializeHelpers with ... +class Ctx(val ctx: Map[String, ShapeSet]) with + fun get(path) = + let ps = showPath(path) + if ctx.has(ps) then Some(ctx.get(ps)) + else None + fun clone = Ctx(new Map(ctx)) + fun add(path, ss) = + let ps = showPath(path) + if ctx.has(ps) then + ctx.set(ps, union(ctx.get(ps), ss)) + else + ctx.set(ps, ss) + this +module Ctx with + fun empty = Ctx(new Map()) + +fun sop(ctx, p): ShapeSet = + if ctx.get(p) is Some(s) then s + else if p is + Select(qual, sym) then selSet(sop(ctx, qual), mkLit(sym.name)) + DynSelect(qual, fld, _) then + selSet(sop(ctx, qual), sop(ctx, fld)) + ValueLit(lit) then mkLit(lit) + ValueRef(l) then mkDyn() + +fun sor(ctx, r) = if r is + Path and + let s = sop(ctx, r) + staticSet(s) then + if val2path(valOfSet(s)) is [blk, res] then [blk, res, s] else throw Error("val2path failed") + else + [End(), r, s] + Instantiate(cls, args) then + print(r) + let sym = if cls is + ValueRef(s) and s is ClassSymbol then s + Select(_, s) and s is ClassSymbol then s + else throw Error("Instantiate with non-ClassSymbol in shape propagation: " + cls.toString()) + [End(), r, mkClass(sym, args.map(a => sop(ctx, a.value)))] + Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] + Call(f, args) then + fun lit(l) = [End(), ValueLit(l), mkLit(l)] + let argShapes = args.map((a, _, _) => sop(ctx, a.value)) + if f is + Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) + and args is [Arg(scrut), Arg(litArg)] then + let recovered = DynSelect(scrut, litArg, false) + [End(), recovered, sop(ctx, recovered)] + Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then + throw Error("runtime.Tuple.slice not handled in shape propagation") // TODO + ValueRef(symb) and // built-in or top-level + let name = symb.name + args is + [x] and sop(ctx, x.value).values() is [Shape.Lit(l)] and name is + "!" then lit(not l) + "-" then lit(-l) + "+" then lit(+l) + [x, y] and sop(ctx, x.value).values() is [Shape.Lit(l1)] and sop(ctx, y.value).values() is [Shape.Lit(l2)] and name is + "+" then lit(l1 + l2) + "-" then lit(l1 - l2) + "*" then lit(l1 * l2) + "/" then lit(l1 / l2) + "%" then lit(l1 % l2) + "==" then lit(l1 == l2) + "!=" then lit(l1 != l2) + "<" then lit(l1 < l2) + "<=" then lit(l1 <= l2) + ">" then lit(l1 > l2) + ">=" then lit(l1 >= l2) + "===" then lit(l1 === l2) + "!==" then lit(l1 !== l2) + "&&" then lit(l1 && l2) + "||" then lit(l1 || l2) + Select(ValueRef(ModuleSymbol(name, value)), Symbol(symb)) then // method in staged module + let mapPropName = "generatorMap$" + name + let cachePropName = "cache$" + name + + let genMap = value.(mapPropName) + let cache = value.(cachePropName) + let f = genMap.get(symb) + let res = f(...argShapes) + [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] + Select(ValueRef(symb), Symbol(f)) and sop(ctx, symb) is Class(sym, params) then // class method call + // TODO + else [End(), r, mkDyn()] + + // [gen, true] and gen(...argShapes) is [shape, implSymb] then + // [End(), Call(ValueRef(implSymb), args), shape] + // [undefined, false] and f is ValueRef(symb) and // means built in + // let name = symb.name + // args is + // [x] and sop(ctx, x.value).values() is [Shape.Lit(l)] and name is + // "!" then lit(not l) + // "-" then lit(-l) + // "+" then lit(+l) + // [x, y] and sop(ctx, x.value).values() is [Shape.Lit(l1)] and sop(ctx, y.value).values() is [Shape.Lit(l2)] and name is + // "+" then lit(l1 + l2) + // "-" then lit(l1 - l2) + // "*" then lit(l1 * l2) + // "/" then lit(l1 / l2) + // "%" then lit(l1 % l2) + // "==" then lit(l1 == l2) + // "!=" then lit(l1 != l2) + // "<" then lit(l1 < l2) + // "<=" then lit(l1 <= l2) + // ">" then lit(l1 > l2) + // ">=" then lit(l1 >= l2) + // "===" then lit(l1 === l2) + // "!==" then lit(l1 !== l2) + // "&&" then lit(l1 && l2) + // "||" then lit(l1 || l2) + // [funct, false] and argShapes.every((x, _, _) => staticSet(x)) then + // let argVals = argShapes.map((s, _, _) => valOfSet(s)) + // // TODO + // [End(), r, mkDyn()] + // else [End(), r, mkDyn()] + +fun prop(ctx, b) = if b is + End then [b, mkBot()] + Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then + [concat(blk, Return(r1, implct)), s1] + Scoped(symbols, rest) then + symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) + let res = prop(ctx, rest) + [Scoped(symbols, res.0), res.1] + Assign(x, r, b) and + sor(ctx, r) is [blk, r1, s1] then + if prop(ctx.add(ValueRef(x), s1), b) is [b2, s2] then + [concat(blk, Assign(x, r1, b2)), s2] + Match(p, arms, dflt, restBlock) then + let s = sop(ctx, p) + let filteredArms = foldl((r, arm) => + let fs = filterSet(r.0, arm.cse) + if fs.isEmpty() then r + else + let branchCtx = ctx.clone + if not p is ValueLit do branchCtx.add(p, fs) + let res = prop(branchCtx, concat(arm.body, restBlock)) + [restSet(r.0, arm.cse), union(r.1, res.1), [...r.2, Arm(arm.cse, res.0)]] + )([s, mkBot(), []], ...arms) + if filteredArms.2.length is + 0 and + filteredArms.0.isEmpty() then prop(ctx, restBlock) + else prop(ctx, concat(if dflt is Some(d) then d else End(), restBlock)) + 1 and + filteredArms.0.isEmpty() then + let newRest = prop(ctx, restBlock) + [concat(filteredArms.2.0.body, newRest.0), union(filteredArms.1, newRest.1)] + dflt is + Some(d) then + let branchCtx = ctx.clone + if not p is ValueLit do branchCtx.add(p, filteredArms.0) + let newDflt = prop(branchCtx, concat(d, restBlock)) + [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] + else + [Match(p, filteredArms.2, None, End()), filteredArms.1] + n and dflt is + Some(d) then + let branchCtx = ctx.clone + if not p is ValueLit do branchCtx.add(p, filteredArms.0) + let newDflt = prop(branchCtx, concat(d, restBlock)) + [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] + else + [Match(p, filteredArms.2, None, End()), filteredArms.1] + // FIXME: implement proper mangling // percent encoding to create valid symbol name fun specializeName(funName, shapes) = - [... funName + "_" + shapes.toString()] - .map((s, _, _) => if s is - "[" then "_5b" - "]" then "_5d" - "(" then "_28" - ")" then "_29" - "\\" then "_5c" - "\"" then "_22" - " " then "_20" - "," then "_2c" - else s - ).join("") + if shapes.every(ps => ps.every(s => s.isDyn())) then funName + else + funName + "_" + shapes.toString() + .replaceAll("{", "").replaceAll("}", "") + .replaceAll("[", "").replaceAll("]", "") + .replaceAll("(", "").replaceAll(")", "") + .replaceAll("\\", "").replaceAll("\"", "") + .replaceAll(" ", "").replaceAll(",", "_") + fun propStub(block, shapes) = [block, shapes] fun specialize(cache, funName, dflt, shapes) = // replace function symbol in block definition to new name let newName = specializeName(funName, shapes) - // console.log(cache.getFun(newName)) if cache.getFun(newName) is Some(x) then [x.0.sym, x.1] - None then + None and let defn = dflt() - if defn is FunDefn(Symbol(_), ps, _) then - let res = propStub(defn, shapes) - let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, res.0.body), res.1]) + defn is FunDefn(Symbol(_), ps, body) then + let ctx = Ctx.empty + ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), shapes.(i).(j)))) + let res = prop(ctx, body) + let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, res.0), res.1]) [entry.0.sym, entry.1] -class FunCache(val cache: Map[String, Symbol]) with +class FunCache(val cache: Map[String, [FunDefn, ShapeSet]]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions fun setFun(k, v) = cache.set(k, v); v - fun toString() = cache.values().map(showDefn).toArray().join("\n") \ No newline at end of file + fun toString() = cache.values().map((d, _, _) => showDefn(d.0)).toArray().join("\n") + + diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 2f852f7a06..ccb634ecd8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -1,7 +1,100 @@ :js :staging +:sjs staged class A(val a) +//│ JS (unsanitized): +//│ let A1, symbolMap; +//│ symbolMap = globalThis.Object.freeze(new globalThis.Map()); +//│ A1 = function A(a) { +//│ return globalThis.Object.freeze(new A.class(a)); +//│ }; +//│ (class A { +//│ static { +//│ A1.class = this +//│ } +//│ constructor(a) { +//│ this.a = a; +//│ } +//│ static { +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12; +//│ tmp8 = A.ctor$_instr(); +//│ tmp9 = globalThis.Object.freeze([ +//│ "ctor$", +//│ tmp8 +//│ ]); +//│ tmp10 = globalThis.Object.freeze([ +//│ tmp9 +//│ ]); +//│ tmp11 = globalThis.Object.freeze(new globalThis.Map(tmp10)); +//│ tmp12 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp11)); +//│ this.cache$A = tmp12; +//│ tmp5 = globalThis.Object.freeze([ +//│ "ctor$", +//│ A.ctor$_gen +//│ ]); +//│ tmp6 = globalThis.Object.freeze([ +//│ tmp5 +//│ ]); +//│ tmp7 = globalThis.Object.freeze(new globalThis.Map(tmp6)); +//│ this.generatorMap$A = tmp7; +//│ tmp = globalThis.Object.freeze({ +//│ indent: true +//│ }); +//│ tmp1 = runtime.safeCall(A.cache$A.toString()); +//│ tmp2 = runtime.safeCall(globalThis.console.log(tmp1)); +//│ tmp3 = runtime.safeCall(globalThis.console.log(A.generatorMap$A)); +//│ tmp4 = runtime.safeCall(globalThis.console.log(symbolMap)); +//│ } +//│ static ctor$_instr() { +//│ let end, sym, tmp, tmp1, tmp2, test, tmp3, tmp4, sym1, sym2, var1, tmp5, tmp6, sym3, tmp7, tmp8, sym4, tmp9; +//│ end = globalThis.Object.freeze(new Block.End()); +//│ sym = globalThis.Object.freeze(new Block.Symbol("a")); +//│ tmp = globalThis.Object.freeze([ +//│ sym +//│ ]); +//│ tmp1 = globalThis.Object.freeze(new option.Some(tmp)); +//│ tmp2 = globalThis.Object.freeze([]); +//│ test = globalThis.Object.freeze(new Block.ClassSymbol("A1", A1, 0, tmp1, tmp2, 0)); +//│ tmp3 = Block.checkMap(symbolMap, test); +//│ tmp4 = globalThis.Object.freeze(new option.Some(tmp3)); +//│ sym1 = globalThis.Object.freeze(new Block.Symbol("a")); +//│ sym2 = globalThis.Object.freeze(new Block.Symbol("a")); +//│ var1 = globalThis.Object.freeze(new Block.ValueRef(sym2)); +//│ tmp5 = globalThis.Object.freeze(new Block.ValDefn(tmp4, sym1, var1)); +//│ tmp6 = globalThis.Object.freeze(new Block.Define(tmp5, end)); +//│ sym3 = globalThis.Object.freeze(new Block.Symbol("a")); +//│ tmp7 = globalThis.Object.freeze([ +//│ sym3 +//│ ]); +//│ tmp8 = globalThis.Object.freeze([ +//│ tmp7 +//│ ]); +//│ sym4 = globalThis.Object.freeze(new Block.Symbol("ctor$")); +//│ tmp9 = globalThis.Object.freeze(new Block.FunDefn(sym4, tmp8, tmp6)); +//│ return tmp9 +//│ } +//│ static ctor$_gen(cls) { +//│ return (a) => { +//│ let tmp, tmp1, tmp2, tmp3, tmp4; +//│ tmp = A.cache$A.getFun("ctor$"); +//│ tmp1 = globalThis.Object.freeze([ +//│ cls +//│ ]); +//│ tmp2 = globalThis.Object.freeze([ +//│ a +//│ ]); +//│ tmp3 = globalThis.Object.freeze([ +//│ tmp1, +//│ tmp2 +//│ ]); +//│ tmp4 = SpecializeHelpers.specialize(A.cache$A, "ctor$", A.ctor$_instr, tmp3); +//│ return tmp4 +//│ } +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "A", ["a"]]; +//│ }); //│ > fun ctor_(a) = //│ > A1.a = a //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } @@ -94,8 +187,8 @@ staged class C with :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.95: staged class C(x) -//│ ╙── ^^^^^^^^^^ +//│ ║ l.188: staged class C(x) +//│ ╙── ^^^^^^^^^^ staged class B(val x) with fun f(y) = this.x + y diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index c2cd18a91b..d4f990bfba 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,15 +1,16 @@ :js :staging -let x = [1, 2, 3] staged module Expressions with - fun lit() = 1 + fun lit(x) = x + x fun assign() = let x = 42 let y = x y fun tup1() = [1, 2] - fun tup2() = [1, x] + fun tup2() = + let x = [1, 2, 3] + [1, x] fun dynsel() = [1].(0) fun match1() = if 9 is @@ -19,52 +20,39 @@ staged module Expressions with 9 then 4 else 0 fun match2() = + let x = [1, 2, 3] if x is [] then 1 [1, 2] then 2 [a, _] then 3 else 0 -//│ > fun ctor_() = -//│ > () -//│ > fun lit() = 1 +//│ > fun lit(x) = +(x, x) //│ > fun assign() = -//│ > let y //│ > let x +//│ > let y //│ > x = 42 -//│ > y = x -//│ > y +//│ > y = 42 +//│ > 42 //│ > fun tup1() = [1, 2] -//│ > fun tup2() = [1, x] +//│ > fun tup2() = +//│ > let x +//│ > x = [1, 2, 3] +//│ > [1, x] //│ > fun dynsel() = //│ > let tmp //│ > tmp = [1] -//│ > tmp.(0) +//│ > 1 //│ > fun match1() = //│ > let scrut //│ > scrut = 9 -//│ > if scrut is -//│ > Bool then 1 -//│ > 8 then 2 -//│ > Int then 3 -//│ > else 0 +//│ > 3 //│ > fun match2() = +//│ > let x //│ > let a //│ > let element1_ //│ > let element0_ -//│ > if x is -//│ > [] then 1 -//│ > [_, _] then -//│ > element0_ = Runtime.Tuple.get(x, 0) -//│ > element1_ = Runtime.Tuple.get(x, 1) -//│ > if element0_ is -//│ > 1 then -//│ > if element1_ is -//│ > 2 then 2 -//│ > else a = element0_ -//│ > 3 -//│ > else a = element0_ -//│ > 3 -//│ > else 0 +//│ > x = [1, 2, 3] +//│ > 0 //│ > Map(8) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'lit' => [Function: lit_gen], @@ -79,47 +67,26 @@ staged module Expressions with //│ > 'VirtualClassSymbol("Bool")' => VirtualClassSymbol { name: 'Bool' }, //│ > 'VirtualClassSymbol("Int")' => VirtualClassSymbol { name: 'Int' } //│ > } -//│ x = [1, 2, 3] -:sjs -// class Outside(a) +class Outside(a) staged module ClassInstrumentation with - // class Inside(a, b) - class Outside(a) + class Inside(a, b) class NoArg fun inst1() = Outside(1) fun inst2() = new NoArg fun app1() = Outside(1) - fun app2() = Inside(1, 2) -//│ > fun ctor_() = -//│ > class Inside(a, b) -//│ > class NoArg -//│ > fun inst1() = new Outside(1) + // fun app2() = Inside(1, 2) +//│ > Instantiate(Select(ValueRef(ModuleSymbol("ClassInstrumentation", class ClassInstrumentation { cache$ClassInstrumentation: fun inst1() = Outside(1), generatorMap$ClassInstrumentation: Map(4) {"ctor$" => fun ctor$_gen, "inst1" => fun inst1_gen, "inst2" => fun inst2_gen, "app1" => fun app1_gen} })), ClassSymbol("NoArg", undefined, 0, None, [], _)), []) +//│ > fun inst1() = Outside(1) //│ > fun inst2() = new ClassInstrumentation.NoArg() //│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside(1, 2) -//│ > Map(5) { +//│ > Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'inst1' => [Function: inst1_gen], //│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen], -//│ > 'app2' => [Function: app2_gen] +//│ > 'app1' => [Function: app1_gen] //│ > } -//│ > Map(4) { -//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { -//│ > name: 'NoArg', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, -//│ > 'ClassSymbol("Inside", undefined, 0, Some([Symbol("a"), Symbol("b")]), [], _)' => ClassSymbol { -//│ > name: 'Inside', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, +//│ > Map(3) { //│ > 'ClassSymbol("Outside", fun Outside { class: class Outside }, 0, Some([Symbol("a")]), [], _)' => ClassSymbol { //│ > name: 'Outside', //│ > value: [Function: Outside] { class: [Function] }, @@ -127,12 +94,19 @@ staged module ClassInstrumentation with //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, -//│ > 'ModuleSymbol("ClassInstrumentation", class ClassInstrumentation)' => ModuleSymbol { +//│ > 'ModuleSymbol("ClassInstrumentation", class ClassInstrumentation { cache$ClassInstrumentation: fun inst1() = Outside(1), generatorMap$ClassInstrumentation: Map(4) {"ctor$" => fun ctor$_gen, "inst1" => fun inst1_gen, "inst2" => fun inst2_gen, "app1" => fun app1_gen} })' => ModuleSymbol { //│ > name: 'ClassInstrumentation', //│ > value: [class ClassInstrumentation] { //│ > 'cache$ClassInstrumentation': [FunCache], //│ > 'generatorMap$ClassInstrumentation': [Map] //│ > } +//│ > }, +//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { +//│ > name: 'NoArg', +//│ > value: undefined, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] //│ > } //│ > } @@ -144,36 +118,22 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > fun ctor_() = -//│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(0) {} -//│ > fun ctor_() = -//│ > () -//│ > fun call() = -//│ > __no__symbol__ = Nonstaged.f() -//│ > Staged.f() -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'call' => [Function: call_gen] -//│ > } -//│ > Map(2) { -//│ > 'ModuleSymbol("Nonstaged", class Nonstaged)' => ModuleSymbol { -//│ > name: 'Nonstaged', -//│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > }, -//│ > 'ModuleSymbol("Staged", class Staged { cache$Staged: fun ctor_() =\n' + -//│ > ' ()\n' + -//│ > 'fun f() = 1, generatorMap$Staged: Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} })' => ModuleSymbol { -//│ > name: 'Staged', -//│ > value: [class Staged] { -//│ > 'cache$Staged': [FunCache], -//│ > 'generatorMap$Staged': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'get') +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:336:48) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:612:38) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:870:39) +//│ at CallSubst.call_gen (REPL20:1:7399) +//│ at (REPL20:1:4221) +//│ at REPL20:1:7551 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) :ftc @@ -182,31 +142,20 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > fun ctor_() = -//│ > () -//│ > fun f(x) = -//│ > x = 1 -//│ > x -//│ > fun g(x) = -//│ > let tmp -//│ > tmp = new Function_() -//│ > tmp -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } -//│ > Map(1) { -//│ > 'ClassSymbol("Function$", class Function$, 0, None, [], _)' => ClassSymbol { -//│ > name: 'Function$', -//│ > value: [class Function$1 extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > }, -//│ > moduleValue: 0, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > } +//│ > Instantiate(ValueRef(ClassSymbol("Function$", class Function$, 0, None, [], _)), []) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: Not implemented +//│ at get notImplementedError (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:414:39) +//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:301:21) +//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:313:23) +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:148:24) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:568:37) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:622:40) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:598:36) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:870:39) +//│ at Arguments.g_gen (REPL23:1:6927) +//│ at (REPL23:1:2678) staged module OtherBlocks with fun scope() = @@ -219,8 +168,6 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > fun ctor_() = -//│ > () //│ > fun scope() = //│ > let a //│ > a = 1 @@ -228,17 +175,14 @@ staged module OtherBlocks with //│ > fun breakAndLabel() = //│ > let scrut //│ > scrut = 1 -//│ > if scrut is -//│ > 2 then 0 -//│ > 3 then 0 -//│ > else 0 +//│ > 0 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'scope' => [Function: scope_gen], //│ > 'breakAndLabel' => [Function: breakAndLabel_gen] //│ > } //│ > Map(1) { -//│ > 'ModuleSymbol("OtherBlocks", class OtherBlocks)' => ModuleSymbol { +//│ > 'ModuleSymbol("OtherBlocks", class OtherBlocks { cache$OtherBlocks: , generatorMap$OtherBlocks: Map(3) {"ctor$" => fun ctor$_gen, "scope" => fun scope_gen, "breakAndLabel" => fun breakAndLabel_gen} })' => ModuleSymbol { //│ > name: 'OtherBlocks', //│ > value: [class OtherBlocks] { //│ > 'cache$OtherBlocks': [FunCache], @@ -249,63 +193,22 @@ staged module OtherBlocks with staged module ClassDefs with class A -//│ > fun ctor_() = -//│ > class A +//│ > //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(1) { -//│ > 'ClassSymbol("A", undefined, 0, None, [], _)' => ClassSymbol { -//│ > name: 'A', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > } +//│ > Map(0) {} staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() // TODO -//│ > fun ctor_() = -//│ > class InnerClass() with -//│ > fun f() = -//│ > let tmp -//│ > tmp = Arguments.f(1) -//│ > +(1, tmp) -//│ > fun g() = InnerClass.f() +//│ > //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(2) { -//│ > 'ClassSymbol("InnerClass", undefined, 0, Some([]), [], _)' => ClassSymbol { -//│ > name: 'InnerClass', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] -//│ > }, -//│ > 'ModuleSymbol("Arguments", class Arguments { cache$Arguments: fun ctor_() =\n' + -//│ > ' ()\n' + -//│ > 'fun f(x) =\n' + -//│ > ' x = 1\n' + -//│ > ' x\n' + -//│ > 'fun g(x) =\n' + -//│ > ' let tmp\n' + -//│ > ' tmp = new Function_()\n' + -//│ > ' tmp, generatorMap$Arguments: Map(3) {"ctor$" => fun ctor$_gen, "f" => fun f_gen, "g" => fun g_gen} })' => ModuleSymbol { -//│ > name: 'Arguments', -//│ > value: [class Arguments] { -//│ > 'cache$Arguments': [FunCache], -//│ > 'generatorMap$Arguments': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > } -//│ > } +//│ > Map(0) {} // name collision class A() staged module A with fun f() = 1 -//│ > fun ctor_() = -//│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } @@ -313,8 +216,6 @@ staged module A with module A with staged module B with fun f() = 1 -//│ > fun ctor_() = -//│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } @@ -325,36 +226,21 @@ staged module M with while x == 1 do set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.714: let x = 1 -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.714: let x = 1 -//│ ╙── ^ -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.714: let x = 1 -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.714: let x = 1 -//│ ╙── ^ //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.322: let x = 1 +//│ ║ l.225: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.322: let x = 1 +//│ ║ l.225: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.322: let x = 1 +//│ ║ l.225: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.322: let x = 1 +//│ ║ l.225: let x = 1 //│ ╙── ^ -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ ═══[RUNTIME ERROR] ReferenceError: x is not defined :e class C(val a) @@ -364,17 +250,15 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.347: fun g() = {1 : 2} +//│ ║ l.250: fun g() = {1 : 2} //│ ╙── ^ -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ ═══[RUNTIME ERROR] Error: match error :todo staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) -//│ > fun ctor_() = -//│ > () //│ > fun f() = //│ > let middleElements //│ > let element0_ @@ -383,14 +267,5 @@ staged module Spread with //│ > let x //│ > tmp = [1, 2] //│ > scrut = [1, tmp] -//│ > if scrut is -//│ > [_] then -//│ > element0_ = Runtime.Tuple.get(scrut, 0) -//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) -//│ > if element0_ is -//│ > 1 then -//│ > x = middleElements -//│ > x -//│ > else 0 -//│ > else 0 +//│ > 0 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e59977cc9e..5e2ca2ee2f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -36,17 +36,7 @@ Shape.static(Shape.Lit("Hi")) valOf(Dyn()) //│ ═══[RUNTIME ERROR] Error: valOf on Dyn -valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)], false)], false)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.39: valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)], false)], false)) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.39: valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)], false)], false)) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^ +valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)])])) //│ = [1, [2, 3]] :re @@ -70,32 +60,17 @@ selSet(arrSp, mkLit(1)) selSet(mkDyn(), mkLit(5)) //│ = {Dyn()} -let a = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) -let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)], false)]) +let a = Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], undefined), [Lit(42), Lit("c")]) +let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) selSet(x, liftMany([Lit("a"), Lit(2)])) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.73: let a = Class(ClassSymbol("A", Some(["a", "b"])), [Lit(42), Lit("c")]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.74: let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)], false)]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ = {Dyn(),Lit(undefined)} +//│ = {Dyn(),Lit(42),Lit(undefined)} //│ a = Class( -//│ ClassSymbol("A", Some(["a", "b"]), undefined, undefined), +//│ ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], _), //│ [Lit(42), Lit("c")] //│ ) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", Some(["a", "b"]), undefined, undefined), [Lit(42), Lit("c")]),Dyn()} +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], _), [Lit(42), Lit("c")]),Dyn()} -selSet(lift(Arr([Dyn(), Lit(1), a], false)), mkLit(1)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.93: selSet(lift(Arr([Dyn(), Lit(1), a], false)), mkLit(1)) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) //│ = {Lit(1)} // union @@ -106,13 +81,13 @@ union(x, y) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.104: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) -//│ ╙── ^^^^^^^^^^^^^^^^^ +//│ ║ l.79: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +//│ ╙── ^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.104: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) -//│ ╙── ^^^^^^^^^^^^^^^^^ +//│ ║ l.79: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +//│ ╙── ^^^^^^^^^^^^^^^^^ //│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} //│ x = {Lit(1),Lit(2)} //│ y = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1)} @@ -126,7 +101,7 @@ filterSet(mkDyn(), Block.Tup(2, true)) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.125: filterSet(mkDyn(), Block.Tup(2, true)) +//│ ║ l.100: filterSet(mkDyn(), Block.Tup(2, true)) //│ ╙── ^^^^^^^^^ //│ = {Arr([fun Dyn { class: class Dyn }, fun Dyn { class: class Dyn }])} @@ -134,14 +109,14 @@ let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.133: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ ║ l.108: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) //│ ╙── ^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.133: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ ║ l.108: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) //│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", Some(["a", "b"]), undefined, undefined), [Lit(42), Lit("c")]),Lit(1),Lit(null)} +//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], _), [Lit(42), Lit("c")]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match @@ -151,7 +126,7 @@ filterSet(filterShapes, Block.Lit(1)) assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = {Class(ClassSymbol("A", Some(["a", "b"]), undefined, undefined), [Lit(42), Lit("c")])} +//│ = {Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], _), [Lit(42), Lit("c")])} filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) //│ = {Lit(1)} @@ -160,7 +135,7 @@ filterSet(filterShapes, Tup(3, false)) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.159: filterSet(filterShapes, Tup(3, false)) +//│ ║ l.134: filterSet(filterShapes, Tup(3, false)) //│ ╙── ^^^^^^^^^^ //│ = {Arr([Lit(1), Lit(2), Lit(3)])} @@ -168,7 +143,7 @@ filterSet(filterShapes, Tup(4, true)) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.167: filterSet(filterShapes, Tup(4, true)) +//│ ║ l.142: filterSet(filterShapes, Tup(4, true)) //│ ╙── ^^^^^^^^^ //│ = {} @@ -176,7 +151,7 @@ assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.175: assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) +//│ ║ l.150: assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) //│ ╙── ^^^^^^^^^^ open Block @@ -238,11 +213,11 @@ ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.234: val C = ClassSymbol("C", Some(["a"])) +//│ ╔══[COMPILATION ERROR] Expected 6 arguments, got 2 +//│ ║ l.209: val C = ClassSymbol("C", Some(["a"])) //│ ╙── ^^^^^^^^^^^^^^^^^^ //│ = {} -//│ C = ClassSymbol("C", Some(["a"]), undefined, undefined) +//│ C = ClassSymbol("C", Some(["a"]), undefined, undefined, undefined, _) //│ ctx = Ctx(_) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -252,59 +227,68 @@ sop(ctx, selPath) val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) sor(DefCtx.empty, Ctx.empty, tup) //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.228: sor(DefCtx.empty, Ctx.empty, tup) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.252: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +//│ ║ l.227: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.252: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +//│ ║ l.227: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) //│ ╙── ^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 +//│ ║ l.228: sor(DefCtx.empty, Ctx.empty, tup) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:787:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:789:37) -//│ at REPL144:1:411 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ tup = Tuple([Arg(None), Arg(None)]) let c = ClassSymbol("C", Some([Symbol("p")])) let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) sor(DefCtx.empty, Ctx.empty, inst) //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.256: sor(DefCtx.empty, Ctx.empty, inst) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.279: let c = ClassSymbol("C", Some([Symbol("p")])) +//│ ╔══[COMPILATION ERROR] Expected 6 arguments, got 2 +//│ ║ l.254: let c = ClassSymbol("C", Some([Symbol("p")])) //│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.280: let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) +//│ ║ l.255: let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) //│ ╙── ^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 +//│ ║ l.256: sor(DefCtx.empty, Ctx.empty, inst) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:773:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:775:36) -//│ at REPL148:1:532 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ c = ClassSymbol("C", Some([Symbol("p")]), undefined, undefined) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ c = ClassSymbol("C", Some([Symbol("p")]), undefined, undefined, undefined, _) //│ inst = Instantiate( -//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]), undefined, undefined)), +//│ ValueRef( +//│ ClassSymbol( +//│ "C", +//│ Some([Symbol("p")]), +//│ undefined, +//│ undefined, +//│ undefined, +//│ _ +//│ ) +//│ ), //│ [Arg(None)] //│ ) @@ -318,31 +302,31 @@ fun testBinOp(op, v1, v2) = def.add(ValueRef(Symbol("&&")), undefined, false) sor(def, Ctx.empty, c).1.lit //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.298: let def = DefCtx.empty +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.312: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] +//│ ║ l.296: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] //│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.312: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] +//│ ║ l.296: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] //│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 +//│ ║ l.303: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^^^^^^^^^^^^^^^^^ :expect 12 testBinOp("+", 10, 2) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) -//│ at testBinOp (REPL153:1:1400) -//│ at REPL156:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) //│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' @@ -351,17 +335,7 @@ testBinOp("+", 10, 2) testBinOp("==", 10, 10) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) -//│ at testBinOp (REPL153:1:1400) -//│ at REPL159:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) //│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' @@ -370,17 +344,7 @@ testBinOp("==", 10, 10) testBinOp("===", 10, "10") //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) -//│ at testBinOp (REPL153:1:1400) -//│ at REPL162:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) //│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' @@ -389,17 +353,7 @@ testBinOp("===", 10, "10") testBinOp("&&", true, false) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) -//│ at testBinOp (REPL153:1:1400) -//│ at REPL165:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) //│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' @@ -413,26 +367,26 @@ fun testUnaryOp(op, v) = def.add(ValueRef(Symbol("~")), undefined, false) sor(def, Ctx.empty, c).1.lit //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.364: let def = DefCtx.empty +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.408: let args = [Arg(None, ValueLit(v))] +//│ ║ l.362: let args = [Arg(None, ValueLit(v))] //│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 +//│ ║ l.368: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^^^^^^^^^^^^^^^^^ :expect -10 testUnaryOp("-", 10) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) -//│ at testUnaryOp (REPL168:1:1099) -//│ at REPL171:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) //│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' @@ -441,24 +395,14 @@ testUnaryOp("-", 10) testUnaryOp("!", true) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) -//│ at testUnaryOp (REPL168:1:1099) -//│ at REPL174:1:39 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) //│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' :re testUnaryOp("~", 10) -//│ ═══[RUNTIME ERROR] Error: match error +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. // prop @@ -478,38 +422,38 @@ let plus = ValueRef(Symbol("+")) let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.423: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.478: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ║ l.422: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.478: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ║ l.422: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.478: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ║ l.422: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.478: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ║ l.422: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) //│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 +//│ ║ l.423: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1274:29) -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1260:27) -//│ at REPL187:1:910 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ c = Scoped( //│ [Symbol("x")], //│ Assign( @@ -522,22 +466,28 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.467: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.522: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ╔══[COMPILATION ERROR] Expected 6 arguments, got 2 +//│ ║ l.466: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) //│ ╙── ^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.522: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ╔══[COMPILATION ERROR] Expected 6 arguments, got 2 +//│ ║ l.466: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) //│ ╙── ^^^^^^^^^^^^^ -//│ = [ -//│ Scoped( -//│ [Symbol("x")], -//│ Assign(Symbol("x"), ValueLit(9), Return(ValueLit(3), false)) -//│ ), -//│ {Lit(3)} -//│ ] +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 +//│ ║ l.467: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ c = Scoped( //│ [Symbol("x")], //│ Assign( @@ -548,7 +498,7 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ [ //│ Arm( //│ Cls( -//│ ClassSymbol("Bool", None, undefined, undefined), +//│ ClassSymbol("Bool", None, undefined, undefined, undefined, _), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(1), false) @@ -556,7 +506,7 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ Arm(Lit(8), Return(ValueLit(2), false)), //│ Arm( //│ Cls( -//│ ClassSymbol("Int", None, undefined, undefined), +//│ ClassSymbol("Int", None, undefined, undefined, undefined, _), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(3), false) @@ -575,8 +525,16 @@ val fSym = Symbol("f") val M = ValueRef(Symbol("M")) val fPath = Select(M, fSym) val defs = DefCtx.empty.add(fPath, f_gen, true) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.527: val defs = DefCtx.empty.add(fPath, f_gen, true) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ M = ValueRef(Symbol("M")) -//│ defs = DefCtx(Map(1) {"M.f" => [fun f_gen, true]}) +//│ defs = undefined //│ fPath = Select(ValueRef(Symbol("M")), Symbol("f")) //│ fSym = Symbol("f") @@ -585,21 +543,26 @@ sor(defs, Ctx.empty, callF) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.583: val callF = Call(fPath, [Arg(None, ValueLit(12))]) +//│ ║ l.541: val callF = Call(fPath, [Arg(None, ValueLit(12))]) //│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 +//│ ║ l.542: sor(defs, Ctx.empty, callF) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) //│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at Ctx.get (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:118:20) -//│ at ShapeSet.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:687:34) -//│ at lambda2 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:813:25) -//│ at Array.map () -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:815:42) +//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:997:38) //│ at REPL205:1:284 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) //│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None)]) val ctxXY = Ctx.empty @@ -614,24 +577,29 @@ prop(defs, ctxXY, Cache.empty, blockAdd) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.611: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +//│ ║ l.574: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.611: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +//│ ║ l.574: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) //│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 +//│ ║ l.576: prop(defs, ctxXY, Cache.empty, blockAdd) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) //│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:620:38) -//│ at showArg (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:624:18) +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:650:38) +//│ at showArg (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:654:18) //│ at Array.map () -//│ at Block.showArgs (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:628:33) -//│ at Block.showResult (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:642:20) -//│ at Block.showBlock (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:818:20) -//│ at Block.show (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:889:20) -//│ at Block.printCode (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:896:17) +//│ at Block.showArgs (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:658:33) +//│ at Block.showResult (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:672:20) +//│ at Block.showBlock (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:868:20) +//│ at Block.show (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:939:20) +//│ at Block.printCode (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:946:17) //│ at REPL213:1:436 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ blockAdd = Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) @@ -639,6 +607,11 @@ prop(defs, ctxXY, Cache.empty, blockAdd) val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit(1), End())), Arm(Lit(2), Assign(z, ValueLit(2), End()))], Some(Assign(z, ValueLit(3), End())), Return(ValueRef(z), false))) printCode(blockBranch) prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 +//│ ║ l.609: prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ > let z //│ > if 1 is //│ > 1 then @@ -647,13 +620,19 @@ prop(defs, Ctx.empty, Cache.empty, blockBranch) //│ > z = 2 //│ > else z = 3 //│ > z -//│ = [ -//│ Scoped( -//│ [Symbol("z")], -//│ Assign(Symbol("z"), ValueLit(1), Return(ValueLit(1), false)) -//│ ), -//│ {Lit(1)} -//│ ] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1227:38) +//│ at REPL217:1:1322 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) //│ blockBranch = Scoped( //│ [Symbol("z")], //│ Match( @@ -670,6 +649,11 @@ prop(defs, Ctx.empty, Cache.empty, blockBranch) val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Return(ValueLit(10), false)), Arm(Lit(false), Assign(y, ValueLit(20), End()))], End(), Return(ValueRef(y), false)))) printCode(earlyRetBlock) prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 +//│ ║ l.651: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ > let x //│ > let y //│ > x = false @@ -678,17 +662,19 @@ prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) //│ > false then //│ > y = 20 //│ > y -//│ = [ -//│ Scoped( -//│ [Symbol("x"), Symbol("y")], -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(false), -//│ Assign(Symbol("y"), ValueLit(20), Return(ValueLit(20), false)) -//│ ) -//│ ), -//│ {Lit(20)} -//│ ] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1227:38) +//│ at REPL221:1:1222 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) //│ earlyRetBlock = Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( @@ -720,12 +706,24 @@ let c = Cache.empty val res = prop(defs, Ctx.empty, c, nestedBlock) c.add("f", mkDyn(), res.0, res.1) c.printImps() -//│ > let x -//│ > let y -//│ > x = true -//│ > y = false -//│ > 2 -//│ = [()] +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 +//│ ║ l.706: val res = prop(defs, Ctx.empty, c, nestedBlock) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1227:38) +//│ at REPL225:1:1693 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) //│ c = Cache(_, _) //│ nestedBlock = Scoped( //│ [Symbol("x"), Symbol("y")], @@ -754,24 +752,14 @@ c.printImps() //│ ) //│ ) //│ ) -//│ res = [ -//│ Scoped( -//│ [Symbol("x"), Symbol("y")], -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(true), -//│ Assign(Symbol("y"), ValueLit(false), Return(ValueLit(2), false)) -//│ ) -//│ ), -//│ {Lit(2),Lit(4)} -//│ ] +//│ res = undefined val2path(1) //│ = [End(), ValueLit(1)] val2path([1, 2, 3]) //│ = [ -//│ Assign(Symbol("tup_1"), Tuple([Arg(None), Arg(None), Arg(None)]), End()), +//│ Assign(Symbol("tup_1"), Tuple([Arg(End()), Arg(End()), Arg(End())]), End()), //│ ValueRef(Symbol("tup_1")) //│ ] @@ -780,11 +768,11 @@ val2path(TestClass(1, 2)) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) //│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:559:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:540:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:625:32) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:589:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:570:20) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:573:32) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:628:47) +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:576:47) //│ at REPL237:1:490 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) @@ -796,11 +784,11 @@ val2path(TestClass(1, [1,2])) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) //│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:559:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:540:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:625:32) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:589:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:570:20) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:573:32) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:628:47) +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:576:47) //│ at REPL240:1:168 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) From edf14afd8c80b87b5b5cc94dbea1907bc6f1d390 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 26 Mar 2026 21:52:59 +0800 Subject: [PATCH 369/654] resolve merge --- .../codegen/ReflectionInstrumenter.scala | 2 +- .../mlscript-compile/SpecializeHelpers.mls | 1 + .../test/mlscript/block-staging/Functions.mls | 511 +++++++----------- 3 files changed, 205 insertions(+), 309 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 3e7c56abce..f3c877abf5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -402,7 +402,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def debugCont(rest: Block) = val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") // val renderFun = State.runtimeSymbol.asPath.selSN("render") - // val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) + val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) val gens = methods.map { f => val genSymName = f.sym.nme + "_gen" diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 584305ec8a..675a61f4b8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -193,6 +193,7 @@ fun propStub(block, shapes) = [block, shapes] fun specialize(cache, funName, dflt, shapes) = // replace function symbol in block definition to new name + runtime.safeCall(console.log(funName, shapes)) let newName = specializeName(funName, shapes) if cache.getFun(newName) is Some(x) then [x.0.sym, x.1] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 3e55e0299f..d5205a3265 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,87 +1,122 @@ :js :staging +:sjs staged module Expressions with fun lit(x) = x + x - fun assign() = - let x = 42 - let y = x - y - fun tup1() = [1, 2] - fun tup2() = - let x = [1, 2, 3] - [1, x] - fun dynsel() = [1].(0) - fun match1() = - if 9 is - Bool then 1 - 8 then 2 - Int then 3 - 9 then 4 - else 0 - fun match2() = - let x = [1, 2, 3] - if x is - [] then 1 - [1, 2] then 2 - [a, _] then 3 - else 0 -//│ > fun ctor_() = -//│ > () -//│ > fun lit() = 1 -//│ > fun assign() = -//│ > let x -//│ > let y -//│ > x = 42 -//│ > y = 42 -//│ > 42 -//│ > fun tup1() = [1, 2] -//│ > fun tup2() = -//│ > let x -//│ > x = [1, 2, 3] -//│ > [1, x] -//│ > fun dynsel() = -//│ > let tmp -//│ > tmp = [1] -//│ > 1 -//│ > fun match1() = -//│ > let scrut -//│ > scrut = 9 -//│ > 3 -//│ > fun match2() = -//│ > let x -//│ > let a -//│ > let element1_ -//│ > let element0_ -//│ > if x is -//│ > [] then 1 -//│ > [_, _] then -//│ > element0_ = Runtime.Tuple.get(x, 0) -//│ > element1_ = Runtime.Tuple.get(x, 1) -//│ > if element0_ is -//│ > 1 then -//│ > if element1_ is -//│ > 2 then 2 -//│ > else a = element0_ -//│ > 3 -//│ > else a = element0_ -//│ > 3 -//│ > else 0 -//│ > Map(8) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'lit' => [Function: lit_gen], -//│ > 'assign' => [Function: assign_gen], -//│ > 'tup1' => [Function: tup1_gen], -//│ > 'tup2' => [Function: tup2_gen], -//│ > 'dynsel' => [Function: dynsel_gen], -//│ > 'match1' => [Function: match1_gen], -//│ > 'match2' => [Function: match2_gen] -//│ > } -//│ > Map(2) { -//│ > 'VirtualClassSymbol("Bool")' => VirtualClassSymbol { name: 'Bool' }, -//│ > 'VirtualClassSymbol("Int")' => VirtualClassSymbol { name: 'Int' } -//│ > } -//│ x = [1, 2, 3] +//│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— +//│ let Expressions1; +//│ (class Expressions { +//│ static { +//│ Expressions1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static { +//│ let tmp_dyn, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6; +//│ tmp5 = new globalThis.Map(); +//│ tmp6 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp5)); +//│ this.cache$Expressions = tmp6; +//│ tmp1 = globalThis.Object.freeze([ +//│ "ctor$", +//│ Expressions.ctor$_gen +//│ ]); +//│ tmp2 = globalThis.Object.freeze([ +//│ "lit", +//│ Expressions.lit_gen +//│ ]); +//│ tmp3 = globalThis.Object.freeze([ +//│ tmp1, +//│ tmp2 +//│ ]); +//│ tmp4 = new globalThis.Map(tmp3); +//│ this.generatorMap$Expressions = tmp4; +//│ tmp_dyn = ShapeSet.mkDyn(); +//│ Expressions.lit_gen(tmp_dyn); +//│ tmp = runtime.safeCall(Expressions.cache$Expressions.toString()); +//│ runtime.safeCall(globalThis.console.log(tmp)); +//│ runtime.safeCall(globalThis.console.log(Expressions.generatorMap$Expressions)); +//│ } +//│ static lit(x) { +//│ return undefined + undefined +//│ } +//│ static ctor$_instr() { +//│ let end, tmp, tmp1, sym, tmp2; +//│ end = new Block.End(); +//│ tmp = globalThis.Object.freeze([]); +//│ tmp1 = globalThis.Object.freeze([ +//│ tmp +//│ ]); +//│ sym = new Block.Symbol("ctor$"); +//│ tmp2 = new Block.FunDefn(sym, tmp1, end); +//│ return tmp2 +//│ } +//│ static ctor$_gen() { +//│ let tmp, tmp1, tmp2; +//│ tmp = globalThis.Object.freeze([]); +//│ tmp1 = globalThis.Object.freeze([ +//│ tmp +//│ ]); +//│ tmp2 = SpecializeHelpers.specialize(Expressions.cache$Expressions, "ctor$", Expressions.ctor$_instr, tmp1); +//│ return tmp2 +//│ } +//│ static lit_instr() { +//│ let sym, var1, sym1, var2, tmp, sym2, var3, tmp1, tmp2, app, return1, sym3, tmp3, tmp4, sym4, tmp5; +//│ sym = new Block.Symbol("+"); +//│ var1 = new Block.ValueRef(sym); +//│ sym1 = new Block.Symbol("x"); +//│ var2 = new Block.ValueRef(sym1); +//│ tmp = new Block.Arg(var2); +//│ sym2 = new Block.Symbol("x"); +//│ var3 = new Block.ValueRef(sym2); +//│ tmp1 = new Block.Arg(var3); +//│ tmp2 = globalThis.Object.freeze([ +//│ tmp, +//│ tmp1 +//│ ]); +//│ app = new Block.Call(var1, tmp2); +//│ return1 = new Block.Return(app, false); +//│ sym3 = new Block.Symbol("x"); +//│ tmp3 = globalThis.Object.freeze([ +//│ sym3 +//│ ]); +//│ tmp4 = globalThis.Object.freeze([ +//│ tmp3 +//│ ]); +//│ sym4 = new Block.Symbol("lit"); +//│ tmp5 = new Block.FunDefn(sym4, tmp4, return1); +//│ return tmp5 +//│ } +//│ static lit_gen(x) { +//│ let tmp, tmp1, tmp2; +//│ tmp = globalThis.Object.freeze([ +//│ undefined +//│ ]); +//│ tmp1 = globalThis.Object.freeze([ +//│ tmp +//│ ]); +//│ tmp2 = SpecializeHelpers.specialize(Expressions.cache$Expressions, "lit", Expressions.lit_instr, tmp1); +//│ return tmp2 +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "Expressions"]; +//│ }); +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'isDyn') +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:809:35) +//│ at Array.every () +//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:811:34) +//│ at Array.every () +//│ at SpecializeHelpers.specializeName (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:813:37) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:840:33) +//│ at Expressions.lit_gen (REPL14:1:2961) +//│ at (REPL14:1:767) +//│ at REPL14:1:3117 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) + class Outside(a) staged module ClassInstrumentation with @@ -91,70 +126,26 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > fun ctor_() = -//│ > class Inside(a, b) -//│ > class NoArg -//│ > fun inst1() = new Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg() -//│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside(1, 2) -//│ > Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'inst1' => [Function: inst1_gen], -//│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen] -//│ > } -//│ > Map(4) { -//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { -//│ > name: 'NoArg', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, -//│ > 'ClassSymbol("Inside", undefined, 0, Some([Symbol("a"), Symbol("b")]), [], _)' => ClassSymbol { -//│ > name: 'Inside', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > 'ClassSymbol("Outside", fun Outside { class: class Outside }, 0, Some([Symbol("a")]), [], _)' => ClassSymbol { -//│ > name: 'Outside', -//│ > value: [Function: Outside] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > 'ModuleSymbol("ClassInstrumentation", class ClassInstrumentation)' => ModuleSymbol { -//│ > name: 'ClassInstrumentation', -//│ > value: [class ClassInstrumentation] { -//│ > Inside: [Function], -//│ > NoArg: [Function], -//│ > 'cache$ClassInstrumentation': [FunCache], -//│ > 'generatorMap$ClassInstrumentation': [Map] -//│ > } -//│ > }, -//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { -//│ > name: 'NoArg', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) +//│ ═══[RUNTIME ERROR] TypeError: value.hash is not a function +//│ at Block.checkMap (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:535:34) +//│ at inst1_instr (REPL17:1:5503) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:853:35) +//│ at ClassInstrumentation.inst1_gen (REPL17:1:6243) +//│ at (REPL17:1:2214) +//│ at REPL17:1:10873 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) :e print(ClassInstrumentation.("cache$ClassInstrumentation")) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassInstrumentation. -//│ ║ l.153: print(ClassInstrumentation.("cache$ClassInstrumentation")) +//│ ║ l.144: print(ClassInstrumentation.("cache$ClassInstrumentation")) //│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ > fun ctor_() = -//│ > class Inside(a, b) -//│ > class NoArg -//│ > fun inst1() = new Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg() -//│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside(1, 2) +//│ > module Nonstaged with fun f() = 1 @@ -166,43 +157,26 @@ staged module CallSubst with Staged.f() //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(0) {} -//│ > fun ctor_() = -//│ > () -//│ > fun call() = -//│ > __no__symbol__ = Nonstaged.f() -//│ > Staged.f() -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'call' => [Function: call_gen] -//│ > } -//│ > Map(2) { -//│ > 'ModuleSymbol("Nonstaged", class Nonstaged)' => ModuleSymbol { -//│ > name: 'Nonstaged', -//│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > }, -//│ > 'ModuleSymbol("Staged", class Staged { cache$Staged: fun ctor_() =\n' + -//│ > ' ()\n' + -//│ > 'fun f() = 1, generatorMap$Staged: Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} })' => ModuleSymbol { -//│ > name: 'Staged', -//│ > value: [class Staged] { -//│ > 'cache$Staged': [FunCache], -//│ > 'generatorMap$Staged': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) +//│ ═══[RUNTIME ERROR] TypeError: value.hash is not a function +//│ at Block.checkMap (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:535:34) +//│ at call_instr (REPL23:1:5099) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:853:35) +//│ at CallSubst.call_gen (REPL23:1:6277) +//│ at (REPL23:1:3644) +//│ at REPL23:1:6429 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) :e print(CallSubst."cache$CallSubst") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. -//│ ║ l.203: print(CallSubst."cache$CallSubst") +//│ ║ l.175: print(CallSubst."cache$CallSubst") //│ ╙── ^^^^^^^^^ -//│ > fun ctor_() = -//│ > () -//│ > fun call() = -//│ > __no__symbol__ = Nonstaged.f() -//│ > Staged.f() +//│ > :ftc staged module Arguments with @@ -210,20 +184,19 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > Instantiate(ValueRef(ClassSymbol("Function$", class Function$, 0, None, [], _)), []) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: Not implemented -//│ at get notImplementedError (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:414:39) -//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:301:21) -//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:313:23) -//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:148:24) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:568:37) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:622:40) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:598:36) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:870:39) -//│ at Arguments.g_gen (REPL23:1:6927) -//│ at (REPL23:1:2678) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'isDyn') +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:809:35) +//│ at Array.every () +//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:811:34) +//│ at Array.every () +//│ at SpecializeHelpers.specializeName (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:813:37) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:840:33) +//│ at Arguments.g_gen (REPL29:1:6137) +//│ at (REPL29:1:2540) +//│ at REPL29:1:6301 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) staged module OtherBlocks with fun scope() = @@ -236,158 +209,91 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'scope' => [Function: scope_gen], -//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] -//│ > } -//│ > Map(1) { -//│ > [class OtherBlocks] { -//│ > 'cache$OtherBlocks': FunCache { cache: [Map] }, -//│ > 'generatorMap$OtherBlocks': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'scope' => [Function: scope_gen], -//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'OtherBlocks', -//│ > value: [class OtherBlocks] { -//│ > 'cache$OtherBlocks': [FunCache], -//│ > 'generatorMap$OtherBlocks': [Map] -//│ > } -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) +//│ ═══[RUNTIME ERROR] TypeError: value.hash is not a function +//│ at Block.checkMap (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:535:34) +//│ at scope_instr (REPL32:1:3082) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:853:35) +//│ at OtherBlocks.scope_gen (REPL32:1:4036) +//│ at (REPL32:1:948) +//│ at REPL32:1:6045 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ > fun ctor_() = -//│ > () -//│ > fun scope() = -//│ > let a -//│ > a = 1 -//│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel() = -//│ > let scrut -//│ > scrut = 1 -//│ > if scrut is -//│ > 2 then 0 -//│ > 3 then 0 -//│ > else 0 -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'scope' => [Function: scope_gen], -//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] -//│ > } -//│ > Map(1) { -//│ > 'ModuleSymbol("OtherBlocks", class OtherBlocks)' => ModuleSymbol { -//│ > name: 'OtherBlocks', -//│ > value: [class OtherBlocks] { -//│ > 'cache$OtherBlocks': [FunCache], -//│ > 'generatorMap$OtherBlocks': [Map] -//│ > } -//│ > } -//│ > } staged module ClassDefs with class A +//│ > //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(1) { -//│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ClassSymbol { -//│ > name: 'A', -//│ > value: [class A] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > } +//│ > Map(0) {} :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.317: print(ClassDefs."cache$ClassDefs") +//│ ║ l.234: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ -//│ > fun ctor_() = -//│ > class A +//│ > // :sjs staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() +//│ > //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(2) { -//│ > [Function: InnerClass] { -//│ > class: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ClassSymbol { -//│ > name: 'InnerClass', -//│ > value: [Function: InnerClass] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] -//│ > }, -//│ > [class Arguments] { -//│ > 'cache$Arguments': FunCache { cache: [Map] }, -//│ > 'generatorMap$Arguments': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Arguments' ] -//│ > } => ModuleSymbol { -//│ > name: 'Arguments', -//│ > value: [class Arguments] { -//│ > 'cache$Arguments': [FunCache], -//│ > 'generatorMap$Arguments': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > } -//│ > } +//│ > Map(0) {} -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassFunctions. -//│ ║ l.358: print(ClassFunctions."cache$ClassFunctions") -//│ ╙── ^^^^^^^^^^^^^^ -//│ > fun ctor_() = -//│ > class InnerClass() with -//│ > fun f() = -//│ > let tmp -//│ > tmp = Arguments.f(1) -//│ > +(1, tmp) -//│ > fun g() = InnerClass.f() // name collision class A() staged module A with fun f() = 1 -//│ > fun ctor_() = -//│ > () //│ > fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } // nested module module A with staged module B with fun f() = 1 -//│ > fun ctor_() = -//│ > () //│ > fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged module Shadowing with fun f(x, x) = x -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'isDyn') +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:809:35) +//│ at Array.every () +//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:811:34) +//│ at Array.every () +//│ at SpecializeHelpers.specializeName (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:813:37) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:840:33) +//│ at Shadowing.f_gen (REPL50:1:2597) +//│ at (REPL50:1:729) +//│ at REPL50:1:2743 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.401: print(Shadowing."cache$Shadowing") +//│ ║ l.281: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ -//│ > fun ctor_() = -//│ > () -//│ > fun f(x, x) = x +//│ > // testing generatorMap staged module M with fun f() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e M."generatorMap$M" //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.415: M."generatorMap$M" +//│ ║ l.294: M."generatorMap$M" //│ ╙── ^ //│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} @@ -400,18 +306,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.322: let x = 1 +//│ ║ l.304: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.322: let x = 1 +//│ ║ l.304: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.322: let x = 1 +//│ ║ l.304: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.322: let x = 1 +//│ ║ l.304: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: x is not defined @@ -423,7 +329,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.347: fun g() = {1 : 2} +//│ ║ l.329: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error @@ -432,31 +338,20 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) -//│ > fun ctor_() = -//│ > () //│ > fun f() = -//│ > let middleElements -//│ > let element0_ //│ > let scrut //│ > let tmp //│ > let x +//│ > let middleElements +//│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] -//│ > if scrut is -//│ > [_] then -//│ > element0_ = Runtime.Tuple.get(scrut, 0) -//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) -//│ > if element0_ is -//│ > 1 then -//│ > x = middleElements -//│ > x -//│ > else 0 -//│ > else 0 +//│ > 0 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo staged module RetUnit with fun f() = () //│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ ═══[RUNTIME ERROR] Error: match error From af7c21ede74ec66c4e174e13555c48b4274a533d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 26 Mar 2026 23:22:02 +0800 Subject: [PATCH 370/654] udpate tests --- .../test/mlscript/block-staging/Classes.mls | 8 +--- .../test/mlscript/block-staging/Functions.mls | 2 +- .../mlscript/block-staging/GeneratorMap.mls | 11 +++++ .../test/mlscript/block-staging/PrintCode.mls | 14 +++--- .../test/mlscript/block-staging/SymbolMap.mls | 27 ----------- .../test/mlscript/block-staging/Syntax.mls | 47 +++++++++---------- .../src/test/mlscript/lifter/ClassInFun.mls | 2 +- 7 files changed, 41 insertions(+), 70 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls delete mode 100644 hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index fca1d5e18a..38e859cbc2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -9,7 +9,6 @@ staged class A(val a) //│ > } => ClassSymbol { //│ > name: 'A1', //│ > value: [Function: A] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > } @@ -22,7 +21,6 @@ staged module C with //│ > [class I] { Symbol(mlscript.definitionMetadata): [ 'class', 'I' ] } => ClassSymbol { //│ > name: 'I', //│ > value: [class I] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > } @@ -37,7 +35,6 @@ staged module M with //│ > [class C2] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { //│ > name: 'C', //│ > value: [class C2] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > moduleValue: 0, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > } @@ -51,7 +48,7 @@ staged class C with :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.85: staged class C(x) +//│ ║ l.81: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with @@ -66,7 +63,6 @@ staged class D(val x) extends B(x+1) with //│ > } => ClassSymbol { //│ > name: 'B1', //│ > value: [Function: B] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > } @@ -82,7 +78,6 @@ staged class D(val x) extends B(x+1) with //│ > } => ClassSymbol { //│ > name: 'B1', //│ > value: [Function: B] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, @@ -94,7 +89,6 @@ staged class D(val x) extends B(x+1) with //│ > } => ClassSymbol { //│ > name: 'D1', //│ > value: [Function: D] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index d1463afa81..27a0217c56 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -49,8 +49,8 @@ print(Expressions."cache$Expressions") //│ > () //│ > fun lit() = 1 //│ > fun assign() = -//│ > let y //│ > let x +//│ > let y //│ > x = 42 //│ > y = x //│ > y diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls new file mode 100644 index 0000000000..37eb081d91 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls @@ -0,0 +1,11 @@ +:js +:staging + +staged module A with + fun f() = 1 + fun g(x) = x +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 430b5ffd71..263bd4ca89 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -33,16 +33,14 @@ printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) class B class D(val x)(y) extends B -let bSym = ClassSymbol("B", B, undefined, None, [], undefined) -let dSym = ClassSymbol("A", D, undefined, Some([Symbol("x")]), [[Symbol("y")]], B) -//│ bSym = ClassSymbol("B", class B, undefined, None, [], _) +let bSym = ClassSymbol("B", B, None, []) +let dSym = ClassSymbol("A", D, Some([Symbol("x")]), [[Symbol("y")]]) +//│ bSym = ClassSymbol("B", class B, None, []) //│ dSym = ClassSymbol( //│ "A", //│ fun D { class: class D }, -//│ undefined, //│ Some([Symbol("x")]), -//│ [[Symbol("y")]], -//│ _ +//│ [[Symbol("y")]] //│ ) printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) @@ -56,8 +54,8 @@ let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) //│ f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) printCode(f) -printCode(ClsLikeDefn(dSym, [f], None)) -printCode(ClsLikeDefn(bSym, [], None)) +printCode(ClsLikeDefn(dSym, [f], [])) +printCode(ClsLikeDefn(bSym, [], [])) //│ > fun f(x) = 1 //│ > class A(x)(y) with //│ > fun f(x) = 1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls deleted file mode 100644 index f75b8a32a2..0000000000 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls +++ /dev/null @@ -1,27 +0,0 @@ -:js -:staging - -class C(val x) - -staged module A with - fun g() = C(1) - fun h() = C(2) -//│ > fun ctor_() = -//│ > () -//│ > fun g() = C(1) -//│ > fun h() = C(2) -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'g' => [Function: g_gen], -//│ > 'h' => [Function: h_gen] -//│ > } -//│ > Map(1) { -//│ > 'ClassSymbol("C", fun C { class: class C }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > moduleValue: 0, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } -//│ > } - diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index b072ac36d0..6b0be355fb 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -29,43 +29,38 @@ staged module A //│ } //│ staged module A² { //│ constructor { -//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11; -//│ set tmp7 = A².ctor$_instr﹖(); -//│ set tmp8 = ["ctor$", tmp7]; -//│ set tmp9 = [tmp8]; -//│ set tmp10 = new globalThis⁰.Map﹖(tmp9); -//│ set tmp11 = new SpecializeHelpers⁰.FunCache﹖(tmp10); -//│ define cache$A⁰ as val cache$A¹ = tmp11; -//│ set tmp4 = ["ctor$", A².ctor$_gen﹖]; -//│ set tmp5 = [tmp4]; -//│ set tmp6 = new globalThis⁰.Map﹖(tmp5); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp6; -//│ set tmp = { "indent": true }; -//│ set tmp1 = A².cache$A﹖.toString﹖(); -//│ set tmp2 = globalThis⁰.console﹖.log﹖(tmp1); -//│ set tmp3 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; +//│ set tmp4 = A².ctor$_instr﹖(); +//│ set tmp5 = [tmp4, 1]; +//│ set tmp6 = ["ctor$", tmp5]; +//│ set tmp7 = [tmp6]; +//│ set tmp8 = new mut globalThis⁰.Map﹖(tmp7); +//│ set tmp9 = new SpecializeHelpers⁰.FunCache﹖(tmp8); +//│ define cache$A⁰ as val cache$A¹ = tmp9; +//│ set tmp1 = ["ctor$", A².ctor$_gen﹖]; +//│ set tmp2 = [tmp1]; +//│ set tmp3 = new mut globalThis⁰.Map﹖(tmp2); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp3; +//│ set tmp = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { //│ let end, tmp, tmp1, sym, tmp2; -//│ set end = new Block⁰.End﹖(); +//│ set end = new mut Block⁰.End﹖(); //│ set tmp = []; //│ set tmp1 = [tmp]; -//│ set sym = new Block⁰.Symbol﹖("ctor$"); -//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, end); +//│ set sym = new mut Block⁰.Symbol﹖("ctor$"); +//│ set tmp2 = new mut Block⁰.FunDefn﹖(sym, tmp1, end); //│ return tmp2 //│ } //│ method ctor$_gen⁰ = fun ctor$_gen¹() { -//│ let tmp, tmp1, tmp2, tmp3; -//│ set tmp = A².cache$A﹖.getFun﹖("ctor$"); -//│ set tmp1 = []; -//│ set tmp2 = [tmp1]; -//│ set tmp3 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp2); -//│ return tmp3 +//│ let tmp, tmp1, tmp2; +//│ set tmp = []; +//│ set tmp1 = [tmp]; +//│ set tmp2 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp1); +//│ return tmp2 //│ } //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > fun ctor_() = -//│ > () //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index 4b853f47b1..9f00e80d5c 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -138,8 +138,8 @@ f().foo() //│ } //│ } //│ #Good$cap; -//│ #x; //│ #y; +//│ #x; //│ #scope0$cap; //│ foo() { //│ let tmp6, tmp7; From a9d49621a6d397c7092fab70ebfb60bc002a377f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 26 Mar 2026 23:36:34 +0800 Subject: [PATCH 371/654] refresh parameters for _gen functions --- .../hkmc2/codegen/ReflectionInstrumenter.scala | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 039a4fc26d..01df8233fe 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -361,13 +361,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val genSymName = f.sym.nme + "_gen" val sym = BlockMemberSymbol(genSymName, Nil, false) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) - - val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: f.params else f.params - val body = call(cachePath.selSN("getFun"), Ls(toValue(f.sym.nme))): instr => - params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => - tuple(tups): args => - call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => - Return(res, false) + + // refresh parameters + val funParams = f.params.map(ps => PlainParamList(ps.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme)))))) + val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: funParams else funParams + val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => + tuple(tups): args => + call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => + Return(res, false) FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(false) val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false) From 493d465eba829cb851ad8bab96f3562ba02bfbb6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 26 Mar 2026 23:38:41 +0800 Subject: [PATCH 372/654] make generatorMap froprinting manual --- .../codegen/ReflectionInstrumenter.scala | 8 +- .../test/mlscript/block-staging/Classes.mls | 6 -- .../test/mlscript/block-staging/DefCtx.mls | 41 -------- .../test/mlscript/block-staging/Functions.mls | 95 ++++--------------- .../mlscript/block-staging/GeneratorMap.mls | 6 ++ .../mlscript/block-staging/StageSymbols.mls | 27 ++---- 6 files changed, 39 insertions(+), 144 deletions(-) delete mode 100644 hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 01df8233fe..6973033c75 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -412,10 +412,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // assign(options): options => // call(cachePath.selSN("toString"), Nil, false): str => // call(printFun, Ls(str), false): _ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest + // call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => + if symbolMapUsed + then call(printFun, Ls(symbolMapSym), false)(_ => rest) + else rest // used for staging classes inside modules val newCompanion = companion.copy( diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 38e859cbc2..b4607d57c7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -2,7 +2,6 @@ :staging staged class A(val a) -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [Function: A] { //│ > class: [class A] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } @@ -16,7 +15,6 @@ staged class A(val a) staged module C with class I -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [class I] { Symbol(mlscript.definitionMetadata): [ 'class', 'I' ] } => ClassSymbol { //│ > name: 'I', @@ -30,7 +28,6 @@ staged module C with class C staged module M with fun f() = C -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [class C2] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { //│ > name: 'C', @@ -43,7 +40,6 @@ staged module M with // :sir staged class C with fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e staged class C(x) @@ -56,7 +52,6 @@ staged class B(val x) with staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [Function: B] { //│ > class: [class B] { 'cache$B': [FunCache], 'generatorMap$B': [Map] } @@ -67,7 +62,6 @@ staged class D(val x) extends B(x+1) with //│ > auxParams: [] //│ > } //│ > } -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: B] { //│ > class: [class B] { diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls deleted file mode 100644 index e48a464fbb..0000000000 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ /dev/null @@ -1,41 +0,0 @@ -:js -:staging - -fun f() = 1 -staged module A with - fun f() = 1 - fun g(x) = x -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 -//│ > fun g(x) = x -//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } - -class C() with - fun h() = 0 - -fun i() = 2 - -staged module B with - fun a() = A.f() - fun b() = C().h() - fun c() = i() - fun d() = A.g(1) - fun e() = f() -//│ > fun ctor_() = -//│ > () -//│ > fun a() = A.f() -//│ > fun b() = -//│ > let tmp -//│ > tmp = C() -//│ > tmp.h() -//│ > fun c() = i() -//│ > fun d() = A.g(1) -//│ > fun e() = f() -//│ > Map(5) { -//│ > 'a' => [Function: a_gen], -//│ > 'b' => [Function: b_gen], -//│ > 'c' => [Function: c_gen], -//│ > 'd' => [Function: d_gen], -//│ > 'e' => [Function: e_gen] -//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 27a0217c56..fb7ed0126d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -24,16 +24,6 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 -//│ > Map(8) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'lit' => [Function: lit_gen], -//│ > 'assign' => [Function: assign_gen], -//│ > 'tup1' => [Function: tup1_gen], -//│ > 'tup2' => [Function: tup2_gen], -//│ > 'dynsel' => [Function: dynsel_gen], -//│ > 'match1' => [Function: match1_gen], -//│ > 'match2' => [Function: match2_gen] -//│ > } //│ > Map(2) { //│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, //│ > 'Int' => VirtualClassSymbol { name: 'Int' } @@ -43,14 +33,14 @@ staged module Expressions with :e print(Expressions."cache$Expressions") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Expressions. -//│ ║ l.44: print(Expressions."cache$Expressions") +//│ ║ l.34: print(Expressions."cache$Expressions") //│ ╙── ^^^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun lit() = 1 //│ > fun assign() = -//│ > let x //│ > let y +//│ > let x //│ > x = 42 //│ > y = x //│ > y @@ -95,13 +85,6 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'inst1' => [Function: inst1_gen], -//│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen], -//│ > 'app2' => [Function: app2_gen] -//│ > } //│ > Map(4) { //│ > [class NoArg] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NoArg' ] @@ -152,7 +135,7 @@ staged module ClassInstrumentation with :e print(ClassInstrumentation.("cache$ClassInstrumentation")) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassInstrumentation. -//│ ║ l.153: print(ClassInstrumentation.("cache$ClassInstrumentation")) +//│ ║ l.136: print(ClassInstrumentation.("cache$ClassInstrumentation")) //│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > class Inside(a, b) @@ -166,15 +149,10 @@ module Nonstaged with fun f() = 1 staged module Staged with fun f() = 1 -staged module CallSubst with +staged module Call with fun call() = Nonstaged.f() Staged.f() -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'call' => [Function: call_gen] -//│ > } //│ > Map(2) { //│ > [class Nonstaged] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Nonstaged' ] @@ -200,10 +178,10 @@ staged module CallSubst with //│ > } :e -print(CallSubst."cache$CallSubst") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. -//│ ║ l.203: print(CallSubst."cache$CallSubst") -//│ ╙── ^^^^^^^^^ +print(Call."cache$Call") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Call. +//│ ║ l.181: print(Call."cache$Call") +//│ ╙── ^^^^ //│ > fun ctor_() = //│ > () //│ > fun call() = @@ -216,11 +194,6 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } //│ > Map(1) { //│ > [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] @@ -237,7 +210,7 @@ staged module Arguments with :e print(Arguments."cache$Arguments") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Arguments. -//│ ║ l.238: print(Arguments."cache$Arguments") +//│ ║ l.211: print(Arguments."cache$Arguments") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -260,11 +233,6 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'scope' => [Function: scope_gen], -//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] -//│ > } //│ > Map(1) { //│ > [class OtherBlocks] { //│ > 'cache$OtherBlocks': FunCache { cache: [Map] }, @@ -285,7 +253,7 @@ staged module OtherBlocks with :e print(OtherBlocks."cache$OtherBlocks") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type OtherBlocks. -//│ ║ l.286: print(OtherBlocks."cache$OtherBlocks") +//│ ║ l.254: print(OtherBlocks."cache$OtherBlocks") //│ ╙── ^^^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -303,7 +271,6 @@ print(OtherBlocks."cache$OtherBlocks") staged module ClassDefs with class A -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ClassSymbol { //│ > name: 'A', @@ -316,7 +283,7 @@ staged module ClassDefs with :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.317: print(ClassDefs."cache$ClassDefs") +//│ ║ l.284: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > class A @@ -326,7 +293,6 @@ staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(2) { //│ > [Function: InnerClass] { //│ > class: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] } @@ -357,7 +323,7 @@ staged module ClassFunctions with :e print(ClassFunctions."cache$ClassFunctions") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassFunctions. -//│ ║ l.358: print(ClassFunctions."cache$ClassFunctions") +//│ ║ l.324: print(ClassFunctions."cache$ClassFunctions") //│ ╙── ^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > class InnerClass() with @@ -371,7 +337,6 @@ print(ClassFunctions."cache$ClassFunctions") class A() staged module A with fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } print(A."class"."cache$A") //│ > fun ctor_() = @@ -382,12 +347,11 @@ print(A."class"."cache$A") module A with staged module B with fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e print(A.B."cache$B") //│ ╔══[COMPILATION ERROR] Unexpected moduleful selection of type B. -//│ ║ l.388: print(A.B."cache$B") +//│ ║ l.352: print(A.B."cache$B") //│ ╙── ^^^ //│ > fun ctor_() = //│ > () @@ -395,29 +359,16 @@ print(A.B."cache$B") staged module Shadowing with fun f(x, x) = x -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.401: print(Shadowing."cache$Shadowing") +//│ ║ l.364: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun f(x, x) = x -// testing generatorMap -staged module M with - fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } - -:e -M."generatorMap$M" -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.415: M."generatorMap$M" -//│ ╙── ^ -//│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} - :todo force enable :ftc to desugar Label and Break :ftc staged module M with @@ -427,18 +378,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.425: let x = 1 +//│ ║ l.376: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.425: let x = 1 +//│ ║ l.376: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.425: let x = 1 +//│ ║ l.376: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.425: let x = 1 +//│ ║ l.376: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -450,7 +401,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.450: fun g() = {1 : 2} +//│ ║ l.401: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -459,11 +410,3 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } - -:todo -staged module RetUnit with - fun f() = () -//│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. - diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls index 37eb081d91..369171fd38 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls @@ -4,6 +4,12 @@ staged module A with fun f() = 1 fun g(x) = x + +:e +console.log(A."generatorMap$A") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type A. +//│ ║ l.9: console.log(A."generatorMap$A") +//│ ╙── ^ //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 5245e85379..e8c40c745b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -5,7 +5,6 @@ staged module M with class C with fun f() = 1 fun g() = f() -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [class C] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { //│ > name: 'C', @@ -24,17 +23,11 @@ staged module D with class E fun f() = A.f() - B.f() + B.f is Bool fun matching() = 1 is Int 1 is C -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'matching' => [Function: matching_gen] -//│ > } -//│ > Map(5) { +//│ > Map(6) { //│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', //│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, @@ -60,6 +53,7 @@ staged module D with //│ > name: 'B', //│ > value: [class B] { Symbol(mlscript.definitionMetadata): [Array] } //│ > }, +//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, //│ > 'Int' => VirtualClassSymbol { name: 'Int' }, //│ > [Function: C] { //│ > class: [class C1] { Symbol(mlscript.definitionMetadata): [Array] } @@ -81,7 +75,6 @@ staged module M with A.B.C A.B.C(1) E -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(5) { //│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', @@ -141,19 +134,13 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.142: fun g()() = 1 +//│ ║ l.135: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } :ftc staged module M with fun f() = x => x fun g()() = 1 -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } //│ > Map(2) { //│ > [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] @@ -176,3 +163,9 @@ staged module M with //│ > auxParams: [] //│ > } //│ > } + +:todo creating symbols for objects +staged module RetUnit with + fun f() = () +//│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From 8b799f16df5201b79b70f275c6a48bb0d8e62246 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 26 Mar 2026 23:45:25 +0800 Subject: [PATCH 373/654] update tests --- .../src/test/mlscript-compile/Block.mls | 1 + .../test/mlscript/block-staging/Classes.mls | 67 ++++++++++++++++++- .../mlscript/block-staging/SpecializeTest.mls | 45 +++++++++++++ 3 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 7db721f480..344c1d3074 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -166,6 +166,7 @@ fun showDefn(d: Defn): Str = ClsLikeDefn(sym, methods, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams).join("") + if methods is [] then "" else " with \n " + indent(methods.map(showDefn).join("\n")) + // TODO: used to represent assignments in constructors, which still need some adjustment ValDefn(owner, sym, rhs) then (if owner is Some(owner) then showSymbol(owner) else "") + "." + showSymbol(sym) + " = " + showPath(rhs) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index b4607d57c7..795dc2cea8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -1,6 +1,24 @@ :js :staging +import "../../mlscript-compile/Block.mls" + +class C with + fun call(x) = x + 1 +staged module M with + fun f(x) = x.C#call(10) + +// TODO: copy C# annotation to Block IR +:e +print(M."cache$M") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. +//│ ║ l.13: print(M."cache$M") +//│ ╙── ^ +//│ > fun ctor_() = +//│ > () +//│ > fun f(x) = x.call(10) + + staged class A(val a) //│ > Map(1) { //│ > [Function: A] { @@ -29,9 +47,9 @@ class C staged module M with fun f() = C //│ > Map(1) { -//│ > [class C2] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { +//│ > [class C4] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { //│ > name: 'C', -//│ > value: [class C2] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > value: [class C4] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > } @@ -44,7 +62,7 @@ staged class C with :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.81: staged class C(x) +//│ ║ l.63: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with @@ -87,3 +105,46 @@ staged class D(val x) extends B(x+1) with //│ > auxParams: [] //│ > } //│ > } + +class Unstaged +staged class Staged(val x) with + fun inner() = 1 +staged module M with + fun f() = + Unstaged; + Staged +//│ > Map(1) { +//│ > [Function: Staged] { +//│ > class: [class Staged] { +//│ > 'cache$Staged': [FunCache], +//│ > 'generatorMap$Staged': [Map] +//│ > } +//│ > } => ClassSymbol { +//│ > name: 'Staged1', +//│ > value: [Function: Staged] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } +//│ > } +//│ > Map(2) { +//│ > [Function: Staged] { +//│ > class: [class Staged] { +//│ > 'cache$Staged': [FunCache], +//│ > 'generatorMap$Staged': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > } => ClassSymbol { +//│ > name: 'Staged1', +//│ > value: [Function: Staged] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > [class Unstaged] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Unstaged' ] +//│ > } => ClassSymbol { +//│ > name: 'Unstaged', +//│ > value: [class Unstaged] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls new file mode 100644 index 0000000000..15d2b7a384 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -0,0 +1,45 @@ +:js +:staging + +import "../../mlscript-compile/Shape.mls" + +open Shape + +staged module M with + fun f(x) = + let y = x * 2 + y + +:e +M.f_gen(Dyn()) +//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' +//│ ║ l.14: M.f_gen(Dyn()) +//│ ╙── ^^^^^^ +//│ = [Symbol("f_Dyn_28_29"), [[Dyn()]]] + +:e +M.f_gen(Lit(2)) +//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' +//│ ║ l.21: M.f_gen(Lit(2)) +//│ ╙── ^^^^^^ +//│ = [Symbol("f_Lit_282_29"), [[Lit(2)]]] + +:e +print(M."cache$M") +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. +//│ ║ l.28: print(M."cache$M") +//│ ╙── ^ +//│ > fun ctor_() = +//│ > () +//│ > fun f(x) = +//│ > let y +//│ > y = *(x, 2) +//│ > y +//│ > fun f_Dyn_28_29(x) = +//│ > let y +//│ > y = *(x, 2) +//│ > y +//│ > fun f_Lit_282_29(x) = +//│ > let y +//│ > y = *(x, 2) +//│ > y From 9db8c578aa6d6e2dc71dcba333bb786cbd37e8ce Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 27 Mar 2026 00:00:58 +0800 Subject: [PATCH 374/654] add todo --- hkmc2/shared/src/test/mlscript/block-staging/Functions.mls | 1 + 1 file changed, 1 insertion(+) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index fb7ed0126d..7bbc61811a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -207,6 +207,7 @@ staged module Arguments with //│ > } //│ > } +// TODO: printout is wrong... :e print(Arguments."cache$Arguments") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Arguments. From 24e98329402b231c59f5527a0a6f2a2e8a7c140b Mon Sep 17 00:00:00 2001 From: TYeung Date: Fri, 27 Mar 2026 02:52:23 +0800 Subject: [PATCH 375/654] allocate a fresh VarSymbol for every parameter in f_gen --- .../codegen/ReflectionInstrumenter.scala | 4 +- .../mlscript-compile/SpecializeHelpers.mls | 2 - .../test/mlscript/block-staging/Functions.mls | 509 +++++++++++------- 3 files changed, 304 insertions(+), 211 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index f3c877abf5..3105ad3143 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -362,7 +362,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val sym = BlockMemberSymbol(genSymName, Nil, false) val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) - val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: f.params else f.params + val params = (if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: Nil else Nil) ::: f.params.map { pl => + PlainParamList(pl.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme))))) + } val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => tuple(tups): args => call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 675a61f4b8..952563d4d9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -45,7 +45,6 @@ fun sor(ctx, r) = if r is else [End(), r, s] Instantiate(cls, args) then - print(r) let sym = if cls is ValueRef(s) and s is ClassSymbol then s Select(_, s) and s is ClassSymbol then s @@ -193,7 +192,6 @@ fun propStub(block, shapes) = [block, shapes] fun specialize(cache, funName, dflt, shapes) = // replace function symbol in block definition to new name - runtime.safeCall(console.log(funName, shapes)) let newName = specializeName(funName, shapes) if cache.getFun(newName) is Some(x) then [x.0.sym, x.1] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index d5205a3265..432705d0f8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,122 +1,87 @@ :js :staging -:sjs staged module Expressions with fun lit(x) = x + x -//│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let Expressions1; -//│ (class Expressions { -//│ static { -//│ Expressions1 = this -//│ } -//│ constructor() { -//│ runtime.Unit; -//│ } -//│ static { -//│ let tmp_dyn, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6; -//│ tmp5 = new globalThis.Map(); -//│ tmp6 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp5)); -//│ this.cache$Expressions = tmp6; -//│ tmp1 = globalThis.Object.freeze([ -//│ "ctor$", -//│ Expressions.ctor$_gen -//│ ]); -//│ tmp2 = globalThis.Object.freeze([ -//│ "lit", -//│ Expressions.lit_gen -//│ ]); -//│ tmp3 = globalThis.Object.freeze([ -//│ tmp1, -//│ tmp2 -//│ ]); -//│ tmp4 = new globalThis.Map(tmp3); -//│ this.generatorMap$Expressions = tmp4; -//│ tmp_dyn = ShapeSet.mkDyn(); -//│ Expressions.lit_gen(tmp_dyn); -//│ tmp = runtime.safeCall(Expressions.cache$Expressions.toString()); -//│ runtime.safeCall(globalThis.console.log(tmp)); -//│ runtime.safeCall(globalThis.console.log(Expressions.generatorMap$Expressions)); -//│ } -//│ static lit(x) { -//│ return undefined + undefined -//│ } -//│ static ctor$_instr() { -//│ let end, tmp, tmp1, sym, tmp2; -//│ end = new Block.End(); -//│ tmp = globalThis.Object.freeze([]); -//│ tmp1 = globalThis.Object.freeze([ -//│ tmp -//│ ]); -//│ sym = new Block.Symbol("ctor$"); -//│ tmp2 = new Block.FunDefn(sym, tmp1, end); -//│ return tmp2 -//│ } -//│ static ctor$_gen() { -//│ let tmp, tmp1, tmp2; -//│ tmp = globalThis.Object.freeze([]); -//│ tmp1 = globalThis.Object.freeze([ -//│ tmp -//│ ]); -//│ tmp2 = SpecializeHelpers.specialize(Expressions.cache$Expressions, "ctor$", Expressions.ctor$_instr, tmp1); -//│ return tmp2 -//│ } -//│ static lit_instr() { -//│ let sym, var1, sym1, var2, tmp, sym2, var3, tmp1, tmp2, app, return1, sym3, tmp3, tmp4, sym4, tmp5; -//│ sym = new Block.Symbol("+"); -//│ var1 = new Block.ValueRef(sym); -//│ sym1 = new Block.Symbol("x"); -//│ var2 = new Block.ValueRef(sym1); -//│ tmp = new Block.Arg(var2); -//│ sym2 = new Block.Symbol("x"); -//│ var3 = new Block.ValueRef(sym2); -//│ tmp1 = new Block.Arg(var3); -//│ tmp2 = globalThis.Object.freeze([ -//│ tmp, -//│ tmp1 -//│ ]); -//│ app = new Block.Call(var1, tmp2); -//│ return1 = new Block.Return(app, false); -//│ sym3 = new Block.Symbol("x"); -//│ tmp3 = globalThis.Object.freeze([ -//│ sym3 -//│ ]); -//│ tmp4 = globalThis.Object.freeze([ -//│ tmp3 -//│ ]); -//│ sym4 = new Block.Symbol("lit"); -//│ tmp5 = new Block.FunDefn(sym4, tmp4, return1); -//│ return tmp5 -//│ } -//│ static lit_gen(x) { -//│ let tmp, tmp1, tmp2; -//│ tmp = globalThis.Object.freeze([ -//│ undefined -//│ ]); -//│ tmp1 = globalThis.Object.freeze([ -//│ tmp -//│ ]); -//│ tmp2 = SpecializeHelpers.specialize(Expressions.cache$Expressions, "lit", Expressions.lit_instr, tmp1); -//│ return tmp2 -//│ } -//│ toString() { return runtime.render(this); } -//│ static [definitionMetadata] = ["class", "Expressions"]; -//│ }); -//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'isDyn') -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:809:35) -//│ at Array.every () -//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:811:34) -//│ at Array.every () -//│ at SpecializeHelpers.specializeName (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:813:37) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:840:33) -//│ at Expressions.lit_gen (REPL14:1:2961) -//│ at (REPL14:1:767) -//│ at REPL14:1:3117 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) - + fun assign() = + let x = 42 + let y = x + y + fun tup1() = [1, 2] + fun tup2() = + let x = [1, 2, 3] + [1, x] + fun dynsel() = [1].(0) + fun match1() = + if 9 is + Bool then 1 + 8 then 2 + Int then 3 + 9 then 4 + else 0 + fun match2() = + let x = [1, 2, 3] + if x is + [] then 1 + [1, 2] then 2 + [a, _] then 3 + else 0 +//│ > fun ctor_() = +//│ > () +//│ > fun lit() = 1 +//│ > fun assign() = +//│ > let x +//│ > let y +//│ > x = 42 +//│ > y = 42 +//│ > 42 +//│ > fun tup1() = [1, 2] +//│ > fun tup2() = +//│ > let x +//│ > x = [1, 2, 3] +//│ > [1, x] +//│ > fun dynsel() = +//│ > let tmp +//│ > tmp = [1] +//│ > 1 +//│ > fun match1() = +//│ > let scrut +//│ > scrut = 9 +//│ > 3 +//│ > fun match2() = +//│ > let x +//│ > let a +//│ > let element1_ +//│ > let element0_ +//│ > if x is +//│ > [] then 1 +//│ > [_, _] then +//│ > element0_ = Runtime.Tuple.get(x, 0) +//│ > element1_ = Runtime.Tuple.get(x, 1) +//│ > if element0_ is +//│ > 1 then +//│ > if element1_ is +//│ > 2 then 2 +//│ > else a = element0_ +//│ > 3 +//│ > else a = element0_ +//│ > 3 +//│ > else 0 +//│ > Map(8) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'lit' => [Function: lit_gen], +//│ > 'assign' => [Function: assign_gen], +//│ > 'tup1' => [Function: tup1_gen], +//│ > 'tup2' => [Function: tup2_gen], +//│ > 'dynsel' => [Function: dynsel_gen], +//│ > 'match1' => [Function: match1_gen], +//│ > 'match2' => [Function: match2_gen] +//│ > } +//│ > Map(2) { +//│ > 'VirtualClassSymbol("Bool")' => VirtualClassSymbol { name: 'Bool' }, +//│ > 'VirtualClassSymbol("Int")' => VirtualClassSymbol { name: 'Int' } +//│ > } +//│ x = [1, 2, 3] class Outside(a) staged module ClassInstrumentation with @@ -126,26 +91,57 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) -//│ ═══[RUNTIME ERROR] TypeError: value.hash is not a function -//│ at Block.checkMap (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:535:34) -//│ at inst1_instr (REPL17:1:5503) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:853:35) -//│ at ClassInstrumentation.inst1_gen (REPL17:1:6243) -//│ at (REPL17:1:2214) -//│ at REPL17:1:10873 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) - -:e -print(ClassInstrumentation.("cache$ClassInstrumentation")) -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassInstrumentation. -//│ ║ l.144: print(ClassInstrumentation.("cache$ClassInstrumentation")) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ > +//│ > fun ctor_() = +//│ > class Inside(a, b) +//│ > class NoArg +//│ > fun inst1() = new Outside(1) +//│ > fun inst2() = new ClassInstrumentation.NoArg() +//│ > fun app1() = Outside(1) +//│ > fun app2() = ClassInstrumentation.Inside(1, 2) +//│ > Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'inst1' => [Function: inst1_gen], +//│ > 'inst2' => [Function: inst2_gen], +//│ > 'app1' => [Function: app1_gen] +//│ > } +//│ > Map(4) { +//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { +//│ > name: 'NoArg', +//│ > value: undefined, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > 'ClassSymbol("Inside", undefined, 0, Some([Symbol("a"), Symbol("b")]), [], _)' => ClassSymbol { +//│ > name: 'Inside', +//│ > value: undefined, +//│ > moduleValue: 0, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > 'ClassSymbol("Outside", fun Outside { class: class Outside }, 0, Some([Symbol("a")]), [], _)' => ClassSymbol { +//│ > name: 'Outside', +//│ > value: [Function: Outside] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > 'ModuleSymbol("ClassInstrumentation", class ClassInstrumentation)' => ModuleSymbol { +//│ > name: 'ClassInstrumentation', +//│ > value: [class ClassInstrumentation] { +//│ > Inside: [Function], +//│ > NoArg: [Function], +//│ > 'cache$ClassInstrumentation': [FunCache], +//│ > 'generatorMap$ClassInstrumentation': [Map] +//│ > } +//│ > }, +//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { +//│ > name: 'NoArg', +//│ > value: undefined, +//│ > moduleValue: 0, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } module Nonstaged with fun f() = 1 @@ -157,26 +153,43 @@ staged module CallSubst with Staged.f() //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) -//│ ═══[RUNTIME ERROR] TypeError: value.hash is not a function -//│ at Block.checkMap (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:535:34) -//│ at call_instr (REPL23:1:5099) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:853:35) -//│ at CallSubst.call_gen (REPL23:1:6277) -//│ at (REPL23:1:3644) -//│ at REPL23:1:6429 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ > Map(0) {} +//│ > fun ctor_() = +//│ > () +//│ > fun call() = +//│ > __no__symbol__ = Nonstaged.f() +//│ > Staged.f() +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'call' => [Function: call_gen] +//│ > } +//│ > Map(2) { +//│ > 'ModuleSymbol("Nonstaged", class Nonstaged)' => ModuleSymbol { +//│ > name: 'Nonstaged', +//│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > }, +//│ > 'ModuleSymbol("Staged", class Staged { cache$Staged: fun ctor_() =\n' + +//│ > ' ()\n' + +//│ > 'fun f() = 1, generatorMap$Staged: Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} })' => ModuleSymbol { +//│ > name: 'Staged', +//│ > value: [class Staged] { +//│ > 'cache$Staged': [FunCache], +//│ > 'generatorMap$Staged': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > } +//│ > } :e print(CallSubst."cache$CallSubst") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. -//│ ║ l.175: print(CallSubst."cache$CallSubst") +//│ ║ l.203: print(CallSubst."cache$CallSubst") //│ ╙── ^^^^^^^^^ -//│ > +//│ > fun ctor_() = +//│ > () +//│ > fun call() = +//│ > __no__symbol__ = Nonstaged.f() +//│ > Staged.f() :ftc staged module Arguments with @@ -184,19 +197,20 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z +//│ > Instantiate(ValueRef(ClassSymbol("Function$", class Function$, 0, None, [], _)), []) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'isDyn') -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:809:35) -//│ at Array.every () -//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:811:34) -//│ at Array.every () -//│ at SpecializeHelpers.specializeName (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:813:37) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:840:33) -//│ at Arguments.g_gen (REPL29:1:6137) -//│ at (REPL29:1:2540) -//│ at REPL29:1:6301 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ ═══[RUNTIME ERROR] Error: Not implemented +//│ at get notImplementedError (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:414:39) +//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:301:21) +//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:313:23) +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:148:24) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:568:37) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:622:40) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:598:36) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:870:39) +//│ at Arguments.g_gen (REPL23:1:6927) +//│ at (REPL23:1:2678) staged module OtherBlocks with fun scope() = @@ -209,91 +223,158 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) -//│ ═══[RUNTIME ERROR] TypeError: value.hash is not a function -//│ at Block.checkMap (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:535:34) -//│ at scope_instr (REPL32:1:3082) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:853:35) -//│ at OtherBlocks.scope_gen (REPL32:1:4036) -//│ at (REPL32:1:948) -//│ at REPL32:1:6045 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'scope' => [Function: scope_gen], +//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] +//│ > } +//│ > Map(1) { +//│ > [class OtherBlocks] { +//│ > 'cache$OtherBlocks': FunCache { cache: [Map] }, +//│ > 'generatorMap$OtherBlocks': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'scope' => [Function: scope_gen], +//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'OtherBlocks', +//│ > value: [class OtherBlocks] { +//│ > 'cache$OtherBlocks': [FunCache], +//│ > 'generatorMap$OtherBlocks': [Map] +//│ > } +//│ > } +//│ > } +//│ > fun ctor_() = +//│ > () +//│ > fun scope() = +//│ > let a +//│ > a = 1 +//│ > OtherBlocks.scope.locally(a) +//│ > fun breakAndLabel() = +//│ > let scrut +//│ > scrut = 1 +//│ > if scrut is +//│ > 2 then 0 +//│ > 3 then 0 +//│ > else 0 +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'scope' => [Function: scope_gen], +//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] +//│ > } +//│ > Map(1) { +//│ > 'ModuleSymbol("OtherBlocks", class OtherBlocks)' => ModuleSymbol { +//│ > name: 'OtherBlocks', +//│ > value: [class OtherBlocks] { +//│ > 'cache$OtherBlocks': [FunCache], +//│ > 'generatorMap$OtherBlocks': [Map] +//│ > } +//│ > } +//│ > } staged module ClassDefs with class A -//│ > //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(0) {} +//│ > Map(1) { +//│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ClassSymbol { +//│ > name: 'A', +//│ > value: [class A] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.234: print(ClassDefs."cache$ClassDefs") +//│ ║ l.317: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ -//│ > +//│ > fun ctor_() = +//│ > class A // :sjs staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() -//│ > //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(0) {} +//│ > Map(2) { +//│ > [Function: InnerClass] { +//│ > class: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ClassSymbol { +//│ > name: 'InnerClass', +//│ > value: [Function: InnerClass] { class: [Function] }, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > }, +//│ > [class Arguments] { +//│ > 'cache$Arguments': FunCache { cache: [Map] }, +//│ > 'generatorMap$Arguments': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Arguments' ] +//│ > } => ModuleSymbol { +//│ > name: 'Arguments', +//│ > value: [class Arguments] { +//│ > 'cache$Arguments': [FunCache], +//│ > 'generatorMap$Arguments': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > } +//│ > } +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassFunctions. +//│ ║ l.358: print(ClassFunctions."cache$ClassFunctions") +//│ ╙── ^^^^^^^^^^^^^^ +//│ > fun ctor_() = +//│ > class InnerClass() with +//│ > fun f() = +//│ > let tmp +//│ > tmp = Arguments.f(1) +//│ > +(1, tmp) +//│ > fun g() = InnerClass.f() // name collision class A() staged module A with fun f() = 1 +//│ > fun ctor_() = +//│ > () //│ > fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } // nested module module A with staged module B with fun f() = 1 +//│ > fun ctor_() = +//│ > () //│ > fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged module Shadowing with fun f(x, x) = x -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'isDyn') -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:809:35) -//│ at Array.every () -//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:811:34) -//│ at Array.every () -//│ at SpecializeHelpers.specializeName (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:813:37) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:840:33) -//│ at Shadowing.f_gen (REPL50:1:2597) -//│ at (REPL50:1:729) -//│ at REPL50:1:2743 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.281: print(Shadowing."cache$Shadowing") +//│ ║ l.401: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ -//│ > +//│ > fun ctor_() = +//│ > () +//│ > fun f(x, x) = x // testing generatorMap staged module M with fun f() = 1 -//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e M."generatorMap$M" //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.294: M."generatorMap$M" +//│ ║ l.415: M."generatorMap$M" //│ ╙── ^ //│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} @@ -306,18 +387,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.304: let x = 1 +//│ ║ l.322: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.304: let x = 1 +//│ ║ l.322: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.304: let x = 1 +//│ ║ l.322: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.304: let x = 1 +//│ ║ l.322: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: x is not defined @@ -329,7 +410,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.329: fun g() = {1 : 2} +//│ ║ l.347: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error @@ -338,20 +419,32 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) +//│ > fun ctor_() = +//│ > () //│ > fun f() = +//│ > let middleElements +//│ > let element0_ //│ > let scrut //│ > let tmp //│ > let x -//│ > let middleElements -//│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] -//│ > 0 +//│ > if scrut is +//│ > [_] then +//│ > element0_ = Runtime.Tuple.get(scrut, 0) +//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) +//│ > if element0_ is +//│ > 1 then +//│ > x = middleElements +//│ > x +//│ > else 0 +//│ > else 0 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo staged module RetUnit with fun f() = () //│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit -//│ ═══[RUNTIME ERROR] Error: match error +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +staged \ No newline at end of file From 740d5637d3156d705c45c5b4393d3c69b009ee3e Mon Sep 17 00:00:00 2001 From: TYeung Date: Fri, 27 Mar 2026 02:59:02 +0800 Subject: [PATCH 376/654] add MVP --- .../mlscript-compile/SpecializeHelpers.mls | 1 + .../test/mlscript/block-staging/Functions.mls | 292 +++++------------- .../mlscript/block-staging/ShapeProp2.mls | 165 ++++++++++ 3 files changed, 245 insertions(+), 213 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 952563d4d9..be02e8966b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -200,6 +200,7 @@ fun specialize(cache, funName, dflt, shapes) = defn is FunDefn(Symbol(_), ps, body) then let ctx = Ctx.empty ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), shapes.(i).(j)))) + cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) let res = prop(ctx, body) let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, res.0), res.1]) [entry.0.sym, entry.1] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 432705d0f8..0da1c3f8dd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -26,9 +26,7 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 -//│ > fun ctor_() = -//│ > () -//│ > fun lit() = 1 +//│ > fun lit(x) = +(x, x) //│ > fun assign() = //│ > let x //│ > let y @@ -53,20 +51,8 @@ staged module Expressions with //│ > let a //│ > let element1_ //│ > let element0_ -//│ > if x is -//│ > [] then 1 -//│ > [_, _] then -//│ > element0_ = Runtime.Tuple.get(x, 0) -//│ > element1_ = Runtime.Tuple.get(x, 1) -//│ > if element0_ is -//│ > 1 then -//│ > if element1_ is -//│ > 2 then 2 -//│ > else a = element0_ -//│ > 3 -//│ > else a = element0_ -//│ > 3 -//│ > else 0 +//│ > x = [1, 2, 3] +//│ > 0 //│ > Map(8) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'lit' => [Function: lit_gen], @@ -78,10 +64,9 @@ staged module Expressions with //│ > 'match2' => [Function: match2_gen] //│ > } //│ > Map(2) { -//│ > 'VirtualClassSymbol("Bool")' => VirtualClassSymbol { name: 'Bool' }, -//│ > 'VirtualClassSymbol("Int")' => VirtualClassSymbol { name: 'Int' } +//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, +//│ > 'Int' => VirtualClassSymbol { name: 'Int' } //│ > } -//│ x = [1, 2, 3] class Outside(a) staged module ClassInstrumentation with @@ -91,57 +76,19 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > fun ctor_() = -//│ > class Inside(a, b) -//│ > class NoArg -//│ > fun inst1() = new Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg() -//│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside(1, 2) -//│ > Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'inst1' => [Function: inst1_gen], -//│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen] -//│ > } -//│ > Map(4) { -//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { -//│ > name: 'NoArg', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, -//│ > 'ClassSymbol("Inside", undefined, 0, Some([Symbol("a"), Symbol("b")]), [], _)' => ClassSymbol { -//│ > name: 'Inside', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > 'ClassSymbol("Outside", fun Outside { class: class Outside }, 0, Some([Symbol("a")]), [], _)' => ClassSymbol { -//│ > name: 'Outside', -//│ > value: [Function: Outside] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > 'ModuleSymbol("ClassInstrumentation", class ClassInstrumentation)' => ModuleSymbol { -//│ > name: 'ClassInstrumentation', -//│ > value: [class ClassInstrumentation] { -//│ > Inside: [Function], -//│ > NoArg: [Function], -//│ > 'cache$ClassInstrumentation': [FunCache], -//│ > 'generatorMap$ClassInstrumentation': [Map] -//│ > } -//│ > }, -//│ > 'ClassSymbol("NoArg", undefined, 0, None, [], _)' => ClassSymbol { -//│ > name: 'NoArg', -//│ > value: undefined, -//│ > moduleValue: 0, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) +//│ ═══[RUNTIME ERROR] TypeError: f1 is not a function +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:338:43) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:566:37) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:880:39) +//│ at ClassInstrumentation.app2_gen (REPL17:1:10699) +//│ at (REPL17:1:2386) +//│ at REPL17:1:10884 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) module Nonstaged with fun f() = 1 @@ -153,40 +100,25 @@ staged module CallSubst with Staged.f() //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(0) {} -//│ > fun ctor_() = -//│ > () -//│ > fun call() = -//│ > __no__symbol__ = Nonstaged.f() -//│ > Staged.f() -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'call' => [Function: call_gen] -//│ > } -//│ > Map(2) { -//│ > 'ModuleSymbol("Nonstaged", class Nonstaged)' => ModuleSymbol { -//│ > name: 'Nonstaged', -//│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > }, -//│ > 'ModuleSymbol("Staged", class Staged { cache$Staged: fun ctor_() =\n' + -//│ > ' ()\n' + -//│ > 'fun f() = 1, generatorMap$Staged: Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} })' => ModuleSymbol { -//│ > name: 'Staged', -//│ > value: [class Staged] { -//│ > 'cache$Staged': [FunCache], -//│ > 'generatorMap$Staged': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'get') +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:337:48) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:610:38) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:880:39) +//│ at CallSubst.call_gen (REPL20:1:6277) +//│ at (REPL20:1:3644) +//│ at REPL20:1:6429 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) :e print(CallSubst."cache$CallSubst") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. -//│ ║ l.203: print(CallSubst."cache$CallSubst") +//│ ║ l.118: print(CallSubst."cache$CallSubst") //│ ╙── ^^^^^^^^^ -//│ > fun ctor_() = -//│ > () //│ > fun call() = //│ > __no__symbol__ = Nonstaged.f() //│ > Staged.f() @@ -197,20 +129,19 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > Instantiate(ValueRef(ClassSymbol("Function$", class Function$, 0, None, [], _)), []) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) //│ ═══[RUNTIME ERROR] Error: Not implemented -//│ at get notImplementedError (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:414:39) -//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:301:21) -//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:313:23) -//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:148:24) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:568:37) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:622:40) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:598:36) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:870:39) -//│ at Arguments.g_gen (REPL23:1:6927) -//│ at (REPL23:1:2678) +//│ at get notImplementedError (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:287:39) +//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:299:21) +//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:311:23) +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:147:24) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:566:37) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:620:40) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:596:36) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:880:39) +//│ at Arguments.g_gen (REPL26:1:6129) +//│ at (REPL26:1:2540) staged module OtherBlocks with fun scope() = @@ -223,6 +154,14 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 +//│ > fun scope() = +//│ > let a +//│ > a = 1 +//│ > OtherBlocks.scope.locally(a) +//│ > fun breakAndLabel() = +//│ > let scrut +//│ > scrut = 1 +//│ > 0 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'scope' => [Function: scope_gen], @@ -245,136 +184,66 @@ staged module OtherBlocks with //│ > } //│ > } -//│ > fun ctor_() = -//│ > () -//│ > fun scope() = -//│ > let a -//│ > a = 1 -//│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel() = -//│ > let scrut -//│ > scrut = 1 -//│ > if scrut is -//│ > 2 then 0 -//│ > 3 then 0 -//│ > else 0 -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'scope' => [Function: scope_gen], -//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] -//│ > } -//│ > Map(1) { -//│ > 'ModuleSymbol("OtherBlocks", class OtherBlocks)' => ModuleSymbol { -//│ > name: 'OtherBlocks', -//│ > value: [class OtherBlocks] { -//│ > 'cache$OtherBlocks': [FunCache], -//│ > 'generatorMap$OtherBlocks': [Map] -//│ > } -//│ > } -//│ > } staged module ClassDefs with class A +//│ > //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(1) { -//│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ClassSymbol { -//│ > name: 'A', -//│ > value: [class A] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > } +//│ > Map(0) {} :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.317: print(ClassDefs."cache$ClassDefs") +//│ ║ l.195: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ -//│ > fun ctor_() = -//│ > class A +//│ > // :sjs staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() +//│ > //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(2) { -//│ > [Function: InnerClass] { -//│ > class: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ClassSymbol { -//│ > name: 'InnerClass', -//│ > value: [Function: InnerClass] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] -//│ > }, -//│ > [class Arguments] { -//│ > 'cache$Arguments': FunCache { cache: [Map] }, -//│ > 'generatorMap$Arguments': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Arguments' ] -//│ > } => ModuleSymbol { -//│ > name: 'Arguments', -//│ > value: [class Arguments] { -//│ > 'cache$Arguments': [FunCache], -//│ > 'generatorMap$Arguments': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > } -//│ > } +//│ > Map(0) {} -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassFunctions. -//│ ║ l.358: print(ClassFunctions."cache$ClassFunctions") -//│ ╙── ^^^^^^^^^^^^^^ -//│ > fun ctor_() = -//│ > class InnerClass() with -//│ > fun f() = -//│ > let tmp -//│ > tmp = Arguments.f(1) -//│ > +(1, tmp) -//│ > fun g() = InnerClass.f() // name collision class A() staged module A with fun f() = 1 -//│ > fun ctor_() = -//│ > () //│ > fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } // nested module module A with staged module B with fun f() = 1 -//│ > fun ctor_() = -//│ > () //│ > fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged module Shadowing with fun f(x, x) = x +//│ > fun f(x, x) = x //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.401: print(Shadowing."cache$Shadowing") +//│ ║ l.231: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ -//│ > fun ctor_() = -//│ > () //│ > fun f(x, x) = x // testing generatorMap staged module M with fun f() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e M."generatorMap$M" //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.415: M."generatorMap$M" +//│ ║ l.244: M."generatorMap$M" //│ ╙── ^ //│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} @@ -387,18 +256,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.322: let x = 1 +//│ ║ l.254: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.322: let x = 1 +//│ ║ l.254: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.322: let x = 1 +//│ ║ l.254: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.322: let x = 1 +//│ ║ l.254: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: x is not defined @@ -410,7 +279,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.347: fun g() = {1 : 2} +//│ ║ l.279: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error @@ -419,8 +288,6 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) -//│ > fun ctor_() = -//│ > () //│ > fun f() = //│ > let middleElements //│ > let element0_ @@ -429,22 +296,21 @@ staged module Spread with //│ > let x //│ > tmp = [1, 2] //│ > scrut = [1, tmp] -//│ > if scrut is -//│ > [_] then -//│ > element0_ = Runtime.Tuple.get(scrut, 0) -//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) -//│ > if element0_ is -//│ > 1 then -//│ > x = middleElements -//│ > x -//│ > else 0 -//│ > else 0 +//│ > 0 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo staged module RetUnit with fun f() = () //│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ ═══[RUNTIME ERROR] Error: match error -staged \ No newline at end of file +staged +//│ FAILURE: Unexpected parse error +//│ FAILURE LOCATION: parseRuleImpl (Parser.scala:513) +//│ ╔══[PARSE ERROR] Expected expression after modifier keyword 'staged'; found end of input instead +//│ ║ l.308: staged +//│ ╙── ^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:224) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls new file mode 100644 index 0000000000..9d2678d289 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls @@ -0,0 +1,165 @@ +:js +:staging + +staged module Test with + fun f(x, y) = x + y + fun fib(n) = if n is + 1 then 1 + 2 then 1 + n then fib(n - 1) + fib(n - 2) + fun trig() = + f(2, 3) + fib(10) +//│ > fun f(x, y) = +(x, y) +//│ > fun fib(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > if n is +//│ > 1 then 1 +//│ > 2 then 1 +//│ > else n = n +//│ > tmp = -(n, 1) +//│ > tmp1 = Test.fib(tmp) +//│ > tmp2 = -(n, 2) +//│ > tmp3 = Test.fib(tmp2) +//│ > +(tmp1, tmp3) +//│ > fun trig() = +//│ > __no__symbol__ = Test.f_Lit2_Lit3(2, 3) +//│ > Test.fib_Lit10(10) +//│ > fun f_Lit2_Lit3(x, y) = 5 +//│ > fun fib_Lit10(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > n = 10 +//│ > tmp = 9 +//│ > tmp1 = Test.fib_Lit9(tmp) +//│ > tmp2 = 8 +//│ > tmp3 = Test.fib_Lit8(tmp2) +//│ > 55 +//│ > fun fib_Lit9(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > n = 9 +//│ > tmp = 8 +//│ > tmp1 = Test.fib_Lit8(tmp) +//│ > tmp2 = 7 +//│ > tmp3 = Test.fib_Lit7(tmp2) +//│ > 34 +//│ > fun fib_Lit8(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > n = 8 +//│ > tmp = 7 +//│ > tmp1 = Test.fib_Lit7(tmp) +//│ > tmp2 = 6 +//│ > tmp3 = Test.fib_Lit6(tmp2) +//│ > 21 +//│ > fun fib_Lit7(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > n = 7 +//│ > tmp = 6 +//│ > tmp1 = Test.fib_Lit6(tmp) +//│ > tmp2 = 5 +//│ > tmp3 = Test.fib_Lit5(tmp2) +//│ > 13 +//│ > fun fib_Lit6(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > n = 6 +//│ > tmp = 5 +//│ > tmp1 = Test.fib_Lit5(tmp) +//│ > tmp2 = 4 +//│ > tmp3 = Test.fib_Lit4(tmp2) +//│ > 8 +//│ > fun fib_Lit5(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > n = 5 +//│ > tmp = 4 +//│ > tmp1 = Test.fib_Lit4(tmp) +//│ > tmp2 = 3 +//│ > tmp3 = Test.fib_Lit3(tmp2) +//│ > 5 +//│ > fun fib_Lit4(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > n = 4 +//│ > tmp = 3 +//│ > tmp1 = Test.fib_Lit3(tmp) +//│ > tmp2 = 2 +//│ > tmp3 = Test.fib_Lit2(tmp2) +//│ > 3 +//│ > fun fib_Lit3(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > n = 3 +//│ > tmp = 2 +//│ > tmp1 = Test.fib_Lit2(tmp) +//│ > tmp2 = 1 +//│ > tmp3 = Test.fib_Lit1(tmp2) +//│ > 2 +//│ > fun fib_Lit2(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > 1 +//│ > fun fib_Lit1(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let n +//│ > 1 +//│ > Map(4) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'fib' => [Function: fib_gen], +//│ > 'trig' => [Function: trig_gen] +//│ > } +//│ > Map(1) { +//│ > [class Test] { +//│ > 'cache$Test': FunCache { cache: [Map] }, +//│ > 'generatorMap$Test': Map(4) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'fib' => [Function: fib_gen], +//│ > 'trig' => [Function: trig_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'Test', +//│ > value: [class Test] { +//│ > 'cache$Test': [FunCache], +//│ > 'generatorMap$Test': [Map] +//│ > } +//│ > } +//│ > } From 3736303ad4caf4b65af776dbcafee90ea4b90fd0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 27 Mar 2026 12:52:08 +0800 Subject: [PATCH 377/654] update tests --- .../test/mlscript/block-staging/Functions.mls | 22 ++++++++-------- .../test/mlscript/block-staging/Syntax.mls | 26 +++++++++---------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 7bbc61811a..064fa9d8e6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -211,7 +211,7 @@ staged module Arguments with :e print(Arguments."cache$Arguments") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Arguments. -//│ ║ l.211: print(Arguments."cache$Arguments") +//│ ║ l.212: print(Arguments."cache$Arguments") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -254,7 +254,7 @@ staged module OtherBlocks with :e print(OtherBlocks."cache$OtherBlocks") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type OtherBlocks. -//│ ║ l.254: print(OtherBlocks."cache$OtherBlocks") +//│ ║ l.255: print(OtherBlocks."cache$OtherBlocks") //│ ╙── ^^^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -284,7 +284,7 @@ staged module ClassDefs with :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.284: print(ClassDefs."cache$ClassDefs") +//│ ║ l.285: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > class A @@ -324,7 +324,7 @@ staged module ClassFunctions with :e print(ClassFunctions."cache$ClassFunctions") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassFunctions. -//│ ║ l.324: print(ClassFunctions."cache$ClassFunctions") +//│ ║ l.325: print(ClassFunctions."cache$ClassFunctions") //│ ╙── ^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > class InnerClass() with @@ -352,7 +352,7 @@ module A with :e print(A.B."cache$B") //│ ╔══[COMPILATION ERROR] Unexpected moduleful selection of type B. -//│ ║ l.352: print(A.B."cache$B") +//│ ║ l.353: print(A.B."cache$B") //│ ╙── ^^^ //│ > fun ctor_() = //│ > () @@ -364,7 +364,7 @@ staged module Shadowing with :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.364: print(Shadowing."cache$Shadowing") +//│ ║ l.365: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -379,18 +379,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.376: let x = 1 +//│ ║ l.377: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.376: let x = 1 +//│ ║ l.377: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.376: let x = 1 +//│ ║ l.377: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.376: let x = 1 +//│ ║ l.377: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -402,7 +402,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.401: fun g() = {1 : 2} +//│ ║ l.402: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 6b0be355fb..bd9ab1b64a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -29,19 +29,18 @@ staged module A //│ } //│ staged module A² { //│ constructor { -//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; -//│ set tmp4 = A².ctor$_instr﹖(); -//│ set tmp5 = [tmp4, 1]; -//│ set tmp6 = ["ctor$", tmp5]; -//│ set tmp7 = [tmp6]; -//│ set tmp8 = new mut globalThis⁰.Map﹖(tmp7); -//│ set tmp9 = new SpecializeHelpers⁰.FunCache﹖(tmp8); -//│ define cache$A⁰ as val cache$A¹ = tmp9; -//│ set tmp1 = ["ctor$", A².ctor$_gen﹖]; -//│ set tmp2 = [tmp1]; -//│ set tmp3 = new mut globalThis⁰.Map﹖(tmp2); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp3; -//│ set tmp = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8; +//│ set tmp3 = A².ctor$_instr﹖(); +//│ set tmp4 = [tmp3, 1]; +//│ set tmp5 = ["ctor$", tmp4]; +//│ set tmp6 = [tmp5]; +//│ set tmp7 = new mut globalThis⁰.Map﹖(tmp6); +//│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp7); +//│ define cache$A⁰ as val cache$A¹ = tmp8; +//│ set tmp = ["ctor$", A².ctor$_gen﹖]; +//│ set tmp1 = [tmp]; +//│ set tmp2 = new mut globalThis⁰.Map﹖(tmp1); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp2; //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { @@ -63,4 +62,3 @@ staged module A //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } From 58e4f5ff0dd0f9a662ca241ee3ef33e14025c3a1 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Mar 2026 13:33:21 +0800 Subject: [PATCH 378/654] add comment --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 1 + 1 file changed, 1 insertion(+) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 431e8d2d8b..d50b198682 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -99,6 +99,7 @@ fun showLiteral(l: Literal) = fun showSymbol(s: Symbol) = if s.name is "runtime" then "Runtime" + // FIXME: this is a hack for local symbols, and will fail if global symbols contain them, like the generated classes of :ftc. else s.name.replaceAll("$", "_") fun showPath(p: Path): Str = From 21c18b068aea5d34d9f156a673a7738c1eb1fd38 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Mar 2026 13:41:55 +0800 Subject: [PATCH 379/654] skip module check for printout --- .../test/mlscript/block-staging/Functions.mls | 50 +++---------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 3bac6e7e78..18a8700460 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,5 +1,6 @@ :js :staging +:noModuleCheck :fixme // TODO: fix IR rebinding issue (each symbol should be bound at most once) :checkIR @@ -8,7 +9,7 @@ staged module Rebinding with let x = 42 x //│ ╔══[INTERNAL ERROR] [BlockChecker] Invalid IR: symbol x⁰ is bound more than once -//│ ║ l.8: let x = 42 +//│ ║ l.9: let x = 42 //│ ╙── ^ val x = [1, 2, 3] @@ -40,11 +41,7 @@ staged module Expressions with //│ > } //│ x = [1, 2, 3] -:e print(Expressions."cache$Expressions") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Expressions. -//│ ║ l.44: print(Expressions."cache$Expressions") -//│ ╙── ^^^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun lit() = 1 @@ -142,11 +139,7 @@ staged module ClassInstrumentation with //│ > } //│ > } -:e print(ClassInstrumentation.("cache$ClassInstrumentation")) -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassInstrumentation. -//│ ║ l.146: print(ClassInstrumentation.("cache$ClassInstrumentation")) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > class Inside(a, b) //│ > class NoArg @@ -187,11 +180,7 @@ staged module Call with //│ > } //│ > } -:e print(Call."cache$Call") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Call. -//│ ║ l.191: print(Call."cache$Call") -//│ ╙── ^^^^ //│ > fun ctor_() = //│ > () //│ > fun call() = @@ -217,12 +206,8 @@ staged module Arguments with //│ > } //│ > } -// TODO: printout is wrong... -:e +// FIXME: printout is wrong, we need to point to the Function$ class without naming it directly... print(Arguments."cache$Arguments") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Arguments. -//│ ║ l.222: print(Arguments."cache$Arguments") -//│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun f(x) = @@ -261,11 +246,7 @@ staged module OtherBlocks with //│ > } //│ > } -:e print(OtherBlocks."cache$OtherBlocks") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type OtherBlocks. -//│ ║ l.265: print(OtherBlocks."cache$OtherBlocks") -//│ ╙── ^^^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun scope() = @@ -291,11 +272,7 @@ staged module ClassDefs with //│ > } //│ > } -:e print(ClassDefs."cache$ClassDefs") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.295: print(ClassDefs."cache$ClassDefs") -//│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > class A @@ -331,11 +308,7 @@ staged module ClassFunctions with //│ > } //│ > } -:e print(ClassFunctions."cache$ClassFunctions") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassFunctions. -//│ ║ l.335: print(ClassFunctions."cache$ClassFunctions") -//│ ╙── ^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > class InnerClass() with //│ > fun f() = @@ -359,11 +332,7 @@ module A with staged module B with fun f() = 1 -:e print(A.B."cache$B") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful selection of type B. -//│ ║ l.363: print(A.B."cache$B") -//│ ╙── ^^^ //│ > fun ctor_() = //│ > () //│ > fun f() = 1 @@ -373,9 +342,6 @@ staged module Shadowing with :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.375: print(Shadowing."cache$Shadowing") -//│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun f(x, x) = x @@ -389,18 +355,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.387: let x = 1 +//│ ║ l.353: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.387: let x = 1 +//│ ║ l.353: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.387: let x = 1 +//│ ║ l.353: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.387: let x = 1 +//│ ║ l.353: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -412,7 +378,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.412: fun g() = {1 : 2} +//│ ║ l.378: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From 7a3853eee366047a962b188f19a89941aeb2bcf9 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Mar 2026 13:42:27 +0800 Subject: [PATCH 380/654] update test --- hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index ce7354f244..3074610cb7 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -157,8 +157,8 @@ f().foo() //│ }; //│ define Good⁰ as class Good¹ { //│ private val Good$cap⁰; -//│ private val y²; //│ private val x¹; +//│ private val y²; //│ private val scope0$cap⁰; //│ constructor Good² { //│ set scope0$cap⁰ = scope0$cap; From 0f45aa5ad58e1ef4bdc410d5ac547d5adaa0b815 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Sat, 28 Mar 2026 13:43:09 +0800 Subject: [PATCH 381/654] Fix ir printing --- .../scala/hkmc2/codegen/FirstClassFunctionTransformer.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala index c07cb11474..bc38c25faf 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala @@ -32,10 +32,12 @@ class FirstClassFunctionTransformer(using Elaborator.State, Elaborator.Ctx, Rais callDef :: Nil, Nil, Nil, Return(Call(Value.Ref(State.builtinOpsMap("super")), Nil)(false, false, false), true), End(), None, None) private def getParamList(l: BlockMemberSymbol): Option[ParamList] = funDefns.get(l) match - case Some(fd) => fd.params.headOption + case Some(fd) => fd.params.headOption.map(pl => + ParamList(pl.flags, pl.params.map(p => Param(p.flags, VarSymbol(p.sym.id), p.sign, p.modulefulness)), pl.restParam)) case _ => l.tsym.flatMap(getParamList) - private def getParamList(ts: TermSymbol): Option[ParamList] = ts.defn.flatMap(_.params.headOption) + private def getParamList(ts: TermSymbol): Option[ParamList] = ts.defn.flatMap(_.params.headOption).map(pl => + ParamList(pl.flags, pl.params.map(p => Param(p.flags, VarSymbol(p.sym.id), p.sign, p.modulefulness)), pl.restParam)) override def applyPath(p: Path)(k: Path => Block): Block = p match case ref @ Value.Ref(l: BlockMemberSymbol, disamb) => disamb match From 1a8fd12f376280a0879eaacaedcd10beaa78bcdb Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Mar 2026 14:34:11 +0800 Subject: [PATCH 382/654] update tests --- .../codegen/FirstClassFunctionTransform.mls | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls index 3d871e00a6..0dedd3cd49 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls @@ -32,12 +32,8 @@ x => x //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = class anonymous -:fixme // TODO: fix IR rebinding issue (each symbol should be bound at most once) :checkIR x => x -//│ ╔══[INTERNAL ERROR] [BlockChecker] Invalid IR: symbol x⁰ is bound more than once -//│ ║ l.37: x => x -//│ ╙── ^ //│ = class anonymous @@ -97,12 +93,12 @@ let f = foo in bar(f) bar([foo].0) bar([foo, x => x].1) //│ ╔══[COMPILATION ERROR] Cannot determine if 0 is a function. -//│ ║ l.97: bar([foo].0) +//│ ║ l.93: bar([foo].0) //│ ╙── ^^ //│ ═══[COMPILATION ERROR] Cannot determine if 0$__checkNotMethod is a function. //│ ═══[COMPILATION ERROR] Cannot determine if Error is a function. //│ ╔══[COMPILATION ERROR] Cannot determine if 1 is a function. -//│ ║ l.98: bar([foo, x => x].1) +//│ ║ l.94: bar([foo, x => x].1) //│ ╙── ^^ //│ ═══[COMPILATION ERROR] Cannot determine if 1$__checkNotMethod is a function. //│ ═══[COMPILATION ERROR] Cannot determine if Error is a function. @@ -119,7 +115,7 @@ bar([foo, x => x].(i)) :ge [foo, x => x].(i)(0) //│ ╔══[COMPILATION ERROR] Cannot determine if the dynamic selection is a function object. -//│ ║ l.120: [foo, x => x].(i)(0) +//│ ║ l.116: [foo, x => x].(i)(0) //│ ╙── ^ @@ -133,10 +129,10 @@ let foo = Foo() foo.("f")(0) foo.("h")(1) //│ ╔══[COMPILATION ERROR] Cannot determine if the dynamic selection is a function object. -//│ ║ l.133: foo.("f")(0) +//│ ║ l.129: foo.("f")(0) //│ ╙── ^^^^^^^^ //│ ╔══[COMPILATION ERROR] Cannot determine if the dynamic selection is a function object. -//│ ║ l.134: foo.("h")(1) +//│ ║ l.130: foo.("h")(1) //│ ╙── ^^^^^^^^ //│ = 0 //│ foo = Foo() @@ -298,7 +294,7 @@ y => x + y //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let lambda¹⁰, Function$¹⁰, tmp; //│ define lambda¹⁰ as fun lambda¹¹(y) { -//│ return +⁰(x¹, y) +//│ return +⁰(x⁰, y) //│ }; //│ define Function$¹⁰ as class Function$¹¹ { //│ private val Function$$cap⁵; @@ -396,7 +392,7 @@ foo.Foo#x :ge foo.f(0) //│ ╔══[COMPILATION ERROR] Cannot determine if f is a function object. -//│ ║ l.397: foo.f(0) +//│ ║ l.393: foo.f(0) //│ ╙── ^^^^^ //│ = 1 @@ -414,7 +410,7 @@ foo.Foo#f(0) :ge foo.x(0) //│ ╔══[COMPILATION ERROR] Cannot determine if x is a function object. -//│ ║ l.415: foo.x(0) +//│ ║ l.411: foo.x(0) //│ ╙── ^^^^^ @@ -499,14 +495,14 @@ fun foo(x)(y) = x + y //│ }; //│ define Function$¹² as class Function$¹³ { //│ private val Function$$cap⁶; -//│ private val x²; +//│ private val x¹; //│ constructor { //│ super⁰(); -//│ set x² = x; +//│ set x¹ = x; //│ end //│ } //│ method call¹² = fun call¹³(y) { -//│ return lambda$¹(x², y) +//│ return lambda$¹(x¹, y) //│ } //│ }; //│ define foo⁵ as fun foo⁶(x) { let tmp; set tmp = Function$$³(false, x); return tmp }; From c77bafe93f8b19df97b99c59a7a50f0c7d147437 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Mar 2026 15:34:10 +0800 Subject: [PATCH 383/654] revert manual printing this reverts commit 49b9c57ee92824bcadcff4fa376fcb2fa9769823 and 493d465eba829cb851ad8bab96f3562ba02bfbb6 --- .../codegen/ReflectionInstrumenter.scala | 12 +- .../test/mlscript/block-staging/Classes.mls | 47 +++- .../test/mlscript/block-staging/Functions.mls | 202 +++++++++++------- .../mlscript/block-staging/GeneratorMap.mls | 12 +- .../mlscript/block-staging/SpecializeTest.mls | 21 +- .../mlscript/block-staging/StageSymbols.mls | 63 +++++- .../test/mlscript/block-staging/Syntax.mls | 30 +-- 7 files changed, 263 insertions(+), 124 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 6973033c75..c762fadd0e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -410,12 +410,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) // assign(options): options => - // call(cachePath.selSN("toString"), Nil, false): str => - // call(printFun, Ls(str), false): _ => - // call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest + call(cachePath.selSN("toString"), Nil, false): str => + call(printFun, Ls(str), false): _ => + call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => + if symbolMapUsed + then call(printFun, Ls(symbolMapSym), false)(_ => rest) + else rest // used for staging classes inside modules val newCompanion = companion.copy( diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 795dc2cea8..8104d4c87c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -3,23 +3,20 @@ import "../../mlscript-compile/Block.mls" +// TODO: copy C# annotation to Block IR class C with fun call(x) = x + 1 staged module M with fun f(x) = x.C#call(10) - -// TODO: copy C# annotation to Block IR -:e -print(M."cache$M") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.13: print(M."cache$M") -//│ ╙── ^ //│ > fun ctor_() = //│ > () //│ > fun f(x) = x.call(10) - +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged class A(val a) +//│ > fun ctor_(a) = +//│ > A1.a = a +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [Function: A] { //│ > class: [class A] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } @@ -33,6 +30,9 @@ staged class A(val a) staged module C with class I +//│ > fun ctor_() = +//│ > class I +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [class I] { Symbol(mlscript.definitionMetadata): [ 'class', 'I' ] } => ClassSymbol { //│ > name: 'I', @@ -46,6 +46,10 @@ staged module C with class C staged module M with fun f() = C +//│ > fun ctor_() = +//│ > () +//│ > fun f() = C +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [class C4] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { //│ > name: 'C', @@ -58,11 +62,15 @@ staged module M with // :sir staged class C with fun f() = 1 +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.63: staged class C(x) +//│ ║ l.71: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with @@ -70,6 +78,10 @@ staged class B(val x) with staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 +//│ > fun ctor_(x) = +//│ > B1.x = x +//│ > fun f(y) = +(B1.x, y) +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [Function: B] { //│ > class: [class B] { 'cache$B': [FunCache], 'generatorMap$B': [Map] } @@ -80,6 +92,12 @@ staged class D(val x) extends B(x+1) with //│ > auxParams: [] //│ > } //│ > } +//│ > fun ctor_(x) = +//│ > let tmp +//│ > tmp = +(x, 1) +//│ > super(tmp) +//│ > fun f() = 42 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: B] { //│ > class: [class B] { @@ -113,6 +131,13 @@ staged module M with fun f() = Unstaged; Staged +//│ > fun ctor_(x) = +//│ > Staged1.x = x +//│ > fun inner() = 1 +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'inner' => [Function: inner_gen] +//│ > } //│ > Map(1) { //│ > [Function: Staged] { //│ > class: [class Staged] { @@ -126,6 +151,10 @@ staged module M with //│ > auxParams: [] //│ > } //│ > } +//│ > fun ctor_() = +//│ > () +//│ > fun f() = ,(Unstaged, Staged1) +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: Staged] { //│ > class: [class Staged] { diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 18a8700460..9ab12ea768 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,6 +1,5 @@ :js :staging -:noModuleCheck :fixme // TODO: fix IR rebinding issue (each symbol should be bound at most once) :checkIR @@ -9,8 +8,18 @@ staged module Rebinding with let x = 42 x //│ ╔══[INTERNAL ERROR] [BlockChecker] Invalid IR: symbol x⁰ is bound more than once -//│ ║ l.9: let x = 42 +//│ ║ l.8: let x = 42 //│ ╙── ^ +//│ > fun ctor_() = +//│ > () +//│ > fun lit() = +//│ > let x +//│ > x = 42 +//│ > x +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'lit' => [Function: lit_gen] +//│ > } val x = [1, 2, 3] staged module Expressions with @@ -35,13 +44,6 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 -//│ > Map(2) { -//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, -//│ > 'Int' => VirtualClassSymbol { name: 'Int' } -//│ > } -//│ x = [1, 2, 3] - -print(Expressions."cache$Expressions") //│ > fun ctor_() = //│ > () //│ > fun lit() = 1 @@ -83,6 +85,21 @@ print(Expressions."cache$Expressions") //│ > else a = element0_ //│ > 3 //│ > else 0 +//│ > Map(8) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'lit' => [Function: lit_gen], +//│ > 'assign' => [Function: assign_gen], +//│ > 'tup1' => [Function: tup1_gen], +//│ > 'tup2' => [Function: tup2_gen], +//│ > 'dynsel' => [Function: dynsel_gen], +//│ > 'match1' => [Function: match1_gen], +//│ > 'match2' => [Function: match2_gen] +//│ > } +//│ > Map(2) { +//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, +//│ > 'Int' => VirtualClassSymbol { name: 'Int' } +//│ > } +//│ x = [1, 2, 3] class Outside(a) staged module ClassInstrumentation with @@ -92,6 +109,20 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) +//│ > fun ctor_() = +//│ > class Inside(a, b) +//│ > class NoArg +//│ > fun inst1() = new Outside(1) +//│ > fun inst2() = new ClassInstrumentation.NoArg() +//│ > fun app1() = Outside(1) +//│ > fun app2() = ClassInstrumentation.Inside(1, 2) +//│ > Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'inst1' => [Function: inst1_gen], +//│ > 'inst2' => [Function: inst2_gen], +//│ > 'app1' => [Function: app1_gen], +//│ > 'app2' => [Function: app2_gen] +//│ > } //│ > Map(4) { //│ > [class NoArg] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NoArg' ] @@ -139,15 +170,6 @@ staged module ClassInstrumentation with //│ > } //│ > } -print(ClassInstrumentation.("cache$ClassInstrumentation")) -//│ > fun ctor_() = -//│ > class Inside(a, b) -//│ > class NoArg -//│ > fun inst1() = new Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg() -//│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside(1, 2) - module Nonstaged with fun f() = 1 staged module Staged with @@ -156,6 +178,19 @@ staged module Call with fun call() = Nonstaged.f() Staged.f() +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > fun ctor_() = +//│ > () +//│ > fun call() = +//│ > __no__symbol__ = Nonstaged.f() +//│ > Staged.f() +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'call' => [Function: call_gen] +//│ > } //│ > Map(2) { //│ > [class Nonstaged] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Nonstaged' ] @@ -180,19 +215,26 @@ staged module Call with //│ > } //│ > } -print(Call."cache$Call") -//│ > fun ctor_() = -//│ > () -//│ > fun call() = -//│ > __no__symbol__ = Nonstaged.f() -//│ > Staged.f() - :ftc staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z +//│ > fun ctor_() = +//│ > () +//│ > fun f(x) = +//│ > x = 1 +//│ > x +//│ > fun g(x) = +//│ > let tmp +//│ > tmp = new Function_() +//│ > tmp +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } //│ > Map(1) { //│ > [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] @@ -206,18 +248,6 @@ staged module Arguments with //│ > } //│ > } -// FIXME: printout is wrong, we need to point to the Function$ class without naming it directly... -print(Arguments."cache$Arguments") -//│ > fun ctor_() = -//│ > () -//│ > fun f(x) = -//│ > x = 1 -//│ > x -//│ > fun g(x) = -//│ > let tmp -//│ > tmp = new Function_() -//│ > tmp - staged module OtherBlocks with fun scope() = scope.locally of ( @@ -229,6 +259,24 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 +//│ > fun ctor_() = +//│ > () +//│ > fun scope() = +//│ > let a +//│ > a = 1 +//│ > OtherBlocks.scope.locally(a) +//│ > fun breakAndLabel() = +//│ > let scrut +//│ > scrut = 1 +//│ > if scrut is +//│ > 2 then 0 +//│ > 3 then 0 +//│ > else 0 +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'scope' => [Function: scope_gen], +//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] +//│ > } //│ > Map(1) { //│ > [class OtherBlocks] { //│ > 'cache$OtherBlocks': FunCache { cache: [Map] }, @@ -246,23 +294,11 @@ staged module OtherBlocks with //│ > } //│ > } -print(OtherBlocks."cache$OtherBlocks") -//│ > fun ctor_() = -//│ > () -//│ > fun scope() = -//│ > let a -//│ > a = 1 -//│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel() = -//│ > let scrut -//│ > scrut = 1 -//│ > if scrut is -//│ > 2 then 0 -//│ > 3 then 0 -//│ > else 0 - staged module ClassDefs with class A +//│ > fun ctor_() = +//│ > class A +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ClassSymbol { //│ > name: 'A', @@ -272,15 +308,19 @@ staged module ClassDefs with //│ > } //│ > } -print(ClassDefs."cache$ClassDefs") -//│ > fun ctor_() = -//│ > class A - // :sjs staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() +//│ > fun ctor_() = +//│ > class InnerClass() with +//│ > fun f() = +//│ > let tmp +//│ > tmp = Arguments.f(1) +//│ > +(1, tmp) +//│ > fun g() = InnerClass.f() +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(2) { //│ > [Function: InnerClass] { //│ > class: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] } @@ -308,43 +348,30 @@ staged module ClassFunctions with //│ > } //│ > } -print(ClassFunctions."cache$ClassFunctions") -//│ > fun ctor_() = -//│ > class InnerClass() with -//│ > fun f() = -//│ > let tmp -//│ > tmp = Arguments.f(1) -//│ > +(1, tmp) -//│ > fun g() = InnerClass.f() - // name collision class A() staged module A with fun f() = 1 - -print(A."class"."cache$A") //│ > fun ctor_() = //│ > () //│ > fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } // nested module module A with staged module B with fun f() = 1 - -print(A.B."cache$B") //│ > fun ctor_() = //│ > () //│ > fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged module Shadowing with fun f(x, x) = x - -:todo these symbols may be confused dueing shape propagation -print(Shadowing."cache$Shadowing") //│ > fun ctor_() = //│ > () //│ > fun f(x, x) = x +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo force enable :ftc to desugar Label and Break :ftc @@ -355,18 +382,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.353: let x = 1 +//│ ║ l.380: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.353: let x = 1 +//│ ║ l.380: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.353: let x = 1 +//│ ║ l.380: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.353: let x = 1 +//│ ║ l.380: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -378,7 +405,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.378: fun g() = {1 : 2} +//│ ║ l.405: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -387,3 +414,24 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) +//│ > fun ctor_() = +//│ > () +//│ > fun f() = +//│ > let x +//│ > let middleElements +//│ > let element0_ +//│ > let scrut +//│ > let tmp +//│ > tmp = [1, 2] +//│ > scrut = [1, tmp] +//│ > if scrut is +//│ > [_] then +//│ > element0_ = Runtime.Tuple.get(scrut, 0) +//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) +//│ > if element0_ is +//│ > 1 then +//│ > x = middleElements +//│ > x +//│ > else 0 +//│ > else 0 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls index 369171fd38..4bcbe6989a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls @@ -4,14 +4,12 @@ staged module A with fun f() = 1 fun g(x) = x - -:e -console.log(A."generatorMap$A") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type A. -//│ ║ l.9: console.log(A."generatorMap$A") -//│ ╙── ^ +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 +//│ > fun g(x) = x //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'g' => [Function: g_gen] -//│ > } +//│ > } \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 15d2b7a384..58afc3de7e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -1,5 +1,6 @@ :js :staging +:noModuleCheck import "../../mlscript-compile/Shape.mls" @@ -9,26 +10,22 @@ staged module M with fun f(x) = let y = x * 2 y + fun f_gen +//│ > fun ctor_() = +//│ > () +//│ > fun f(x) = +//│ > let y +//│ > y = *(x, 2) +//│ > y +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -:e M.f_gen(Dyn()) -//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' -//│ ║ l.14: M.f_gen(Dyn()) -//│ ╙── ^^^^^^ //│ = [Symbol("f_Dyn_28_29"), [[Dyn()]]] -:e M.f_gen(Lit(2)) -//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' -//│ ║ l.21: M.f_gen(Lit(2)) -//│ ╙── ^^^^^^ //│ = [Symbol("f_Lit_282_29"), [[Lit(2)]]] -:e print(M."cache$M") -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.28: print(M."cache$M") -//│ ╙── ^ //│ > fun ctor_() = //│ > () //│ > fun f(x) = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index e8c40c745b..b5dc561bd6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -5,6 +5,11 @@ staged module M with class C with fun f() = 1 fun g() = f() +//│ > fun ctor_() = +//│ > class C with +//│ > fun f() = 1 +//│ > fun g() = C.f() +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [class C] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { //│ > name: 'C', @@ -27,6 +32,37 @@ staged module D with fun matching() = 1 is Int 1 is C +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > fun ctor_() = +//│ > class E +//│ > fun f() = +//│ > let scrut +//│ > __no__symbol__ = A.f() +//│ > scrut = B.f +//│ > if scrut is +//│ > Bool then true +//│ > else false +//│ > fun matching() = +//│ > let tmp +//│ > let scrut1 +//│ > let scrut2 +//│ > scrut1 = 1 +//│ > if scrut1 is +//│ > Int then +//│ > tmp = true +//│ > else tmp = false +//│ > scrut2 = 1 +//│ > if scrut2 is +//│ > C(a, b) then true +//│ > else false +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'matching' => [Function: matching_gen] +//│ > } //│ > Map(6) { //│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', @@ -75,6 +111,12 @@ staged module M with A.B.C A.B.C(1) E +//│ > fun ctor_() = +//│ > class E +//│ > fun f() = +//│ > __no__symbol__ = A.B.C(1) +//│ > M.E +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(5) { //│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', @@ -134,13 +176,32 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.135: fun g()() = 1 +//│ ║ l.177: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ +//│ > fun ctor_() = +//│ > () +//│ > fun g()() = 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } :ftc staged module M with fun f() = x => x fun g()() = 1 +//│ > fun ctor_() = +//│ > () +//│ > fun f() = +//│ > let tmp +//│ > tmp = new Function_() +//│ > tmp +//│ > fun g() = +//│ > let tmp1 +//│ > tmp1 = new Function_1() +//│ > tmp1 +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } //│ > Map(2) { //│ > [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index bd9ab1b64a..855772eccf 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -29,18 +29,21 @@ staged module A //│ } //│ staged module A² { //│ constructor { -//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8; -//│ set tmp3 = A².ctor$_instr﹖(); -//│ set tmp4 = [tmp3, 1]; -//│ set tmp5 = ["ctor$", tmp4]; -//│ set tmp6 = [tmp5]; -//│ set tmp7 = new mut globalThis⁰.Map﹖(tmp6); -//│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp7); -//│ define cache$A⁰ as val cache$A¹ = tmp8; -//│ set tmp = ["ctor$", A².ctor$_gen﹖]; -//│ set tmp1 = [tmp]; -//│ set tmp2 = new mut globalThis⁰.Map﹖(tmp1); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp2; +//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11; +//│ set tmp6 = A².ctor$_instr﹖(); +//│ set tmp7 = [tmp6, 1]; +//│ set tmp8 = ["ctor$", tmp7]; +//│ set tmp9 = [tmp8]; +//│ set tmp10 = new mut globalThis⁰.Map﹖(tmp9); +//│ set tmp11 = new SpecializeHelpers⁰.FunCache﹖(tmp10); +//│ define cache$A⁰ as val cache$A¹ = tmp11; +//│ set tmp3 = ["ctor$", A².ctor$_gen﹖]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = new mut globalThis⁰.Map﹖(tmp4); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp5; +//│ set tmp = A².cache$A﹖.toString﹖(); +//│ set tmp1 = globalThis⁰.console﹖.log﹖(tmp); +//│ set tmp2 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { @@ -62,3 +65,6 @@ staged module A //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ > fun ctor_() = +//│ > () +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } From b79ea5acc9b5dfc70339a87222a4e2ea85e1ac94 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Mar 2026 15:59:21 +0800 Subject: [PATCH 384/654] remove original functions of staged module --- .../hkmc2/codegen/ReflectionInstrumenter.scala | 2 +- .../src/test/mlscript/block-staging/Functions.mls | 14 +++++--------- .../test/mlscript/block-staging/GeneratorMap.mls | 2 +- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index c762fadd0e..93692fb7d1 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -419,7 +419,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // used for staging classes inside modules val newCompanion = companion.copy( - methods = companion.methods ++ helperMethods.flatten, + methods = helperMethods.flatten, ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), publicFields = companion.publicFields ) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 9ab12ea768..6b3ed2dc2d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,15 +1,11 @@ :js :staging -:fixme // TODO: fix IR rebinding issue (each symbol should be bound at most once) :checkIR staged module Rebinding with fun lit() = let x = 42 x -//│ ╔══[INTERNAL ERROR] [BlockChecker] Invalid IR: symbol x⁰ is bound more than once -//│ ║ l.8: let x = 42 -//│ ╙── ^ //│ > fun ctor_() = //│ > () //│ > fun lit() = @@ -382,18 +378,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.380: let x = 1 +//│ ║ l.376: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.380: let x = 1 +//│ ║ l.376: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.380: let x = 1 +//│ ║ l.376: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.380: let x = 1 +//│ ║ l.376: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -405,7 +401,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.405: fun g() = {1 : 2} +//│ ║ l.401: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls index 4bcbe6989a..f7e76d29ea 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls @@ -12,4 +12,4 @@ staged module A with //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'g' => [Function: g_gen] -//│ > } \ No newline at end of file +//│ > } From e85e5b5f07e0e2ff3e64f5af6090678aeec5d84a Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Sat, 28 Mar 2026 16:06:52 +0800 Subject: [PATCH 385/654] Minor fix --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 2 +- hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 3105ad3143..99ed1174da 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -437,7 +437,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // used for staging classes inside modules val newCompanion = companion.copy( - methods = companion.methods ++ helperMethods.flatten, + methods = helperMethods.flatten, ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), publicFields = companion.publicFields ) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls index 9d2678d289..1af8fc4e22 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls @@ -1,5 +1,6 @@ :js :staging +:noFreeze staged module Test with fun f(x, y) = x + y From c7e5eb4d7345ddf5ba34b354b152eceffaf6112e Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Sat, 28 Mar 2026 17:08:19 +0800 Subject: [PATCH 386/654] WIP: Add compiler test and code gen --- hkmc2/js/src/main/scala/hkmc2/Compiler.scala | 6 +- .../src/main/scala/hkmc2/MLsCompiler.scala | 23 ++- .../codegen/ReflectionInstrumenter.scala | 8 +- .../src/test/mlscript-compile/Block.mls | 15 ++ .../staging/SimpleStagedExample.mls | 8 + .../test/mlscript/block-staging/Generate.mls | 167 ++++++++++++++++++ .../src/test/scala/hkmc2/Watcher.scala | 6 +- 7 files changed, 227 insertions(+), 6 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/Generate.mls diff --git a/hkmc2/js/src/main/scala/hkmc2/Compiler.scala b/hkmc2/js/src/main/scala/hkmc2/Compiler.scala index 29e64f3bed..47df337293 100644 --- a/hkmc2/js/src/main/scala/hkmc2/Compiler.scala +++ b/hkmc2/js/src/main/scala/hkmc2/Compiler.scala @@ -64,7 +64,11 @@ class Compiler(paths: MLsCompiler.Paths)(using cctx: CompilerCtx): perFileDiagnostics @JSExportTopLevel("Paths") -final class Paths(prelude: Str, runtime: Str, term: Str) extends MLsCompiler.Paths: +final class Paths(prelude: Str, runtime: Str, term: Str, block: Str, spHelper: Str, option: Str, ss: Str) extends MLsCompiler.Paths: val preludeFile = Path(prelude) val runtimeFile = Path(runtime) val termFile = Path(term) + val blockFile = Path(block) + val specializeHelpersFile = Path(spHelper) + val optionFile = Path(option) + val shapeSetFile = Path(ss) diff --git a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala index 26736228da..7ace0e440b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/MLsCompiler.scala @@ -39,6 +39,10 @@ object MLsCompiler: def preludeFile: io.Path def runtimeFile: io.Path def termFile: io.Path + def blockFile: io.Path + def specializeHelpersFile: io.Path + def optionFile: io.Path + def shapeSetFile: io.Path /** * The compiler that compiles MLscript code into JavaScript modules. @@ -96,14 +100,27 @@ class MLsCompiler case Term.Quoted(_) | Term.Unquoted(_) => true case Term.Ref(sym) => sym === State.termSymbol case _ => t.subTerms.exists(findQuote) + def findStage(t: semantics.Statement): Bool = t match + case d: semantics.Definition => d.hasStagedModifier.isDefined + case _ => t.subStatements.exists(findStage) + val hasQuote = findQuote(blk0) + val isStaged = findStage(blk0) + // println(s"yydz: ${blk0.subTerms}") val blk = new Term.Blk( Import(State.runtimeSymbol, runtimeFile.toString, runtimeFile) :: - // Only import `Term.mls` when necessary. + // Only import files when necessary. (if hasQuote then - Import(State.termSymbol, termFile.toString, termFile) :: blk0.stats + Import(State.termSymbol, termFile.toString, termFile) :: Nil else - blk0.stats), + Nil) ::: + (if isStaged then + Import(State.optionSymbol, optionFile.toString, optionFile) :: + Import(State.shapeSetSymbol, shapeSetFile.toString, shapeSetFile) :: + Import(State.blockSymbol, blockFile.toString, blockFile) :: + Import(State.specializeHelpersSymbol, specializeHelpersFile.toString, specializeHelpersFile) :: Nil + else + Nil) ::: blk0.stats, blk0.res ) val low = ltl.givenIn: diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 99ed1174da..325636994e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -435,9 +435,15 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S then call(printFun, Ls(symbolMapSym), false)(_ => rest) else rest))))) + val entryFunDef = + val sym = BlockMemberSymbol("generate", Nil) + val params = PlainParamList(Nil) + val body = End() // TODO + FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, body)(false) + // used for staging classes inside modules val newCompanion = companion.copy( - methods = helperMethods.flatten, + methods = entryFunDef :: helperMethods.flatten, ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), publicFields = companion.publicFields ) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index b7ba988263..3f857c5ec7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -3,6 +3,11 @@ import "./Option.mls" import "./StrOps.mls" import "./CachedHash.mls" +import "fs" +import "process" +import "path" +import "url" + open Predef open StrOps open Option @@ -205,3 +210,13 @@ fun printCode(x) = print(show(x)) fun printModule(name, methods) = print("module " + name + " with" + indent("\n" + methods.map(showDefn).join("\n"))) + +fun codegen(name, methods, file) = + let fullpath = path.join of process.cwd(), file + let code = "module " + name + " with" + indent("\n" + methods.map(showDefn).join("\n")) + if not fs.existsSync(file) do + fs.writeFileSync(file, "", "utf8") + let originData = fs.readFileSync(file, "utf8") + let newData = code + if newData != originData do + fs.writeFileSync(file, newData, "utf8") diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls new file mode 100644 index 0000000000..7f389d8e4d --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls @@ -0,0 +1,8 @@ +staged module SimpleStagedExample with + fun f(x, y) = x + y + fun fib(n) = if n is + 1 then 1 + 2 then 1 + n then fib(n - 1) + fib(n - 2) + fun foo() = + f(2, 3) + fib(10) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls new file mode 100644 index 0000000000..57c9d09644 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -0,0 +1,167 @@ +:js + + +import "../../mlscript-compile/staging/SimpleStagedExample.mls" +//│ > fun f(x, y) = +(x, y) +//│ > fun fib(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > if n is +//│ > 1 then 1 +//│ > 2 then 1 +//│ > else n = n +//│ > tmp2 = -(n, 1) +//│ > tmp3 = SimpleStagedExample.fib(tmp2) +//│ > tmp = -(n, 2) +//│ > tmp1 = SimpleStagedExample.fib(tmp) +//│ > +(tmp3, tmp1) +//│ > fun foo() = +//│ > let tmp4 +//│ > let tmp5 +//│ > tmp4 = SimpleStagedExample.f_Lit2_Lit3(2, 3) +//│ > tmp5 = SimpleStagedExample.fib_Lit10(10) +//│ > 60 +//│ > fun f_Lit2_Lit3(x, y) = 5 +//│ > fun fib_Lit10(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > n = 10 +//│ > tmp2 = 9 +//│ > tmp3 = SimpleStagedExample.fib_Lit9(tmp2) +//│ > tmp = 8 +//│ > tmp1 = SimpleStagedExample.fib_Lit8(tmp) +//│ > 55 +//│ > fun fib_Lit9(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > n = 9 +//│ > tmp2 = 8 +//│ > tmp3 = SimpleStagedExample.fib_Lit8(tmp2) +//│ > tmp = 7 +//│ > tmp1 = SimpleStagedExample.fib_Lit7(tmp) +//│ > 34 +//│ > fun fib_Lit8(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > n = 8 +//│ > tmp2 = 7 +//│ > tmp3 = SimpleStagedExample.fib_Lit7(tmp2) +//│ > tmp = 6 +//│ > tmp1 = SimpleStagedExample.fib_Lit6(tmp) +//│ > 21 +//│ > fun fib_Lit7(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > n = 7 +//│ > tmp2 = 6 +//│ > tmp3 = SimpleStagedExample.fib_Lit6(tmp2) +//│ > tmp = 5 +//│ > tmp1 = SimpleStagedExample.fib_Lit5(tmp) +//│ > 13 +//│ > fun fib_Lit6(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > n = 6 +//│ > tmp2 = 5 +//│ > tmp3 = SimpleStagedExample.fib_Lit5(tmp2) +//│ > tmp = 4 +//│ > tmp1 = SimpleStagedExample.fib_Lit4(tmp) +//│ > 8 +//│ > fun fib_Lit5(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > n = 5 +//│ > tmp2 = 4 +//│ > tmp3 = SimpleStagedExample.fib_Lit4(tmp2) +//│ > tmp = 3 +//│ > tmp1 = SimpleStagedExample.fib_Lit3(tmp) +//│ > 5 +//│ > fun fib_Lit4(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > n = 4 +//│ > tmp2 = 3 +//│ > tmp3 = SimpleStagedExample.fib_Lit3(tmp2) +//│ > tmp = 2 +//│ > tmp1 = SimpleStagedExample.fib_Lit2(tmp) +//│ > 3 +//│ > fun fib_Lit3(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > n = 3 +//│ > tmp2 = 2 +//│ > tmp3 = SimpleStagedExample.fib_Lit2(tmp2) +//│ > tmp = 1 +//│ > tmp1 = SimpleStagedExample.fib_Lit1(tmp) +//│ > 2 +//│ > fun fib_Lit2(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > 1 +//│ > fun fib_Lit1(n) = +//│ > let tmp +//│ > let tmp1 +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > 1 +//│ > Map(4) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'fib' => [Function: fib_gen], +//│ > 'foo' => [Function: foo_gen] +//│ > } +//│ > Map(1) { +//│ > [class SimpleStagedExample] { +//│ > 'cache$SimpleStagedExample': FunCache { cache: [Map] }, +//│ > 'generatorMap$SimpleStagedExample': Map(4) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'fib' => [Function: fib_gen], +//│ > 'foo' => [Function: foo_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'SimpleStagedExample', +//│ > value: [class SimpleStagedExample] { +//│ > 'cache$SimpleStagedExample': [FunCache], +//│ > 'generatorMap$SimpleStagedExample': [Map] +//│ > } +//│ > } +//│ > } + + +:fixme +SimpleStagedExample.generate() +//│ ╔══[COMPILATION ERROR] Module 'SimpleStagedExample' does not contain member 'generate' +//│ ║ l.164: SimpleStagedExample.generate() +//│ ╙── ^^^^^^^^^ diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/Watcher.scala b/hkmc2DiffTests/src/test/scala/hkmc2/Watcher.scala index dbfded1fdb..bbd986cb46 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/Watcher.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/Watcher.scala @@ -106,7 +106,11 @@ class Watcher(dirs: Ls[File]): paths = new MLsCompiler.Paths: val preludeFile = preludePath val runtimeFile = testBasePath/"mlscript-compile"/"Runtime.mjs" - val termFile = testBasePath/"mlscript-compile"/"Term.mjs", + val termFile = testBasePath/"mlscript-compile"/"Term.mjs" + val blockFile = testBasePath/"mlscript-compile"/"Block.mjs" + val specializeHelpersFile = testBasePath/"mlscript-compile"/"SpecializeHelpers.mjs" + val optionFile = testBasePath/"mlscript-compile"/"Option.mjs" + val shapeSetFile = testBasePath/"mlscript-compile"/"ShapeSet.mjs", mkRaise = ReportFormatter(System.out.println, colorize = true).mkRaise ).compileModule(path) else From 3a1724c74c76c6867ecf80eb677160d1c175b175 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Mar 2026 17:37:14 +0800 Subject: [PATCH 387/654] minor fixes --- .../src/test/scala/hkmc2/CompileTestRunner.scala | 6 +++++- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 2 +- .../src/test/mlscript-compile/SpecializeHelpers.mls | 13 +++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunner.scala b/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunner.scala index ba6d393e8f..674e923b29 100644 --- a/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunner.scala +++ b/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunner.scala @@ -62,7 +62,11 @@ class CompileTestRunner paths = new MLsCompiler.Paths: val preludeFile = mainTestDir / "mlscript" / "decls" / "Prelude.mls" val runtimeFile = mainTestDir / "mlscript-compile" / "Runtime.mjs" - val termFile = mainTestDir / "mlscript-compile" / "Term.mjs", + val termFile = mainTestDir / "mlscript-compile" / "Term.mjs" + val blockFile = mainTestDir / "mlscript-compile" / "Block.mjs" + val optionFile = mainTestDir / "mlscript-compile" / "Option.mjs" + val shapeSetFile = mainTestDir / "mlscript-compile" / "ShapeSet.mjs" + val specializeHelpersFile = mainTestDir / "mlscript-compile" / "SpecializeHelpers.mjs", mkRaise = report.mkRaise ) compiler.compileModule(file) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 965748ae44..bc47189926 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -126,7 +126,7 @@ fun val2path(v) = let md = v.constructor.(Symbols.definitionMetadata) let clsName = md.0 let paramNames = md.2 - let classSym = Block.ClassSymbol(clsName, None) + let classSym = Block.ClassSymbol(clsName, undefined, None, []) // TODO: add correct Paramters to ClassSymbol let mapped = paramNames.map((fld, _, _) => val2path(v.(fld))) let blocks = mapped.filter(_ is [_, _]).map(_ => _.0) let paths = mapped.map((m, _, _) => if m is [_, p] then p else m) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index be02e8966b..37dc825933 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -84,16 +84,17 @@ fun sor(ctx, r) = if r is "!==" then lit(l1 !== l2) "&&" then lit(l1 && l2) "||" then lit(l1 || l2) - Select(ValueRef(ModuleSymbol(name, value)), Symbol(symb)) then // method in staged module + Select(ValueRef(ModuleSymbol(name, value)), Symbol(symb)) and let mapPropName = "generatorMap$" + name let cachePropName = "cache$" + name - let genMap = value.(mapPropName) let cache = value.(cachePropName) - let f = genMap.get(symb) - let res = f(...argShapes) - [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] - Select(ValueRef(symb), Symbol(f)) and sop(ctx, symb) is Class(sym, params) then // class method call + // in staged module + !(genMap is undefined) then + let f = genMap.get(symb) + let res = f(...argShapes) + [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] + Select(ValueRef(symb), Symbol(f)) and sop(ctx, ValueRef(symb)) is Class(sym, params) then // class method call // TODO else [End(), r, mkDyn()] From dec5e7cc32abb330c3bf6cb95dca08f2f2c8f503 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 28 Mar 2026 20:54:51 +0800 Subject: [PATCH 388/654] prelimary implementation of non-staged function with static params --- .../src/test/mlscript-compile/ShapeSet.mls | 3 +- .../mlscript-compile/SpecializeHelpers.mls | 28 ++++-- .../mlscript/block-staging/ShapeProp2.mls | 97 +++++++++++++------ 3 files changed, 91 insertions(+), 37 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index bc47189926..cef3aac458 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -113,7 +113,8 @@ fun freshId(prefix) = Block.Symbol(prefix + "_" + idCounter.toString()) fun val2path(v) = - if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then [Block.End(), Block.ValueLit(v)] + if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then + [Block.End(), Block.ValueLit(v)] else if Array.isArray(v) then let mapped = v.map(val2path) let blocks = mapped.map(_.0) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 37dc825933..4cdf55f913 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -28,6 +28,15 @@ class Ctx(val ctx: Map[String, ShapeSet]) with module Ctx with fun empty = Ctx(new Map()) +fun sov(v): ShapeSet = + if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then + mkLit(v) + else if Array.isArray(v) then + mkArr(v.map(sov)) + else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then + // TODO + undefined + fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s else if p is @@ -38,12 +47,9 @@ fun sop(ctx, p): ShapeSet = ValueRef(l) then mkDyn() fun sor(ctx, r) = if r is - Path and + Path then let s = sop(ctx, r) - staticSet(s) then - if val2path(valOfSet(s)) is [blk, res] then [blk, res, s] else throw Error("val2path failed") - else - [End(), r, s] + [End(), r, s] Instantiate(cls, args) then let sym = if cls is ValueRef(s) and s is ClassSymbol then s @@ -88,15 +94,19 @@ fun sor(ctx, r) = if r is let mapPropName = "generatorMap$" + name let cachePropName = "cache$" + name let genMap = value.(mapPropName) - let cache = value.(cachePropName) - // in staged module - !(genMap is undefined) then + not (genMap is undefined) then // in staged module let f = genMap.get(symb) let res = f(...argShapes) [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] + argShapes.every(staticSet) then // non staged but params known + let f = value.(symb) + let evaluated = f(...argShapes.map(valOfSet)) + let evaluated_path = val2path(evaluated) + [evaluated_path.0, evaluated_path.1, sov(evaluated)] Select(ValueRef(symb), Symbol(f)) and sop(ctx, ValueRef(symb)) is Class(sym, params) then // class method call // TODO - else [End(), r, mkDyn()] + else + [End(), r, mkDyn()] // [gen, true] and gen(...argShapes) is [shape, implSymb] then // [End(), Call(ValueRef(implSymb), args), shape] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls index 1af8fc4e22..f939f63028 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls @@ -2,22 +2,44 @@ :staging :noFreeze +:sjs +module NonStaged with + fun sq(x) = x * x +//│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— +//│ let NonStaged1; +//│ (class NonStaged { +//│ static { +//│ NonStaged1 = this +//│ } +//│ constructor() { +//│ runtime.Unit; +//│ } +//│ static sq(x) { +//│ return x * x +//│ } +//│ toString() { return runtime.render(this); } +//│ static [definitionMetadata] = ["class", "NonStaged"]; +//│ }); +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— + staged module Test with fun f(x, y) = x + y fun fib(n) = if n is 1 then 1 2 then 1 n then fib(n - 1) + fib(n - 2) - fun trig() = + fun pyth(x, y) = NonStaged.sq(x) + NonStaged.sq(y) + fun entry() = f(2, 3) fib(10) + pyth(3, 4) //│ > fun f(x, y) = +(x, y) //│ > fun fib(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n //│ > if n is //│ > 1 then 1 //│ > 2 then 1 @@ -27,134 +49,149 @@ staged module Test with //│ > tmp2 = -(n, 2) //│ > tmp3 = Test.fib(tmp2) //│ > +(tmp1, tmp3) -//│ > fun trig() = +//│ > fun pyth(x, y) = +//│ > let tmp4 +//│ > let tmp5 +//│ > tmp4 = NonStaged.sq(x) +//│ > tmp5 = NonStaged.sq(y) +//│ > +(tmp4, tmp5) +//│ > fun entry() = //│ > __no__symbol__ = Test.f_Lit2_Lit3(2, 3) -//│ > Test.fib_Lit10(10) +//│ > __no__symbol__ = Test.fib_Lit10(10) +//│ > Test.pyth_Lit3_Lit4(3, 4) //│ > fun f_Lit2_Lit3(x, y) = 5 //│ > fun fib_Lit10(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n -//│ > n = 10 +//│ > n = n //│ > tmp = 9 //│ > tmp1 = Test.fib_Lit9(tmp) //│ > tmp2 = 8 //│ > tmp3 = Test.fib_Lit8(tmp2) //│ > 55 //│ > fun fib_Lit9(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n -//│ > n = 9 +//│ > n = n //│ > tmp = 8 //│ > tmp1 = Test.fib_Lit8(tmp) //│ > tmp2 = 7 //│ > tmp3 = Test.fib_Lit7(tmp2) //│ > 34 //│ > fun fib_Lit8(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n -//│ > n = 8 +//│ > n = n //│ > tmp = 7 //│ > tmp1 = Test.fib_Lit7(tmp) //│ > tmp2 = 6 //│ > tmp3 = Test.fib_Lit6(tmp2) //│ > 21 //│ > fun fib_Lit7(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n -//│ > n = 7 +//│ > n = n //│ > tmp = 6 //│ > tmp1 = Test.fib_Lit6(tmp) //│ > tmp2 = 5 //│ > tmp3 = Test.fib_Lit5(tmp2) //│ > 13 //│ > fun fib_Lit6(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n -//│ > n = 6 +//│ > n = n //│ > tmp = 5 //│ > tmp1 = Test.fib_Lit5(tmp) //│ > tmp2 = 4 //│ > tmp3 = Test.fib_Lit4(tmp2) //│ > 8 //│ > fun fib_Lit5(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n -//│ > n = 5 +//│ > n = n //│ > tmp = 4 //│ > tmp1 = Test.fib_Lit4(tmp) //│ > tmp2 = 3 //│ > tmp3 = Test.fib_Lit3(tmp2) //│ > 5 //│ > fun fib_Lit4(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n -//│ > n = 4 +//│ > n = n //│ > tmp = 3 //│ > tmp1 = Test.fib_Lit3(tmp) //│ > tmp2 = 2 //│ > tmp3 = Test.fib_Lit2(tmp2) //│ > 3 //│ > fun fib_Lit3(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n -//│ > n = 3 +//│ > n = n //│ > tmp = 2 //│ > tmp1 = Test.fib_Lit2(tmp) //│ > tmp2 = 1 //│ > tmp3 = Test.fib_Lit1(tmp2) //│ > 2 //│ > fun fib_Lit2(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n //│ > 1 //│ > fun fib_Lit1(n) = +//│ > let n //│ > let tmp //│ > let tmp1 //│ > let tmp2 //│ > let tmp3 -//│ > let n //│ > 1 -//│ > Map(4) { +//│ > fun pyth_Lit3_Lit4(x, y) = +//│ > let tmp4 +//│ > let tmp5 +//│ > tmp4 = 9 +//│ > tmp5 = 16 +//│ > 25 +//│ > Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'fib' => [Function: fib_gen], -//│ > 'trig' => [Function: trig_gen] +//│ > 'pyth' => [Function: pyth_gen], +//│ > 'entry' => [Function: entry_gen] //│ > } -//│ > Map(1) { +//│ > Map(2) { //│ > [class Test] { //│ > 'cache$Test': FunCache { cache: [Map] }, -//│ > 'generatorMap$Test': Map(4) { +//│ > 'generatorMap$Test': Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'fib' => [Function: fib_gen], -//│ > 'trig' => [Function: trig_gen] +//│ > 'pyth' => [Function: pyth_gen], +//│ > 'entry' => [Function: entry_gen] //│ > } //│ > } => ModuleSymbol { //│ > name: 'Test', @@ -162,5 +199,11 @@ staged module Test with //│ > 'cache$Test': [FunCache], //│ > 'generatorMap$Test': [Map] //│ > } +//│ > }, +//│ > [class NonStaged] { +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NonStaged' ] +//│ > } => ModuleSymbol { +//│ > name: 'NonStaged', +//│ > value: [class NonStaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } //│ > } From 853bd8a40ea5f343e58673f759b8603b4c8916db Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 28 Mar 2026 21:04:33 +0800 Subject: [PATCH 389/654] add call from staged module to staged module --- .../test/mlscript/block-staging/Functions.mls | 251 ++---- .../test/mlscript/block-staging/ShapeProp.mls | 716 ++++++++++++------ .../mlscript/block-staging/ShapeProp2.mls | 43 +- 3 files changed, 610 insertions(+), 400 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e536a1672f..e6074782e7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -11,10 +11,10 @@ staged module Expressions with //│ ╔══[INTERNAL ERROR] [BlockChecker] Invalid IR: symbol x⁰ is bound more than once //│ ║ l.9: let x = 42 //│ ╙── ^ -//│ > fun lit_() = +//│ > fun lit() = //│ > let x //│ > x = 42 -//│ > x +//│ > 42 //│ > Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'lit' => [Function: lit_gen] @@ -46,50 +46,33 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 -//│ > fun lit_{Dyn_28_29}(x) = +(x, x) -//│ > fun assign_() = +//│ > fun lit(x) = +(x, x) +//│ > fun assign() = //│ > let x //│ > let y //│ > x = 42 -//│ > y = x -//│ > y -//│ > fun tup1_() = [1, 2] -//│ > fun tup2_() = +//│ > y = 42 +//│ > 42 +//│ > fun tup1() = [1, 2] +//│ > fun tup2() = //│ > let x //│ > x = [1, 2, 3] //│ > [1, x] -//│ > fun dynsel_() = +//│ > fun dynsel() = //│ > let tmp //│ > tmp = [1] -//│ > tmp.(0) -//│ > fun match1_() = +//│ > 1 +//│ > fun match1() = //│ > let scrut //│ > scrut = 9 -//│ > if scrut is -//│ > Bool then 1 -//│ > 8 then 2 -//│ > Int then 3 -//│ > else 0 -//│ > fun match2_() = +//│ > 3 +//│ > fun match2() = //│ > let element0_ //│ > let x //│ > let a //│ > let element1_ //│ > x = [1, 2, 3] -//│ > if x is -//│ > [] then 1 -//│ > [_, _] then -//│ > element0_ = Runtime.Tuple.get(x, 0) -//│ > element1_ = Runtime.Tuple.get(x, 1) -//│ > if element0_ is -//│ > 1 then -//│ > if element1_ is -//│ > 2 then 2 -//│ > else a = element0_ -//│ > 3 -//│ > else a = element0_ -//│ > 3 -//│ > else 0 +//│ > 0 //│ > Map(8) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'lit' => [Function: lit_gen], @@ -113,63 +96,19 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > fun inst1_() = Outside(1) -//│ > fun inst2_() = new ClassInstrumentation.NoArg() -//│ > fun app1_() = Outside(1) -//│ > fun app2_() = ClassInstrumentation.Inside(1, 2) -//│ > Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'inst1' => [Function: inst1_gen], -//│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen], -//│ > 'app2' => [Function: app2_gen] -//│ > } -//│ > Map(4) { -//│ > [Function: Outside] { -//│ > class: [class Outside] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ClassSymbol { -//│ > name: 'Outside', -//│ > value: [Function: Outside] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > [class ClassInstrumentation] { -//│ > Inside: [Function: Inside] { class: [Function] }, -//│ > NoArg: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$ClassInstrumentation': FunCache { cache: [Map] }, -//│ > 'generatorMap$ClassInstrumentation': Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'inst1' => [Function: inst1_gen], -//│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen], -//│ > 'app2' => [Function: app2_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'ClassInstrumentation', -//│ > value: [class ClassInstrumentation] { -//│ > Inside: [Function], -//│ > NoArg: [Function], -//│ > 'cache$ClassInstrumentation': [FunCache], -//│ > 'generatorMap$ClassInstrumentation': [Map] -//│ > } -//│ > }, -//│ > [class NoArg] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NoArg' ] -//│ > } => ClassSymbol { -//│ > name: 'NoArg', -//│ > value: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, -//│ > [Function: Inside] { -//│ > class: [class Inside] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ClassSymbol { -//│ > name: 'Inside', -//│ > value: [Function: Inside] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: f1 is not a function +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:338:43) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:566:37) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:880:39) +//│ at ClassInstrumentation.app2_gen (REPL20:1:10699) +//│ at (REPL20:1:2386) +//│ at REPL20:1:10884 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) module Nonstaged with fun f() = 1 @@ -179,45 +118,28 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() -//│ > fun f_() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > fun call_() = -//│ > __no__symbol__ = Nonstaged.f() -//│ > Staged.f() -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'call' => [Function: call_gen] -//│ > } -//│ > Map(2) { -//│ > [class Nonstaged] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Nonstaged' ] -//│ > } => ModuleSymbol { -//│ > name: 'Nonstaged', -//│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > }, -//│ > [class Staged] { -//│ > 'cache$Staged': FunCache { cache: [Map] }, -//│ > 'generatorMap$Staged': Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen] -//│ > }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Staged' ] -//│ > } => ModuleSymbol { -//│ > name: 'Staged', -//│ > value: [class Staged] { -//│ > 'cache$Staged': [FunCache], -//│ > 'generatorMap$Staged': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'get') +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:337:48) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:610:38) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:880:39) +//│ at CallSubst.call_gen (REPL23:1:6277) +//│ at (REPL23:1:3644) +//│ at REPL23:1:6429 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) :e print(CallSubst."cache$CallSubst") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. -//│ ║ l.216: print(CallSubst."cache$CallSubst") +//│ ║ l.138: print(CallSubst."cache$CallSubst") //│ ╙── ^^^^^^^^^ -//│ > fun call_() = +//│ > fun call() = //│ > __no__symbol__ = Nonstaged.f() //│ > Staged.f() @@ -227,30 +149,19 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > fun f_{Dyn_28_29}(x) = -//│ > x = 1 -//│ > x -//│ > fun g_{Dyn_28_29}(x) = -//│ > let tmp -//│ > tmp = new Function_() -//│ > tmp -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } -//│ > Map(1) { -//│ > [class Function$1 extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] -//│ > } => ClassSymbol { -//│ > name: 'Function$', -//│ > value: [class Function$1 extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] Error: Not implemented +//│ at get notImplementedError (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:287:39) +//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:299:21) +//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:311:23) +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:147:24) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:566:37) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:620:40) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:596:36) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:880:39) +//│ at Arguments.g_gen (REPL29:1:6129) +//│ at (REPL29:1:2540) staged module OtherBlocks with fun scope() = @@ -263,17 +174,14 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > fun scope_() = +//│ > fun scope() = //│ > let a //│ > a = 1 //│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel_() = +//│ > fun breakAndLabel() = //│ > let scrut //│ > scrut = 1 -//│ > if scrut is -//│ > 2 then 0 -//│ > 3 then 0 -//│ > else 0 +//│ > 0 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'scope' => [Function: scope_gen], @@ -306,7 +214,7 @@ staged module ClassDefs with :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.307: print(ClassDefs."cache$ClassDefs") +//│ ║ l.215: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ //│ > @@ -324,38 +232,38 @@ staged module ClassFunctions with class A() staged module A with fun f() = 1 -//│ > fun f_() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } // nested module module A with staged module B with fun f() = 1 -//│ > fun f_() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged module Shadowing with fun f(x, x) = x -//│ > fun f_{Dyn_28_29}_2c{Dyn_28_29}(x, x) = x +//│ > fun f(x, x) = x //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.343: print(Shadowing."cache$Shadowing") +//│ ║ l.251: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ -//│ > fun f_{Dyn_28_29}_2c{Dyn_28_29}(x, x) = x +//│ > fun f(x, x) = x // testing generatorMap staged module M with fun f() = 1 -//│ > fun f_() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e M."generatorMap$M" //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.356: M."generatorMap$M" +//│ ║ l.264: M."generatorMap$M" //│ ╙── ^ //│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} @@ -368,18 +276,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.366: let x = 1 +//│ ║ l.274: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.366: let x = 1 +//│ ║ l.274: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.366: let x = 1 +//│ ║ l.274: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.366: let x = 1 +//│ ║ l.274: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: x is not defined @@ -391,7 +299,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.391: fun g() = {1 : 2} +//│ ║ l.299: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error @@ -400,7 +308,7 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) -//│ > fun f_() = +//│ > fun f() = //│ > let scrut //│ > let tmp //│ > let x @@ -408,16 +316,7 @@ staged module Spread with //│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] -//│ > if scrut is -//│ > [_] then -//│ > element0_ = Runtime.Tuple.get(scrut, 0) -//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) -//│ > if element0_ is -//│ > 1 then -//│ > x = middleElements -//│ > x -//│ > else 0 -//│ > else 0 +//│ > 0 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo @@ -430,7 +329,7 @@ staged //│ FAILURE: Unexpected parse error //│ FAILURE LOCATION: parseRuleImpl (Parser.scala:513) //│ ╔══[PARSE ERROR] Expected expression after modifier keyword 'staged'; found end of input instead -//│ ║ l.429: staged +//│ ║ l.328: staged //│ ╙── ^ //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 5e2ca2ee2f..3481b4d67f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -5,10 +5,12 @@ import "../../mlscript-compile/Shape.mls" import "../../mlscript-compile/ShapeSet.mls" import "../../mlscript-compile/Option.mls" import "../../mlscript-compile/CachedHash.mls" +import "../../mlscript-compile/SpecializeHelpers.mls" open Option open Block { Symbol, ClassSymbol, Tup, Case } open Shape { Arr, Class, Dyn, Lit } open ShapeSet +open SpecializeHelpers { sov } mkBot() //│ = {} @@ -63,12 +65,17 @@ selSet(mkDyn(), mkLit(5)) let a = Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], undefined), [Lit(42), Lit("c")]) let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) selSet(x, liftMany([Lit("a"), Lit(2)])) -//│ = {Dyn(),Lit(42),Lit(undefined)} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 6 +//│ ║ l.65: let a = Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], undefined), [Lit(42), Lit("c")]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ = {Dyn(),Lit(undefined)} //│ a = Class( -//│ ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], _), +//│ ClassSymbol("A", undefined, undefined, Some(["a", "b"])), //│ [Lit(42), Lit("c")] //│ ) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], _), [Lit(42), Lit("c")]),Dyn()} +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) //│ = {Lit(1)} @@ -81,12 +88,12 @@ union(x, y) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.79: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +//│ ║ l.86: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) //│ ╙── ^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.79: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +//│ ║ l.86: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) //│ ╙── ^^^^^^^^^^^^^^^^^ //│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} //│ x = {Lit(1),Lit(2)} @@ -101,7 +108,7 @@ filterSet(mkDyn(), Block.Tup(2, true)) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.100: filterSet(mkDyn(), Block.Tup(2, true)) +//│ ║ l.107: filterSet(mkDyn(), Block.Tup(2, true)) //│ ╙── ^^^^^^^^^ //│ = {Arr([fun Dyn { class: class Dyn }, fun Dyn { class: class Dyn }])} @@ -109,14 +116,14 @@ let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.108: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ ║ l.115: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) //│ ╙── ^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.108: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ ║ l.115: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) //│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], _), [Lit(42), Lit("c")]),Lit(1),Lit(null)} +//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match @@ -126,7 +133,7 @@ filterSet(filterShapes, Block.Lit(1)) assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = {Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], _), [Lit(42), Lit("c")])} +//│ = {Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")])} filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) //│ = {Lit(1)} @@ -135,7 +142,7 @@ filterSet(filterShapes, Tup(3, false)) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.134: filterSet(filterShapes, Tup(3, false)) +//│ ║ l.141: filterSet(filterShapes, Tup(3, false)) //│ ╙── ^^^^^^^^^^ //│ = {Arr([Lit(1), Lit(2), Lit(3)])} @@ -143,7 +150,7 @@ filterSet(filterShapes, Tup(4, true)) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.142: filterSet(filterShapes, Tup(4, true)) +//│ ║ l.149: filterSet(filterShapes, Tup(4, true)) //│ ╙── ^^^^^^^^^ //│ = {} @@ -151,7 +158,7 @@ assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.150: assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) +//│ ║ l.157: assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) //│ ╙── ^^^^^^^^^^ open Block @@ -160,31 +167,197 @@ open Block let ctx = Ctx.empty let x = ValueRef(Symbol("x")) -//│ ctx = Ctx(_) -//│ x = ValueRef(Symbol("x")) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.168: let ctx = Ctx.empty +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ ctx = undefined +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ╟── which references the symbol introduced here +//│ ║ l.169: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} ctx.add(x, mkLit(1)) ctx.get(x) -//│ = Some({Lit(1)}) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.199: ctx.add(x, mkLit(1)) +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.169: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.200: ctx.get(x) +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.169: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') +//│ at REPL111:1:68 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) ctx.add(x, mkLit(2)) ctx.get(x) -//│ = Some({Lit(1),Lit(2)}) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, tmp:block$res -> block$res33, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.255: ctx.add(x, mkLit(2)) +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.169: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, tmp:block$res -> block$res33, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.256: ctx.get(x) +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.169: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') +//│ at REPL114:1:68 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) let y = ValueRef(Symbol("y")) ctx.add(y, mkLit("a")) ctx.get(y) -//│ = Some({Lit("a")}) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') +//│ at REPL117:1:176 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) //│ y = ValueRef(Symbol("y")) let ctx2 = ctx.clone ctx2.add(y, mkLit("b")) ctx2.get(y) -//│ = Some({Lit("a"),Lit("b")}) -//│ ctx2 = Ctx(_) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'clone') +//│ at REPL121:1:44 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) +//│ ctx2 = undefined ctx.get(y) -//│ = Some({Lit("a")}) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'get') +//│ at REPL125:1:42 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) // DefCtx @@ -196,13 +369,49 @@ ctx.get(y) // sop sop(Ctx.empty, ValueLit(42)) -//│ = {Lit(42)} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sop +//│ ║ l.371: sop(Ctx.empty, ValueLit(42)) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.371: sop(Ctx.empty, ValueLit(42)) +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. sop(Ctx.empty, ValueLit(false)) -//│ = {Lit(false)} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sop +//│ ║ l.386: sop(Ctx.empty, ValueLit(false)) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.386: sop(Ctx.empty, ValueLit(false)) +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) -//│ = {} +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sop +//│ ║ l.401: sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.401: sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. val x = Symbol("x") @@ -212,13 +421,25 @@ let ctx = Ctx.empty ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.420: let ctx = Ctx.empty +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sop +//│ ║ l.422: sop(ctx, selPath) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 6 arguments, got 2 -//│ ║ l.209: val C = ClassSymbol("C", Some(["a"])) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.418: val C = ClassSymbol("C", Some(["a"])) //│ ╙── ^^^^^^^^^^^^^^^^^^ -//│ = {} -//│ C = ClassSymbol("C", Some(["a"]), undefined, undefined, undefined, _) -//│ ctx = Ctx(_) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ C = ClassSymbol("C", Some(["a"]), undefined, undefined) +//│ ctx = undefined //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -228,26 +449,31 @@ val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) sor(DefCtx.empty, Ctx.empty, tup) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.449: sor(DefCtx.empty, Ctx.empty, tup) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) //│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.228: sor(DefCtx.empty, Ctx.empty, tup) +//│ ║ l.449: sor(DefCtx.empty, Ctx.empty, tup) //│ ╙── ^^^^^^ //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.449: sor(DefCtx.empty, Ctx.empty, tup) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.227: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +//│ ║ l.448: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.227: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +//│ ║ l.448: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) //│ ╙── ^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 -//│ ║ l.228: sor(DefCtx.empty, Ctx.empty, tup) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ tup = Tuple([Arg(None), Arg(None)]) @@ -256,39 +482,35 @@ let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) sor(DefCtx.empty, Ctx.empty, inst) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.482: sor(DefCtx.empty, Ctx.empty, inst) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) //│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.256: sor(DefCtx.empty, Ctx.empty, inst) +//│ ║ l.482: sor(DefCtx.empty, Ctx.empty, inst) //│ ╙── ^^^^^^ //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.482: sor(DefCtx.empty, Ctx.empty, inst) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 6 arguments, got 2 -//│ ║ l.254: let c = ClassSymbol("C", Some([Symbol("p")])) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.480: let c = ClassSymbol("C", Some([Symbol("p")])) //│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.255: let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) +//│ ║ l.481: let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) //│ ╙── ^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 -//│ ║ l.256: sor(DefCtx.empty, Ctx.empty, inst) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ c = ClassSymbol("C", Some([Symbol("p")]), undefined, undefined, undefined, _) +//│ c = ClassSymbol("C", Some([Symbol("p")]), undefined, undefined) //│ inst = Instantiate( -//│ ValueRef( -//│ ClassSymbol( -//│ "C", -//│ Some([Symbol("p")]), -//│ undefined, -//│ undefined, -//│ undefined, -//│ _ -//│ ) -//│ ), +//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]), undefined, undefined)), //│ [Arg(None)] //│ ) @@ -304,58 +526,63 @@ fun testBinOp(op, v1, v2) = //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: subterm (Elaborator.scala:517) //│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.298: let def = DefCtx.empty +//│ ║ l.520: let def = DefCtx.empty //│ ╙── ^^^^^^ //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.525: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.525: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.296: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] +//│ ║ l.518: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] //│ ╙── ^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.296: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] +//│ ║ l.518: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] //│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 -//│ ║ l.303: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^^^^^^^^^^^^^^^^^ :expect 12 testBinOp("+", 10, 2) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) //│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' :expect true testBinOp("==", 10, 10) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) //│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' :expect false testBinOp("===", 10, "10") //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) //│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' :expect false testBinOp("&&", true, false) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) //│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' fun testUnaryOp(op, v) = @@ -369,35 +596,40 @@ fun testUnaryOp(op, v) = //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: subterm (Elaborator.scala:517) //│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.364: let def = DefCtx.empty +//│ ║ l.591: let def = DefCtx.empty //│ ╙── ^^^^^^ //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.595: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.595: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.362: let args = [Arg(None, ValueLit(v))] +//│ ║ l.589: let args = [Arg(None, ValueLit(v))] //│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 -//│ ║ l.368: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^^^^^^^^^^^^^^^^^ :expect -10 testUnaryOp("-", 10) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) //│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' :expect false testUnaryOp("!", true) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:225) +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) //│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' :re @@ -423,36 +655,46 @@ let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, Valu prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.655: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) //│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.423: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ║ l.655: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ ╙── ^^^^^^ //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.655: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.655: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.422: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ║ l.654: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.422: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ║ l.654: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.422: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ║ l.654: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.422: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ║ l.654: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) //│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 -//│ ║ l.423: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ c = Scoped( //│ [Symbol("x")], @@ -467,26 +709,36 @@ let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymb prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.709: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) //│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.467: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ║ l.709: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ ╙── ^^^^^^ //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.709: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.709: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 6 arguments, got 2 -//│ ║ l.466: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.708: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) //│ ╙── ^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 6 arguments, got 2 -//│ ║ l.466: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.708: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) //│ ╙── ^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 -//│ ║ l.467: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ c = Scoped( //│ [Symbol("x")], @@ -498,7 +750,7 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ [ //│ Arm( //│ Cls( -//│ ClassSymbol("Bool", None, undefined, undefined, undefined, _), +//│ ClassSymbol("Bool", None, undefined, undefined), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(1), false) @@ -506,7 +758,7 @@ prop(DefCtx.empty, Ctx.empty, Cache.empty, c) //│ Arm(Lit(8), Return(ValueLit(2), false)), //│ Arm( //│ Cls( -//│ ClassSymbol("Int", None, undefined, undefined, undefined, _), +//│ ClassSymbol("Int", None, undefined, undefined), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(3), false) @@ -528,10 +780,10 @@ val defs = DefCtx.empty.add(fPath, f_gen, true) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: subterm (Elaborator.scala:517) //│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.527: val defs = DefCtx.empty.add(fPath, f_gen, true) +//│ ║ l.779: val defs = DefCtx.empty.add(fPath, f_gen, true) //│ ╙── ^^^^^^ //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ M = ValueRef(Symbol("M")) //│ defs = undefined @@ -541,65 +793,73 @@ val defs = DefCtx.empty.add(fPath, f_gen, true) val callF = Call(fPath, [Arg(None, ValueLit(12))]) sor(defs, Ctx.empty, callF) //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.794: sor(defs, Ctx.empty, callF) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.794: sor(defs, Ctx.empty, callF) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.541: val callF = Call(fPath, [Arg(None, ValueLit(12))]) +//│ ║ l.793: val callF = Call(fPath, [Arg(None, ValueLit(12))]) //│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 3 -//│ ║ l.542: sor(defs, Ctx.empty, callF) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:997:38) -//│ at REPL205:1:284 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None)]) val ctxXY = Ctx.empty .add(ValueRef(x), mkLit(10)) .add(ValueRef(y), mkLit(32)) -//│ ctxXY = Ctx(_) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.815: val ctxXY = Ctx.empty +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ ctxXY = undefined // x + y val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) printCode(blockAdd) prop(defs, ctxXY, Cache.empty, blockAdd) //│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.831: prop(defs, ctxXY, Cache.empty, blockAdd) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.831: prop(defs, ctxXY, Cache.empty, blockAdd) +//│ ╙── ^^^^^ +//│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.574: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +//│ ║ l.829: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) //│ ╙── ^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.574: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +//│ ║ l.829: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) //│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 -//│ ║ l.576: prop(defs, ctxXY, Cache.empty, blockAdd) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:650:38) -//│ at showArg (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:654:18) +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:637:38) +//│ at showArg (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:641:18) //│ at Array.map () -//│ at Block.showArgs (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:658:33) -//│ at Block.showResult (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:672:20) -//│ at Block.showBlock (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:868:20) -//│ at Block.show (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:939:20) -//│ at Block.printCode (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:946:17) +//│ at Block.showArgs (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:645:33) +//│ at Block.showResult (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:659:20) +//│ at Block.showBlock (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:854:20) +//│ at Block.show (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:925:20) +//│ at Block.printCode (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:932:17) //│ at REPL213:1:436 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ blockAdd = Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) @@ -608,10 +868,20 @@ val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit printCode(blockBranch) prop(defs, Ctx.empty, Cache.empty, blockBranch) //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 -//│ ║ l.609: prop(defs, Ctx.empty, Cache.empty, blockBranch) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.869: prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.869: prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.869: prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ ╙── ^^^^^ //│ > let z //│ > if 1 is //│ > 1 then @@ -621,18 +891,8 @@ prop(defs, Ctx.empty, Cache.empty, blockBranch) //│ > else z = 3 //│ > z //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1227:38) -//│ at REPL217:1:1322 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ blockBranch = Scoped( //│ [Symbol("z")], //│ Match( @@ -650,10 +910,20 @@ val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), printCode(earlyRetBlock) prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 -//│ ║ l.651: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.911: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.911: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.911: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ ╙── ^^^^^ //│ > let x //│ > let y //│ > x = false @@ -663,18 +933,8 @@ prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) //│ > y = 20 //│ > y //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1227:38) -//│ at REPL221:1:1222 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ earlyRetBlock = Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( @@ -707,24 +967,24 @@ val res = prop(defs, Ctx.empty, c, nestedBlock) c.add("f", mkDyn(), res.0, res.1) c.printImps() //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 3 arguments, got 4 -//│ ║ l.706: val res = prop(defs, Ctx.empty, c, nestedBlock) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.965: let c = Cache.empty +//│ ╙── ^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.966: val res = prop(defs, Ctx.empty, c, nestedBlock) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.966: val res = prop(defs, Ctx.empty, c, nestedBlock) +//│ ╙── ^^^ //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at ShapeSet.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:1227:38) -//│ at REPL225:1:1693 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ c = Cache(_, _) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ c = undefined //│ nestedBlock = Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( @@ -752,7 +1012,37 @@ c.printImps() //│ ) //│ ) //│ ) -//│ res = undefined +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = member:res⁰ +//│ _2 = class hkmc2.semantics.BlockMemberSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:Block -> Block, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res25, tmp:tmp -> tmp76, tmp:tmp -> tmp77, tmp:block$res -> block$res26, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res54, tmp:tmp -> tmp125, tmp:tmp -> tmp126, tmp:block$res -> block$res27, tmp:tmp -> tmp127, tmp:tmp -> tmp80, tmp:tmp -> tmp128, tmp:tmp -> tmp129, tmp:tmp -> tmp130, tmp:tmp -> tmp131, tmp:tmp -> tmp132, tmp:tmp -> tmp133, tmp:tmp -> tmp134, tmp:block$res -> block$res28, tmp:tmp -> tmp135, tmp:tmp -> tmp81, tmp:tmp -> tmp136, tmp:tmp -> tmp137, tmp:tmp -> tmp138, tmp:tmp -> tmp139, tmp:tmp -> tmp140, tmp:tmp -> tmp141, tmp:tmp -> tmp142, tmp:tmp -> tmp143, tmp:tmp -> tmp144, tmp:tmp -> tmp145, tmp:scrut -> scrut2, tmp:tmp -> tmp146, tmp:tmp -> tmp147, tmp:block$res -> block$res29, tmp:tmp -> tmp148, tmp:tmp -> tmp82, tmp:tmp -> tmp149, tmp:tmp -> tmp83, tmp:tmp -> tmp150, tmp:tmp -> tmp151, tmp:tmp -> tmp152, tmp:block$res -> block$res30, tmp:tmp -> tmp153, tmp:tmp -> tmp154, ctx -> ctx, tmp:tmp -> tmp155, tmp:tmp -> tmp156, member:f_gen -> f_gen, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res55, member:Option -> Option, tmp:block$res -> block$res32, member:defs -> defs, tmp:tmp -> tmp84, member:fPath -> fPath, member:M -> M, member:Shape -> Shape, member:fSym -> fSym, member:SpecializeHelpers -> SpecializeHelpers1, tmp:block$res -> block$res33, tmp:tmp -> tmp85, y -> y1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res34, tmp:tmp -> tmp86, tmp:tmp -> tmp87, tmp:block$res -> block$res56, ctx2 -> ctx2, tmp:tmp -> tmp157, tmp:tmp -> tmp158, tmp:tmp -> tmp159, tmp:tmp -> tmp160, member:callF -> callF, tmp:block$res -> block$res35, tmp:selRes -> selRes, tmp:tmp -> tmp88, member:Predef -> Predef, tmp:block$res -> block$res36, member:Block -> Block1, tmp:block$res -> block$res57, tmp:tmp -> tmp161, tmp:tmp -> tmp162, tmp:tmp -> tmp163, tmp:block$res -> block$res37, tmp:tmp -> tmp164, member:ctxXY -> ctxXY, tmp:block$res -> block$res38, tmp:block$res -> block$res58, member:blockAdd -> blockAdd, tmp:block$res -> block$res39, member:selPath -> selPath, member:C -> C, member:x -> x2, tmp:block$res -> block$res59, tmp:tmp -> tmp165, tmp:tmp -> tmp166, tmp:tmp -> tmp167, tmp:tmp -> tmp168, ctx -> ctx1, tmp:tmp -> tmp169, tmp:tmp -> tmp170, tmp:tmp -> tmp171, member:blockBranch -> blockBranch, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res40, tmp:tmp -> tmp89, tmp:block$res -> block$res2, tmp:tmp -> tmp90, tmp:tmp -> tmp91, tmp:tmp -> tmp92, tmp:tmp -> tmp93, tmp:tmp -> tmp94, tmp:block$res -> block$res3, tmp:tmp -> tmp95, member:tup -> tup, tmp:block$res -> block$res4, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res41, tmp:block$res -> block$res6, tmp:tmp -> tmp96, tmp:tmp -> tmp2, tmp:tmp -> tmp97, tmp:tmp -> tmp3, tmp:tmp -> tmp98, tmp:tmp -> tmp99, tmp:tmp -> tmp100, tmp:tmp -> tmp101, c -> c, tmp:scrut -> scrut, tmp:block$res -> block$res60, tmp:tmp -> tmp172, tmp:block$res -> block$res7, tmp:tmp -> tmp173, tmp:tmp -> tmp4, tmp:tmp -> tmp174, inst -> inst, tmp:tmp -> tmp175, tmp:tmp -> tmp176, tmp:tmp -> tmp177, tmp:tmp -> tmp178, tmp:tmp -> tmp179, tmp:tmp -> tmp180, tmp:block$res -> block$res8, tmp:tmp -> tmp181, tmp:tmp -> tmp5, tmp:tmp -> tmp182, tmp:tmp -> tmp183, tmp:tmp -> tmp184, tmp:tmp -> tmp185, tmp:tmp -> tmp186, tmp:tmp -> tmp187, tmp:tmp -> tmp188, tmp:block$res -> block$res9, tmp:block$res -> block$res42, tmp:tmp -> tmp189, tmp:tmp -> tmp6, tmp:tmp -> tmp102, tmp:tmp -> tmp190, tmp:tmp -> tmp103, tmp:tmp -> tmp191, tmp:tmp -> tmp104, tmp:tmp -> tmp192, tmp:tmp -> tmp105, tmp:tmp -> tmp106, member:earlyRetBlock -> earlyRetBlock, tmp:tmp -> tmp107, tmp:tmp -> tmp108, member:testBinOp -> testBinOp, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:tmp -> tmp10, tmp:tmp -> tmp11, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:tmp -> tmp14, tmp:block$res -> block$res12, tmp:tmp -> tmp15, arrSp -> arrSp, tmp:block$res -> block$res13, tmp:block$res -> block$res61, tmp:tmp -> tmp16, tmp:tmp -> tmp193, tmp:tmp -> tmp17, tmp:tmp -> tmp194, tmp:tmp -> tmp18, tmp:tmp -> tmp195, tmp:tmp -> tmp196, tmp:tmp -> tmp197, tmp:tmp -> tmp198, tmp:tmp -> tmp199, tmp:tmp -> tmp200, tmp:tmp -> tmp201, tmp:block$res -> block$res14, tmp:tmp -> tmp202, tmp:tmp -> tmp19, tmp:tmp -> tmp203, tmp:tmp -> tmp204, tmp:tmp -> tmp205, tmp:tmp -> tmp206, tmp:tmp -> tmp207, tmp:block$res -> block$res43, tmp:tmp -> tmp208, tmp:tmp -> tmp209, tmp:block$res -> block$res15, tmp:tmp -> tmp210, tmp:tmp -> tmp20, tmp:tmp -> tmp211, member:nestedBlock -> nestedBlock, tmp:block$res -> block$res44, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, tmp:block$res -> block$res45, a -> a, tmp:block$res -> block$res46, tmp:block$res -> block$res47, member:testUnaryOp -> testUnaryOp, x -> x, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, c -> c3, tmp:tmp -> tmp32, tmp:tmp -> tmp33, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, tmp:tmp -> tmp40, tmp:block$res -> block$res48, tmp:block$res -> block$res62, tmp:tmp -> tmp212, tmp:block$res -> block$res49, tmp:tmp -> tmp213, tmp:tmp -> tmp214, tmp:tmp -> tmp215, tmp:tmp -> tmp216, tmp:block$res -> block$res50, tmp:tmp -> tmp217, tmp:tmp -> tmp218, tmp:block$res -> block$res18, tmp:tmp -> tmp219, tmp:tmp -> tmp41, tmp:tmp -> tmp220, tmp:tmp -> tmp42, tmp:block$res -> block$res51, tmp:tmp -> tmp221, tmp:tmp -> tmp43, tmp:tmp -> tmp222, tmp:tmp -> tmp44, x -> x3, tmp:tmp -> tmp223, tmp:tmp -> tmp45, tmp:tmp -> tmp224, tmp:tmp -> tmp46, tmp:tmp -> tmp225, y -> y2, tmp:tmp -> tmp226, x -> x1, tmp:tmp -> tmp227, tmp:tmp -> tmp228, z -> z, tmp:tmp -> tmp229, tmp:tmp -> tmp230, tmp:tmp -> tmp231, plus -> plus, tmp:tmp -> tmp232, tmp:tmp -> tmp233, y -> y, tmp:tmp -> tmp234, tmp:tmp -> tmp235, tmp:tmp -> tmp236, tmp:tmp -> tmp237, tmp:block$res -> block$res52, tmp:tmp -> tmp238, tmp:tmp -> tmp109, c -> c1, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:tmp -> tmp59, tmp:block$res -> block$res53, tmp:tmp -> tmp110, tmp:tmp -> tmp111, tmp:tmp -> tmp112, tmp:block$res -> block$res21, tmp:tmp -> tmp113, tmp:tmp -> tmp60, tmp:tmp -> tmp114, tmp:tmp -> tmp61, tmp:tmp -> tmp115, tmp:tmp -> tmp116, filterShapes -> filterShapes, tmp:tmp -> tmp117, tmp:tmp -> tmp118, tmp:tmp -> tmp119, tmp:tmp -> tmp120, tmp:tmp -> tmp121, tmp:tmp -> tmp122, tmp:tmp -> tmp123, tmp:tmp -> tmp124, c -> c2, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'res' +//│ ╟── which references the symbol introduced here +//│ ║ l.966: val res = prop(defs, Ctx.empty, c, nestedBlock) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] ReferenceError: res is not defined +//│ at REPL229:1:42 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) val2path(1) //│ = [End(), ValueLit(1)] @@ -766,13 +1056,13 @@ val2path([1, 2, 3]) class TestClass(val a, val b) val2path(TestClass(1, 2)) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:589:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:570:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:573:32) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:577:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:558:20) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:438:36) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:576:47) +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:441:51) //│ at REPL237:1:490 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) @@ -782,13 +1072,13 @@ val2path(TestClass(1, 2)) val2path(TestClass(1, [1,2])) //│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:176) +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:589:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:570:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:573:32) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:577:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:558:20) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:438:36) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:576:47) +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:441:51) //│ at REPL240:1:168 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) @@ -797,26 +1087,28 @@ val2path(TestClass(1, [1,2])) :sjs class C(val x) -//│ JS (unsanitized): +//│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let C2; -//│ C2 = function C(x5) { -//│ return globalThis.Object.freeze(new C.class(x5)); +//│ C2 = function C(x4) { +//│ return globalThis.Object.freeze(new C.class(x4)); //│ }; //│ (class C1 { //│ static { //│ C2.class = this //│ } -//│ constructor(x5) { -//│ this.x = x5; +//│ constructor(x4) { +//│ this.x = x4; //│ } //│ toString() { return runtime.render(this); } //│ static [definitionMetadata] = ["class", "C", ["x"]]; //│ }); +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— :sjs let a = new C(0) -//│ JS (unsanitized): +//│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let a1; a1 = globalThis.Object.freeze(new C2.class(0)); +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ a = C(0) new C diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls index f939f63028..2db794be6d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls @@ -22,6 +22,9 @@ module NonStaged with //│ }); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +module Staged with + fun sq(x) = x * x + staged module Test with fun f(x, y) = x + y fun fib(n) = if n is @@ -29,7 +32,8 @@ staged module Test with 2 then 1 n then fib(n - 1) + fib(n - 2) fun pyth(x, y) = NonStaged.sq(x) + NonStaged.sq(y) - fun entry() = + fun pyth2(x, y) = Staged.sq(x) + Staged.sq(y) + fun test() = f(2, 3) fib(10) pyth(3, 4) @@ -52,10 +56,16 @@ staged module Test with //│ > fun pyth(x, y) = //│ > let tmp4 //│ > let tmp5 -//│ > tmp4 = NonStaged.sq(x) -//│ > tmp5 = NonStaged.sq(y) -//│ > +(tmp4, tmp5) -//│ > fun entry() = +//│ > tmp5 = NonStaged.sq(x) +//│ > tmp4 = NonStaged.sq(y) +//│ > +(tmp5, tmp4) +//│ > fun pyth2(x, y) = +//│ > let tmp6 +//│ > let tmp7 +//│ > tmp6 = Staged.sq(x) +//│ > tmp7 = Staged.sq(y) +//│ > +(tmp6, tmp7) +//│ > fun test() = //│ > __no__symbol__ = Test.f_Lit2_Lit3(2, 3) //│ > __no__symbol__ = Test.fib_Lit10(10) //│ > Test.pyth_Lit3_Lit4(3, 4) @@ -173,25 +183,27 @@ staged module Test with //│ > fun pyth_Lit3_Lit4(x, y) = //│ > let tmp4 //│ > let tmp5 -//│ > tmp4 = 9 -//│ > tmp5 = 16 +//│ > tmp5 = 9 +//│ > tmp4 = 16 //│ > 25 -//│ > Map(5) { +//│ > Map(6) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'fib' => [Function: fib_gen], //│ > 'pyth' => [Function: pyth_gen], -//│ > 'entry' => [Function: entry_gen] +//│ > 'pyth2' => [Function: pyth2_gen], +//│ > 'test' => [Function: test_gen] //│ > } -//│ > Map(2) { +//│ > Map(3) { //│ > [class Test] { //│ > 'cache$Test': FunCache { cache: [Map] }, -//│ > 'generatorMap$Test': Map(5) { +//│ > 'generatorMap$Test': Map(6) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'fib' => [Function: fib_gen], //│ > 'pyth' => [Function: pyth_gen], -//│ > 'entry' => [Function: entry_gen] +//│ > 'pyth2' => [Function: pyth2_gen], +//│ > 'test' => [Function: test_gen] //│ > } //│ > } => ModuleSymbol { //│ > name: 'Test', @@ -205,5 +217,12 @@ staged module Test with //│ > } => ModuleSymbol { //│ > name: 'NonStaged', //│ > value: [class NonStaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > }, +//│ > [class Staged] { +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Staged' ] +//│ > } => ModuleSymbol { +//│ > name: 'Staged', +//│ > value: [class Staged] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } //│ > } + From f44cde4aaab4eababe5f60c57edfd2e42888a181 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 28 Mar 2026 21:09:49 +0800 Subject: [PATCH 390/654] small change to test --- .../mlscript/block-staging/ShapeProp2.mls | 103 +++++------------- 1 file changed, 30 insertions(+), 73 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls index 2db794be6d..86613dcf85 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls @@ -34,9 +34,12 @@ staged module Test with fun pyth(x, y) = NonStaged.sq(x) + NonStaged.sq(y) fun pyth2(x, y) = Staged.sq(x) + Staged.sq(y) fun test() = - f(2, 3) - fib(10) + let five = f(2, 3) + fib(five) pyth(3, 4) + fun test2(n) = + pyth(n, 2) + fib(n * 2) //│ > fun f(x, y) = +(x, y) //│ > fun fib(n) = //│ > let n @@ -56,9 +59,9 @@ staged module Test with //│ > fun pyth(x, y) = //│ > let tmp4 //│ > let tmp5 -//│ > tmp5 = NonStaged.sq(x) -//│ > tmp4 = NonStaged.sq(y) -//│ > +(tmp5, tmp4) +//│ > tmp4 = NonStaged.sq(x) +//│ > tmp5 = NonStaged.sq(y) +//│ > +(tmp4, tmp5) //│ > fun pyth2(x, y) = //│ > let tmp6 //│ > let tmp7 @@ -66,70 +69,11 @@ staged module Test with //│ > tmp7 = Staged.sq(y) //│ > +(tmp6, tmp7) //│ > fun test() = -//│ > __no__symbol__ = Test.f_Lit2_Lit3(2, 3) -//│ > __no__symbol__ = Test.fib_Lit10(10) +//│ > let five +//│ > five = Test.f_Lit2_Lit3(2, 3) +//│ > __no__symbol__ = Test.fib_Lit5(five) //│ > Test.pyth_Lit3_Lit4(3, 4) //│ > fun f_Lit2_Lit3(x, y) = 5 -//│ > fun fib_Lit10(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > n = n -//│ > tmp = 9 -//│ > tmp1 = Test.fib_Lit9(tmp) -//│ > tmp2 = 8 -//│ > tmp3 = Test.fib_Lit8(tmp2) -//│ > 55 -//│ > fun fib_Lit9(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > n = n -//│ > tmp = 8 -//│ > tmp1 = Test.fib_Lit8(tmp) -//│ > tmp2 = 7 -//│ > tmp3 = Test.fib_Lit7(tmp2) -//│ > 34 -//│ > fun fib_Lit8(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > n = n -//│ > tmp = 7 -//│ > tmp1 = Test.fib_Lit7(tmp) -//│ > tmp2 = 6 -//│ > tmp3 = Test.fib_Lit6(tmp2) -//│ > 21 -//│ > fun fib_Lit7(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > n = n -//│ > tmp = 6 -//│ > tmp1 = Test.fib_Lit6(tmp) -//│ > tmp2 = 5 -//│ > tmp3 = Test.fib_Lit5(tmp2) -//│ > 13 -//│ > fun fib_Lit6(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > n = n -//│ > tmp = 5 -//│ > tmp1 = Test.fib_Lit5(tmp) -//│ > tmp2 = 4 -//│ > tmp3 = Test.fib_Lit4(tmp2) -//│ > 8 //│ > fun fib_Lit5(n) = //│ > let n //│ > let tmp @@ -183,27 +127,40 @@ staged module Test with //│ > fun pyth_Lit3_Lit4(x, y) = //│ > let tmp4 //│ > let tmp5 -//│ > tmp5 = 9 -//│ > tmp4 = 16 +//│ > tmp4 = 9 +//│ > tmp5 = 16 //│ > 25 -//│ > Map(6) { +//│ > fun test2(n) = +//│ > let tmp8 +//│ > __no__symbol__ = Test.pyth_Dyn_Lit2(n, 2) +//│ > tmp8 = *(n, 2) +//│ > Test.fib(tmp8) +//│ > fun pyth_Dyn_Lit2(x, y) = +//│ > let tmp4 +//│ > let tmp5 +//│ > tmp4 = NonStaged.sq(x) +//│ > tmp5 = 4 +//│ > +(tmp4, tmp5) +//│ > Map(7) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'fib' => [Function: fib_gen], //│ > 'pyth' => [Function: pyth_gen], //│ > 'pyth2' => [Function: pyth2_gen], -//│ > 'test' => [Function: test_gen] +//│ > 'test' => [Function: test_gen], +//│ > 'test2' => [Function: test2_gen] //│ > } //│ > Map(3) { //│ > [class Test] { //│ > 'cache$Test': FunCache { cache: [Map] }, -//│ > 'generatorMap$Test': Map(6) { +//│ > 'generatorMap$Test': Map(7) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'fib' => [Function: fib_gen], //│ > 'pyth' => [Function: pyth_gen], //│ > 'pyth2' => [Function: pyth2_gen], -//│ > 'test' => [Function: test_gen] +//│ > 'test' => [Function: test_gen], +//│ > 'test2' => [Function: test2_gen] //│ > } //│ > } => ModuleSymbol { //│ > name: 'Test', From f564e3dc28cfc512b7533bb4cbb4f655094063ed Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 28 Mar 2026 23:21:07 +0800 Subject: [PATCH 391/654] rename the file --- .../mlscript/block-staging/ShapeProp2.mls | 185 --- .../block-staging/ShapeSetHelpers.mls | 1066 +++++++++++++++++ 2 files changed, 1066 insertions(+), 185 deletions(-) delete mode 100644 hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls deleted file mode 100644 index 86613dcf85..0000000000 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls +++ /dev/null @@ -1,185 +0,0 @@ -:js -:staging -:noFreeze - -:sjs -module NonStaged with - fun sq(x) = x * x -//│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let NonStaged1; -//│ (class NonStaged { -//│ static { -//│ NonStaged1 = this -//│ } -//│ constructor() { -//│ runtime.Unit; -//│ } -//│ static sq(x) { -//│ return x * x -//│ } -//│ toString() { return runtime.render(this); } -//│ static [definitionMetadata] = ["class", "NonStaged"]; -//│ }); -//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— - -module Staged with - fun sq(x) = x * x - -staged module Test with - fun f(x, y) = x + y - fun fib(n) = if n is - 1 then 1 - 2 then 1 - n then fib(n - 1) + fib(n - 2) - fun pyth(x, y) = NonStaged.sq(x) + NonStaged.sq(y) - fun pyth2(x, y) = Staged.sq(x) + Staged.sq(y) - fun test() = - let five = f(2, 3) - fib(five) - pyth(3, 4) - fun test2(n) = - pyth(n, 2) - fib(n * 2) -//│ > fun f(x, y) = +(x, y) -//│ > fun fib(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > if n is -//│ > 1 then 1 -//│ > 2 then 1 -//│ > else n = n -//│ > tmp = -(n, 1) -//│ > tmp1 = Test.fib(tmp) -//│ > tmp2 = -(n, 2) -//│ > tmp3 = Test.fib(tmp2) -//│ > +(tmp1, tmp3) -//│ > fun pyth(x, y) = -//│ > let tmp4 -//│ > let tmp5 -//│ > tmp4 = NonStaged.sq(x) -//│ > tmp5 = NonStaged.sq(y) -//│ > +(tmp4, tmp5) -//│ > fun pyth2(x, y) = -//│ > let tmp6 -//│ > let tmp7 -//│ > tmp6 = Staged.sq(x) -//│ > tmp7 = Staged.sq(y) -//│ > +(tmp6, tmp7) -//│ > fun test() = -//│ > let five -//│ > five = Test.f_Lit2_Lit3(2, 3) -//│ > __no__symbol__ = Test.fib_Lit5(five) -//│ > Test.pyth_Lit3_Lit4(3, 4) -//│ > fun f_Lit2_Lit3(x, y) = 5 -//│ > fun fib_Lit5(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > n = n -//│ > tmp = 4 -//│ > tmp1 = Test.fib_Lit4(tmp) -//│ > tmp2 = 3 -//│ > tmp3 = Test.fib_Lit3(tmp2) -//│ > 5 -//│ > fun fib_Lit4(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > n = n -//│ > tmp = 3 -//│ > tmp1 = Test.fib_Lit3(tmp) -//│ > tmp2 = 2 -//│ > tmp3 = Test.fib_Lit2(tmp2) -//│ > 3 -//│ > fun fib_Lit3(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > n = n -//│ > tmp = 2 -//│ > tmp1 = Test.fib_Lit2(tmp) -//│ > tmp2 = 1 -//│ > tmp3 = Test.fib_Lit1(tmp2) -//│ > 2 -//│ > fun fib_Lit2(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > 1 -//│ > fun fib_Lit1(n) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > 1 -//│ > fun pyth_Lit3_Lit4(x, y) = -//│ > let tmp4 -//│ > let tmp5 -//│ > tmp4 = 9 -//│ > tmp5 = 16 -//│ > 25 -//│ > fun test2(n) = -//│ > let tmp8 -//│ > __no__symbol__ = Test.pyth_Dyn_Lit2(n, 2) -//│ > tmp8 = *(n, 2) -//│ > Test.fib(tmp8) -//│ > fun pyth_Dyn_Lit2(x, y) = -//│ > let tmp4 -//│ > let tmp5 -//│ > tmp4 = NonStaged.sq(x) -//│ > tmp5 = 4 -//│ > +(tmp4, tmp5) -//│ > Map(7) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'fib' => [Function: fib_gen], -//│ > 'pyth' => [Function: pyth_gen], -//│ > 'pyth2' => [Function: pyth2_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] -//│ > } -//│ > Map(3) { -//│ > [class Test] { -//│ > 'cache$Test': FunCache { cache: [Map] }, -//│ > 'generatorMap$Test': Map(7) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'fib' => [Function: fib_gen], -//│ > 'pyth' => [Function: pyth_gen], -//│ > 'pyth2' => [Function: pyth2_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'Test', -//│ > value: [class Test] { -//│ > 'cache$Test': [FunCache], -//│ > 'generatorMap$Test': [Map] -//│ > } -//│ > }, -//│ > [class NonStaged] { -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NonStaged' ] -//│ > } => ModuleSymbol { -//│ > name: 'NonStaged', -//│ > value: [class NonStaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > }, -//│ > [class Staged] { -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Staged' ] -//│ > } => ModuleSymbol { -//│ > name: 'Staged', -//│ > value: [class Staged] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > } -//│ > } - diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls new file mode 100644 index 0000000000..f2bc0d25bd --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -0,0 +1,1066 @@ +:js + +import "../../mlscript-compile/Block.mls" +import "../../mlscript-compile/Shape.mls" +import "../../mlscript-compile/ShapeSet.mls" +import "../../mlscript-compile/Option.mls" +import "../../mlscript-compile/CachedHash.mls" +import "../../mlscript-compile/SpecializeHelpers.mls" +import "../../mlscript-compile/Runtime.mls" +open Option +open Block { Symbol, ClassSymbol, Tup, Case } +open Shape { Arr, Class, Dyn, Lit } +open ShapeSet +open SpecializeHelpers { sov } + +mkBot() +//│ = {} + +mkLit(0) +//│ = {Lit(0)} + +mkDyn() +//│ = {Dyn()} + +mkDyn() == mkDyn() +//│ = false + +mkArr([mkLit(0)]) +//│ = {Arr([Lit(0)])} + +assert(mkBot().isEmpty()) + +Shape.static(Shape.Lit("Hi")) +//│ = true + +// valOf +:re +valOf(Dyn()) +//│ ═══[RUNTIME ERROR] Error: valOf on Dyn + +valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)])])) +//│ = [1, [2, 3]] + +:re +valOf(mkDyn()) +//│ ═══[RUNTIME ERROR] Error: Unknown shape + +valOfSet(mkLit(0)) +//│ = 0 + +// sel + +let arrSp = mkArr([mkLit(0), mkDyn()]) +//│ arrSp = {Arr([Lit(0), Dyn()])} + +selSet(arrSp, mkLit(0)) +//│ = {Lit(0)} + +selSet(arrSp, mkLit(1)) +//│ = {Dyn()} + +selSet(mkDyn(), mkLit(5)) +//│ = {Dyn()} + +let a = Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], undefined), [Lit(42), Lit("c")]) +let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) +selSet(x, liftMany([Lit("a"), Lit(2)])) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 6 +//│ ║ l.65: let a = Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], undefined), [Lit(42), Lit("c")]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ = {Dyn(),Lit(undefined)} +//│ a = Class( +//│ ClassSymbol("A", undefined, undefined, Some(["a", "b"])), +//│ [Lit(42), Lit("c")] +//│ ) +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} + +selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) +//│ = {Lit(1)} + +// union + +let x = liftMany([Lit(1), Lit(2)]) +let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +union(x, y) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.86: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +//│ ╙── ^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.86: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +//│ ╙── ^^^^^^^^^^^^^^^^^ +//│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} +//│ x = {Lit(1),Lit(2)} +//│ y = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1)} + +// filterSet + +filterSet(mkDyn(), Block.Lit("a")) +//│ = {Lit("a")} + +filterSet(mkDyn(), Block.Tup(2)) +//│ = {Arr([fun Dyn { class: class Dyn }, fun Dyn { class: class Dyn }])} + +let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.110: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ ╙── ^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.110: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null)} + +// wildcard is represented as dflt in Match + +filterSet(filterShapes, Block.Lit(1)) +//│ = {Lit(1)} + +assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) + +filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) +//│ = {Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")])} + +filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) +//│ = {Lit(1)} + +filterSet(filterShapes, Tup(3)) +//│ = {Arr([Lit(1), Lit(2), Lit(3)])} + +filterSet(filterShapes, Tup(4)) +//│ = {} + +assert(filterSet(filterShapes, Tup(0)).isEmpty()) + +open Block + +// Ctx + +let ctx = Ctx.empty +let x = ValueRef(Symbol("x")) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.148: let ctx = Ctx.empty +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ ctx = undefined +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ╟── which references the symbol introduced here +//│ ║ l.149: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} + +ctx.add(x, mkLit(1)) +ctx.get(x) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.179: ctx.add(x, mkLit(1)) +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.149: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.180: ctx.get(x) +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.149: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') +//│ at REPL111:1:68 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) + +ctx.add(x, mkLit(2)) +ctx.get(x) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, tmp:block$res -> block$res33, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.235: ctx.add(x, mkLit(2)) +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.149: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = x⁰ +//│ _2 = class hkmc2.semantics.VarSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, tmp:block$res -> block$res33, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.236: ctx.get(x) +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.149: let x = ValueRef(Symbol("x")) +//│ ╙── ^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') +//│ at REPL114:1:68 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) + +let y = ValueRef(Symbol("y")) +ctx.add(y, mkLit("a")) +ctx.get(y) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') +//│ at REPL117:1:176 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) +//│ y = ValueRef(Symbol("y")) + +let ctx2 = ctx.clone +ctx2.add(y, mkLit("b")) +ctx2.get(y) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'clone') +//│ at REPL121:1:44 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) +//│ ctx2 = undefined + +ctx.get(y) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'get') +//│ at REPL125:1:42 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) + + +// DefCtx + + +// Cache + + +// sop + +sop(Ctx.empty, ValueLit(42)) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sop +//│ ║ l.351: sop(Ctx.empty, ValueLit(42)) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.351: sop(Ctx.empty, ValueLit(42)) +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. + +sop(Ctx.empty, ValueLit(false)) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sop +//│ ║ l.366: sop(Ctx.empty, ValueLit(false)) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.366: sop(Ctx.empty, ValueLit(false)) +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. + +sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sop +//│ ║ l.381: sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.381: sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. + + +val x = Symbol("x") +val C = ClassSymbol("C", Some(["a"])) +val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) +let ctx = Ctx.empty +ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) +sop(ctx, selPath) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.400: let ctx = Ctx.empty +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sop +//│ ║ l.402: sop(ctx, selPath) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.398: val C = ClassSymbol("C", Some(["a"])) +//│ ╙── ^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ C = ClassSymbol("C", Some(["a"]), undefined, undefined) +//│ ctx = undefined +//│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) +//│ x = Symbol("x") + +// sor + +val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +sor(DefCtx.empty, Ctx.empty, tup) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.429: sor(DefCtx.empty, Ctx.empty, tup) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.429: sor(DefCtx.empty, Ctx.empty, tup) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.429: sor(DefCtx.empty, Ctx.empty, tup) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.428: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.428: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ tup = Tuple([Arg(None), Arg(None)]) + +let c = ClassSymbol("C", Some([Symbol("p")])) +let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) +sor(DefCtx.empty, Ctx.empty, inst) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.462: sor(DefCtx.empty, Ctx.empty, inst) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.462: sor(DefCtx.empty, Ctx.empty, inst) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.462: sor(DefCtx.empty, Ctx.empty, inst) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.460: let c = ClassSymbol("C", Some([Symbol("p")])) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.461: let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ c = ClassSymbol("C", Some([Symbol("p")]), undefined, undefined) +//│ inst = Instantiate( +//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]), undefined, undefined)), +//│ [Arg(None)] +//│ ) + +fun testBinOp(op, v1, v2) = + let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] + let c = Call(ValueRef(Symbol(op)), args) + let def = DefCtx.empty + def.add(ValueRef(Symbol("+")), undefined, false) + def.add(ValueRef(Symbol("==")), undefined, false) + def.add(ValueRef(Symbol("===")), undefined, false) + def.add(ValueRef(Symbol("&&")), undefined, false) + sor(def, Ctx.empty, c).1.lit +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.500: let def = DefCtx.empty +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.505: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.505: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.498: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.498: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ + +:expect 12 +testBinOp("+", 10, 2) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) +//│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' + +:expect true +testBinOp("==", 10, 10) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) +//│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' + +:expect false +testBinOp("===", 10, "10") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' + +:expect false +testBinOp("&&", true, false) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' + +fun testUnaryOp(op, v) = + let args = [Arg(None, ValueLit(v))] + let c = Call(ValueRef(Symbol(op)), args) + let def = DefCtx.empty + def.add(ValueRef(Symbol("-")), undefined, false) + def.add(ValueRef(Symbol("!")), undefined, false) + def.add(ValueRef(Symbol("~")), undefined, false) + sor(def, Ctx.empty, c).1.lit +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.571: let def = DefCtx.empty +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.575: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.575: sor(def, Ctx.empty, c).1.lit +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.569: let args = [Arg(None, ValueLit(v))] +//│ ╙── ^^^^^^^^^^^^^^^^^^^ + +:expect -10 +testUnaryOp("-", 10) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) +//│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' + +:expect false +testUnaryOp("!", true) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) +//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' + +:re +testUnaryOp("~", 10) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. + + +// prop + +let x = Symbol("x") +let y = Symbol("y") +let z = Symbol("z") +let plus = ValueRef(Symbol("+")) +//│ plus = ValueRef(Symbol("+")) +//│ x = Symbol("x") +//│ y = Symbol("y") +//│ z = Symbol("z") + +// let x +// x = 1 + 1 +// x + 1 +let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.635: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.635: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.635: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.635: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.634: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.634: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.634: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.634: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ c = Scoped( +//│ [Symbol("x")], +//│ Assign( +//│ Symbol("x"), +//│ Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), +//│ Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) +//│ ) +//│ ) + +let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.689: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.689: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.689: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.689: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) +//│ ╙── ^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.688: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ╙── ^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 +//│ ║ l.688: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ╙── ^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ c = Scoped( +//│ [Symbol("x")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(9), +//│ Match( +//│ ValueRef(Symbol("x")), +//│ [ +//│ Arm( +//│ Cls( +//│ ClassSymbol("Bool", None, undefined, undefined), +//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) +//│ ), +//│ Return(ValueLit(1), false) +//│ ), +//│ Arm(Lit(8), Return(ValueLit(2), false)), +//│ Arm( +//│ Cls( +//│ ClassSymbol("Int", None, undefined, undefined), +//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) +//│ ), +//│ Return(ValueLit(3), false) +//│ ) +//│ ], +//│ Some(Return(ValueLit(0), false)), +//│ End() +//│ ) +//│ ) +//│ ) + +fun f_gen(args) = + [mkLit(24), Symbol("f1")] // A stub for the actual f_gen + +val fSym = Symbol("f") +val M = ValueRef(Symbol("M")) +val fPath = Select(M, fSym) +val defs = DefCtx.empty.add(fPath, f_gen, true) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: DefCtx +//│ ║ l.759: val defs = DefCtx.empty.add(fPath, f_gen, true) +//│ ╙── ^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ M = ValueRef(Symbol("M")) +//│ defs = undefined +//│ fPath = Select(ValueRef(Symbol("M")), Symbol("f")) +//│ fSym = Symbol("f") + +val callF = Call(fPath, [Arg(None, ValueLit(12))]) +sor(defs, Ctx.empty, callF) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: sor +//│ ║ l.774: sor(defs, Ctx.empty, callF) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.774: sor(defs, Ctx.empty, callF) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.773: val callF = Call(fPath, [Arg(None, ValueLit(12))]) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None)]) + +val ctxXY = Ctx.empty + .add(ValueRef(x), mkLit(10)) + .add(ValueRef(y), mkLit(32)) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.795: val ctxXY = Ctx.empty +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ ctxXY = undefined + +// x + y +val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +printCode(blockAdd) +prop(defs, ctxXY, Cache.empty, blockAdd) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.811: prop(defs, ctxXY, Cache.empty, blockAdd) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.811: prop(defs, ctxXY, Cache.empty, blockAdd) +//│ ╙── ^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.809: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 +//│ ║ l.809: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:637:38) +//│ at showArg (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:641:18) +//│ at Array.map () +//│ at Block.showArgs (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:645:33) +//│ at Block.showResult (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:659:20) +//│ at Block.showBlock (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:854:20) +//│ at Block.show (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:925:20) +//│ at Block.printCode (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:932:17) +//│ at REPL213:1:436 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ blockAdd = Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) + +val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit(1), End())), Arm(Lit(2), Assign(z, ValueLit(2), End()))], Some(Assign(z, ValueLit(3), End())), Return(ValueRef(z), false))) +printCode(blockBranch) +prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.849: prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.849: prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.849: prop(defs, Ctx.empty, Cache.empty, blockBranch) +//│ ╙── ^^^^^ +//│ > let z +//│ > if 1 is +//│ > 1 then +//│ > z = 1 +//│ > 2 then +//│ > z = 2 +//│ > else z = 3 +//│ > z +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ blockBranch = Scoped( +//│ [Symbol("z")], +//│ Match( +//│ ValueLit(1), +//│ [ +//│ Arm(Lit(1), Assign(Symbol("z"), ValueLit(1), End())), +//│ Arm(Lit(2), Assign(Symbol("z"), ValueLit(2), End())) +//│ ], +//│ Some(Assign(Symbol("z"), ValueLit(3), End())), +//│ Return(ValueRef(Symbol("z")), false) +//│ ) +//│ ) + +val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Return(ValueLit(10), false)), Arm(Lit(false), Assign(y, ValueLit(20), End()))], End(), Return(ValueRef(y), false)))) +printCode(earlyRetBlock) +prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.891: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.891: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.891: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) +//│ ╙── ^^^^^ +//│ > let x +//│ > let y +//│ > x = false +//│ > if x is +//│ > true then 10 +//│ > false then +//│ > y = 20 +//│ > y +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ earlyRetBlock = Scoped( +//│ [Symbol("x"), Symbol("y")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(false), +//│ Match( +//│ ValueRef(Symbol("x")), +//│ [ +//│ Arm(Lit(true), Return(ValueLit(10), false)), +//│ Arm(Lit(false), Assign(Symbol("y"), ValueLit(20), End())) +//│ ], +//│ End(), +//│ Return(ValueRef(Symbol("y")), false) +//│ ) +//│ ) +//│ ) + +// let x = true +// let y = false +// if x is +// true then +// if y is +// true then return 1 +// else return 2 +// else return 3 +// return 4 +val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Match(ValueRef(y), [Arm(Lit(true), Return(ValueLit(1), false))], Some(Return(ValueLit(2), false)), End()))], Some(Return(ValueLit(3), false)), Return(ValueLit(4), false))))) +let c = Cache.empty +val res = prop(defs, Ctx.empty, c, nestedBlock) +c.add("f", mkDyn(), res.0, res.1) +c.printImps() +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Cache +//│ ║ l.945: let c = Cache.empty +//│ ╙── ^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: prop +//│ ║ l.946: val res = prop(defs, Ctx.empty, c, nestedBlock) +//│ ╙── ^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: subterm (Elaborator.scala:517) +//│ ╔══[COMPILATION ERROR] Name not found: Ctx +//│ ║ l.946: val res = prop(defs, Ctx.empty, c, nestedBlock) +//│ ╙── ^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ c = undefined +//│ nestedBlock = Scoped( +//│ [Symbol("x"), Symbol("y")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(true), +//│ Assign( +//│ Symbol("y"), +//│ ValueLit(false), +//│ Match( +//│ ValueRef(Symbol("x")), +//│ [ +//│ Arm( +//│ Lit(true), +//│ Match( +//│ ValueRef(Symbol("y")), +//│ [Arm(Lit(true), Return(ValueLit(1), false))], +//│ Some(Return(ValueLit(2), false)), +//│ End() +//│ ) +//│ ) +//│ ], +//│ Some(Return(ValueLit(3), false)), +//│ Return(ValueLit(4), false) +//│ ) +//│ ) +//│ ) +//│ ) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: lookup_! (Scope.scala:131) +//│ FAILURE INFO: Tuple2: +//│ _1 = Tuple2: +//│ _1 = member:res⁰ +//│ _2 = class hkmc2.semantics.BlockMemberSymbol +//│ _2 = Scope: +//│ parentOrCfg = Left of Cfg: +//│ escapeChars = true +//│ useSuperscripts = false +//│ includeZero = false +//│ defaultName = "tmp" +//│ curThis = S of S of globalThis:globalThis⁰ +//│ bindings = HashMap(tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:Block -> Block, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res25, tmp:tmp -> tmp76, tmp:tmp -> tmp77, tmp:block$res -> block$res26, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res54, tmp:tmp -> tmp125, tmp:tmp -> tmp126, tmp:block$res -> block$res27, tmp:tmp -> tmp127, tmp:tmp -> tmp80, tmp:tmp -> tmp128, tmp:tmp -> tmp129, tmp:tmp -> tmp130, tmp:tmp -> tmp131, tmp:tmp -> tmp132, tmp:tmp -> tmp133, tmp:tmp -> tmp134, tmp:block$res -> block$res28, tmp:tmp -> tmp135, tmp:tmp -> tmp81, tmp:tmp -> tmp136, tmp:tmp -> tmp137, tmp:tmp -> tmp138, tmp:tmp -> tmp139, tmp:tmp -> tmp140, tmp:tmp -> tmp141, tmp:tmp -> tmp142, tmp:tmp -> tmp143, tmp:tmp -> tmp144, tmp:tmp -> tmp145, tmp:scrut -> scrut2, tmp:tmp -> tmp146, tmp:tmp -> tmp147, tmp:block$res -> block$res29, tmp:tmp -> tmp148, tmp:tmp -> tmp82, tmp:tmp -> tmp149, tmp:tmp -> tmp83, tmp:tmp -> tmp150, tmp:tmp -> tmp151, tmp:tmp -> tmp152, tmp:block$res -> block$res30, tmp:tmp -> tmp153, tmp:tmp -> tmp154, ctx -> ctx, tmp:tmp -> tmp155, tmp:tmp -> tmp156, member:f_gen -> f_gen, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res55, member:Option -> Option, tmp:block$res -> block$res32, member:defs -> defs, tmp:tmp -> tmp84, member:fPath -> fPath, member:M -> M, member:Shape -> Shape, member:fSym -> fSym, member:SpecializeHelpers -> SpecializeHelpers1, tmp:block$res -> block$res33, tmp:tmp -> tmp85, y -> y1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res34, tmp:tmp -> tmp86, tmp:tmp -> tmp87, tmp:block$res -> block$res56, ctx2 -> ctx2, tmp:tmp -> tmp157, tmp:tmp -> tmp158, tmp:tmp -> tmp159, tmp:tmp -> tmp160, member:callF -> callF, tmp:block$res -> block$res35, tmp:selRes -> selRes, tmp:tmp -> tmp88, member:Predef -> Predef, tmp:block$res -> block$res36, member:Block -> Block1, tmp:block$res -> block$res57, tmp:tmp -> tmp161, tmp:tmp -> tmp162, tmp:tmp -> tmp163, tmp:block$res -> block$res37, tmp:tmp -> tmp164, member:ctxXY -> ctxXY, tmp:block$res -> block$res38, tmp:block$res -> block$res58, member:blockAdd -> blockAdd, tmp:block$res -> block$res39, member:selPath -> selPath, member:C -> C, member:x -> x2, member:Runtime -> Runtime, tmp:block$res -> block$res59, tmp:tmp -> tmp165, tmp:tmp -> tmp166, tmp:tmp -> tmp167, tmp:tmp -> tmp168, ctx -> ctx1, tmp:tmp -> tmp169, tmp:tmp -> tmp170, tmp:tmp -> tmp171, member:blockBranch -> blockBranch, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res40, tmp:tmp -> tmp89, tmp:block$res -> block$res2, tmp:tmp -> tmp90, tmp:tmp -> tmp91, tmp:tmp -> tmp92, tmp:tmp -> tmp93, tmp:tmp -> tmp94, tmp:block$res -> block$res3, tmp:tmp -> tmp95, member:tup -> tup, tmp:block$res -> block$res4, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res41, tmp:block$res -> block$res6, tmp:tmp -> tmp96, tmp:tmp -> tmp2, tmp:tmp -> tmp97, tmp:tmp -> tmp3, tmp:tmp -> tmp98, tmp:tmp -> tmp99, tmp:tmp -> tmp100, tmp:tmp -> tmp101, c -> c, tmp:scrut -> scrut, tmp:block$res -> block$res60, tmp:tmp -> tmp172, tmp:block$res -> block$res7, tmp:tmp -> tmp173, tmp:tmp -> tmp4, tmp:tmp -> tmp174, inst -> inst, tmp:tmp -> tmp175, tmp:tmp -> tmp176, tmp:tmp -> tmp177, tmp:tmp -> tmp178, tmp:tmp -> tmp179, tmp:tmp -> tmp180, tmp:block$res -> block$res8, tmp:tmp -> tmp181, tmp:tmp -> tmp5, tmp:tmp -> tmp182, tmp:tmp -> tmp183, tmp:tmp -> tmp184, tmp:tmp -> tmp185, tmp:tmp -> tmp186, tmp:tmp -> tmp187, tmp:tmp -> tmp188, tmp:block$res -> block$res9, tmp:block$res -> block$res42, tmp:tmp -> tmp189, tmp:tmp -> tmp6, tmp:tmp -> tmp102, tmp:tmp -> tmp190, tmp:tmp -> tmp103, tmp:tmp -> tmp191, tmp:tmp -> tmp104, tmp:tmp -> tmp192, tmp:tmp -> tmp105, tmp:tmp -> tmp106, member:earlyRetBlock -> earlyRetBlock, tmp:tmp -> tmp107, tmp:tmp -> tmp108, member:testBinOp -> testBinOp, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:tmp -> tmp10, tmp:tmp -> tmp11, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:tmp -> tmp14, tmp:block$res -> block$res12, tmp:tmp -> tmp15, arrSp -> arrSp, tmp:block$res -> block$res13, tmp:block$res -> block$res61, tmp:tmp -> tmp16, tmp:tmp -> tmp193, tmp:tmp -> tmp17, tmp:tmp -> tmp194, tmp:tmp -> tmp18, tmp:tmp -> tmp195, tmp:tmp -> tmp196, tmp:tmp -> tmp197, tmp:tmp -> tmp198, tmp:tmp -> tmp199, tmp:tmp -> tmp200, tmp:tmp -> tmp201, tmp:block$res -> block$res14, tmp:tmp -> tmp202, tmp:tmp -> tmp19, tmp:tmp -> tmp203, tmp:tmp -> tmp204, tmp:tmp -> tmp205, tmp:tmp -> tmp206, tmp:tmp -> tmp207, tmp:block$res -> block$res43, tmp:tmp -> tmp208, tmp:tmp -> tmp209, tmp:block$res -> block$res15, tmp:tmp -> tmp210, tmp:tmp -> tmp20, tmp:tmp -> tmp211, member:nestedBlock -> nestedBlock, tmp:block$res -> block$res44, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, tmp:block$res -> block$res45, a -> a, tmp:block$res -> block$res46, tmp:block$res -> block$res47, member:testUnaryOp -> testUnaryOp, x -> x, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, c -> c3, tmp:tmp -> tmp32, tmp:tmp -> tmp33, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, tmp:tmp -> tmp40, tmp:block$res -> block$res48, tmp:block$res -> block$res62, tmp:tmp -> tmp212, tmp:block$res -> block$res49, tmp:tmp -> tmp213, tmp:tmp -> tmp214, tmp:tmp -> tmp215, tmp:tmp -> tmp216, tmp:block$res -> block$res50, tmp:tmp -> tmp217, tmp:tmp -> tmp218, tmp:block$res -> block$res18, tmp:tmp -> tmp219, tmp:tmp -> tmp41, tmp:tmp -> tmp220, tmp:tmp -> tmp42, tmp:block$res -> block$res51, tmp:tmp -> tmp221, tmp:tmp -> tmp43, tmp:tmp -> tmp222, tmp:tmp -> tmp44, x -> x3, tmp:tmp -> tmp223, tmp:tmp -> tmp45, tmp:tmp -> tmp224, tmp:tmp -> tmp46, tmp:tmp -> tmp225, y -> y2, tmp:tmp -> tmp226, x -> x1, tmp:tmp -> tmp227, tmp:tmp -> tmp228, z -> z, tmp:tmp -> tmp229, tmp:tmp -> tmp230, tmp:tmp -> tmp231, plus -> plus, tmp:tmp -> tmp232, tmp:tmp -> tmp233, y -> y, tmp:tmp -> tmp234, tmp:tmp -> tmp235, tmp:tmp -> tmp236, tmp:tmp -> tmp237, tmp:block$res -> block$res52, tmp:tmp -> tmp238, tmp:tmp -> tmp109, c -> c1, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:tmp -> tmp59, tmp:block$res -> block$res53, tmp:tmp -> tmp110, tmp:tmp -> tmp111, tmp:tmp -> tmp112, tmp:block$res -> block$res21, tmp:tmp -> tmp113, tmp:tmp -> tmp60, tmp:tmp -> tmp114, tmp:tmp -> tmp61, tmp:tmp -> tmp115, tmp:tmp -> tmp116, filterShapes -> filterShapes, tmp:tmp -> tmp117, tmp:tmp -> tmp118, tmp:tmp -> tmp119, tmp:tmp -> tmp120, tmp:tmp -> tmp121, tmp:tmp -> tmp122, tmp:tmp -> tmp123, tmp:tmp -> tmp124, c -> c2, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:tmp -> tmp68) +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'res' +//│ ╟── which references the symbol introduced here +//│ ║ l.946: val res = prop(defs, Ctx.empty, c, nestedBlock) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] ReferenceError: res is not defined +//│ at REPL229:1:42 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) + +val2path(1) +//│ = [End(), ValueLit(1)] + +val2path([1, 2, 3]) +//│ = [ +//│ Assign(Symbol("tup_1"), Tuple([Arg(End()), Arg(End()), Arg(End())]), End()), +//│ ValueRef(Symbol("tup_1")) +//│ ] + +class TestClass(val a, val b) +val2path(TestClass(1, 2)) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:577:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:558:20) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:455:36) +//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:458:51) +//│ at REPL237:1:490 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) + + +val2path(TestClass(1, [1,2])) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:577:38) +//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:558:20) +//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:455:36) +//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:458:51) +//│ at REPL240:1:168 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) From 8c93da926c535523049755db30ff0d9d01cd3d10 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 28 Mar 2026 23:27:02 +0800 Subject: [PATCH 392/654] fix compiler test --- hkmc2/js/src/test/scala/hkmc2/CompilerTest.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/js/src/test/scala/hkmc2/CompilerTest.scala b/hkmc2/js/src/test/scala/hkmc2/CompilerTest.scala index e8fc6a727f..c826f9be93 100644 --- a/hkmc2/js/src/test/scala/hkmc2/CompilerTest.scala +++ b/hkmc2/js/src/test/scala/hkmc2/CompilerTest.scala @@ -21,7 +21,7 @@ class CompilerTest extends AnyFunSuite: None .toMap + ("/std/Prelude.mls" -> node.fs.readFileSync(preludePath, "utf-8")) - private val paths = new Paths("/std/Prelude.mls", "/std/Runtime.mjs", "/std/Term.mjs") + private val paths = new Paths("/std/Prelude.mls", "/std/Runtime.mjs", "/std/Term.mjs", "/std/Block.mls", "/std/SpecializeHelpers.mls", "/std/Option.mls", "/std/ShapeSet.mls") private def createCompiler(): (InMemoryFileSystem, Compiler) = val stdLib = loadStandardLibrary() From dae9d6032c6b2129135b32a6540c56f67ed44349 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 28 Mar 2026 23:31:55 +0800 Subject: [PATCH 393/654] fix bug when genMap.get(f) is Unit --- .../mlscript-compile/SpecializeHelpers.mls | 55 +- .../test/mlscript/block-staging/Functions.mls | 224 ++- .../test/mlscript/block-staging/ShapeProp.mls | 1376 ++++------------- 3 files changed, 442 insertions(+), 1213 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 4cdf55f913..81ec0f67c0 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -3,6 +3,7 @@ import "./Shape.mls" import "./Option.mls" import "./ShapeSet.mls" import "./Predef.mls" +import "./Runtime.mls" open Block open Shape @@ -47,9 +48,11 @@ fun sop(ctx, p): ShapeSet = ValueRef(l) then mkDyn() fun sor(ctx, r) = if r is - Path then + Path and let s = sop(ctx, r) - [End(), r, s] + staticSet(s) and val2path(valOfSet(s)) is [blk, res] then [blk, res, s] + else + [End(), r, s] Instantiate(cls, args) then let sym = if cls is ValueRef(s) and s is ClassSymbol then s @@ -94,11 +97,14 @@ fun sor(ctx, r) = if r is let mapPropName = "generatorMap$" + name let cachePropName = "cache$" + name let genMap = value.(mapPropName) - not (genMap is undefined) then // in staged module - let f = genMap.get(symb) - let res = f(...argShapes) - [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] - argShapes.every(staticSet) then // non staged but params known + not (genMap is undefined) and + let f = genMap.get(symb) + not (f is Runtime.Unit) then // staged function + let res = f(...argShapes) + [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] + else + [End(), r, mkDyn()] // TODO + argShapes.every(staticSet) then // non staged function but params known let f = value.(symb) let evaluated = f(...argShapes.map(valOfSet)) let evaluated_path = val2path(evaluated) @@ -108,37 +114,6 @@ fun sor(ctx, r) = if r is else [End(), r, mkDyn()] - // [gen, true] and gen(...argShapes) is [shape, implSymb] then - // [End(), Call(ValueRef(implSymb), args), shape] - // [undefined, false] and f is ValueRef(symb) and // means built in - // let name = symb.name - // args is - // [x] and sop(ctx, x.value).values() is [Shape.Lit(l)] and name is - // "!" then lit(not l) - // "-" then lit(-l) - // "+" then lit(+l) - // [x, y] and sop(ctx, x.value).values() is [Shape.Lit(l1)] and sop(ctx, y.value).values() is [Shape.Lit(l2)] and name is - // "+" then lit(l1 + l2) - // "-" then lit(l1 - l2) - // "*" then lit(l1 * l2) - // "/" then lit(l1 / l2) - // "%" then lit(l1 % l2) - // "==" then lit(l1 == l2) - // "!=" then lit(l1 != l2) - // "<" then lit(l1 < l2) - // "<=" then lit(l1 <= l2) - // ">" then lit(l1 > l2) - // ">=" then lit(l1 >= l2) - // "===" then lit(l1 === l2) - // "!==" then lit(l1 !== l2) - // "&&" then lit(l1 && l2) - // "||" then lit(l1 || l2) - // [funct, false] and argShapes.every((x, _, _) => staticSet(x)) then - // let argVals = argShapes.map((s, _, _) => valOfSet(s)) - // // TODO - // [End(), r, mkDyn()] - // else [End(), r, mkDyn()] - fun prop(ctx, b) = if b is End then [b, mkBot()] Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then @@ -187,8 +162,6 @@ fun prop(ctx, b) = if b is else [Match(p, filteredArms.2, None, End()), filteredArms.1] -// FIXME: implement proper mangling -// percent encoding to create valid symbol name fun specializeName(funName, shapes) = if shapes.every(ps => ps.every(s => s.isDyn())) then funName else @@ -199,8 +172,6 @@ fun specializeName(funName, shapes) = .replaceAll("\\", "").replaceAll("\"", "") .replaceAll(" ", "").replaceAll(",", "_") -fun propStub(block, shapes) = [block, shapes] - fun specialize(cache, funName, dflt, shapes) = // replace function symbol in block definition to new name let newName = specializeName(funName, shapes) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e6074782e7..585a96cd86 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -8,9 +8,6 @@ staged module Expressions with fun lit() = let x = 42 x -//│ ╔══[INTERNAL ERROR] [BlockChecker] Invalid IR: symbol x⁰ is bound more than once -//│ ║ l.9: let x = 42 -//│ ╙── ^ //│ > fun lit() = //│ > let x //│ > x = 42 @@ -19,6 +16,7 @@ staged module Expressions with //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'lit' => [Function: lit_gen] //│ > } +//│ FAILURE: Unexpected lack of error to fix staged module Expressions with @@ -67,10 +65,10 @@ staged module Expressions with //│ > scrut = 9 //│ > 3 //│ > fun match2() = +//│ > let element1_ //│ > let element0_ //│ > let x //│ > let a -//│ > let element1_ //│ > x = [1, 2, 3] //│ > 0 //│ > Map(8) { @@ -95,20 +93,66 @@ staged module ClassInstrumentation with fun inst1() = Outside(1) fun inst2() = new NoArg fun app1() = Outside(1) - fun app2() = Inside(1, 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: f1 is not a function -//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:338:43) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:566:37) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:880:39) -//│ at ClassInstrumentation.app2_gen (REPL20:1:10699) -//│ at (REPL20:1:2386) -//│ at REPL20:1:10884 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) + fun app2() = Inside(1, 2) +//│ > () +//│ > true +//│ > fun inst1() = Outside(1) +//│ > fun inst2() = new ClassInstrumentation.NoArg() +//│ > fun app1() = Outside(1) +//│ > fun app2() = ClassInstrumentation.Inside(1, 2) +//│ > Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'inst1' => [Function: inst1_gen], +//│ > 'inst2' => [Function: inst2_gen], +//│ > 'app1' => [Function: app1_gen], +//│ > 'app2' => [Function: app2_gen] +//│ > } +//│ > Map(4) { +//│ > [Function: Outside] { +//│ > class: [class Outside] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'Outside', +//│ > value: [Function: Outside] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > [class ClassInstrumentation] { +//│ > Inside: [Function: Inside] { class: [Function] }, +//│ > NoArg: [class NoArg] { [Symbol(mlscript.definitionMetadata)]: [Array] }, +//│ > 'cache$ClassInstrumentation': FunCache { cache: [Map] }, +//│ > 'generatorMap$ClassInstrumentation': Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'inst1' => [Function: inst1_gen], +//│ > 'inst2' => [Function: inst2_gen], +//│ > 'app1' => [Function: app1_gen], +//│ > 'app2' => [Function: app2_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'ClassInstrumentation', +//│ > value: [class ClassInstrumentation] { +//│ > Inside: [Function], +//│ > NoArg: [Function], +//│ > 'cache$ClassInstrumentation': [FunCache], +//│ > 'generatorMap$ClassInstrumentation': [Map] +//│ > } +//│ > }, +//│ > [class NoArg] { +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NoArg' ] +//│ > } => ClassSymbol { +//│ > name: 'NoArg', +//│ > value: [class NoArg] { [Symbol(mlscript.definitionMetadata)]: [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Inside] { +//│ > class: [class Inside] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'Inside', +//│ > value: [Function: Inside] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } +//│ > } module Nonstaged with fun f() = 1 @@ -120,27 +164,46 @@ staged module CallSubst with Staged.f() //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'get') -//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:337:48) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:610:38) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:880:39) -//│ at CallSubst.call_gen (REPL23:1:6277) -//│ at (REPL23:1:3644) -//│ at REPL23:1:6429 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ > fun f_gen +//│ > true +//│ > fun call() = +//│ > __no__symbol__ = 1 +//│ > Staged.f() +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'call' => [Function: call_gen] +//│ > } +//│ > Map(2) { +//│ > [class Nonstaged] { +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Nonstaged' ] +//│ > } => ModuleSymbol { +//│ > name: 'Nonstaged', +//│ > value: [class Nonstaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > }, +//│ > [class Staged] { +//│ > 'cache$Staged': FunCache { cache: [Map] }, +//│ > 'generatorMap$Staged': Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen] +//│ > }, +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Staged' ] +//│ > } => ModuleSymbol { +//│ > name: 'Staged', +//│ > value: [class Staged] { +//│ > 'cache$Staged': [FunCache], +//│ > 'generatorMap$Staged': [Map], +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] +//│ > } +//│ > } +//│ > } :e print(CallSubst."cache$CallSubst") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. -//│ ║ l.138: print(CallSubst."cache$CallSubst") +//│ ║ l.201: print(CallSubst."cache$CallSubst") //│ ╙── ^^^^^^^^^ //│ > fun call() = -//│ > __no__symbol__ = Nonstaged.f() +//│ > __no__symbol__ = 1 //│ > Staged.f() :ftc @@ -153,14 +216,14 @@ staged module Arguments with //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) //│ ═══[RUNTIME ERROR] Error: Not implemented //│ at get notImplementedError (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:287:39) -//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:299:21) -//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:311:23) -//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:147:24) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:566:37) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:620:40) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:596:36) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:880:39) -//│ at Arguments.g_gen (REPL29:1:6129) +//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:308:26) +//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:328:23) +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:203:24) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:674:37) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:728:40) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:704:36) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:982:39) +//│ at Arguments.g_gen (REPL29:1:5917) //│ at (REPL29:1:2540) staged module OtherBlocks with @@ -214,7 +277,7 @@ staged module ClassDefs with :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.215: print(ClassDefs."cache$ClassDefs") +//│ ║ l.278: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ //│ > @@ -250,7 +313,7 @@ staged module Shadowing with :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.251: print(Shadowing."cache$Shadowing") +//│ ║ l.314: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ //│ > fun f(x, x) = x @@ -263,7 +326,7 @@ staged module M with :e M."generatorMap$M" //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.264: M."generatorMap$M" +//│ ║ l.327: M."generatorMap$M" //│ ╙── ^ //│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} @@ -276,18 +339,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.274: let x = 1 +//│ ║ l.337: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.274: let x = 1 +//│ ║ l.337: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.274: let x = 1 +//│ ║ l.337: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.274: let x = 1 +//│ ║ l.337: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: x is not defined @@ -299,7 +362,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.299: fun g() = {1 : 2} +//│ ║ l.362: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error @@ -309,11 +372,11 @@ staged module Spread with //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) //│ > fun f() = +//│ > let middleElements +//│ > let element0_ //│ > let scrut //│ > let tmp //│ > let x -//│ > let middleElements -//│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > 0 @@ -325,12 +388,53 @@ staged module RetUnit with //│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit //│ ═══[RUNTIME ERROR] Error: match error -staged -//│ FAILURE: Unexpected parse error -//│ FAILURE LOCATION: parseRuleImpl (Parser.scala:513) -//│ ╔══[PARSE ERROR] Expected expression after modifier keyword 'staged'; found end of input instead -//│ ║ l.328: staged -//│ ╙── ^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +:sir +class Outside(a) +module ClassInstrumentation with + class Inside(a, b) + class NoArg + fun inst1() = Outside(1) + fun inst2() = new NoArg + fun app1() = Outside(1) + fun app2() = Inside(1, 2) +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ let ClassInstrumentation⁰, Outside⁰; +//│ define Outside⁰ as class Outside²(a) { +//│ private val a⁰; +//│ constructor Outside¹ { +//│ set a⁰ = a; +//│ end +//│ } +//│ }; +//│ define ClassInstrumentation⁰ as class ClassInstrumentation¹ { +//│ constructor { +//│ runtime⁰.Unit⁰ +//│ } +//│ } +//│ module ClassInstrumentation² { +//│ constructor { +//│ define Inside⁰ as class Inside²(a, b) { +//│ private val a¹; +//│ private val b⁰; +//│ constructor Inside¹ { +//│ set a¹ = a; +//│ set b⁰ = b; +//│ end +//│ } +//│ }; +//│ define NoArg⁰ as class NoArg¹; +//│ end +//│ } +//│ method inst1⁰ = fun inst1¹() { +//│ return Outside¹(1) +//│ } +//│ method inst2⁰ = fun inst2¹() { +//│ return new ClassInstrumentation².NoArg¹() +//│ } +//│ method app1⁰ = fun app1¹() { +//│ return Outside¹(1) +//│ } +//│ method app2⁰ = fun app2¹() { return ClassInstrumentation².Inside¹(1, 2) } +//│ }; +//│ end +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 3481b4d67f..816a4215c2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -1,1115 +1,269 @@ :js +:staging +:noFreeze + +module NonStaged with + fun sq(x) = x * x + +module Staged with + fun sq(x) = x * x + +staged module Test with + fun f(x, y) = x + y + 1 - 1 + fun fib(n) = if n is + 1 then 1 + 2 then 1 + n then fib(n - 1) + fib(n - 2) + fun pyth(x, y) = NonStaged.sq(x) + NonStaged.sq(y) + fun pyth2(x, y) = Staged.sq(x) + Staged.sq(y) + fun test() = + let five = f(2, 3) + fib(five) + pyth(3, 4) + fun test2(n) = + pyth(n, 2) + fib(n * 2) +//│ > fun f(x, y) = +//│ > let tmp +//│ > let tmp1 +//│ > tmp = +(x, y) +//│ > tmp1 = +(tmp, 1) +//│ > -(tmp1, 1) +//│ > fun fib(n) = +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > if n is +//│ > 1 then 1 +//│ > 2 then 1 +//│ > else n = n +//│ > tmp2 = -(n, 1) +//│ > tmp3 = Test.fib(tmp2) +//│ > tmp4 = -(n, 2) +//│ > tmp5 = Test.fib(tmp4) +//│ > +(tmp3, tmp5) +//│ > fun pyth(x, y) = +//│ > let tmp6 +//│ > let tmp7 +//│ > tmp6 = NonStaged.sq(x) +//│ > tmp7 = NonStaged.sq(y) +//│ > +(tmp6, tmp7) +//│ > fun pyth2(x, y) = +//│ > let tmp8 +//│ > let tmp9 +//│ > tmp8 = Staged.sq(x) +//│ > tmp9 = Staged.sq(y) +//│ > +(tmp8, tmp9) +//│ > fun test() = +//│ > let five +//│ > five = Test.f_Lit2_Lit3(2, 3) +//│ > __no__symbol__ = Test.fib_Lit5(five) +//│ > Test.pyth_Lit3_Lit4(3, 4) +//│ > fun f_Lit2_Lit3(x, y) = +//│ > let tmp +//│ > let tmp1 +//│ > tmp = 5 +//│ > tmp1 = 6 +//│ > 5 +//│ > fun fib_Lit5(n) = +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > n = 5 +//│ > tmp2 = 4 +//│ > tmp3 = Test.fib_Lit4(tmp2) +//│ > tmp4 = 3 +//│ > tmp5 = Test.fib_Lit3(tmp4) +//│ > 5 +//│ > fun fib_Lit4(n) = +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > n = 4 +//│ > tmp2 = 3 +//│ > tmp3 = Test.fib_Lit3(tmp2) +//│ > tmp4 = 2 +//│ > tmp5 = Test.fib_Lit2(tmp4) +//│ > 3 +//│ > fun fib_Lit3(n) = +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > n = 3 +//│ > tmp2 = 2 +//│ > tmp3 = Test.fib_Lit2(tmp2) +//│ > tmp4 = 1 +//│ > tmp5 = Test.fib_Lit1(tmp4) +//│ > 2 +//│ > fun fib_Lit2(n) = +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > 1 +//│ > fun fib_Lit1(n) = +//│ > let n +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > 1 +//│ > fun pyth_Lit3_Lit4(x, y) = +//│ > let tmp6 +//│ > let tmp7 +//│ > tmp6 = 9 +//│ > tmp7 = 16 +//│ > 25 +//│ > fun test2(n) = +//│ > let tmp10 +//│ > __no__symbol__ = Test.pyth_Dyn_Lit2(n, 2) +//│ > tmp10 = *(n, 2) +//│ > Test.fib(tmp10) +//│ > fun pyth_Dyn_Lit2(x, y) = +//│ > let tmp6 +//│ > let tmp7 +//│ > tmp6 = NonStaged.sq(x) +//│ > tmp7 = 4 +//│ > +(tmp6, tmp7) +//│ > Map(7) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'fib' => [Function: fib_gen], +//│ > 'pyth' => [Function: pyth_gen], +//│ > 'pyth2' => [Function: pyth2_gen], +//│ > 'test' => [Function: test_gen], +//│ > 'test2' => [Function: test2_gen] +//│ > } +//│ > Map(3) { +//│ > [class Test] { +//│ > 'cache$Test': FunCache { cache: [Map] }, +//│ > 'generatorMap$Test': Map(7) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'fib' => [Function: fib_gen], +//│ > 'pyth' => [Function: pyth_gen], +//│ > 'pyth2' => [Function: pyth2_gen], +//│ > 'test' => [Function: test_gen], +//│ > 'test2' => [Function: test2_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'Test', +//│ > value: [class Test] { +//│ > 'cache$Test': [FunCache], +//│ > 'generatorMap$Test': [Map] +//│ > } +//│ > }, +//│ > [class NonStaged] { +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NonStaged' ] +//│ > } => ModuleSymbol { +//│ > name: 'NonStaged', +//│ > value: [class NonStaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > }, +//│ > [class Staged] { +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Staged' ] +//│ > } => ModuleSymbol { +//│ > name: 'Staged', +//│ > value: [class Staged] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } +//│ > } + +staged module TestIf with + fun f(x) = if x is + 1 then "wrong1" + 2 then "correct" + 3 then "wrong3" + else "wrong4" + fun test() = + f(2) +//│ > fun f(x) = +//│ > if x is +//│ > 1 then "wrong1" +//│ > 2 then "correct" +//│ > 3 then "wrong3" +//│ > else "wrong4" +//│ > fun test() = TestIf.f_Lit2(2) +//│ > fun f_Lit2(x) = "correct" +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > Map(1) { +//│ > [class TestIf] { +//│ > 'cache$TestIf': FunCache { cache: [Map] }, +//│ > 'generatorMap$TestIf': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'TestIf', +//│ > value: [class TestIf] { +//│ > 'cache$TestIf': [FunCache], +//│ > 'generatorMap$TestIf': [Map] +//│ > } +//│ > } +//│ > } -import "../../mlscript-compile/Block.mls" -import "../../mlscript-compile/Shape.mls" -import "../../mlscript-compile/ShapeSet.mls" -import "../../mlscript-compile/Option.mls" -import "../../mlscript-compile/CachedHash.mls" -import "../../mlscript-compile/SpecializeHelpers.mls" -open Option -open Block { Symbol, ClassSymbol, Tup, Case } -open Shape { Arr, Class, Dyn, Lit } -open ShapeSet -open SpecializeHelpers { sov } - -mkBot() -//│ = {} - -mkLit(0) -//│ = {Lit(0)} - -mkDyn() -//│ = {Dyn()} - -mkDyn() == mkDyn() -//│ = false - -mkArr([mkLit(0)]) -//│ = {Arr([Lit(0)])} - -assert(mkBot().isEmpty()) - -Shape.static(Shape.Lit("Hi")) -//│ = true - -// valOf - -:re -valOf(Dyn()) -//│ ═══[RUNTIME ERROR] Error: valOf on Dyn - -valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)])])) -//│ = [1, [2, 3]] - -:re -valOf(mkDyn()) -//│ ═══[RUNTIME ERROR] Error: Unknown shape - -valOfSet(mkLit(0)) -//│ = 0 - -// sel - -let arrSp = mkArr([mkLit(0), mkDyn()]) -//│ arrSp = {Arr([Lit(0), Dyn()])} - -selSet(arrSp, mkLit(0)) -//│ = {Lit(0)} - -selSet(arrSp, mkLit(1)) -//│ = {Dyn()} - -selSet(mkDyn(), mkLit(5)) -//│ = {Dyn()} - -let a = Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], undefined), [Lit(42), Lit("c")]) -let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) -selSet(x, liftMany([Lit("a"), Lit(2)])) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 6 -//│ ║ l.65: let a = Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], undefined), [Lit(42), Lit("c")]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ = {Dyn(),Lit(undefined)} -//│ a = Class( -//│ ClassSymbol("A", undefined, undefined, Some(["a", "b"])), -//│ [Lit(42), Lit("c")] -//│ ) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} - -selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) -//│ = {Lit(1)} - -// union - -let x = liftMany([Lit(1), Lit(2)]) -let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) -union(x, y) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.86: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) -//│ ╙── ^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.86: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) -//│ ╙── ^^^^^^^^^^^^^^^^^ -//│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} -//│ x = {Lit(1),Lit(2)} -//│ y = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1)} - -// filterSet - -filterSet(mkDyn(), Block.Lit("a")) -//│ = {Lit("a")} - -filterSet(mkDyn(), Block.Tup(2, true)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.107: filterSet(mkDyn(), Block.Tup(2, true)) -//│ ╙── ^^^^^^^^^ -//│ = {Arr([fun Dyn { class: class Dyn }, fun Dyn { class: class Dyn }])} - -let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.115: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) -//│ ╙── ^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.115: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null)} - -// wildcard is represented as dflt in Match - -filterSet(filterShapes, Block.Lit(1)) -//│ = {Lit(1)} - -assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) - -filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = {Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")])} - -filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) -//│ = {Lit(1)} - -filterSet(filterShapes, Tup(3, false)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.141: filterSet(filterShapes, Tup(3, false)) -//│ ╙── ^^^^^^^^^^ -//│ = {Arr([Lit(1), Lit(2), Lit(3)])} - -filterSet(filterShapes, Tup(4, true)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.149: filterSet(filterShapes, Tup(4, true)) -//│ ╙── ^^^^^^^^^ -//│ = {} - -assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.157: assert(filterSet(filterShapes, Tup(0, false)).isEmpty()) -//│ ╙── ^^^^^^^^^^ - -open Block - -// Ctx - -let ctx = Ctx.empty -let x = ValueRef(Symbol("x")) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.168: let ctx = Ctx.empty -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ ctx = undefined -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ╟── which references the symbol introduced here -//│ ║ l.169: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} - -ctx.add(x, mkLit(1)) -ctx.get(x) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.199: ctx.add(x, mkLit(1)) -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.169: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.200: ctx.get(x) -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.169: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') -//│ at REPL111:1:68 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) - -ctx.add(x, mkLit(2)) -ctx.get(x) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, tmp:block$res -> block$res33, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.255: ctx.add(x, mkLit(2)) -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.169: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, tmp:block$res -> block$res33, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.256: ctx.get(x) +class C(val x) +class D() +staged module TestClass with + fun f() = new C(2, 3) + fun g() = C(D()) +//│ > fun f() = new C(2, 3) +//│ > fun g() = +//│ > let tmp +//│ > tmp = D() +//│ > C(tmp) +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } +//│ > Map(2) { +//│ > [Function: C] { +//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > [Function: D] { +//│ > class: [class D] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'D', +//│ > value: [Function: D] { class: [Function] }, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > } +//│ > } + +:fixme +:noSanityCheck +class C(val n) +staged module TestIf with + fun f(x) = + let y + if x is C then + y = x.n + else + y = 0 + y + 1 +//│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'y' +//│ ║ l.256: let y //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.169: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') -//│ at REPL114:1:68 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) - -let y = ValueRef(Symbol("y")) -ctx.add(y, mkLit("a")) -ctx.get(y) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') -//│ at REPL117:1:176 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) -//│ y = ValueRef(Symbol("y")) - -let ctx2 = ctx.clone -ctx2.add(y, mkLit("b")) -ctx2.get(y) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'clone') -//│ at REPL121:1:44 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) -//│ ctx2 = undefined - -ctx.get(y) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'get') -//│ at REPL125:1:42 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) - - -// DefCtx - - -// Cache - - -// sop - -sop(Ctx.empty, ValueLit(42)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sop -//│ ║ l.371: sop(Ctx.empty, ValueLit(42)) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.371: sop(Ctx.empty, ValueLit(42)) -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. - -sop(Ctx.empty, ValueLit(false)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sop -//│ ║ l.386: sop(Ctx.empty, ValueLit(false)) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.386: sop(Ctx.empty, ValueLit(false)) -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. - -sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sop -//│ ║ l.401: sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.401: sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. - - -val x = Symbol("x") -val C = ClassSymbol("C", Some(["a"])) -val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) -let ctx = Ctx.empty -ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) -sop(ctx, selPath) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.420: let ctx = Ctx.empty -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sop -//│ ║ l.422: sop(ctx, selPath) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.418: val C = ClassSymbol("C", Some(["a"])) -//│ ╙── ^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ C = ClassSymbol("C", Some(["a"]), undefined, undefined) -//│ ctx = undefined -//│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) -//│ x = Symbol("x") - -// sor - -val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) -sor(DefCtx.empty, Ctx.empty, tup) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.449: sor(DefCtx.empty, Ctx.empty, tup) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.449: sor(DefCtx.empty, Ctx.empty, tup) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.449: sor(DefCtx.empty, Ctx.empty, tup) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.448: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.448: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ tup = Tuple([Arg(None), Arg(None)]) - -let c = ClassSymbol("C", Some([Symbol("p")])) -let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) -sor(DefCtx.empty, Ctx.empty, inst) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.482: sor(DefCtx.empty, Ctx.empty, inst) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.482: sor(DefCtx.empty, Ctx.empty, inst) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.482: sor(DefCtx.empty, Ctx.empty, inst) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.480: let c = ClassSymbol("C", Some([Symbol("p")])) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.481: let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ c = ClassSymbol("C", Some([Symbol("p")]), undefined, undefined) -//│ inst = Instantiate( -//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]), undefined, undefined)), -//│ [Arg(None)] -//│ ) - -fun testBinOp(op, v1, v2) = - let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] - let c = Call(ValueRef(Symbol(op)), args) - let def = DefCtx.empty - def.add(ValueRef(Symbol("+")), undefined, false) - def.add(ValueRef(Symbol("==")), undefined, false) - def.add(ValueRef(Symbol("===")), undefined, false) - def.add(ValueRef(Symbol("&&")), undefined, false) - sor(def, Ctx.empty, c).1.lit -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.520: let def = DefCtx.empty -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.525: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.525: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.518: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.518: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ - -:expect 12 -testBinOp("+", 10, 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' - -:expect true -testBinOp("==", 10, 10) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' - -:expect false -testBinOp("===", 10, "10") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' - -:expect false -testBinOp("&&", true, false) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' - -fun testUnaryOp(op, v) = - let args = [Arg(None, ValueLit(v))] - let c = Call(ValueRef(Symbol(op)), args) - let def = DefCtx.empty - def.add(ValueRef(Symbol("-")), undefined, false) - def.add(ValueRef(Symbol("!")), undefined, false) - def.add(ValueRef(Symbol("~")), undefined, false) - sor(def, Ctx.empty, c).1.lit -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.591: let def = DefCtx.empty -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.595: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.595: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.589: let args = [Arg(None, ValueLit(v))] -//│ ╙── ^^^^^^^^^^^^^^^^^^^ - -:expect -10 -testUnaryOp("-", 10) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' - -:expect false -testUnaryOp("!", true) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' - -:re -testUnaryOp("~", 10) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. - - -// prop - -let x = Symbol("x") -let y = Symbol("y") -let z = Symbol("z") -let plus = ValueRef(Symbol("+")) -//│ plus = ValueRef(Symbol("+")) -//│ x = Symbol("x") -//│ y = Symbol("y") -//│ z = Symbol("z") - -// let x -// x = 1 + 1 -// x + 1 -let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.655: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.655: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.655: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.655: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.654: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.654: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.654: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.654: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ c = Scoped( -//│ [Symbol("x")], -//│ Assign( -//│ Symbol("x"), -//│ Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), -//│ Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) -//│ ) -//│ ) - -let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) -prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.709: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.709: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.709: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.709: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.708: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) -//│ ╙── ^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.708: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) -//│ ╙── ^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ c = Scoped( -//│ [Symbol("x")], -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(9), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ -//│ Arm( -//│ Cls( -//│ ClassSymbol("Bool", None, undefined, undefined), -//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) -//│ ), -//│ Return(ValueLit(1), false) -//│ ), -//│ Arm(Lit(8), Return(ValueLit(2), false)), -//│ Arm( -//│ Cls( -//│ ClassSymbol("Int", None, undefined, undefined), -//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) -//│ ), -//│ Return(ValueLit(3), false) -//│ ) -//│ ], -//│ Some(Return(ValueLit(0), false)), -//│ End() -//│ ) -//│ ) -//│ ) - -fun f_gen(args) = - [mkLit(24), Symbol("f1")] // A stub for the actual f_gen - -val fSym = Symbol("f") -val M = ValueRef(Symbol("M")) -val fPath = Select(M, fSym) -val defs = DefCtx.empty.add(fPath, f_gen, true) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.779: val defs = DefCtx.empty.add(fPath, f_gen, true) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ M = ValueRef(Symbol("M")) -//│ defs = undefined -//│ fPath = Select(ValueRef(Symbol("M")), Symbol("f")) -//│ fSym = Symbol("f") - -val callF = Call(fPath, [Arg(None, ValueLit(12))]) -sor(defs, Ctx.empty, callF) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.794: sor(defs, Ctx.empty, callF) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.794: sor(defs, Ctx.empty, callF) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.793: val callF = Call(fPath, [Arg(None, ValueLit(12))]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None)]) - -val ctxXY = Ctx.empty - .add(ValueRef(x), mkLit(10)) - .add(ValueRef(y), mkLit(32)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.815: val ctxXY = Ctx.empty -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ ctxXY = undefined - -// x + y -val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) -printCode(blockAdd) -prop(defs, ctxXY, Cache.empty, blockAdd) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.831: prop(defs, ctxXY, Cache.empty, blockAdd) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.831: prop(defs, ctxXY, Cache.empty, blockAdd) -//│ ╙── ^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.829: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.829: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:637:38) -//│ at showArg (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:641:18) -//│ at Array.map () -//│ at Block.showArgs (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:645:33) -//│ at Block.showResult (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:659:20) -//│ at Block.showBlock (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:854:20) -//│ at Block.show (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:925:20) -//│ at Block.printCode (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:932:17) -//│ at REPL213:1:436 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ blockAdd = Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) - -val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit(1), End())), Arm(Lit(2), Assign(z, ValueLit(2), End()))], Some(Assign(z, ValueLit(3), End())), Return(ValueRef(z), false))) -printCode(blockBranch) -prop(defs, Ctx.empty, Cache.empty, blockBranch) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.869: prop(defs, Ctx.empty, Cache.empty, blockBranch) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.869: prop(defs, Ctx.empty, Cache.empty, blockBranch) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.869: prop(defs, Ctx.empty, Cache.empty, blockBranch) -//│ ╙── ^^^^^ -//│ > let z -//│ > if 1 is -//│ > 1 then -//│ > z = 1 -//│ > 2 then -//│ > z = 2 -//│ > else z = 3 -//│ > z -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ blockBranch = Scoped( -//│ [Symbol("z")], -//│ Match( -//│ ValueLit(1), -//│ [ -//│ Arm(Lit(1), Assign(Symbol("z"), ValueLit(1), End())), -//│ Arm(Lit(2), Assign(Symbol("z"), ValueLit(2), End())) -//│ ], -//│ Some(Assign(Symbol("z"), ValueLit(3), End())), -//│ Return(ValueRef(Symbol("z")), false) -//│ ) -//│ ) - -val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Return(ValueLit(10), false)), Arm(Lit(false), Assign(y, ValueLit(20), End()))], End(), Return(ValueRef(y), false)))) -printCode(earlyRetBlock) -prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.911: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.911: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.911: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) -//│ ╙── ^^^^^ -//│ > let x -//│ > let y -//│ > x = false -//│ > if x is -//│ > true then 10 -//│ > false then -//│ > y = 20 -//│ > y -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ earlyRetBlock = Scoped( -//│ [Symbol("x"), Symbol("y")], -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(false), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ -//│ Arm(Lit(true), Return(ValueLit(10), false)), -//│ Arm(Lit(false), Assign(Symbol("y"), ValueLit(20), End())) -//│ ], -//│ End(), -//│ Return(ValueRef(Symbol("y")), false) -//│ ) -//│ ) -//│ ) - -// let x = true -// let y = false -// if x is -// true then -// if y is -// true then return 1 -// else return 2 -// else return 3 -// return 4 -val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Match(ValueRef(y), [Arm(Lit(true), Return(ValueLit(1), false))], Some(Return(ValueLit(2), false)), End()))], Some(Return(ValueLit(3), false)), Return(ValueLit(4), false))))) -let c = Cache.empty -val res = prop(defs, Ctx.empty, c, nestedBlock) -c.add("f", mkDyn(), res.0, res.1) -c.printImps() -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.965: let c = Cache.empty -//│ ╙── ^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.966: val res = prop(defs, Ctx.empty, c, nestedBlock) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.966: val res = prop(defs, Ctx.empty, c, nestedBlock) -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ c = undefined -//│ nestedBlock = Scoped( -//│ [Symbol("x"), Symbol("y")], -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(true), -//│ Assign( -//│ Symbol("y"), -//│ ValueLit(false), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ -//│ Arm( -//│ Lit(true), -//│ Match( -//│ ValueRef(Symbol("y")), -//│ [Arm(Lit(true), Return(ValueLit(1), false))], -//│ Some(Return(ValueLit(2), false)), -//│ End() -//│ ) -//│ ) -//│ ], -//│ Some(Return(ValueLit(3), false)), -//│ Return(ValueLit(4), false) -//│ ) -//│ ) -//│ ) -//│ ) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = member:res⁰ -//│ _2 = class hkmc2.semantics.BlockMemberSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:Block -> Block, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res25, tmp:tmp -> tmp76, tmp:tmp -> tmp77, tmp:block$res -> block$res26, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res54, tmp:tmp -> tmp125, tmp:tmp -> tmp126, tmp:block$res -> block$res27, tmp:tmp -> tmp127, tmp:tmp -> tmp80, tmp:tmp -> tmp128, tmp:tmp -> tmp129, tmp:tmp -> tmp130, tmp:tmp -> tmp131, tmp:tmp -> tmp132, tmp:tmp -> tmp133, tmp:tmp -> tmp134, tmp:block$res -> block$res28, tmp:tmp -> tmp135, tmp:tmp -> tmp81, tmp:tmp -> tmp136, tmp:tmp -> tmp137, tmp:tmp -> tmp138, tmp:tmp -> tmp139, tmp:tmp -> tmp140, tmp:tmp -> tmp141, tmp:tmp -> tmp142, tmp:tmp -> tmp143, tmp:tmp -> tmp144, tmp:tmp -> tmp145, tmp:scrut -> scrut2, tmp:tmp -> tmp146, tmp:tmp -> tmp147, tmp:block$res -> block$res29, tmp:tmp -> tmp148, tmp:tmp -> tmp82, tmp:tmp -> tmp149, tmp:tmp -> tmp83, tmp:tmp -> tmp150, tmp:tmp -> tmp151, tmp:tmp -> tmp152, tmp:block$res -> block$res30, tmp:tmp -> tmp153, tmp:tmp -> tmp154, ctx -> ctx, tmp:tmp -> tmp155, tmp:tmp -> tmp156, member:f_gen -> f_gen, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res55, member:Option -> Option, tmp:block$res -> block$res32, member:defs -> defs, tmp:tmp -> tmp84, member:fPath -> fPath, member:M -> M, member:Shape -> Shape, member:fSym -> fSym, member:SpecializeHelpers -> SpecializeHelpers1, tmp:block$res -> block$res33, tmp:tmp -> tmp85, y -> y1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res34, tmp:tmp -> tmp86, tmp:tmp -> tmp87, tmp:block$res -> block$res56, ctx2 -> ctx2, tmp:tmp -> tmp157, tmp:tmp -> tmp158, tmp:tmp -> tmp159, tmp:tmp -> tmp160, member:callF -> callF, tmp:block$res -> block$res35, tmp:selRes -> selRes, tmp:tmp -> tmp88, member:Predef -> Predef, tmp:block$res -> block$res36, member:Block -> Block1, tmp:block$res -> block$res57, tmp:tmp -> tmp161, tmp:tmp -> tmp162, tmp:tmp -> tmp163, tmp:block$res -> block$res37, tmp:tmp -> tmp164, member:ctxXY -> ctxXY, tmp:block$res -> block$res38, tmp:block$res -> block$res58, member:blockAdd -> blockAdd, tmp:block$res -> block$res39, member:selPath -> selPath, member:C -> C, member:x -> x2, tmp:block$res -> block$res59, tmp:tmp -> tmp165, tmp:tmp -> tmp166, tmp:tmp -> tmp167, tmp:tmp -> tmp168, ctx -> ctx1, tmp:tmp -> tmp169, tmp:tmp -> tmp170, tmp:tmp -> tmp171, member:blockBranch -> blockBranch, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res40, tmp:tmp -> tmp89, tmp:block$res -> block$res2, tmp:tmp -> tmp90, tmp:tmp -> tmp91, tmp:tmp -> tmp92, tmp:tmp -> tmp93, tmp:tmp -> tmp94, tmp:block$res -> block$res3, tmp:tmp -> tmp95, member:tup -> tup, tmp:block$res -> block$res4, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res41, tmp:block$res -> block$res6, tmp:tmp -> tmp96, tmp:tmp -> tmp2, tmp:tmp -> tmp97, tmp:tmp -> tmp3, tmp:tmp -> tmp98, tmp:tmp -> tmp99, tmp:tmp -> tmp100, tmp:tmp -> tmp101, c -> c, tmp:scrut -> scrut, tmp:block$res -> block$res60, tmp:tmp -> tmp172, tmp:block$res -> block$res7, tmp:tmp -> tmp173, tmp:tmp -> tmp4, tmp:tmp -> tmp174, inst -> inst, tmp:tmp -> tmp175, tmp:tmp -> tmp176, tmp:tmp -> tmp177, tmp:tmp -> tmp178, tmp:tmp -> tmp179, tmp:tmp -> tmp180, tmp:block$res -> block$res8, tmp:tmp -> tmp181, tmp:tmp -> tmp5, tmp:tmp -> tmp182, tmp:tmp -> tmp183, tmp:tmp -> tmp184, tmp:tmp -> tmp185, tmp:tmp -> tmp186, tmp:tmp -> tmp187, tmp:tmp -> tmp188, tmp:block$res -> block$res9, tmp:block$res -> block$res42, tmp:tmp -> tmp189, tmp:tmp -> tmp6, tmp:tmp -> tmp102, tmp:tmp -> tmp190, tmp:tmp -> tmp103, tmp:tmp -> tmp191, tmp:tmp -> tmp104, tmp:tmp -> tmp192, tmp:tmp -> tmp105, tmp:tmp -> tmp106, member:earlyRetBlock -> earlyRetBlock, tmp:tmp -> tmp107, tmp:tmp -> tmp108, member:testBinOp -> testBinOp, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:tmp -> tmp10, tmp:tmp -> tmp11, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:tmp -> tmp14, tmp:block$res -> block$res12, tmp:tmp -> tmp15, arrSp -> arrSp, tmp:block$res -> block$res13, tmp:block$res -> block$res61, tmp:tmp -> tmp16, tmp:tmp -> tmp193, tmp:tmp -> tmp17, tmp:tmp -> tmp194, tmp:tmp -> tmp18, tmp:tmp -> tmp195, tmp:tmp -> tmp196, tmp:tmp -> tmp197, tmp:tmp -> tmp198, tmp:tmp -> tmp199, tmp:tmp -> tmp200, tmp:tmp -> tmp201, tmp:block$res -> block$res14, tmp:tmp -> tmp202, tmp:tmp -> tmp19, tmp:tmp -> tmp203, tmp:tmp -> tmp204, tmp:tmp -> tmp205, tmp:tmp -> tmp206, tmp:tmp -> tmp207, tmp:block$res -> block$res43, tmp:tmp -> tmp208, tmp:tmp -> tmp209, tmp:block$res -> block$res15, tmp:tmp -> tmp210, tmp:tmp -> tmp20, tmp:tmp -> tmp211, member:nestedBlock -> nestedBlock, tmp:block$res -> block$res44, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, tmp:block$res -> block$res45, a -> a, tmp:block$res -> block$res46, tmp:block$res -> block$res47, member:testUnaryOp -> testUnaryOp, x -> x, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, c -> c3, tmp:tmp -> tmp32, tmp:tmp -> tmp33, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, tmp:tmp -> tmp40, tmp:block$res -> block$res48, tmp:block$res -> block$res62, tmp:tmp -> tmp212, tmp:block$res -> block$res49, tmp:tmp -> tmp213, tmp:tmp -> tmp214, tmp:tmp -> tmp215, tmp:tmp -> tmp216, tmp:block$res -> block$res50, tmp:tmp -> tmp217, tmp:tmp -> tmp218, tmp:block$res -> block$res18, tmp:tmp -> tmp219, tmp:tmp -> tmp41, tmp:tmp -> tmp220, tmp:tmp -> tmp42, tmp:block$res -> block$res51, tmp:tmp -> tmp221, tmp:tmp -> tmp43, tmp:tmp -> tmp222, tmp:tmp -> tmp44, x -> x3, tmp:tmp -> tmp223, tmp:tmp -> tmp45, tmp:tmp -> tmp224, tmp:tmp -> tmp46, tmp:tmp -> tmp225, y -> y2, tmp:tmp -> tmp226, x -> x1, tmp:tmp -> tmp227, tmp:tmp -> tmp228, z -> z, tmp:tmp -> tmp229, tmp:tmp -> tmp230, tmp:tmp -> tmp231, plus -> plus, tmp:tmp -> tmp232, tmp:tmp -> tmp233, y -> y, tmp:tmp -> tmp234, tmp:tmp -> tmp235, tmp:tmp -> tmp236, tmp:tmp -> tmp237, tmp:block$res -> block$res52, tmp:tmp -> tmp238, tmp:tmp -> tmp109, c -> c1, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:tmp -> tmp59, tmp:block$res -> block$res53, tmp:tmp -> tmp110, tmp:tmp -> tmp111, tmp:tmp -> tmp112, tmp:block$res -> block$res21, tmp:tmp -> tmp113, tmp:tmp -> tmp60, tmp:tmp -> tmp114, tmp:tmp -> tmp61, tmp:tmp -> tmp115, tmp:tmp -> tmp116, filterShapes -> filterShapes, tmp:tmp -> tmp117, tmp:tmp -> tmp118, tmp:tmp -> tmp119, tmp:tmp -> tmp120, tmp:tmp -> tmp121, tmp:tmp -> tmp122, tmp:tmp -> tmp123, tmp:tmp -> tmp124, c -> c2, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'res' -//│ ╟── which references the symbol introduced here -//│ ║ l.966: val res = prop(defs, Ctx.empty, c, nestedBlock) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] ReferenceError: res is not defined -//│ at REPL229:1:42 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) - -val2path(1) -//│ = [End(), ValueLit(1)] - -val2path([1, 2, 3]) -//│ = [ -//│ Assign(Symbol("tup_1"), Tuple([Arg(End()), Arg(End()), Arg(End())]), End()), -//│ ValueRef(Symbol("tup_1")) -//│ ] - -class TestClass(val a, val b) -val2path(TestClass(1, 2)) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:577:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:558:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:438:36) -//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:441:51) -//│ at REPL237:1:490 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) - - -val2path(TestClass(1, [1,2])) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:577:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:558:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:438:36) -//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:441:51) -//│ at REPL240:1:168 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) - -:sjs -class C(val x) -//│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let C2; -//│ C2 = function C(x4) { -//│ return globalThis.Object.freeze(new C.class(x4)); -//│ }; -//│ (class C1 { -//│ static { -//│ C2.class = this -//│ } -//│ constructor(x4) { -//│ this.x = x4; -//│ } -//│ toString() { return runtime.render(this); } -//│ static [definitionMetadata] = ["class", "C", ["x"]]; -//│ }); -//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— - -:sjs -let a = new C(0) -//│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let a1; a1 = globalThis.Object.freeze(new C2.class(0)); -//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ a = C(0) - -new C -//│ = C(undefined) +//│ ║ l.256: let y +//│ ╙── ^ +//│ ═══[RUNTIME ERROR] ReferenceError: y is not defined From e3d24b617001ee141b3b45b51fd7ba32b844c62c Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 28 Mar 2026 23:32:08 +0800 Subject: [PATCH 394/654] remove a useless comment --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index cef3aac458..3656735c24 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -42,8 +42,6 @@ fun lift(s: Shape) = ShapeSet(new Map([[s.hash(), s]])) fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [s.hash(), s]))) -// combining ShapeSets together - fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(new Map([...s1.shapeset, ...s2.shapeset])) fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.shapeset.entries().toArray()).flat())) @@ -99,7 +97,7 @@ fun valOf(s : Shape) = Dyn() then throw Error("valOf on Dyn") Lit(l) then l Arr(shapes) then shapes.map((x, _, _) => valOf(x)) - Class(sym, params) then ??? + Class(ClassSymbol(name, value, paramsOpt, auxParams), params) then ??? else throw Error("Unknown shape") fun valOfSet(s : ShapeSet) = From 5ee3f9a6fb310436dd14702209ab65556d4f42d2 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 28 Mar 2026 23:37:27 +0800 Subject: [PATCH 395/654] hotfix to the unit bug --- .../codegen/ReflectionInstrumenter.scala | 2 ++ .../test/mlscript/block-staging/ShapeProp.mls | 32 +++++++++++++------ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 325636994e..aa08eae2a8 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -118,6 +118,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) + // FIXME: hack to patch in staging for returning the object Unit. + case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil) case _ => raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 816a4215c2..081fe20ab2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -248,7 +248,6 @@ staged module TestClass with //│ > } //│ > } -:fixme :noSanityCheck class C(val n) staged module TestIf with @@ -259,11 +258,26 @@ staged module TestIf with else y = 0 y + 1 -//│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'y' -//│ ║ l.256: let y -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.256: let y -//│ ╙── ^ -//│ ═══[RUNTIME ERROR] ReferenceError: y is not defined +//│ > fun f(x) = +//│ > let y +//│ > let tmp +//│ > if x is +//│ > C(n) then +//│ > y = x.n +//│ > tmp = Runtime.Unit +//│ > +(y, 1) +//│ > else y = 0 +//│ > tmp = Runtime.Unit +//│ > 1 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(2) { +//│ > [Function: C] { +//│ > class: [class C2] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } +//│ > } From d2b593efa2281583419a03eccdd5adcd056eae9d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Mar 2026 18:29:30 +0800 Subject: [PATCH 396/654] minor fixes to testing --- .../shared/src/test/mlscript/ShapeSetTest.mls | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 6f47901bec..4538035b6d 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -18,31 +18,31 @@ if x.isEmpty() then 0 // :silent let x = liftMany([Lit(1), Lit(2)]) -let y = liftMany([Arr([Lit(1)], false), Arr([Lit(2)], false)]) +let y = liftMany([Arr([Lit(1)]), Arr([Lit(2)])]) //│ x = {Lit(1),Lit(2)} -//│ y = {Arr([Lit(1)], false),Arr([Lit(2)], false)} +//│ y = {Arr([Lit(1)]),Arr([Lit(2)])} union(x, y) -//│ = {Arr([Lit(1)], false),Arr([Lit(2)], false),Lit(1),Lit(2)} +//│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} -mkArr([x, y], false) -//│ = {Arr([Lit(1), Arr([Lit(1)], false)], false),Arr([Lit(1), Arr([Lit(2)], false)], false),Arr([Lit(2), Arr([Lit(1)], false)], false),Arr([Lit(2), Arr([Lit(2)], false)], false)} +mkArr([x, y]) +//│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} [x, y] - .map((x, _, _) => x.underlying.values().toArray()) -//│ = [[Lit(1), Lit(2)], [Arr([Lit(1)], false), Arr([Lit(2)], false)]] + .map((x, _, _) => x.values()) +//│ = [[Lit(1), Lit(2)], [Arr([Lit(1)]), Arr([Lit(2)])]] -let x = liftMany([Dyn(), Class(Symbol(""), [Lit(42)]), Arr([Lit(100), Lit(false), Lit(undefined)], false)]) +let x = liftMany([Dyn(), Class(Symbol(""), [Lit(42)]), Arr([Lit(100), Lit(false), Lit(undefined)])]) let y = liftMany([Lit("a"), Lit(1)]) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)], false),Class(Symbol(""), [Lit(42)]),Dyn()} +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(Symbol(""), [Lit(42)]),Dyn()} //│ y = {Lit("a"),Lit(1)} selSet(x, y) //│ = {Dyn(),Lit(false)} let x = Class(Symbol("A"), [[Symbol("b"), Lit(1)], [Symbol("d"), Dyn()]]) -let x = Arr([Dyn(), Lit(1), x], false) +let x = Arr([Dyn(), Lit(1), x]) let x = Shape.sel(x, Lit(2)) //│ x = [Class(Symbol("A"), [[Symbol("b"), Lit(1)], [Symbol("d"), Dyn()]])] @@ -65,8 +65,8 @@ mkClass(sym, params) [liftMany([Lit(1), Dyn()]), liftMany([Lit(2), Lit("str")])] //│ = [{Dyn(),Lit(1)}, {Lit("str"),Lit(2)}] -filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)], false)]), Tup(3, false)) -//│ = {Arr([Lit(1), Lit(2), Lit(3)], false)} +filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)])]), Tup(3)) +//│ = {Arr([Lit(1), Lit(2), Lit(3)])} let x = mkLit(1) From 25c05b2b20984291139932a0bf67d7221bcc3e3e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 28 Mar 2026 23:58:28 +0800 Subject: [PATCH 397/654] simplify initializing generator function calls --- .../codegen/ReflectionInstrumenter.scala | 41 +++++++------------ 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 325636994e..271b529501 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -406,34 +406,23 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // val renderFun = State.runtimeSymbol.asPath.selSN("render") val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) - val gens = methods.map { f => - val genSymName = f.sym.nme + "_gen" - val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: f.params else f.params - (modSym.asPath.selSN(genSymName), params) - } + val gens = helperMethods.map(_(1)) call(State.shapeSetSymbol.asPath.selSN("mkDyn"), Nil, isMlsFun = true, symName = "tmp_dyn"): dynVal => - def callAllGens(gens: Ls[(Path, Ls[ParamList])], k: Block): Block = gens match - case Nil => k - case (genPath, params) :: tail => - def curryCall(funPath: Path, paramsLeft: Ls[ParamList], innerK: Block): Block = - paramsLeft match - case Nil => innerK - case pList :: Nil => - val args = pList.params.map(_ => dynVal) - call(funPath, args, isMlsFun = true, symName = "tmp_gen_res")(_ => innerK) - case pList :: xs => - val args = pList.params.map(_ => dynVal) - call(funPath, args, isMlsFun = true, symName = "tmp_gen_curry")(res => curryCall(res, xs, innerK)) - curryCall(genPath, params, callAllGens(tail, k)) - - callAllGens(gens, assign(options)(options => - call(cachePath.selSN("toString"), Nil, false)(str => - call(printFun, Ls(str), false)(_ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false)(_ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest))))) + def callGenCont(rest: Block) = + gens.foldRight(rest)((gen, rest) => + val genPath = modSym.asPath.selSN(gen.sym.nme) + val params = gen.params.map(_.params.map(_ => dynVal)) + params.foldRight((_: Path) => rest) + ((args, k) => call(_, args, true, "gen_call")(k)) + (genPath) + ) + callGenCont(call(cachePath.selSN("toString"), Nil, false)(str => + call(printFun, Ls(str), false)(_ => + call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false)(_ => + if symbolMapUsed + then call(printFun, Ls(symbolMapSym), false)(_ => rest) + else rest)))) val entryFunDef = val sym = BlockMemberSymbol("generate", Nil) From ba00308279b90f3f2ba7ae276ef182df82e8708f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 29 Mar 2026 00:17:52 +0800 Subject: [PATCH 398/654] update nonfailing tests --- .../test/mlscript/block-staging/DefCtx.mls | 37 ++++++++++++-- .../test/mlscript/block-staging/ShapeProp.mls | 22 +++++---- .../test/mlscript/block-staging/SymbolMap.mls | 5 +- .../test/mlscript/block-staging/Syntax.mls | 48 +++++++++---------- 4 files changed, 75 insertions(+), 37 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls index e48a464fbb..5c4e4c4584 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls @@ -9,7 +9,11 @@ staged module A with //│ > () //│ > fun f() = 1 //│ > fun g(x) = x -//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } class C() with fun h() = 0 @@ -30,12 +34,39 @@ staged module B with //│ > tmp = C() //│ > tmp.h() //│ > fun c() = i() -//│ > fun d() = A.g(1) +//│ > fun d() = A.g_Lit1(1) //│ > fun e() = f() -//│ > Map(5) { +//│ > Map(6) { +//│ > 'ctor$' => [Function: ctor$_gen], //│ > 'a' => [Function: a_gen], //│ > 'b' => [Function: b_gen], //│ > 'c' => [Function: c_gen], //│ > 'd' => [Function: d_gen], //│ > 'e' => [Function: e_gen] //│ > } +//│ > Map(2) { +//│ > [class A] { +//│ > 'cache$A': FunCache { cache: [Map] }, +//│ > 'generatorMap$A': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] +//│ > } => ModuleSymbol { +//│ > name: 'A', +//│ > value: [class A] { +//│ > 'cache$A': [FunCache], +//│ > 'generatorMap$A': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > }, +//│ > [Function: C] { +//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > } +//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 816a4215c2..b5ef197d6e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -23,6 +23,8 @@ staged module Test with fun test2(n) = pyth(n, 2) fib(n * 2) +//│ > fun ctor_() = +//│ > () //│ > fun f(x, y) = //│ > let tmp //│ > let tmp1 @@ -163,16 +165,16 @@ staged module Test with //│ > } //│ > }, //│ > [class NonStaged] { -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NonStaged' ] +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NonStaged' ] //│ > } => ModuleSymbol { //│ > name: 'NonStaged', -//│ > value: [class NonStaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > value: [class NonStaged] { Symbol(mlscript.definitionMetadata): [Array] } //│ > }, //│ > [class Staged] { -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Staged' ] +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Staged' ] //│ > } => ModuleSymbol { //│ > name: 'Staged', -//│ > value: [class Staged] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > value: [class Staged] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } //│ > } @@ -184,6 +186,8 @@ staged module TestIf with else "wrong4" fun test() = f(2) +//│ > fun ctor_() = +//│ > () //│ > fun f(x) = //│ > if x is //│ > 1 then "wrong1" @@ -219,6 +223,8 @@ class D() staged module TestClass with fun f() = new C(2, 3) fun g() = C(D()) +//│ > fun ctor_() = +//│ > () //│ > fun f() = new C(2, 3) //│ > fun g() = //│ > let tmp @@ -231,7 +237,7 @@ staged module TestClass with //│ > } //│ > Map(2) { //│ > [Function: C] { -//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, @@ -239,7 +245,7 @@ staged module TestClass with //│ > auxParams: [] //│ > }, //│ > [Function: D] { -//│ > class: [class D] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > class: [class D] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ClassSymbol { //│ > name: 'D', //│ > value: [Function: D] { class: [Function] }, @@ -261,9 +267,9 @@ staged module TestIf with y + 1 //│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'y' -//│ ║ l.256: let y +//│ ║ l.262: let y //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.256: let y +//│ ║ l.262: let y //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: y is not defined diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls index f75b8a32a2..46afc0b964 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls @@ -16,10 +16,11 @@ staged module A with //│ > 'h' => [Function: h_gen] //│ > } //│ > Map(1) { -//│ > 'ClassSymbol("C", fun C { class: class C }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { +//│ > [Function: C] { +//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index b072ac36d0..57e42156d1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -29,39 +29,39 @@ staged module A //│ } //│ staged module A² { //│ constructor { -//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11; -//│ set tmp7 = A².ctor$_instr﹖(); -//│ set tmp8 = ["ctor$", tmp7]; -//│ set tmp9 = [tmp8]; -//│ set tmp10 = new globalThis⁰.Map﹖(tmp9); -//│ set tmp11 = new SpecializeHelpers⁰.FunCache﹖(tmp10); -//│ define cache$A⁰ as val cache$A¹ = tmp11; -//│ set tmp4 = ["ctor$", A².ctor$_gen﹖]; -//│ set tmp5 = [tmp4]; -//│ set tmp6 = new globalThis⁰.Map﹖(tmp5); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp6; -//│ set tmp = { "indent": true }; -//│ set tmp1 = A².cache$A﹖.toString﹖(); -//│ set tmp2 = globalThis⁰.console﹖.log﹖(tmp1); -//│ set tmp3 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ let tmp_dyn, tmp, tmp1, tmp2, gen_call, tmp3, tmp4, tmp5, tmp6, tmp7; +//│ set tmp6 = new mut globalThis⁰.Map﹖(); +//│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp6); +//│ define cache$A⁰ as val cache$A¹ = tmp7; +//│ set tmp3 = ["ctor$", A².ctor$_gen﹖]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = new mut globalThis⁰.Map﹖(tmp4); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp5; +//│ set tmp_dyn = ShapeSet⁰.mkDyn﹖(); +//│ set gen_call = A².ctor$_gen﹖(); +//│ set tmp = A².cache$A﹖.toString﹖(); +//│ set tmp1 = globalThis⁰.console﹖.log﹖(tmp); +//│ set tmp2 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ end +//│ } +//│ method generate⁰ = fun generate¹() { //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { //│ let end, tmp, tmp1, sym, tmp2; -//│ set end = new Block⁰.End﹖(); +//│ set end = new mut Block⁰.End﹖(); //│ set tmp = []; //│ set tmp1 = [tmp]; -//│ set sym = new Block⁰.Symbol﹖("ctor$"); -//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, end); +//│ set sym = new mut Block⁰.Symbol﹖("ctor$"); +//│ set tmp2 = new mut Block⁰.FunDefn﹖(sym, tmp1, end); //│ return tmp2 //│ } //│ method ctor$_gen⁰ = fun ctor$_gen¹() { -//│ let tmp, tmp1, tmp2, tmp3; -//│ set tmp = A².cache$A﹖.getFun﹖("ctor$"); -//│ set tmp1 = []; -//│ set tmp2 = [tmp1]; -//│ set tmp3 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp2); -//│ return tmp3 +//│ let tmp, tmp1, tmp2; +//│ set tmp = []; +//│ set tmp1 = [tmp]; +//│ set tmp2 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp1); +//│ return tmp2 //│ } //│ }; //│ end From 9cafb840e19788fc7952fbafd10126edea99c128 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 29 Mar 2026 13:14:44 +0800 Subject: [PATCH 399/654] wip: fixing val2path --- .../src/test/mlscript-compile/Shape.mls | 9 +- .../src/test/mlscript-compile/ShapeSet.mls | 11 +- .../mlscript-compile/SpecializeHelpers.mls | 30 ++- .../test/mlscript/block-staging/ShapeProp.mls | 183 ++++++++++++++++-- 4 files changed, 201 insertions(+), 32 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index b7ecec7cda..9de5fffbc8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -25,11 +25,12 @@ fun show(s: Shape) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is - [Class(sym, params), Lit(n)] and n is Str - and sym.paramsOpt is Some(args) - and args.indexOf(n) is + [Class(ClassSymbol(_, _, paramsOpt, auxParams), params), Lit(n)] and n is Str + and paramsOpt is Some(paramsSymb) + and paramsSymb.indexOf(n) is -1 then [] i then [params.(i)] + [Class(ClassSymbol, p), Dyn] then [Dyn()] [Dyn, Lit(n)] and n is Str then [Dyn()] [Arr(shapes), Lit(n)] and n is Int @@ -40,7 +41,7 @@ fun sel(s1: Shape, s2: Shape): Array[Shape] = then [Dyn()] [Dyn, Dyn] then [Dyn()] - else [] // TODO: return no possibility instead of err? + else throw Error ("sel error") fun static(s: Shape) = if s is diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 3656735c24..3b71ceefe0 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -97,7 +97,7 @@ fun valOf(s : Shape) = Dyn() then throw Error("valOf on Dyn") Lit(l) then l Arr(shapes) then shapes.map((x, _, _) => valOf(x)) - Class(ClassSymbol(name, value, paramsOpt, auxParams), params) then ??? + Class(ClassSymbol(name, value, paramsOpt, auxParams), params) then value(...params.map(valOf)) else throw Error("Unknown shape") fun valOfSet(s : ShapeSet) = @@ -123,14 +123,15 @@ fun val2path(v) = [fullBlock, Block.ValueRef(tupSym)] else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then let md = v.constructor.(Symbols.definitionMetadata) - let clsName = md.0 + let clsName = md.1 let paramNames = md.2 let classSym = Block.ClassSymbol(clsName, undefined, None, []) // TODO: add correct Paramters to ClassSymbol let mapped = paramNames.map((fld, _, _) => val2path(v.(fld))) - let blocks = mapped.filter(_ is [_, _]).map(_ => _.0) - let paths = mapped.map((m, _, _) => if m is [_, p] then p else m) + let blocks = mapped.map(_.0) + let paths = mapped.map(_.1) let objSym = freshId("obj") - let objAssign = Block.Assign(objSym, Block.Instantiate(Block.ValueRef(classSym), paths.map((p, _, _) => Block.Arg(p))), Block.End()) + let objAssign = Block.Assign(objSym, Block.Instantiate(Block.ValueRef(classSym), paths.map(Block.Arg(_))), Block.End()) let fullBlock = foldl((b, acc) => Block.concat(b, acc))(objAssign, ...blocks) + print(fullBlock) [fullBlock, Block.ValueRef(objSym)] else [Block.End(), Block.ValueLit(42)] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 81ec0f67c0..51c27effa1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -41,7 +41,8 @@ fun sov(v): ShapeSet = fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s else if p is - Select(qual, sym) then selSet(sop(ctx, qual), mkLit(sym.name)) + Select(qual, sym) then + selSet(sop(ctx, qual), mkLit(sym.name)) DynSelect(qual, fld, _) then selSet(sop(ctx, qual), sop(ctx, fld)) ValueLit(lit) then mkLit(lit) @@ -55,7 +56,8 @@ fun sor(ctx, r) = if r is [End(), r, s] Instantiate(cls, args) then let sym = if cls is - ValueRef(s) and s is ClassSymbol then s + ValueRef(s) and s is ClassSymbol then + s Select(_, s) and s is ClassSymbol then s else throw Error("Instantiate with non-ClassSymbol in shape propagation: " + cls.toString()) [End(), r, mkClass(sym, args.map(a => sop(ctx, a.value)))] @@ -162,15 +164,27 @@ fun prop(ctx, b) = if b is else [Match(p, filteredArms.2, None, End()), filteredArms.1] +// TODO: debug only; remove this +fun propStub(ctx, body) = [body, mkDyn()] + +fun buildShapeName(s: Shape): Str = + if s is + Dyn then "Dyn" + Lit(lit) and lit is Str then "Str" + lit + Lit(lit) then "Lit" + lit.toString() + Arr(shapes) then "Arr_" + shapes.map(buildShapeName).join("_") + "_end" + Class(sym, params) then sym.name + "_" + params.map(buildShapeName).join("_") + else "Unk" + +fun buildShapeSetName(ss: ShapeSet): Str = + let vals = ss.values() + if vals.length == 1 then buildShapeName(vals.0) + else "Union_" + vals.map(buildShapeName).join("_") + "_end" + fun specializeName(funName, shapes) = if shapes.every(ps => ps.every(s => s.isDyn())) then funName else - funName + "_" + shapes.toString() - .replaceAll("{", "").replaceAll("}", "") - .replaceAll("[", "").replaceAll("]", "") - .replaceAll("(", "").replaceAll(")", "") - .replaceAll("\\", "").replaceAll("\"", "") - .replaceAll(" ", "").replaceAll(",", "_") + funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("__") fun specialize(cache, funName, dflt, shapes) = // replace function symbol in block definition to new name diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 081fe20ab2..d55fed7c77 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -4,6 +4,10 @@ module NonStaged with fun sq(x) = x * x + fun fib(n) = if n is + 1 then 1 + 2 then 1 + n then fib(n - 1) + fib(n - 2) module Staged with fun sq(x) = x * x @@ -20,6 +24,7 @@ staged module Test with let five = f(2, 3) fib(five) pyth(3, 4) + NonStaged.fib(five) // this is fully partial evaluated unlike the staged counterpart :) fun test2(n) = pyth(n, 2) fib(n * 2) @@ -60,7 +65,8 @@ staged module Test with //│ > let five //│ > five = Test.f_Lit2_Lit3(2, 3) //│ > __no__symbol__ = Test.fib_Lit5(five) -//│ > Test.pyth_Lit3_Lit4(3, 4) +//│ > __no__symbol__ = Test.pyth_Lit3_Lit4(3, 4) +//│ > 5 //│ > fun f_Lit2_Lit3(x, y) = //│ > let tmp //│ > let tmp1 @@ -176,28 +182,42 @@ staged module Test with //│ > } //│ > } +class C(val x) staged module TestIf with fun f(x) = if x is - 1 then "wrong1" + C(2) then "wrong1" 2 then "correct" - 3 then "wrong3" - else "wrong4" + else "wrong2" fun test() = f(2) //│ > fun f(x) = +//│ > let arg_C_0_ //│ > if x is -//│ > 1 then "wrong1" +//│ > C(x) then +//│ > arg_C_0_ = x.x +//│ > if arg_C_0_ is +//│ > 2 then "wrong1" +//│ > else "wrong2" //│ > 2 then "correct" -//│ > 3 then "wrong3" -//│ > else "wrong4" +//│ > else "wrong2" //│ > fun test() = TestIf.f_Lit2(2) -//│ > fun f_Lit2(x) = "correct" +//│ > fun f_Lit2(x) = +//│ > let arg_C_0_ +//│ > "correct" //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'test' => [Function: test_gen] //│ > } -//│ > Map(1) { +//│ > Map(2) { +//│ > [Function: C] { +//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, //│ > [class TestIf] { //│ > 'cache$TestIf': FunCache { cache: [Map] }, //│ > 'generatorMap$TestIf': Map(3) { @@ -219,6 +239,7 @@ class D() staged module TestClass with fun f() = new C(2, 3) fun g() = C(D()) +//│ > ClassSymbol("C", fun C { class: class C }, Some([Symbol("x")]), []) //│ > fun f() = new C(2, 3) //│ > fun g() = //│ > let tmp @@ -231,7 +252,7 @@ staged module TestClass with //│ > } //│ > Map(2) { //│ > [Function: C] { -//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > class: [class C2] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, @@ -248,16 +269,72 @@ staged module TestClass with //│ > } //│ > } +class C(val n) +staged module TestClass2 with + fun f(c) = c + // fun test() = f(C(2)) // FIXME: this should be static as well + fun test2() = f(new C(1)) // FIXME +//│ > ClassSymbol("C", fun C { class: class C }, Some([Symbol("n")]), []) +//│ > Assign(Symbol("obj_1"), Instantiate(ValueRef(ClassSymbol("C", undefined, None, [])), [Arg(ValueLit(1))]), End()) +//│ > fun f(c) = c +//│ > fun test2() = +//│ > let tmp +//│ > tmp = new C(1) +//│ > TestClass2.f_C_Lit1(tmp) +//│ > fun f_C_Lit1(c) = +//│ > obj_1 = new C(1) +//│ > obj_1 +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'test2' => [Function: test2_gen] +//│ > } +//│ > Map(2) { +//│ > [Function: C] { +//│ > class: [class C4] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > [class TestClass2] { +//│ > 'cache$TestClass2': FunCache { cache: [Map] }, +//│ > 'generatorMap$TestClass2': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'test2' => [Function: test2_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'TestClass2', +//│ > value: [class TestClass2] { +//│ > 'cache$TestClass2': [FunCache], +//│ > 'generatorMap$TestClass2': [Map] +//│ > } +//│ > } +//│ > } + :noSanityCheck class C(val n) staged module TestIf with fun f(x) = let y - if x is C then + if x is C then y = x.n else y = 0 y + 1 + fun get(n, c) = + c.(n) + fun get2(n) = + let c = new C(3) + c.(n) + fun test() = + let c = new C(2) + f(c) + get("n", c) +//│ > ClassSymbol("C", fun C { class: class C }, Some([Symbol("n")]), []) +//│ > ClassSymbol("C", fun C { class: class C }, Some([Symbol("n")]), []) //│ > fun f(x) = //│ > let y //│ > let tmp @@ -269,15 +346,91 @@ staged module TestIf with //│ > else y = 0 //│ > tmp = Runtime.Unit //│ > 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(2) { +//│ > fun get(n, c) = c.(n) +//│ > fun get2(n) = +//│ > let c +//│ > c = new C(3) +//│ > c.(n) +//│ > fun test() = +//│ > let c +//│ > c = new C(2) +//│ > __no__symbol__ = TestIf.f_C_Lit2(c) +//│ > TestIf.get_Strn_C_Lit2("n", c) +//│ > fun f_C_Lit2(x) = +//│ > let y +//│ > let tmp +//│ > y = x.n +//│ > tmp = Runtime.Unit +//│ > +(y, 1) +//│ > fun get_Strn_C_Lit2(n, c) = c.(n) +//│ > Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'get' => [Function: get_gen], +//│ > 'get2' => [Function: get2_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > Map(3) { //│ > [Function: C] { -//│ > class: [class C2] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > class: [class C6] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, -//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } +//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} }, +//│ > [class TestIf2] { +//│ > 'cache$TestIf': FunCache { cache: [Map] }, +//│ > 'generatorMap$TestIf': Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'get' => [Function: get_gen], +//│ > 'get2' => [Function: get2_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'TestIf', +//│ > value: [class TestIf2] { +//│ > 'cache$TestIf': [FunCache], +//│ > 'generatorMap$TestIf': [Map] +//│ > } +//│ > } +//│ > } + +staged module TestTupleMatching with + fun len(x) = if x is + [a] then 1 + [a, b] then 2 + [a, b, c] then 3 + else -1 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] TypeError: s.hash is not a function +//│ at lambda (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:133:33) +//│ at Array.map () +//│ at liftMany (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:139:32) +//│ at Predef.pipeInto (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:103:29) +//│ at ShapeSet.selSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:268:19) +//│ at SpecializeHelpers.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:184:25) +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:343:63) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:716:38) +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:774:40) +//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 + +class E(val x) +staged module Test2 with + fun f() = new E(1) +//│ > ClassSymbol("E", fun E { class: class E }, Some([Symbol("x")]), []) +//│ > fun f() = new E(1) +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(1) { +//│ > [Function: E] { +//│ > class: [class E] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'E', +//│ > value: [Function: E] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } //│ > } From 7468ac40e5a4a750c935b0c5346bceb354cd2d06 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 29 Mar 2026 13:32:04 +0800 Subject: [PATCH 400/654] wip: fixing val2path --- .../src/test/mlscript-compile/ShapeSet.mls | 7 ++- .../test/mlscript/block-staging/ShapeProp.mls | 54 +++++++++++++------ 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 3b71ceefe0..e241324253 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -116,10 +116,10 @@ fun val2path(v) = else if Array.isArray(v) then let mapped = v.map(val2path) let blocks = mapped.map(_.0) - let paths = mapped.map(_.0) + let paths = mapped.map(_.1) let tupSym = freshId("tup") let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map(Block.Arg(_))), Block.End()) - let fullBlock = foldl((b, acc) => Block.concat(b, acc))(tupAssign, ...blocks) + let fullBlock = foldl((b, acc) => Block.concat(b, acc))(Block.Scoped([tupSym], tupAssign), ...blocks) [fullBlock, Block.ValueRef(tupSym)] else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then let md = v.constructor.(Symbols.definitionMetadata) @@ -131,7 +131,6 @@ fun val2path(v) = let paths = mapped.map(_.1) let objSym = freshId("obj") let objAssign = Block.Assign(objSym, Block.Instantiate(Block.ValueRef(classSym), paths.map(Block.Arg(_))), Block.End()) - let fullBlock = foldl((b, acc) => Block.concat(b, acc))(objAssign, ...blocks) - print(fullBlock) + let fullBlock = foldl((b, acc) => Block.concat(b, acc))(Block.Scoped([objSym], objAssign), ...blocks) [fullBlock, Block.ValueRef(objSym)] else [Block.End(), Block.ValueLit(42)] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index d55fed7c77..bfe1b71248 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -28,6 +28,8 @@ staged module Test with fun test2(n) = pyth(n, 2) fib(n * 2) +//│ > fun ctor_() = +//│ > () //│ > fun f(x, y) = //│ > let tmp //│ > let tmp1 @@ -190,6 +192,8 @@ staged module TestIf with else "wrong2" fun test() = f(2) +//│ > fun ctor_() = +//│ > () //│ > fun f(x) = //│ > let arg_C_0_ //│ > if x is @@ -239,7 +243,8 @@ class D() staged module TestClass with fun f() = new C(2, 3) fun g() = C(D()) -//│ > ClassSymbol("C", fun C { class: class C }, Some([Symbol("x")]), []) +//│ > fun ctor_() = +//│ > () //│ > fun f() = new C(2, 3) //│ > fun g() = //│ > let tmp @@ -272,21 +277,36 @@ staged module TestClass with class C(val n) staged module TestClass2 with fun f(c) = c - // fun test() = f(C(2)) // FIXME: this should be static as well - fun test2() = f(new C(1)) // FIXME -//│ > ClassSymbol("C", fun C { class: class C }, Some([Symbol("n")]), []) -//│ > Assign(Symbol("obj_1"), Instantiate(ValueRef(ClassSymbol("C", undefined, None, [])), [Arg(ValueLit(1))]), End()) + fun test() = f(C(2)) // FIXME: this should be static as well + fun test2() = + f(new C(1)) // FIXME + f(new C(2)) +//│ > fun ctor_() = +//│ > () //│ > fun f(c) = c -//│ > fun test2() = +//│ > fun test() = //│ > let tmp -//│ > tmp = new C(1) -//│ > TestClass2.f_C_Lit1(tmp) +//│ > tmp = C(2) +//│ > TestClass2.f(tmp) +//│ > fun test2() = +//│ > let tmp1 +//│ > let tmp2 +//│ > tmp1 = new C(1) +//│ > __no__symbol__ = TestClass2.f_C_Lit1(tmp1) +//│ > tmp2 = new C(2) +//│ > TestClass2.f_C_Lit2(tmp2) //│ > fun f_C_Lit1(c) = +//│ > let obj_1 //│ > obj_1 = new C(1) //│ > obj_1 -//│ > Map(3) { +//│ > fun f_C_Lit2(c) = +//│ > let obj_2 +//│ > obj_2 = new C(2) +//│ > obj_2 +//│ > Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], +//│ > 'test' => [Function: test_gen], //│ > 'test2' => [Function: test2_gen] //│ > } //│ > Map(2) { @@ -300,9 +320,10 @@ staged module TestClass2 with //│ > }, //│ > [class TestClass2] { //│ > 'cache$TestClass2': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestClass2': Map(3) { +//│ > 'generatorMap$TestClass2': Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], +//│ > 'test' => [Function: test_gen], //│ > 'test2' => [Function: test2_gen] //│ > } //│ > } => ModuleSymbol { @@ -333,8 +354,8 @@ staged module TestIf with let c = new C(2) f(c) get("n", c) -//│ > ClassSymbol("C", fun C { class: class C }, Some([Symbol("n")]), []) -//│ > ClassSymbol("C", fun C { class: class C }, Some([Symbol("n")]), []) +//│ > fun ctor_() = +//│ > () //│ > fun f(x) = //│ > let y //│ > let tmp @@ -413,15 +434,16 @@ staged module TestTupleMatching with //│ at Predef.pipeInto (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:103:29) //│ at ShapeSet.selSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:268:19) //│ at SpecializeHelpers.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:184:25) -//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:343:63) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:716:38) -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:774:40) +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:342:63) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:715:38) +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:773:40) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 class E(val x) staged module Test2 with fun f() = new E(1) -//│ > ClassSymbol("E", fun E { class: class E }, Some([Symbol("x")]), []) +//│ > fun ctor_() = +//│ > () //│ > fun f() = new E(1) //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { From 288e8c605c30626c941f101c7ac7404075e437cd Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 29 Mar 2026 13:34:10 +0800 Subject: [PATCH 401/654] remove a useless commment --- hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index bfe1b71248..63d5198944 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -23,8 +23,8 @@ staged module Test with fun test() = let five = f(2, 3) fib(five) + NonStaged.fib(five) pyth(3, 4) - NonStaged.fib(five) // this is fully partial evaluated unlike the staged counterpart :) fun test2(n) = pyth(n, 2) fib(n * 2) @@ -67,8 +67,8 @@ staged module Test with //│ > let five //│ > five = Test.f_Lit2_Lit3(2, 3) //│ > __no__symbol__ = Test.fib_Lit5(five) -//│ > __no__symbol__ = Test.pyth_Lit3_Lit4(3, 4) -//│ > 5 +//│ > __no__symbol__ = 5 +//│ > Test.pyth_Lit3_Lit4(3, 4) //│ > fun f_Lit2_Lit3(x, y) = //│ > let tmp //│ > let tmp1 From 10a29dac017b1e99e379f2709dec7d78e40fb63c Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 29 Mar 2026 13:43:20 +0800 Subject: [PATCH 402/654] wip: fixing val2path --- .../src/test/mlscript-compile/ShapeSet.mls | 12 ++-- .../mlscript-compile/SpecializeHelpers.mls | 24 ++++--- .../test/mlscript/block-staging/ShapeProp.mls | 34 ++++++---- .../block-staging/ShapeSetHelpers.mls | 65 ++++++++++--------- 4 files changed, 80 insertions(+), 55 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index e241324253..950298d007 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -110,27 +110,29 @@ fun freshId(prefix) = set idCounter = idCounter + 1 Block.Symbol(prefix + "_" + idCounter.toString()) -fun val2path(v) = +fun val2path(v, allocs) = if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then [Block.End(), Block.ValueLit(v)] else if Array.isArray(v) then - let mapped = v.map(val2path) + let mapped = v.map(val2path(_, allocs)) let blocks = mapped.map(_.0) let paths = mapped.map(_.1) let tupSym = freshId("tup") + allocs.push(tupSym) let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map(Block.Arg(_))), Block.End()) - let fullBlock = foldl((b, acc) => Block.concat(b, acc))(Block.Scoped([tupSym], tupAssign), ...blocks) + let fullBlock = foldl((b, acc) => Block.concat(b, acc))(tupAssign, ...blocks) [fullBlock, Block.ValueRef(tupSym)] else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then let md = v.constructor.(Symbols.definitionMetadata) let clsName = md.1 let paramNames = md.2 let classSym = Block.ClassSymbol(clsName, undefined, None, []) // TODO: add correct Paramters to ClassSymbol - let mapped = paramNames.map((fld, _, _) => val2path(v.(fld))) + let mapped = paramNames.map((fld, _, _) => val2path(v.(fld), allocs)) let blocks = mapped.map(_.0) let paths = mapped.map(_.1) let objSym = freshId("obj") + allocs.push(objSym) let objAssign = Block.Assign(objSym, Block.Instantiate(Block.ValueRef(classSym), paths.map(Block.Arg(_))), Block.End()) - let fullBlock = foldl((b, acc) => Block.concat(b, acc))(Block.Scoped([objSym], objAssign), ...blocks) + let fullBlock = foldl((b, acc) => Block.concat(b, acc))(objAssign, ...blocks) [fullBlock, Block.ValueRef(objSym)] else [Block.End(), Block.ValueLit(42)] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 51c27effa1..c33093339e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -13,12 +13,17 @@ open ShapeSet module SpecializeHelpers with ... -class Ctx(val ctx: Map[String, ShapeSet]) with +fun wrapScoped(symbols, block) = + if symbols.length == 0 then block + else if block is Scoped(oldSymbols, rest) then Scoped([...symbols, ...oldSymbols], rest) + else Scoped(symbols, block) + +class Ctx(val ctx: Map[String, ShapeSet], val allocs: Array[Block.Symbol]) with fun get(path) = let ps = showPath(path) if ctx.has(ps) then Some(ctx.get(ps)) else None - fun clone = Ctx(new Map(ctx)) + fun clone = Ctx(new Map(ctx), allocs) fun add(path, ss) = let ps = showPath(path) if ctx.has(ps) then @@ -27,7 +32,7 @@ class Ctx(val ctx: Map[String, ShapeSet]) with ctx.set(ps, ss) this module Ctx with - fun empty = Ctx(new Map()) + fun empty = Ctx(new Map(), mut []) fun sov(v): ShapeSet = if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then @@ -51,7 +56,7 @@ fun sop(ctx, p): ShapeSet = fun sor(ctx, r) = if r is Path and let s = sop(ctx, r) - staticSet(s) and val2path(valOfSet(s)) is [blk, res] then [blk, res, s] + staticSet(s) and val2path(valOfSet(s), ctx.allocs) is [blk, res] then [blk, res, s] else [End(), r, s] Instantiate(cls, args) then @@ -109,7 +114,7 @@ fun sor(ctx, r) = if r is argShapes.every(staticSet) then // non staged function but params known let f = value.(symb) let evaluated = f(...argShapes.map(valOfSet)) - let evaluated_path = val2path(evaluated) + let evaluated_path = val2path(evaluated, ctx.allocs) [evaluated_path.0, evaluated_path.1, sov(evaluated)] Select(ValueRef(symb), Symbol(f)) and sop(ctx, ValueRef(symb)) is Class(sym, params) then // class method call // TODO @@ -122,8 +127,10 @@ fun prop(ctx, b) = if b is [concat(blk, Return(r1, implct)), s1] Scoped(symbols, rest) then symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) - let res = prop(ctx, rest) - [Scoped(symbols, res.0), res.1] + let newAllocs = mut [] + let newCtx = Ctx(new Map(ctx.ctx), newAllocs) + let res = prop(newCtx, rest) + [wrapScoped([...symbols, ...newAllocs], res.0), res.1] Assign(x, r, b) and sor(ctx, r) is [blk, r1, s1] then if prop(ctx.add(ValueRef(x), s1), b) is [b2, s2] then @@ -198,7 +205,8 @@ fun specialize(cache, funName, dflt, shapes) = ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), shapes.(i).(j)))) cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) let res = prop(ctx, body) - let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, res.0), res.1]) + let bodyWithScoped = wrapScoped(ctx.allocs, res.0) + let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, bodyWithScoped), res.1]) [entry.0.sym, entry.1] class FunCache(val cache: Map[String, [FunDefn, ShapeSet]]) with diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 63d5198944..f2bbcb9e56 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -279,8 +279,9 @@ staged module TestClass2 with fun f(c) = c fun test() = f(C(2)) // FIXME: this should be static as well fun test2() = - f(new C(1)) // FIXME f(new C(2)) + f(new C(3)) + f(new C(4)) //│ > fun ctor_() = //│ > () //│ > fun f(c) = c @@ -291,18 +292,25 @@ staged module TestClass2 with //│ > fun test2() = //│ > let tmp1 //│ > let tmp2 -//│ > tmp1 = new C(1) -//│ > __no__symbol__ = TestClass2.f_C_Lit1(tmp1) -//│ > tmp2 = new C(2) -//│ > TestClass2.f_C_Lit2(tmp2) -//│ > fun f_C_Lit1(c) = +//│ > let tmp3 +//│ > tmp1 = new C(2) +//│ > __no__symbol__ = TestClass2.f_C_Lit2(tmp1) +//│ > tmp2 = new C(3) +//│ > __no__symbol__ = TestClass2.f_C_Lit3(tmp2) +//│ > tmp3 = new C(4) +//│ > TestClass2.f_C_Lit4(tmp3) +//│ > fun f_C_Lit2(c) = //│ > let obj_1 -//│ > obj_1 = new C(1) +//│ > obj_1 = new C(2) //│ > obj_1 -//│ > fun f_C_Lit2(c) = +//│ > fun f_C_Lit3(c) = //│ > let obj_2 -//│ > obj_2 = new C(2) +//│ > obj_2 = new C(3) //│ > obj_2 +//│ > fun f_C_Lit4(c) = +//│ > let obj_3 +//│ > obj_3 = new C(4) +//│ > obj_3 //│ > Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -433,10 +441,10 @@ staged module TestTupleMatching with //│ at liftMany (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:139:32) //│ at Predef.pipeInto (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:103:29) //│ at ShapeSet.selSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:268:19) -//│ at SpecializeHelpers.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:184:25) -//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:342:63) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:715:38) -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:773:40) +//│ at SpecializeHelpers.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:207:25) +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:365:63) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:745:38) +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:803:40) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 class E(val x) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index f2bc0d25bd..c15b4845fc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -169,7 +169,7 @@ let x = ValueRef(Symbol("x")) //│ includeZero = false //│ defaultName = "tmp" //│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, member:Shape -> Shape, x -> x, member:SpecializeHelpers -> SpecializeHelpers1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ╟── which references the symbol introduced here //│ ║ l.149: let x = ValueRef(Symbol("x")) @@ -191,7 +191,7 @@ ctx.get(x) //│ includeZero = false //│ defaultName = "tmp" //│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, x -> x, member:SpecializeHelpers -> SpecializeHelpers1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.179: ctx.add(x, mkLit(1)) //│ ║ ^ @@ -211,7 +211,7 @@ ctx.get(x) //│ includeZero = false //│ defaultName = "tmp" //│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, x -> x, member:SpecializeHelpers -> SpecializeHelpers1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.180: ctx.get(x) //│ ║ ^ @@ -247,7 +247,7 @@ ctx.get(x) //│ includeZero = false //│ defaultName = "tmp" //│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, tmp:block$res -> block$res33, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, x -> x, tmp:block$res -> block$res33, member:SpecializeHelpers -> SpecializeHelpers1, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.235: ctx.add(x, mkLit(2)) //│ ║ ^ @@ -267,7 +267,7 @@ ctx.get(x) //│ includeZero = false //│ defaultName = "tmp" //│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, member:SpecializeHelpers -> SpecializeHelpers1, x -> x, tmp:block$res -> block$res33, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) +//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, x -> x, tmp:block$res -> block$res33, member:SpecializeHelpers -> SpecializeHelpers1, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.236: ctx.get(x) //│ ║ ^ @@ -1005,7 +1005,7 @@ c.printImps() //│ includeZero = false //│ defaultName = "tmp" //│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:Block -> Block, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res25, tmp:tmp -> tmp76, tmp:tmp -> tmp77, tmp:block$res -> block$res26, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res54, tmp:tmp -> tmp125, tmp:tmp -> tmp126, tmp:block$res -> block$res27, tmp:tmp -> tmp127, tmp:tmp -> tmp80, tmp:tmp -> tmp128, tmp:tmp -> tmp129, tmp:tmp -> tmp130, tmp:tmp -> tmp131, tmp:tmp -> tmp132, tmp:tmp -> tmp133, tmp:tmp -> tmp134, tmp:block$res -> block$res28, tmp:tmp -> tmp135, tmp:tmp -> tmp81, tmp:tmp -> tmp136, tmp:tmp -> tmp137, tmp:tmp -> tmp138, tmp:tmp -> tmp139, tmp:tmp -> tmp140, tmp:tmp -> tmp141, tmp:tmp -> tmp142, tmp:tmp -> tmp143, tmp:tmp -> tmp144, tmp:tmp -> tmp145, tmp:scrut -> scrut2, tmp:tmp -> tmp146, tmp:tmp -> tmp147, tmp:block$res -> block$res29, tmp:tmp -> tmp148, tmp:tmp -> tmp82, tmp:tmp -> tmp149, tmp:tmp -> tmp83, tmp:tmp -> tmp150, tmp:tmp -> tmp151, tmp:tmp -> tmp152, tmp:block$res -> block$res30, tmp:tmp -> tmp153, tmp:tmp -> tmp154, ctx -> ctx, tmp:tmp -> tmp155, tmp:tmp -> tmp156, member:f_gen -> f_gen, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res55, member:Option -> Option, tmp:block$res -> block$res32, member:defs -> defs, tmp:tmp -> tmp84, member:fPath -> fPath, member:M -> M, member:Shape -> Shape, member:fSym -> fSym, member:SpecializeHelpers -> SpecializeHelpers1, tmp:block$res -> block$res33, tmp:tmp -> tmp85, y -> y1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res34, tmp:tmp -> tmp86, tmp:tmp -> tmp87, tmp:block$res -> block$res56, ctx2 -> ctx2, tmp:tmp -> tmp157, tmp:tmp -> tmp158, tmp:tmp -> tmp159, tmp:tmp -> tmp160, member:callF -> callF, tmp:block$res -> block$res35, tmp:selRes -> selRes, tmp:tmp -> tmp88, member:Predef -> Predef, tmp:block$res -> block$res36, member:Block -> Block1, tmp:block$res -> block$res57, tmp:tmp -> tmp161, tmp:tmp -> tmp162, tmp:tmp -> tmp163, tmp:block$res -> block$res37, tmp:tmp -> tmp164, member:ctxXY -> ctxXY, tmp:block$res -> block$res38, tmp:block$res -> block$res58, member:blockAdd -> blockAdd, tmp:block$res -> block$res39, member:selPath -> selPath, member:C -> C, member:x -> x2, member:Runtime -> Runtime, tmp:block$res -> block$res59, tmp:tmp -> tmp165, tmp:tmp -> tmp166, tmp:tmp -> tmp167, tmp:tmp -> tmp168, ctx -> ctx1, tmp:tmp -> tmp169, tmp:tmp -> tmp170, tmp:tmp -> tmp171, member:blockBranch -> blockBranch, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res40, tmp:tmp -> tmp89, tmp:block$res -> block$res2, tmp:tmp -> tmp90, tmp:tmp -> tmp91, tmp:tmp -> tmp92, tmp:tmp -> tmp93, tmp:tmp -> tmp94, tmp:block$res -> block$res3, tmp:tmp -> tmp95, member:tup -> tup, tmp:block$res -> block$res4, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res41, tmp:block$res -> block$res6, tmp:tmp -> tmp96, tmp:tmp -> tmp2, tmp:tmp -> tmp97, tmp:tmp -> tmp3, tmp:tmp -> tmp98, tmp:tmp -> tmp99, tmp:tmp -> tmp100, tmp:tmp -> tmp101, c -> c, tmp:scrut -> scrut, tmp:block$res -> block$res60, tmp:tmp -> tmp172, tmp:block$res -> block$res7, tmp:tmp -> tmp173, tmp:tmp -> tmp4, tmp:tmp -> tmp174, inst -> inst, tmp:tmp -> tmp175, tmp:tmp -> tmp176, tmp:tmp -> tmp177, tmp:tmp -> tmp178, tmp:tmp -> tmp179, tmp:tmp -> tmp180, tmp:block$res -> block$res8, tmp:tmp -> tmp181, tmp:tmp -> tmp5, tmp:tmp -> tmp182, tmp:tmp -> tmp183, tmp:tmp -> tmp184, tmp:tmp -> tmp185, tmp:tmp -> tmp186, tmp:tmp -> tmp187, tmp:tmp -> tmp188, tmp:block$res -> block$res9, tmp:block$res -> block$res42, tmp:tmp -> tmp189, tmp:tmp -> tmp6, tmp:tmp -> tmp102, tmp:tmp -> tmp190, tmp:tmp -> tmp103, tmp:tmp -> tmp191, tmp:tmp -> tmp104, tmp:tmp -> tmp192, tmp:tmp -> tmp105, tmp:tmp -> tmp106, member:earlyRetBlock -> earlyRetBlock, tmp:tmp -> tmp107, tmp:tmp -> tmp108, member:testBinOp -> testBinOp, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:tmp -> tmp10, tmp:tmp -> tmp11, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:tmp -> tmp14, tmp:block$res -> block$res12, tmp:tmp -> tmp15, arrSp -> arrSp, tmp:block$res -> block$res13, tmp:block$res -> block$res61, tmp:tmp -> tmp16, tmp:tmp -> tmp193, tmp:tmp -> tmp17, tmp:tmp -> tmp194, tmp:tmp -> tmp18, tmp:tmp -> tmp195, tmp:tmp -> tmp196, tmp:tmp -> tmp197, tmp:tmp -> tmp198, tmp:tmp -> tmp199, tmp:tmp -> tmp200, tmp:tmp -> tmp201, tmp:block$res -> block$res14, tmp:tmp -> tmp202, tmp:tmp -> tmp19, tmp:tmp -> tmp203, tmp:tmp -> tmp204, tmp:tmp -> tmp205, tmp:tmp -> tmp206, tmp:tmp -> tmp207, tmp:block$res -> block$res43, tmp:tmp -> tmp208, tmp:tmp -> tmp209, tmp:block$res -> block$res15, tmp:tmp -> tmp210, tmp:tmp -> tmp20, tmp:tmp -> tmp211, member:nestedBlock -> nestedBlock, tmp:block$res -> block$res44, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, tmp:block$res -> block$res45, a -> a, tmp:block$res -> block$res46, tmp:block$res -> block$res47, member:testUnaryOp -> testUnaryOp, x -> x, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, c -> c3, tmp:tmp -> tmp32, tmp:tmp -> tmp33, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, tmp:tmp -> tmp40, tmp:block$res -> block$res48, tmp:block$res -> block$res62, tmp:tmp -> tmp212, tmp:block$res -> block$res49, tmp:tmp -> tmp213, tmp:tmp -> tmp214, tmp:tmp -> tmp215, tmp:tmp -> tmp216, tmp:block$res -> block$res50, tmp:tmp -> tmp217, tmp:tmp -> tmp218, tmp:block$res -> block$res18, tmp:tmp -> tmp219, tmp:tmp -> tmp41, tmp:tmp -> tmp220, tmp:tmp -> tmp42, tmp:block$res -> block$res51, tmp:tmp -> tmp221, tmp:tmp -> tmp43, tmp:tmp -> tmp222, tmp:tmp -> tmp44, x -> x3, tmp:tmp -> tmp223, tmp:tmp -> tmp45, tmp:tmp -> tmp224, tmp:tmp -> tmp46, tmp:tmp -> tmp225, y -> y2, tmp:tmp -> tmp226, x -> x1, tmp:tmp -> tmp227, tmp:tmp -> tmp228, z -> z, tmp:tmp -> tmp229, tmp:tmp -> tmp230, tmp:tmp -> tmp231, plus -> plus, tmp:tmp -> tmp232, tmp:tmp -> tmp233, y -> y, tmp:tmp -> tmp234, tmp:tmp -> tmp235, tmp:tmp -> tmp236, tmp:tmp -> tmp237, tmp:block$res -> block$res52, tmp:tmp -> tmp238, tmp:tmp -> tmp109, c -> c1, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:tmp -> tmp59, tmp:block$res -> block$res53, tmp:tmp -> tmp110, tmp:tmp -> tmp111, tmp:tmp -> tmp112, tmp:block$res -> block$res21, tmp:tmp -> tmp113, tmp:tmp -> tmp60, tmp:tmp -> tmp114, tmp:tmp -> tmp61, tmp:tmp -> tmp115, tmp:tmp -> tmp116, filterShapes -> filterShapes, tmp:tmp -> tmp117, tmp:tmp -> tmp118, tmp:tmp -> tmp119, tmp:tmp -> tmp120, tmp:tmp -> tmp121, tmp:tmp -> tmp122, tmp:tmp -> tmp123, tmp:tmp -> tmp124, c -> c2, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:tmp -> tmp68) +//│ bindings = HashMap(tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:Block -> Block, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res25, tmp:tmp -> tmp76, tmp:tmp -> tmp77, tmp:block$res -> block$res26, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res54, tmp:tmp -> tmp125, tmp:tmp -> tmp126, tmp:block$res -> block$res27, tmp:tmp -> tmp127, tmp:tmp -> tmp80, tmp:tmp -> tmp128, tmp:tmp -> tmp129, tmp:tmp -> tmp130, tmp:tmp -> tmp131, tmp:tmp -> tmp132, tmp:tmp -> tmp133, tmp:tmp -> tmp134, tmp:block$res -> block$res28, tmp:tmp -> tmp135, tmp:tmp -> tmp81, tmp:tmp -> tmp136, tmp:tmp -> tmp137, tmp:tmp -> tmp138, tmp:tmp -> tmp139, tmp:tmp -> tmp140, tmp:tmp -> tmp141, tmp:tmp -> tmp142, tmp:tmp -> tmp143, tmp:tmp -> tmp144, tmp:tmp -> tmp145, tmp:scrut -> scrut2, tmp:tmp -> tmp146, tmp:tmp -> tmp147, tmp:block$res -> block$res29, tmp:tmp -> tmp148, tmp:tmp -> tmp82, tmp:tmp -> tmp149, tmp:tmp -> tmp83, tmp:tmp -> tmp150, tmp:tmp -> tmp151, tmp:tmp -> tmp152, tmp:block$res -> block$res30, tmp:tmp -> tmp153, tmp:tmp -> tmp154, ctx -> ctx, tmp:tmp -> tmp155, tmp:tmp -> tmp156, member:f_gen -> f_gen, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res55, member:Option -> Option, tmp:block$res -> block$res32, member:defs -> defs, tmp:tmp -> tmp84, member:fPath -> fPath, member:M -> M, member:Shape -> Shape, member:fSym -> fSym, tmp:block$res -> block$res33, member:SpecializeHelpers -> SpecializeHelpers1, tmp:tmp -> tmp85, y -> y1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res34, tmp:tmp -> tmp86, tmp:tmp -> tmp87, tmp:block$res -> block$res56, ctx2 -> ctx2, tmp:tmp -> tmp157, tmp:tmp -> tmp158, tmp:tmp -> tmp159, tmp:tmp -> tmp160, member:callF -> callF, tmp:block$res -> block$res35, tmp:selRes -> selRes, tmp:tmp -> tmp88, member:Predef -> Predef, tmp:block$res -> block$res36, member:Block -> Block1, tmp:block$res -> block$res57, tmp:tmp -> tmp161, tmp:tmp -> tmp162, tmp:tmp -> tmp163, tmp:block$res -> block$res37, tmp:tmp -> tmp164, member:ctxXY -> ctxXY, tmp:block$res -> block$res38, tmp:block$res -> block$res58, member:blockAdd -> blockAdd, tmp:block$res -> block$res39, member:selPath -> selPath, member:C -> C, member:x -> x2, member:Runtime -> Runtime, tmp:block$res -> block$res59, tmp:tmp -> tmp165, tmp:tmp -> tmp166, tmp:tmp -> tmp167, tmp:tmp -> tmp168, ctx -> ctx1, tmp:tmp -> tmp169, tmp:tmp -> tmp170, tmp:tmp -> tmp171, member:blockBranch -> blockBranch, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res40, tmp:tmp -> tmp89, tmp:block$res -> block$res2, tmp:tmp -> tmp90, tmp:tmp -> tmp91, tmp:tmp -> tmp92, tmp:tmp -> tmp93, tmp:tmp -> tmp94, tmp:block$res -> block$res3, tmp:tmp -> tmp95, member:tup -> tup, tmp:block$res -> block$res4, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res41, tmp:block$res -> block$res6, tmp:tmp -> tmp96, tmp:tmp -> tmp2, tmp:tmp -> tmp97, tmp:tmp -> tmp3, tmp:tmp -> tmp98, tmp:tmp -> tmp99, tmp:tmp -> tmp100, tmp:tmp -> tmp101, c -> c, tmp:scrut -> scrut, tmp:block$res -> block$res60, tmp:tmp -> tmp172, tmp:block$res -> block$res7, tmp:tmp -> tmp173, tmp:tmp -> tmp4, tmp:tmp -> tmp174, inst -> inst, tmp:tmp -> tmp175, tmp:tmp -> tmp176, tmp:tmp -> tmp177, tmp:tmp -> tmp178, tmp:tmp -> tmp179, tmp:tmp -> tmp180, tmp:block$res -> block$res8, tmp:tmp -> tmp181, tmp:tmp -> tmp5, tmp:tmp -> tmp182, tmp:tmp -> tmp183, tmp:tmp -> tmp184, tmp:tmp -> tmp185, tmp:tmp -> tmp186, tmp:tmp -> tmp187, tmp:tmp -> tmp188, tmp:block$res -> block$res9, tmp:block$res -> block$res42, tmp:tmp -> tmp189, tmp:tmp -> tmp6, tmp:tmp -> tmp102, tmp:tmp -> tmp190, tmp:tmp -> tmp103, tmp:tmp -> tmp191, tmp:tmp -> tmp104, tmp:tmp -> tmp192, tmp:tmp -> tmp105, tmp:tmp -> tmp106, member:earlyRetBlock -> earlyRetBlock, tmp:tmp -> tmp107, tmp:tmp -> tmp108, member:testBinOp -> testBinOp, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:tmp -> tmp10, tmp:tmp -> tmp11, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:tmp -> tmp14, tmp:block$res -> block$res12, tmp:tmp -> tmp15, arrSp -> arrSp, tmp:block$res -> block$res13, tmp:block$res -> block$res61, tmp:tmp -> tmp16, tmp:tmp -> tmp193, tmp:tmp -> tmp17, tmp:tmp -> tmp194, tmp:tmp -> tmp18, tmp:tmp -> tmp195, tmp:tmp -> tmp196, tmp:tmp -> tmp197, tmp:tmp -> tmp198, tmp:tmp -> tmp199, tmp:tmp -> tmp200, tmp:tmp -> tmp201, tmp:block$res -> block$res14, tmp:tmp -> tmp202, tmp:tmp -> tmp19, tmp:tmp -> tmp203, tmp:tmp -> tmp204, tmp:tmp -> tmp205, tmp:tmp -> tmp206, tmp:tmp -> tmp207, tmp:block$res -> block$res43, tmp:tmp -> tmp208, tmp:tmp -> tmp209, tmp:block$res -> block$res15, tmp:tmp -> tmp210, tmp:tmp -> tmp20, tmp:tmp -> tmp211, member:nestedBlock -> nestedBlock, tmp:block$res -> block$res44, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, tmp:block$res -> block$res45, a -> a, tmp:block$res -> block$res46, tmp:block$res -> block$res47, member:testUnaryOp -> testUnaryOp, x -> x, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, c -> c3, tmp:tmp -> tmp32, tmp:tmp -> tmp33, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, tmp:tmp -> tmp40, tmp:block$res -> block$res48, tmp:block$res -> block$res62, tmp:tmp -> tmp212, tmp:block$res -> block$res49, tmp:tmp -> tmp213, tmp:tmp -> tmp214, tmp:tmp -> tmp215, tmp:tmp -> tmp216, tmp:block$res -> block$res50, tmp:tmp -> tmp217, tmp:tmp -> tmp218, tmp:block$res -> block$res18, tmp:tmp -> tmp219, tmp:tmp -> tmp41, tmp:tmp -> tmp220, tmp:tmp -> tmp42, tmp:block$res -> block$res51, tmp:tmp -> tmp221, tmp:tmp -> tmp43, tmp:tmp -> tmp222, tmp:tmp -> tmp44, x -> x3, tmp:tmp -> tmp223, tmp:tmp -> tmp45, tmp:tmp -> tmp224, tmp:tmp -> tmp46, tmp:tmp -> tmp225, y -> y2, tmp:tmp -> tmp226, x -> x1, tmp:tmp -> tmp227, tmp:tmp -> tmp228, z -> z, tmp:tmp -> tmp229, tmp:tmp -> tmp230, tmp:tmp -> tmp231, plus -> plus, tmp:tmp -> tmp232, tmp:tmp -> tmp233, y -> y, tmp:tmp -> tmp234, tmp:tmp -> tmp235, tmp:tmp -> tmp236, tmp:tmp -> tmp237, tmp:block$res -> block$res52, tmp:tmp -> tmp238, tmp:tmp -> tmp109, c -> c1, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:tmp -> tmp59, tmp:block$res -> block$res53, tmp:tmp -> tmp110, tmp:tmp -> tmp111, tmp:tmp -> tmp112, tmp:block$res -> block$res21, tmp:tmp -> tmp113, tmp:tmp -> tmp60, tmp:tmp -> tmp114, tmp:tmp -> tmp61, tmp:tmp -> tmp115, tmp:tmp -> tmp116, filterShapes -> filterShapes, tmp:tmp -> tmp117, tmp:tmp -> tmp118, tmp:tmp -> tmp119, tmp:tmp -> tmp120, tmp:tmp -> tmp121, tmp:tmp -> tmp122, tmp:tmp -> tmp123, tmp:tmp -> tmp124, c -> c2, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:tmp -> tmp68) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'res' //│ ╟── which references the symbol introduced here //│ ║ l.946: val res = prop(defs, Ctx.empty, c, nestedBlock) @@ -1024,43 +1024,50 @@ c.printImps() //│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) //│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) -val2path(1) +val2path(1, mut []) //│ = [End(), ValueLit(1)] -val2path([1, 2, 3]) +val2path([1, 2, 3], mut []) //│ = [ -//│ Assign(Symbol("tup_1"), Tuple([Arg(End()), Arg(End()), Arg(End())]), End()), +//│ Assign( +//│ Symbol("tup_1"), +//│ Tuple([Arg(ValueLit(1)), Arg(ValueLit(2)), Arg(ValueLit(3))]), +//│ End() +//│ ), //│ ValueRef(Symbol("tup_1")) //│ ] class TestClass(val a, val b) -val2path(TestClass(1, 2)) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:577:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:558:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:455:36) -//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:458:51) -//│ at REPL237:1:490 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) +val2path(TestClass(1, 2), mut []) +//│ = [ +//│ Assign( +//│ Symbol("obj_2"), +//│ Instantiate( +//│ ValueRef(ClassSymbol("TestClass", undefined, None, [])), +//│ [Arg(ValueLit(1)), Arg(ValueLit(2))] +//│ ), +//│ End() +//│ ), +//│ ValueRef(Symbol("obj_2")) +//│ ] val2path(TestClass(1, [1,2])) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 1 +//│ ║ l.1055: val2path(TestClass(1, [1,2])) +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^ //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:577:38) -//│ at Block.concat (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:558:20) -//│ at lambda11 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:455:36) -//│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:458:51) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'push') +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:384:33) +//│ at lambda7 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:419:39) +//│ at Array.map () +//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:421:59) //│ at REPL240:1:168 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) //│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) From 87ad1d4e2101ee062bc1d98140d15df13cd120be Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 29 Mar 2026 13:56:51 +0800 Subject: [PATCH 403/654] update the test --- .../test/mlscript/block-staging/ShapeProp.mls | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index f2bbcb9e56..02d57eb639 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -275,13 +275,12 @@ staged module TestClass with //│ > } class C(val n) +class D(val n) staged module TestClass2 with fun f(c) = c fun test() = f(C(2)) // FIXME: this should be static as well fun test2() = - f(new C(2)) - f(new C(3)) - f(new C(4)) + f(new C(new D(2))) //│ > fun ctor_() = //│ > () //│ > fun f(c) = c @@ -292,32 +291,22 @@ staged module TestClass2 with //│ > fun test2() = //│ > let tmp1 //│ > let tmp2 -//│ > let tmp3 -//│ > tmp1 = new C(2) -//│ > __no__symbol__ = TestClass2.f_C_Lit2(tmp1) -//│ > tmp2 = new C(3) -//│ > __no__symbol__ = TestClass2.f_C_Lit3(tmp2) -//│ > tmp3 = new C(4) -//│ > TestClass2.f_C_Lit4(tmp3) -//│ > fun f_C_Lit2(c) = +//│ > tmp1 = new D(2) +//│ > tmp2 = new C(tmp1) +//│ > TestClass2.f_C_D_Lit2(tmp2) +//│ > fun f_C_D_Lit2(c) = //│ > let obj_1 -//│ > obj_1 = new C(2) -//│ > obj_1 -//│ > fun f_C_Lit3(c) = //│ > let obj_2 -//│ > obj_2 = new C(3) +//│ > obj_2 = new C(obj_1) +//│ > obj_1 = new D(2) //│ > obj_2 -//│ > fun f_C_Lit4(c) = -//│ > let obj_3 -//│ > obj_3 = new C(4) -//│ > obj_3 //│ > Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'test' => [Function: test_gen], //│ > 'test2' => [Function: test2_gen] //│ > } -//│ > Map(2) { +//│ > Map(3) { //│ > [Function: C] { //│ > class: [class C4] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { @@ -340,6 +329,14 @@ staged module TestClass2 with //│ > 'cache$TestClass2': [FunCache], //│ > 'generatorMap$TestClass2': [Map] //│ > } +//│ > }, +//│ > [Function: D] { +//│ > class: [class D2] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'D', +//│ > value: [Function: D] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] //│ > } //│ > } @@ -365,8 +362,8 @@ staged module TestIf with //│ > fun ctor_() = //│ > () //│ > fun f(x) = -//│ > let y //│ > let tmp +//│ > let y //│ > if x is //│ > C(n) then //│ > y = x.n @@ -386,8 +383,8 @@ staged module TestIf with //│ > __no__symbol__ = TestIf.f_C_Lit2(c) //│ > TestIf.get_Strn_C_Lit2("n", c) //│ > fun f_C_Lit2(x) = -//│ > let y //│ > let tmp +//│ > let y //│ > y = x.n //│ > tmp = Runtime.Unit //│ > +(y, 1) From 5d0e960196660a838a9c1cc15dec8d5a97e08f89 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 29 Mar 2026 14:19:19 +0800 Subject: [PATCH 404/654] fix C(1) --- .../mlscript-compile/SpecializeHelpers.mls | 15 ++++++++----- .../test/mlscript/block-staging/ShapeProp.mls | 21 +++++++++++-------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index c33093339e..e332ccd045 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -60,12 +60,12 @@ fun sor(ctx, r) = if r is else [End(), r, s] Instantiate(cls, args) then - let sym = if cls is - ValueRef(s) and s is ClassSymbol then - s - Select(_, s) and s is ClassSymbol then s + let clsSymb = if cls is + ValueRef(symb) and symb is ClassSymbol then + symb + Select(_, symb) and symb is ClassSymbol then symb else throw Error("Instantiate with non-ClassSymbol in shape propagation: " + cls.toString()) - [End(), r, mkClass(sym, args.map(a => sop(ctx, a.value)))] + [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] Call(f, args) then fun lit(l) = [End(), ValueLit(l), mkLit(l)] @@ -77,6 +77,8 @@ fun sor(ctx, r) = if r is [End(), recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") // TODO + ValueRef(clsSymb) and clsSymb is ClassSymbol then + [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] ValueRef(symb) and // built-in or top-level let name = symb.name args is @@ -116,6 +118,9 @@ fun sor(ctx, r) = if r is let evaluated = f(...argShapes.map(valOfSet)) let evaluated_path = val2path(evaluated, ctx.allocs) [evaluated_path.0, evaluated_path.1, sov(evaluated)] + Select(ValueRef(ClassSymbol(name, value, paramsOpt, auxParams)), Symbol(symb)) then + // TODO + [End(), r, mkDyn()] Select(ValueRef(symb), Symbol(f)) and sop(ctx, ValueRef(symb)) is Class(sym, params) then // class method call // TODO else diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 02d57eb639..1e4ff271f7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -279,15 +279,18 @@ class D(val n) staged module TestClass2 with fun f(c) = c fun test() = f(C(2)) // FIXME: this should be static as well - fun test2() = - f(new C(new D(2))) + fun test2() = f(new C(new D(2))) //│ > fun ctor_() = //│ > () //│ > fun f(c) = c //│ > fun test() = //│ > let tmp //│ > tmp = C(2) -//│ > TestClass2.f(tmp) +//│ > TestClass2.f_C_Lit2(tmp) +//│ > fun f_C_Lit2(c) = +//│ > let obj_1 +//│ > obj_1 = new C(2) +//│ > obj_1 //│ > fun test2() = //│ > let tmp1 //│ > let tmp2 @@ -295,11 +298,11 @@ staged module TestClass2 with //│ > tmp2 = new C(tmp1) //│ > TestClass2.f_C_D_Lit2(tmp2) //│ > fun f_C_D_Lit2(c) = -//│ > let obj_1 //│ > let obj_2 -//│ > obj_2 = new C(obj_1) -//│ > obj_1 = new D(2) -//│ > obj_2 +//│ > let obj_3 +//│ > obj_3 = new C(obj_2) +//│ > obj_2 = new D(2) +//│ > obj_3 //│ > Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -440,8 +443,8 @@ staged module TestTupleMatching with //│ at ShapeSet.selSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:268:19) //│ at SpecializeHelpers.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:207:25) //│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:365:63) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:745:38) -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:803:40) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:780:38) +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:838:40) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 class E(val x) From 8608693a00cfb2d950ca50f81ce257cc06c57abb Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 29 Mar 2026 14:26:38 +0800 Subject: [PATCH 405/654] fix a block ordering issue --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 2 +- hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 950298d007..3035033662 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -133,6 +133,6 @@ fun val2path(v, allocs) = let objSym = freshId("obj") allocs.push(objSym) let objAssign = Block.Assign(objSym, Block.Instantiate(Block.ValueRef(classSym), paths.map(Block.Arg(_))), Block.End()) - let fullBlock = foldl((b, acc) => Block.concat(b, acc))(objAssign, ...blocks) + let fullBlock = fold((b, acc) => Block.concat(acc, b))(objAssign, ...blocks) [fullBlock, Block.ValueRef(objSym)] else [Block.End(), Block.ValueLit(42)] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 1e4ff271f7..9e96a66a67 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -300,8 +300,8 @@ staged module TestClass2 with //│ > fun f_C_D_Lit2(c) = //│ > let obj_2 //│ > let obj_3 -//│ > obj_3 = new C(obj_2) //│ > obj_2 = new D(2) +//│ > obj_3 = new C(obj_2) //│ > obj_3 //│ > Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], @@ -443,8 +443,8 @@ staged module TestTupleMatching with //│ at ShapeSet.selSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:268:19) //│ at SpecializeHelpers.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:207:25) //│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:365:63) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:780:38) -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:838:40) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:772:38) +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:830:40) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 class E(val x) From d7a4529b04a6a9592172f786afefe248d941c0d4 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Sun, 29 Mar 2026 15:40:41 +0800 Subject: [PATCH 406/654] Generate files --- .../codegen/ReflectionInstrumenter.scala | 23 +-- .../src/test/mlscript-compile/Block.mls | 9 +- .../mlscript-compile/SpecializeHelpers.mls | 1 + .../staging/out/SimpleStagedExample.mls | 134 ++++++++++++ .../test/mlscript/block-staging/Generate.mls | 192 +++--------------- .../mlscript/block-staging/ShapeProp2.mls | 155 +------------- 6 files changed, 181 insertions(+), 333 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 325636994e..12b89e497d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -13,6 +13,7 @@ import semantics.* import semantics.Elaborator.{State, Ctx, ctx} import syntax.{Literal, Tree} +import hkmc2.syntax.Tree.Ident // it should be possible to cache some common constructions (End, Option) into the context // this avoids having to rebuild the same shapes everytime they are needed @@ -400,10 +401,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => Define(ValDefn(generatorMapTsym, generatorMapSym, map), rest) - // TODO: remove this. only for testing - def debugCont(rest: Block) = - val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") - // val renderFun = State.runtimeSymbol.asPath.selSN("render") + def genOutputBody(psym: VarSymbol) = val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) val gens = methods.map { f => @@ -427,24 +425,19 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S call(funPath, args, isMlsFun = true, symName = "tmp_gen_curry")(res => curryCall(res, xs, innerK)) curryCall(genPath, params, callAllGens(tail, k)) - callAllGens(gens, assign(options)(options => - call(cachePath.selSN("toString"), Nil, false)(str => - call(printFun, Ls(str), false)(_ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false)(_ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest))))) + callAllGens(gens, call(cachePath.selSN("dump"), Nil, false)(mthds => + call(blockMod("codegen"), toValue(modSym.nme) :: mthds :: psym.asPath :: Nil, true, "tmp")(_ => End()))) val entryFunDef = val sym = BlockMemberSymbol("generate", Nil) - val params = PlainParamList(Nil) - val body = End() // TODO - FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, body)(false) + val psym = VarSymbol(Ident("path")) + val params = PlainParamList(Param.simple(psym) :: Nil) + FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, genOutputBody(psym))(false) // used for staging classes inside modules val newCompanion = companion.copy( methods = entryFunDef :: helperMethods.flatten, - ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), + ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(End()))), publicFields = companion.publicFields ) val newClsLikeDefn = defn.copy(companion = S(newCompanion)) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 3f857c5ec7..266db3cecd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -214,9 +214,10 @@ fun printModule(name, methods) = print("module " + name + " with" + indent("\n" fun codegen(name, methods, file) = let fullpath = path.join of process.cwd(), file let code = "module " + name + " with" + indent("\n" + methods.map(showDefn).join("\n")) - if not fs.existsSync(file) do - fs.writeFileSync(file, "", "utf8") - let originData = fs.readFileSync(file, "utf8") + if not fs.existsSync(fullpath) do + fs.mkdirSync(path.dirname(fullpath), recursive: true) + fs.writeFileSync(fullpath, "", "utf8") + let originData = fs.readFileSync(fullpath, "utf8") let newData = code if newData != originData do - fs.writeFileSync(file, newData, "utf8") + fs.writeFileSync(fullpath, newData, "utf8") diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index be02e8966b..71079f036d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -210,5 +210,6 @@ class FunCache(val cache: Map[String, [FunDefn, ShapeSet]]) with // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions fun setFun(k, v) = cache.set(k, v); v fun toString() = cache.values().map((d, _, _) => showDefn(d.0)).toArray().join("\n") + fun dump() = cache.values().map((d, _, _) => d.0).toArray() diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls new file mode 100644 index 0000000000..c0c5d3b425 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -0,0 +1,134 @@ +module SimpleStagedExample with + fun f(x, y) = +(x, y) + fun fib(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + if n is + 1 then 1 + 2 then 1 + else n = n + tmp2 = -(n, 1) + tmp3 = SimpleStagedExample.fib(tmp2) + tmp = -(n, 2) + tmp1 = SimpleStagedExample.fib(tmp) + +(tmp3, tmp1) + fun foo() = + let tmp4 + let tmp5 + tmp4 = SimpleStagedExample.f_Lit2_Lit3(2, 3) + tmp5 = SimpleStagedExample.fib_Lit10(10) + 60 + fun f_Lit2_Lit3(x, y) = 5 + fun fib_Lit10(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + n = 10 + tmp2 = 9 + tmp3 = SimpleStagedExample.fib_Lit9(tmp2) + tmp = 8 + tmp1 = SimpleStagedExample.fib_Lit8(tmp) + 55 + fun fib_Lit9(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + n = 9 + tmp2 = 8 + tmp3 = SimpleStagedExample.fib_Lit8(tmp2) + tmp = 7 + tmp1 = SimpleStagedExample.fib_Lit7(tmp) + 34 + fun fib_Lit8(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + n = 8 + tmp2 = 7 + tmp3 = SimpleStagedExample.fib_Lit7(tmp2) + tmp = 6 + tmp1 = SimpleStagedExample.fib_Lit6(tmp) + 21 + fun fib_Lit7(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + n = 7 + tmp2 = 6 + tmp3 = SimpleStagedExample.fib_Lit6(tmp2) + tmp = 5 + tmp1 = SimpleStagedExample.fib_Lit5(tmp) + 13 + fun fib_Lit6(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + n = 6 + tmp2 = 5 + tmp3 = SimpleStagedExample.fib_Lit5(tmp2) + tmp = 4 + tmp1 = SimpleStagedExample.fib_Lit4(tmp) + 8 + fun fib_Lit5(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + n = 5 + tmp2 = 4 + tmp3 = SimpleStagedExample.fib_Lit4(tmp2) + tmp = 3 + tmp1 = SimpleStagedExample.fib_Lit3(tmp) + 5 + fun fib_Lit4(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + n = 4 + tmp2 = 3 + tmp3 = SimpleStagedExample.fib_Lit3(tmp2) + tmp = 2 + tmp1 = SimpleStagedExample.fib_Lit2(tmp) + 3 + fun fib_Lit3(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + n = 3 + tmp2 = 2 + tmp3 = SimpleStagedExample.fib_Lit2(tmp2) + tmp = 1 + tmp1 = SimpleStagedExample.fib_Lit1(tmp) + 2 + fun fib_Lit2(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + 1 + fun fib_Lit1(n) = + let tmp + let tmp1 + let n + let tmp2 + let tmp3 + 1 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 57c9d09644..14736cd2e5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -1,167 +1,37 @@ :js -import "../../mlscript-compile/staging/SimpleStagedExample.mls" -//│ > fun f(x, y) = +(x, y) -//│ > fun fib(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > if n is -//│ > 1 then 1 -//│ > 2 then 1 -//│ > else n = n -//│ > tmp2 = -(n, 1) -//│ > tmp3 = SimpleStagedExample.fib(tmp2) -//│ > tmp = -(n, 2) -//│ > tmp1 = SimpleStagedExample.fib(tmp) -//│ > +(tmp3, tmp1) -//│ > fun foo() = -//│ > let tmp4 -//│ > let tmp5 -//│ > tmp4 = SimpleStagedExample.f_Lit2_Lit3(2, 3) -//│ > tmp5 = SimpleStagedExample.fib_Lit10(10) -//│ > 60 -//│ > fun f_Lit2_Lit3(x, y) = 5 -//│ > fun fib_Lit10(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > n = 10 -//│ > tmp2 = 9 -//│ > tmp3 = SimpleStagedExample.fib_Lit9(tmp2) -//│ > tmp = 8 -//│ > tmp1 = SimpleStagedExample.fib_Lit8(tmp) -//│ > 55 -//│ > fun fib_Lit9(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > n = 9 -//│ > tmp2 = 8 -//│ > tmp3 = SimpleStagedExample.fib_Lit8(tmp2) -//│ > tmp = 7 -//│ > tmp1 = SimpleStagedExample.fib_Lit7(tmp) -//│ > 34 -//│ > fun fib_Lit8(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > n = 8 -//│ > tmp2 = 7 -//│ > tmp3 = SimpleStagedExample.fib_Lit7(tmp2) -//│ > tmp = 6 -//│ > tmp1 = SimpleStagedExample.fib_Lit6(tmp) -//│ > 21 -//│ > fun fib_Lit7(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > n = 7 -//│ > tmp2 = 6 -//│ > tmp3 = SimpleStagedExample.fib_Lit6(tmp2) -//│ > tmp = 5 -//│ > tmp1 = SimpleStagedExample.fib_Lit5(tmp) -//│ > 13 -//│ > fun fib_Lit6(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > n = 6 -//│ > tmp2 = 5 -//│ > tmp3 = SimpleStagedExample.fib_Lit5(tmp2) -//│ > tmp = 4 -//│ > tmp1 = SimpleStagedExample.fib_Lit4(tmp) -//│ > 8 -//│ > fun fib_Lit5(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > n = 5 -//│ > tmp2 = 4 -//│ > tmp3 = SimpleStagedExample.fib_Lit4(tmp2) -//│ > tmp = 3 -//│ > tmp1 = SimpleStagedExample.fib_Lit3(tmp) -//│ > 5 -//│ > fun fib_Lit4(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > n = 4 -//│ > tmp2 = 3 -//│ > tmp3 = SimpleStagedExample.fib_Lit3(tmp2) -//│ > tmp = 2 -//│ > tmp1 = SimpleStagedExample.fib_Lit2(tmp) -//│ > 3 -//│ > fun fib_Lit3(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > n = 3 -//│ > tmp2 = 2 -//│ > tmp3 = SimpleStagedExample.fib_Lit2(tmp2) -//│ > tmp = 1 -//│ > tmp1 = SimpleStagedExample.fib_Lit1(tmp) -//│ > 2 -//│ > fun fib_Lit2(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > 1 -//│ > fun fib_Lit1(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let n -//│ > let tmp2 -//│ > let tmp3 -//│ > 1 -//│ > Map(4) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'fib' => [Function: fib_gen], -//│ > 'foo' => [Function: foo_gen] -//│ > } -//│ > Map(1) { -//│ > [class SimpleStagedExample] { -//│ > 'cache$SimpleStagedExample': FunCache { cache: [Map] }, -//│ > 'generatorMap$SimpleStagedExample': Map(4) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'fib' => [Function: fib_gen], -//│ > 'foo' => [Function: foo_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'SimpleStagedExample', -//│ > value: [class SimpleStagedExample] { -//│ > 'cache$SimpleStagedExample': [FunCache], -//│ > 'generatorMap$SimpleStagedExample': [Map] -//│ > } -//│ > } -//│ > } +import "../../mlscript-compile/staging/SimpleStagedExample.mjs" +//│ SimpleStagedExample = class SimpleStagedExample { +//│ cache$SimpleStagedExample: , +//│ generatorMap$SimpleStagedExample: Map(4) { +//│ "ctor$" => fun ctor$_gen, +//│ "f" => fun f_gen, +//│ "fib" => fun fib_gen, +//│ "foo" => fun foo_gen +//│ } +//│ } + + +SimpleStagedExample.generate("./hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls") + + +import "../../mlscript-compile/staging/out/SimpleStagedExample.mjs" +//│ SimpleStagedExample = class SimpleStagedExample + + +SimpleStagedExample.foo() +//│ = 60 + + +:fixme +:expect 6 +SimpleStagedExample.f(1, 5) +//│ ═══[RUNTIME ERROR] Expected: '6', got: '5' +//│ = 5 :fixme -SimpleStagedExample.generate() -//│ ╔══[COMPILATION ERROR] Module 'SimpleStagedExample' does not contain member 'generate' -//│ ║ l.164: SimpleStagedExample.generate() -//│ ╙── ^^^^^^^^^ +:expect 5 +SimpleStagedExample.fib(5) +//│ ═══[RUNTIME ERROR] Expected: '5', got: '()' diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls index 1af8fc4e22..daa016f81f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls @@ -11,156 +11,5 @@ staged module Test with fun trig() = f(2, 3) fib(10) -//│ > fun f(x, y) = +(x, y) -//│ > fun fib(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > if n is -//│ > 1 then 1 -//│ > 2 then 1 -//│ > else n = n -//│ > tmp = -(n, 1) -//│ > tmp1 = Test.fib(tmp) -//│ > tmp2 = -(n, 2) -//│ > tmp3 = Test.fib(tmp2) -//│ > +(tmp1, tmp3) -//│ > fun trig() = -//│ > __no__symbol__ = Test.f_Lit2_Lit3(2, 3) -//│ > Test.fib_Lit10(10) -//│ > fun f_Lit2_Lit3(x, y) = 5 -//│ > fun fib_Lit10(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > n = 10 -//│ > tmp = 9 -//│ > tmp1 = Test.fib_Lit9(tmp) -//│ > tmp2 = 8 -//│ > tmp3 = Test.fib_Lit8(tmp2) -//│ > 55 -//│ > fun fib_Lit9(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > n = 9 -//│ > tmp = 8 -//│ > tmp1 = Test.fib_Lit8(tmp) -//│ > tmp2 = 7 -//│ > tmp3 = Test.fib_Lit7(tmp2) -//│ > 34 -//│ > fun fib_Lit8(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > n = 8 -//│ > tmp = 7 -//│ > tmp1 = Test.fib_Lit7(tmp) -//│ > tmp2 = 6 -//│ > tmp3 = Test.fib_Lit6(tmp2) -//│ > 21 -//│ > fun fib_Lit7(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > n = 7 -//│ > tmp = 6 -//│ > tmp1 = Test.fib_Lit6(tmp) -//│ > tmp2 = 5 -//│ > tmp3 = Test.fib_Lit5(tmp2) -//│ > 13 -//│ > fun fib_Lit6(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > n = 6 -//│ > tmp = 5 -//│ > tmp1 = Test.fib_Lit5(tmp) -//│ > tmp2 = 4 -//│ > tmp3 = Test.fib_Lit4(tmp2) -//│ > 8 -//│ > fun fib_Lit5(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > n = 5 -//│ > tmp = 4 -//│ > tmp1 = Test.fib_Lit4(tmp) -//│ > tmp2 = 3 -//│ > tmp3 = Test.fib_Lit3(tmp2) -//│ > 5 -//│ > fun fib_Lit4(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > n = 4 -//│ > tmp = 3 -//│ > tmp1 = Test.fib_Lit3(tmp) -//│ > tmp2 = 2 -//│ > tmp3 = Test.fib_Lit2(tmp2) -//│ > 3 -//│ > fun fib_Lit3(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > n = 3 -//│ > tmp = 2 -//│ > tmp1 = Test.fib_Lit2(tmp) -//│ > tmp2 = 1 -//│ > tmp3 = Test.fib_Lit1(tmp2) -//│ > 2 -//│ > fun fib_Lit2(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > 1 -//│ > fun fib_Lit1(n) = -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let n -//│ > 1 -//│ > Map(4) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'fib' => [Function: fib_gen], -//│ > 'trig' => [Function: trig_gen] -//│ > } -//│ > Map(1) { -//│ > [class Test] { -//│ > 'cache$Test': FunCache { cache: [Map] }, -//│ > 'generatorMap$Test': Map(4) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'fib' => [Function: fib_gen], -//│ > 'trig' => [Function: trig_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'Test', -//│ > value: [class Test] { -//│ > 'cache$Test': [FunCache], -//│ > 'generatorMap$Test': [Map] -//│ > } -//│ > } -//│ > } + + From c96ad93b9d9237465a42cf4f3932ca781f0df10b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 29 Mar 2026 16:09:12 +0800 Subject: [PATCH 407/654] fix invalid printing from Generate.mls --- .../codegen/ReflectionInstrumenter.scala | 10 +++-- .../src/test/mlscript-compile/Block.mls | 6 ++- .../test/mlscript/block-staging/Generate.mls | 42 +++++++++---------- 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 271b529501..c1098d918b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -107,9 +107,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(k) // avoid name collision - case _: TempSymbol | _: NoSymbol => - val name = scope.allocateOrGetName(sym) - blockCtor("Symbol", Ls(toValue(name)), symName)(k) case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap(toValue(sym.nme), _)) case baseSym: BaseTypeSymbol => @@ -133,7 +130,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap(path, _)) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap(path, _)) - case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) + case _: BuiltinSymbol => + blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) + // TODO: figure out when to rebind variables + case _: TempSymbol | _: NoSymbol | _ => + val name = scope.allocateOrGetName(sym) + blockCtor("Symbol", Ls(toValue(name)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match case S(x) => f(x)(optionSome(_)(k)) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 3f857c5ec7..55b43e77d4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -134,7 +134,11 @@ fun showArgs(args: Array[Arg]) = fun showResult(r: Result): Str = if r is Path then showPath(r) - Call(fun_, args) then showPath(fun_) + "(" + showArgs(args) + ")" + Call(fun_, args) and + args is [lhs, rhs] and fun_ is + ValueRef(Symbol("+")) then showArg(lhs) + "+" + showArg(rhs) + ValueRef(Symbol("-")) then showArg(lhs) + "-" + showArg(rhs) + else showPath(fun_) + "(" + showArgs(args) + ")" Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" Tuple(elems) then "[" + showArgs(elems) + "]" _ then "" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 57c9d09644..a1cd10a3eb 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -1,31 +1,31 @@ :js - import "../../mlscript-compile/staging/SimpleStagedExample.mls" -//│ > fun f(x, y) = +(x, y) -//│ > fun fib(n) = +//│ > fun ctor_() = +//│ > () +//│ > fun f(x, y) = x+y +//│ > fun fib(n1) = //│ > let tmp //│ > let tmp1 //│ > let n //│ > let tmp2 //│ > let tmp3 -//│ > if n is +//│ > if n1 is //│ > 1 then 1 //│ > 2 then 1 -//│ > else n = n -//│ > tmp2 = -(n, 1) +//│ > else n = n1 +//│ > tmp2 = n-1 //│ > tmp3 = SimpleStagedExample.fib(tmp2) -//│ > tmp = -(n, 2) +//│ > tmp = n-2 //│ > tmp1 = SimpleStagedExample.fib(tmp) -//│ > +(tmp3, tmp1) +//│ > tmp3+tmp1 //│ > fun foo() = //│ > let tmp4 //│ > let tmp5 -//│ > tmp4 = SimpleStagedExample.f_Lit2_Lit3(2, 3) +//│ > tmp4 = SimpleStagedExample.f1(2, 3) //│ > tmp5 = SimpleStagedExample.fib_Lit10(10) -//│ > 60 -//│ > fun f_Lit2_Lit3(x, y) = 5 -//│ > fun fib_Lit10(n) = +//│ > tmp4+tmp5 +//│ > fun fib_Lit10(n1) = //│ > let tmp //│ > let tmp1 //│ > let n @@ -37,7 +37,7 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > tmp = 8 //│ > tmp1 = SimpleStagedExample.fib_Lit8(tmp) //│ > 55 -//│ > fun fib_Lit9(n) = +//│ > fun fib_Lit9(n1) = //│ > let tmp //│ > let tmp1 //│ > let n @@ -49,7 +49,7 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > tmp = 7 //│ > tmp1 = SimpleStagedExample.fib_Lit7(tmp) //│ > 34 -//│ > fun fib_Lit8(n) = +//│ > fun fib_Lit8(n1) = //│ > let tmp //│ > let tmp1 //│ > let n @@ -61,7 +61,7 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > tmp = 6 //│ > tmp1 = SimpleStagedExample.fib_Lit6(tmp) //│ > 21 -//│ > fun fib_Lit7(n) = +//│ > fun fib_Lit7(n1) = //│ > let tmp //│ > let tmp1 //│ > let n @@ -73,7 +73,7 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > tmp = 5 //│ > tmp1 = SimpleStagedExample.fib_Lit5(tmp) //│ > 13 -//│ > fun fib_Lit6(n) = +//│ > fun fib_Lit6(n1) = //│ > let tmp //│ > let tmp1 //│ > let n @@ -85,7 +85,7 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > tmp = 4 //│ > tmp1 = SimpleStagedExample.fib_Lit4(tmp) //│ > 8 -//│ > fun fib_Lit5(n) = +//│ > fun fib_Lit5(n1) = //│ > let tmp //│ > let tmp1 //│ > let n @@ -97,7 +97,7 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > tmp = 3 //│ > tmp1 = SimpleStagedExample.fib_Lit3(tmp) //│ > 5 -//│ > fun fib_Lit4(n) = +//│ > fun fib_Lit4(n1) = //│ > let tmp //│ > let tmp1 //│ > let n @@ -109,7 +109,7 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > tmp = 2 //│ > tmp1 = SimpleStagedExample.fib_Lit2(tmp) //│ > 3 -//│ > fun fib_Lit3(n) = +//│ > fun fib_Lit3(n1) = //│ > let tmp //│ > let tmp1 //│ > let n @@ -121,14 +121,14 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > tmp = 1 //│ > tmp1 = SimpleStagedExample.fib_Lit1(tmp) //│ > 2 -//│ > fun fib_Lit2(n) = +//│ > fun fib_Lit2(n1) = //│ > let tmp //│ > let tmp1 //│ > let n //│ > let tmp2 //│ > let tmp3 //│ > 1 -//│ > fun fib_Lit1(n) = +//│ > fun fib_Lit1(n1) = //│ > let tmp //│ > let tmp1 //│ > let n From bca2b0b065104017ced1001a61f361043d1e6bf1 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 29 Mar 2026 19:23:18 +0800 Subject: [PATCH 408/654] comment && and || which is not supported by staging for now --- .../src/test/mlscript-compile/SpecializeHelpers.mls | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index e332ccd045..ef57eac494 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -100,8 +100,8 @@ fun sor(ctx, r) = if r is ">=" then lit(l1 >= l2) "===" then lit(l1 === l2) "!==" then lit(l1 !== l2) - "&&" then lit(l1 && l2) - "||" then lit(l1 || l2) + // "&&" then lit(l1 && l2) + // "||" then lit(l1 || l2) Select(ValueRef(ModuleSymbol(name, value)), Symbol(symb)) and let mapPropName = "generatorMap$" + name let cachePropName = "cache$" + name @@ -177,7 +177,9 @@ fun prop(ctx, b) = if b is [Match(p, filteredArms.2, None, End()), filteredArms.1] // TODO: debug only; remove this -fun propStub(ctx, body) = [body, mkDyn()] +fun propStub(ctx, body) = + console.log("Calling the propStub now which performs no shape propagation") + [body, mkDyn()] fun buildShapeName(s: Shape): Str = if s is From f03c2a3f58dd80702e68770f9cf3a8ea3167349b Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 29 Mar 2026 19:24:28 +0800 Subject: [PATCH 409/654] some diff test change --- .../test/mlscript/block-staging/Functions.mls | 180 +++++++++--------- .../test/mlscript/block-staging/ShapeProp.mls | 4 +- .../test/mlscript/block-staging/SymbolMap.mls | 5 +- .../test/mlscript/block-staging/Syntax.mls | 48 ++--- 4 files changed, 119 insertions(+), 118 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 585a96cd86..c3efaadddf 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -8,6 +8,8 @@ staged module Expressions with fun lit() = let x = 42 x +//│ > fun ctor_() = +//│ > () //│ > fun lit() = //│ > let x //│ > x = 42 @@ -44,6 +46,8 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 +//│ > fun ctor_() = +//│ > () //│ > fun lit(x) = +(x, x) //│ > fun assign() = //│ > let x @@ -94,65 +98,19 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > () -//│ > true -//│ > fun inst1() = Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg() -//│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside(1, 2) -//│ > Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'inst1' => [Function: inst1_gen], -//│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen], -//│ > 'app2' => [Function: app2_gen] -//│ > } -//│ > Map(4) { -//│ > [Function: Outside] { -//│ > class: [class Outside] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > } => ClassSymbol { -//│ > name: 'Outside', -//│ > value: [Function: Outside] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > [class ClassInstrumentation] { -//│ > Inside: [Function: Inside] { class: [Function] }, -//│ > NoArg: [class NoArg] { [Symbol(mlscript.definitionMetadata)]: [Array] }, -//│ > 'cache$ClassInstrumentation': FunCache { cache: [Map] }, -//│ > 'generatorMap$ClassInstrumentation': Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'inst1' => [Function: inst1_gen], -//│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen], -//│ > 'app2' => [Function: app2_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'ClassInstrumentation', -//│ > value: [class ClassInstrumentation] { -//│ > Inside: [Function], -//│ > NoArg: [Function], -//│ > 'cache$ClassInstrumentation': [FunCache], -//│ > 'generatorMap$ClassInstrumentation': [Map] -//│ > } -//│ > }, -//│ > [class NoArg] { -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NoArg' ] -//│ > } => ClassSymbol { -//│ > name: 'NoArg', -//│ > value: [class NoArg] { [Symbol(mlscript.definitionMetadata)]: [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, -//│ > [Function: Inside] { -//│ > class: [class Inside] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > } => ClassSymbol { -//│ > name: 'Inside', -//│ > value: [Function: Inside] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } -//│ > } +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:961:38) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1087:39) +//│ at ClassInstrumentation.ctor$_gen (REPL20:1:4538) +//│ at (REPL20:1:2216) +//│ at REPL20:1:10503 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) module Nonstaged with fun f() = 1 @@ -162,10 +120,12 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() +//│ > fun ctor_() = +//│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > fun f_gen -//│ > true +//│ > fun ctor_() = +//│ > () //│ > fun call() = //│ > __no__symbol__ = 1 //│ > Staged.f() @@ -200,8 +160,10 @@ staged module CallSubst with :e print(CallSubst."cache$CallSubst") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. -//│ ║ l.201: print(CallSubst."cache$CallSubst") +//│ ║ l.161: print(CallSubst."cache$CallSubst") //│ ╙── ^^^^^^^^^ +//│ > fun ctor_() = +//│ > () //│ > fun call() = //│ > __no__symbol__ = 1 //│ > Staged.f() @@ -214,17 +176,17 @@ staged module Arguments with fun g(x)(y, z)() = z //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: Not implemented -//│ at get notImplementedError (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Predef.mjs:287:39) -//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:308:26) -//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:328:23) -//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:203:24) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:674:37) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:728:40) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:704:36) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:982:39) -//│ at Arguments.g_gen (REPL29:1:5917) -//│ at (REPL29:1:2540) +//│ ═══[RUNTIME ERROR] TypeError: Class constructor Function$1 cannot be invoked without 'new' +//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:311:36) +//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:331:23) +//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:226:24) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:721:37) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:782:40) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:754:36) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1087:39) +//│ at Arguments.g_gen (REPL29:1:5963) +//│ at (REPL29:1:2586) +//│ at REPL29:1:6127 staged module OtherBlocks with fun scope() = @@ -237,6 +199,8 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 +//│ > fun ctor_() = +//│ > () //│ > fun scope() = //│ > let a //│ > a = 1 @@ -270,31 +234,54 @@ staged module OtherBlocks with staged module ClassDefs with class A -//│ > -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(0) {} +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:961:38) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1087:39) +//│ at ClassDefs.ctor$_gen (REPL35:1:2307) +//│ at (REPL35:1:927) +//│ at REPL35:1:2461 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.278: print(ClassDefs."cache$ClassDefs") +//│ ║ l.252: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ -//│ > +//│ > fun ctor_() = +//│ > class A // :sjs staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() -//│ > -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(0) {} +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) +//│ ═══[RUNTIME ERROR] Error: match error +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:961:38) +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1087:39) +//│ at ClassFunctions.ctor$_gen (REPL41:1:5323) +//│ at (REPL41:1:1570) +//│ at REPL41:1:5492 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) // name collision class A() staged module A with fun f() = 1 +//│ > fun ctor_() = +//│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } @@ -302,31 +289,39 @@ staged module A with module A with staged module B with fun f() = 1 +//│ > fun ctor_() = +//│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged module Shadowing with fun f(x, x) = x +//│ > fun ctor_() = +//│ > () //│ > fun f(x, x) = x //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.314: print(Shadowing."cache$Shadowing") +//│ ║ l.305: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ +//│ > fun ctor_() = +//│ > () //│ > fun f(x, x) = x // testing generatorMap staged module M with fun f() = 1 +//│ > fun ctor_() = +//│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e M."generatorMap$M" //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.327: M."generatorMap$M" +//│ ║ l.322: M."generatorMap$M" //│ ╙── ^ //│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} @@ -339,18 +334,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.337: let x = 1 +//│ ║ l.332: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.337: let x = 1 +//│ ║ l.332: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.337: let x = 1 +//│ ║ l.332: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.337: let x = 1 +//│ ║ l.332: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: x is not defined @@ -362,7 +357,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.362: fun g() = {1 : 2} +//│ ║ l.357: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error @@ -371,6 +366,8 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) +//│ > fun ctor_() = +//│ > () //│ > fun f() = //│ > let middleElements //│ > let element0_ @@ -385,8 +382,11 @@ staged module Spread with :todo staged module RetUnit with fun f() = () -//│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit -//│ ═══[RUNTIME ERROR] Error: match error +//│ > fun ctor_() = +//│ > () +//│ > fun f() = Runtime.Unit +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } :sir class Outside(a) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 9e96a66a67..275152b70a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -443,8 +443,8 @@ staged module TestTupleMatching with //│ at ShapeSet.selSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:268:19) //│ at SpecializeHelpers.sop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:207:25) //│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:365:63) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:772:38) -//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:830:40) +//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:756:38) +//│ at lambda1 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:814:40) //│ at file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:151:35 class E(val x) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls index f75b8a32a2..ca158f9b3a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls @@ -16,10 +16,11 @@ staged module A with //│ > 'h' => [Function: h_gen] //│ > } //│ > Map(1) { -//│ > 'ClassSymbol("C", fun C { class: class C }, 0, Some([Symbol("x")]), [], _)' => ClassSymbol { +//│ > [Function: C] { +//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, -//│ > moduleValue: 0, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index b072ac36d0..57e42156d1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -29,39 +29,39 @@ staged module A //│ } //│ staged module A² { //│ constructor { -//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11; -//│ set tmp7 = A².ctor$_instr﹖(); -//│ set tmp8 = ["ctor$", tmp7]; -//│ set tmp9 = [tmp8]; -//│ set tmp10 = new globalThis⁰.Map﹖(tmp9); -//│ set tmp11 = new SpecializeHelpers⁰.FunCache﹖(tmp10); -//│ define cache$A⁰ as val cache$A¹ = tmp11; -//│ set tmp4 = ["ctor$", A².ctor$_gen﹖]; -//│ set tmp5 = [tmp4]; -//│ set tmp6 = new globalThis⁰.Map﹖(tmp5); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp6; -//│ set tmp = { "indent": true }; -//│ set tmp1 = A².cache$A﹖.toString﹖(); -//│ set tmp2 = globalThis⁰.console﹖.log﹖(tmp1); -//│ set tmp3 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ let tmp_dyn, tmp, tmp1, tmp2, gen_call, tmp3, tmp4, tmp5, tmp6, tmp7; +//│ set tmp6 = new mut globalThis⁰.Map﹖(); +//│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp6); +//│ define cache$A⁰ as val cache$A¹ = tmp7; +//│ set tmp3 = ["ctor$", A².ctor$_gen﹖]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = new mut globalThis⁰.Map﹖(tmp4); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp5; +//│ set tmp_dyn = ShapeSet⁰.mkDyn﹖(); +//│ set gen_call = A².ctor$_gen﹖(); +//│ set tmp = A².cache$A﹖.toString﹖(); +//│ set tmp1 = globalThis⁰.console﹖.log﹖(tmp); +//│ set tmp2 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ end +//│ } +//│ method generate⁰ = fun generate¹() { //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { //│ let end, tmp, tmp1, sym, tmp2; -//│ set end = new Block⁰.End﹖(); +//│ set end = new mut Block⁰.End﹖(); //│ set tmp = []; //│ set tmp1 = [tmp]; -//│ set sym = new Block⁰.Symbol﹖("ctor$"); -//│ set tmp2 = new Block⁰.FunDefn﹖(sym, tmp1, end); +//│ set sym = new mut Block⁰.Symbol﹖("ctor$"); +//│ set tmp2 = new mut Block⁰.FunDefn﹖(sym, tmp1, end); //│ return tmp2 //│ } //│ method ctor$_gen⁰ = fun ctor$_gen¹() { -//│ let tmp, tmp1, tmp2, tmp3; -//│ set tmp = A².cache$A﹖.getFun﹖("ctor$"); -//│ set tmp1 = []; -//│ set tmp2 = [tmp1]; -//│ set tmp3 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp2); -//│ return tmp3 +//│ let tmp, tmp1, tmp2; +//│ set tmp = []; +//│ set tmp1 = [tmp]; +//│ set tmp2 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp1); +//│ return tmp2 //│ } //│ }; //│ end From abe9b8f8e677a7593fa1bf31ab6785184aca09cb Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Mon, 30 Mar 2026 13:20:13 +0800 Subject: [PATCH 410/654] Some fix --- .../codegen/ReflectionInstrumenter.scala | 2 + .../src/test/mlscript-compile/Block.mls | 2 +- .../staging/out/SimpleStagedExample.mls | 41 ++++++++++--------- .../test/mlscript/block-staging/Generate.mls | 7 +--- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 4b6790919c..7c00bea962 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -107,6 +107,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(k) + case t: TermSymbol if t.defn.exists(_.sym.asTrm.isDefined) && (t.k is syntax.Fun) => + blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) // avoid name collision case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap(toValue(sym.nme), _)) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 19ff5006d5..ddf9208163 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -190,7 +190,7 @@ fun showBlock(b) = Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" + indent("\n" + arms.map(showArm).join("\n")) - + indent(if dflt is Some(db) then "\nelse " + showBlock(db) else "") + + indent(if dflt is Some(db) then "\nelse" + indent("\n" + showBlock(db)) else "") + showRestBlock(rest) Scoped(symbols, rest) then symbols.map(showSymbol).map("let " + _).join("\n") + showRestBlock(rest) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index c0c5d3b425..c51da2445b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,20 +1,23 @@ module SimpleStagedExample with - fun f(x, y) = +(x, y) - fun fib(n) = + fun ctor_() = + () + fun f(x, y) = x+y + fun fib(n1) = let tmp let tmp1 let n let tmp2 let tmp3 - if n is + if n1 is 1 then 1 2 then 1 - else n = n - tmp2 = -(n, 1) - tmp3 = SimpleStagedExample.fib(tmp2) - tmp = -(n, 2) - tmp1 = SimpleStagedExample.fib(tmp) - +(tmp3, tmp1) + else + n = n1 + tmp2 = n-1 + tmp3 = SimpleStagedExample.fib(tmp2) + tmp = n-2 + tmp1 = SimpleStagedExample.fib(tmp) + tmp3+tmp1 fun foo() = let tmp4 let tmp5 @@ -22,7 +25,7 @@ module SimpleStagedExample with tmp5 = SimpleStagedExample.fib_Lit10(10) 60 fun f_Lit2_Lit3(x, y) = 5 - fun fib_Lit10(n) = + fun fib_Lit10(n1) = let tmp let tmp1 let n @@ -34,7 +37,7 @@ module SimpleStagedExample with tmp = 8 tmp1 = SimpleStagedExample.fib_Lit8(tmp) 55 - fun fib_Lit9(n) = + fun fib_Lit9(n1) = let tmp let tmp1 let n @@ -46,7 +49,7 @@ module SimpleStagedExample with tmp = 7 tmp1 = SimpleStagedExample.fib_Lit7(tmp) 34 - fun fib_Lit8(n) = + fun fib_Lit8(n1) = let tmp let tmp1 let n @@ -58,7 +61,7 @@ module SimpleStagedExample with tmp = 6 tmp1 = SimpleStagedExample.fib_Lit6(tmp) 21 - fun fib_Lit7(n) = + fun fib_Lit7(n1) = let tmp let tmp1 let n @@ -70,7 +73,7 @@ module SimpleStagedExample with tmp = 5 tmp1 = SimpleStagedExample.fib_Lit5(tmp) 13 - fun fib_Lit6(n) = + fun fib_Lit6(n1) = let tmp let tmp1 let n @@ -82,7 +85,7 @@ module SimpleStagedExample with tmp = 4 tmp1 = SimpleStagedExample.fib_Lit4(tmp) 8 - fun fib_Lit5(n) = + fun fib_Lit5(n1) = let tmp let tmp1 let n @@ -94,7 +97,7 @@ module SimpleStagedExample with tmp = 3 tmp1 = SimpleStagedExample.fib_Lit3(tmp) 5 - fun fib_Lit4(n) = + fun fib_Lit4(n1) = let tmp let tmp1 let n @@ -106,7 +109,7 @@ module SimpleStagedExample with tmp = 2 tmp1 = SimpleStagedExample.fib_Lit2(tmp) 3 - fun fib_Lit3(n) = + fun fib_Lit3(n1) = let tmp let tmp1 let n @@ -118,14 +121,14 @@ module SimpleStagedExample with tmp = 1 tmp1 = SimpleStagedExample.fib_Lit1(tmp) 2 - fun fib_Lit2(n) = + fun fib_Lit2(n1) = let tmp let tmp1 let n let tmp2 let tmp3 1 - fun fib_Lit1(n) = + fun fib_Lit1(n1) = let tmp let tmp1 let n diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 14736cd2e5..c7930df29c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -24,14 +24,11 @@ SimpleStagedExample.foo() //│ = 60 -:fixme :expect 6 SimpleStagedExample.f(1, 5) -//│ ═══[RUNTIME ERROR] Expected: '6', got: '5' -//│ = 5 +//│ = 6 -:fixme :expect 5 SimpleStagedExample.fib(5) -//│ ═══[RUNTIME ERROR] Expected: '5', got: '()' +//│ = 5 From e3cc4c3bf4c7325742f5b21c23bef635232e1403 Mon Sep 17 00:00:00 2001 From: Lionel Parreaux Date: Mon, 30 Mar 2026 16:14:09 +0800 Subject: [PATCH 411/654] Change from meeting --- .../test/mlscript/block-staging/Generate.mls | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index c7930df29c..9fa38dd60e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -1,23 +1,14 @@ :js +:noModuleCheck -import "../../mlscript-compile/staging/SimpleStagedExample.mjs" -//│ SimpleStagedExample = class SimpleStagedExample { -//│ cache$SimpleStagedExample: , -//│ generatorMap$SimpleStagedExample: Map(4) { -//│ "ctor$" => fun ctor$_gen, -//│ "f" => fun f_gen, -//│ "fib" => fun fib_gen, -//│ "foo" => fun foo_gen -//│ } -//│ } +import "../../mlscript-compile/staging/SimpleStagedExample.mls" -SimpleStagedExample.generate("./hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls") +SimpleStagedExample."generate"("./hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls") -import "../../mlscript-compile/staging/out/SimpleStagedExample.mjs" -//│ SimpleStagedExample = class SimpleStagedExample +import "../../mlscript-compile/staging/out/SimpleStagedExample.mls" SimpleStagedExample.foo() From 9374fd621ca0958c306d1cbfd29bd437a9455ae7 Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 30 Mar 2026 22:25:24 +0800 Subject: [PATCH 412/654] fix some helpers for shape prop and make a hotfix to the symbol renaming issue --- .../codegen/ReflectionInstrumenter.scala | 6 +- .../src/test/mlscript-compile/Block.mls | 4 +- .../src/test/mlscript-compile/Shape.mls | 35 +- .../src/test/mlscript-compile/ShapeSet.mls | 3 +- .../mlscript-compile/SpecializeHelpers.mls | 3 +- .../shared/src/test/mlscript/ShapeSetTest.mls | 47 +-- .../test/mlscript/block-staging/ShapeProp.mls | 308 +++++++++++------- 7 files changed, 228 insertions(+), 178 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e1684e1e3a..027afd1f57 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -132,12 +132,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap(path, _)) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap(path, _)) - case _: BuiltinSymbol => - blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) // TODO: figure out when to rebind variables - case _: TempSymbol | _: NoSymbol | _ => + case _: TempSymbol | _: NoSymbol | _: VarSymbol => val name = scope.allocateOrGetName(sym) blockCtor("Symbol", Ls(toValue(name)), symName)(k) + case _: BuiltinSymbol | _ => + blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match case S(x) => f(x)(optionSome(_)(k)) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 55b43e77d4..ef4cc89969 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -136,8 +136,8 @@ fun showResult(r: Result): Str = Path then showPath(r) Call(fun_, args) and args is [lhs, rhs] and fun_ is - ValueRef(Symbol("+")) then showArg(lhs) + "+" + showArg(rhs) - ValueRef(Symbol("-")) then showArg(lhs) + "-" + showArg(rhs) + ValueRef(Symbol("+")) then showArg(lhs) + " + " + showArg(rhs) + ValueRef(Symbol("-")) then showArg(lhs) + " - " + showArg(rhs) else showPath(fun_) + "(" + showArgs(args) + ")" Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" Tuple(elems) then "[" + showArgs(elems) + "]" diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 9de5fffbc8..50db9dc604 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -14,7 +14,7 @@ class Shape extends CachedHash with Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape]) - Class(val sym: ClassSymbol, val params: Array[Shape]) + Class(val sym: ClassSymbol, val params: Array[Shape]) // track the auxParams as well? fun show(s: Shape) = if s is @@ -25,23 +25,22 @@ fun show(s: Shape) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is - [Class(ClassSymbol(_, _, paramsOpt, auxParams), params), Lit(n)] and n is Str - and paramsOpt is Some(paramsSymb) - and paramsSymb.indexOf(n) is + [Class(ClassSymbol(_, _, paramsOpt, auxParams), params), Lit(n)] and n is Str and paramsOpt is Some(paramsSymb) and + paramsSymb.map(_.name).indexOf(n) is -1 then [] - i then [params.(i)] + n then [params.(n)] [Class(ClassSymbol, p), Dyn] then [Dyn()] - [Dyn, Lit(n)] and n is Str - then [Dyn()] - [Arr(shapes), Lit(n)] and n is Int - then [shapes.(n)] + [Dyn, Lit(n)] and + n is Str then [Dyn()] + n is Int then [Dyn()] + else throw Error("Unknown selection") + [Arr(shapes), Lit(n)] and n is Int and + n < shapes.length then [shapes.(n)] + else throw Error("Array out of bound") [Arr(shapes), Dyn] then shapes - [Dyn, Lit(n)] and n is Int - then [Dyn()] - [Dyn, Dyn] - then [Dyn()] - else throw Error ("sel error") + [Dyn, Dyn] then [Dyn()] + else [] fun static(s: Shape) = if s is @@ -54,10 +53,10 @@ open Block { Case } fun silh(p: Case): Shape = if p is Block.Lit(l) then Lit(l) - Block.Cls(sym, path) then - val size = if sym.args is Some(i) then i else 0 - Class(sym, Array(size).fill(Dyn)) - Block.Tup(n) then Arr(Array(n).fill(Dyn)) + Block.Cls(clsSymb, path) then + let paramsSize = if clsSymb.paramsOpt is Some(params) then params.length else 0 + Class(clsSymb, Array(paramsSize).fill(Dyn())) + Block.Tup(n) then Arr(Array(n).fill(Dyn())) // TODO: use Option instead, since all of them return at most one shape fun filter(s: Shape, p: Case): Array[Shape] = diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 3035033662..17617dca1d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -40,7 +40,8 @@ module ShapeSet with fun lift(s: Shape) = ShapeSet(new Map([[s.hash(), s]])) -fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [s.hash(), s]))) +fun liftMany(arr: Array[Shape]) = + ShapeSet(new Map(arr.map(s => [s.hash(), s]))) fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(new Map([...s1.shapeset, ...s2.shapeset])) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index ef57eac494..0f7e300b62 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -197,8 +197,7 @@ fun buildShapeSetName(ss: ShapeSet): Str = fun specializeName(funName, shapes) = if shapes.every(ps => ps.every(s => s.isDyn())) then funName - else - funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("__") + else funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("__") fun specialize(cache, funName, dflt, shapes) = // replace function symbol in block definition to new name diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 4538035b6d..c8e46c1afb 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -8,7 +8,7 @@ import "../mlscript-compile/Option.mls" open ShapeSet open Shape { Lit, Arr, Class, Dyn } open Option -open Block { Tup } +open Block { Tup, ClassSymbol, Symbol } let x = mkBot() //│ x = {} @@ -16,7 +16,6 @@ let x = mkBot() if x.isEmpty() then 0 //│ = 0 -// :silent let x = liftMany([Lit(1), Lit(2)]) let y = liftMany([Arr([Lit(1)]), Arr([Lit(2)])]) //│ x = {Lit(1),Lit(2)} @@ -28,47 +27,23 @@ union(x, y) mkArr([x, y]) //│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} +class C(val a) +val clsSym = ClassSymbol("C", C, Some([Symbol("a")]), []) +//│ clsSym = ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []) -[x, y] - .map((x, _, _) => x.values()) -//│ = [[Lit(1), Lit(2)], [Arr([Lit(1)]), Arr([Lit(2)])]] - -let x = liftMany([Dyn(), Class(Symbol(""), [Lit(42)]), Arr([Lit(100), Lit(false), Lit(undefined)])]) -let y = liftMany([Lit("a"), Lit(1)]) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(Symbol(""), [Lit(42)]),Dyn()} -//│ y = {Lit("a"),Lit(1)} - +let x = liftMany([Class(clsSym, [Lit(42)]), Arr([Lit(1), Lit("a")])]) +let y = liftMany([Lit(1), Lit("a")]) selSet(x, y) -//│ = {Dyn(),Lit(false)} - -let x = Class(Symbol("A"), [[Symbol("b"), Lit(1)], [Symbol("d"), Dyn()]]) -let x = Arr([Dyn(), Lit(1), x]) -let x = Shape.sel(x, Lit(2)) -//│ x = [Class(Symbol("A"), [[Symbol("b"), Lit(1)], [Symbol("d"), Dyn()]])] - - -val sym = Symbol("C") -val params = [ - mkLit(null), - liftMany([Lit(2), Lit(4)]), - liftMany([Class(Symbol("A"), [Dyn()]), Class(Symbol("B"), [Dyn()])]) -] -mkClass(sym, params) -//│ = {Class(Symbol("C"), [Lit(null), Lit(2), Class(Symbol("A"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(2), Class(Symbol("B"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(4), Class(Symbol("A"), [Dyn()])]),Class(Symbol("C"), [Lit(null), Lit(4), Class(Symbol("B"), [Dyn()])])} -//│ params = [ -//│ {Lit(null)}, -//│ {Lit(2),Lit(4)}, -//│ {Class(Symbol("A"), [Dyn()]),Class(Symbol("B"), [Dyn()])} -//│ ] -//│ sym = Symbol("C") +//│ = {Lit("a"),Lit(42)} +//│ x = {Arr([Lit(1), Lit("a")]),Class(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(42)])} +//│ y = {Lit("a"),Lit(1)} -[liftMany([Lit(1), Dyn()]), liftMany([Lit(2), Lit("str")])] -//│ = [{Dyn(),Lit(1)}, {Lit("str"),Lit(2)}] +mkClass(clsSym, [mkLit(1)]) +//│ = {Class(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(1)])} filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)])]), Tup(3)) //│ = {Arr([Lit(1), Lit(2), Lit(3)])} - let x = mkLit(1) let y = Block.Cls(Block.Symbol("Bool"), 0) filterSet(x, y) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 4c5b63d7b7..f5f6c189e1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -8,13 +8,12 @@ module NonStaged with 1 then 1 2 then 1 n then fib(n - 1) + fib(n - 2) - module Staged with fun sq(x) = x * x staged module Test with fun f(x, y) = x + y + 1 - 1 - fun fib(n) = if n is + fun fib(n) = if n is 1 then 1 2 then 1 n then fib(n - 1) + fib(n - 2) @@ -33,47 +32,115 @@ staged module Test with //│ > fun f(x, y) = //│ > let tmp //│ > let tmp1 -//│ > tmp = x+y -//│ > tmp1 = tmp+1 -//│ > tmp1-1 +//│ > tmp = x + y +//│ > tmp1 = tmp + 1 +//│ > tmp1 - 1 //│ > fun fib(n1) = -//│ > let n //│ > let tmp2 //│ > let tmp3 //│ > let tmp4 //│ > let tmp5 +//│ > let n //│ > if n1 is //│ > 1 then 1 //│ > 2 then 1 //│ > else n = n1 -//│ > tmp2 = n-1 +//│ > tmp2 = n - 1 //│ > tmp3 = Test.fib(tmp2) -//│ > tmp4 = n-2 +//│ > tmp4 = n - 2 //│ > tmp5 = Test.fib(tmp4) -//│ > tmp3+tmp5 +//│ > tmp3 + tmp5 //│ > fun pyth(x1, y1) = //│ > let tmp6 //│ > let tmp7 //│ > tmp6 = NonStaged.sq(x1) //│ > tmp7 = NonStaged.sq(y1) -//│ > tmp6+tmp7 +//│ > tmp6 + tmp7 //│ > fun pyth2(x2, y2) = //│ > let tmp8 //│ > let tmp9 -//│ > tmp8 = Staged.sq1(x2) -//│ > tmp9 = Staged.sq1(y2) -//│ > tmp8+tmp9 +//│ > tmp8 = Staged.sq(x2) +//│ > tmp9 = Staged.sq(y2) +//│ > tmp8 + tmp9 //│ > fun test() = //│ > let five -//│ > five = Test.f1(2, 3) -//│ > __no__symbol__ = Test.fib(five) -//│ > __no__symbol__ = NonStaged.fib2(five) -//│ > Test.pyth1(3, 4) +//│ > five = Test.f_Lit2_Lit3(2, 3) +//│ > __no__symbol__ = Test.fib_Lit5(five) +//│ > __no__symbol__ = 5 +//│ > Test.pyth_Lit3_Lit4(3, 4) +//│ > fun f_Lit2_Lit3(x, y) = +//│ > let tmp +//│ > let tmp1 +//│ > tmp = 5 +//│ > tmp1 = 6 +//│ > 5 +//│ > fun fib_Lit5(n1) = +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > let n +//│ > n = 5 +//│ > tmp2 = 4 +//│ > tmp3 = Test.fib_Lit4(tmp2) +//│ > tmp4 = 3 +//│ > tmp5 = Test.fib_Lit3(tmp4) +//│ > 5 +//│ > fun fib_Lit4(n1) = +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > let n +//│ > n = 4 +//│ > tmp2 = 3 +//│ > tmp3 = Test.fib_Lit3(tmp2) +//│ > tmp4 = 2 +//│ > tmp5 = Test.fib_Lit2(tmp4) +//│ > 3 +//│ > fun fib_Lit3(n1) = +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > let n +//│ > n = 3 +//│ > tmp2 = 2 +//│ > tmp3 = Test.fib_Lit2(tmp2) +//│ > tmp4 = 1 +//│ > tmp5 = Test.fib_Lit1(tmp4) +//│ > 2 +//│ > fun fib_Lit2(n1) = +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > let n +//│ > 1 +//│ > fun fib_Lit1(n1) = +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let tmp5 +//│ > let n +//│ > 1 +//│ > fun pyth_Lit3_Lit4(x1, y1) = +//│ > let tmp6 +//│ > let tmp7 +//│ > tmp6 = 9 +//│ > tmp7 = 16 +//│ > 25 //│ > fun test2(n2) = //│ > let tmp10 -//│ > __no__symbol__ = Test.pyth1(n2, 2) +//│ > __no__symbol__ = Test.pyth_Dyn_Lit2(n2, 2) //│ > tmp10 = *(n2, 2) //│ > Test.fib(tmp10) +//│ > fun pyth_Dyn_Lit2(x1, y1) = +//│ > let tmp6 +//│ > let tmp7 +//│ > tmp6 = NonStaged.sq(x1) +//│ > tmp7 = 4 +//│ > tmp6 + tmp7 //│ > Map(7) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -103,16 +170,16 @@ staged module Test with //│ > } //│ > }, //│ > [class NonStaged] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NonStaged' ] +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NonStaged' ] //│ > } => ModuleSymbol { //│ > name: 'NonStaged', -//│ > value: [class NonStaged] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > value: [class NonStaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > }, //│ > [class Staged] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Staged' ] +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Staged' ] //│ > } => ModuleSymbol { //│ > name: 'Staged', -//│ > value: [class Staged] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > value: [class Staged] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } //│ > } @@ -130,13 +197,16 @@ staged module TestIf with //│ > let arg_C_0_ //│ > if x is //│ > C(x1) then -//│ > arg_C_0_ = x.x2 +//│ > arg_C_0_ = x.x //│ > if arg_C_0_ is //│ > 2 then "wrong1" //│ > else "wrong2" //│ > 2 then "correct" //│ > else "wrong2" -//│ > fun test() = TestIf.f1(2) +//│ > fun test() = TestIf.f_Lit2(2) +//│ > fun f_Lit2(x) = +//│ > let arg_C_0_ +//│ > "correct" //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -144,7 +214,7 @@ staged module TestIf with //│ > } //│ > Map(2) { //│ > [Function: C] { -//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, @@ -167,133 +237,139 @@ staged module TestIf with //│ > } //│ > } -class C(val x) -class D() -staged module TestClass with - fun f() = new C(2, 3) - fun g() = C(D()) +:noSanityCheck +class C(val n) +staged module TestIf2 with + fun f2(x) = + let y + if x is C then + y = x.n + else + y = 0 + y + 1 + fun test() = f2(C(2)) //│ > fun ctor_() = //│ > () -//│ > fun f() = new C(2, 3) -//│ > fun g() = +//│ > fun f2(x) = +//│ > let y //│ > let tmp -//│ > tmp = D() -//│ > C(tmp) +//│ > if x is +//│ > C(n) then +//│ > y = x.n +//│ > tmp = Runtime.Unit +//│ > y + 1 +//│ > else y = 0 +//│ > tmp = Runtime.Unit +//│ > 1 +//│ > fun test() = +//│ > let tmp1 +//│ > tmp1 = C(2) +//│ > TestIf2.f2_C_Lit2(tmp1) +//│ > fun f2_C_Lit2(x) = +//│ > let y +//│ > let tmp +//│ > y = 2 +//│ > tmp = Runtime.Unit +//│ > 3 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] +//│ > 'f2' => [Function: f2_gen], +//│ > 'test' => [Function: test_gen] //│ > } -//│ > Map(2) { +//│ > Map(3) { //│ > [Function: C] { -//│ > class: [class C2] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > class: [class C2] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, -//│ > [Function: D] { -//│ > class: [class D] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ClassSymbol { -//│ > name: 'D', -//│ > value: [Function: D] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] +//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} }, +//│ > [class TestIf2] { +//│ > 'cache$TestIf2': FunCache { cache: [Map] }, +//│ > 'generatorMap$TestIf2': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f2' => [Function: f2_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'TestIf2', +//│ > value: [class TestIf2] { +//│ > 'cache$TestIf2': [FunCache], +//│ > 'generatorMap$TestIf2': [Map] +//│ > } //│ > } //│ > } -class C(val n) -class D(val n) -staged module TestClass2 with - fun f(c) = c - fun test() = f(C(2)) // FIXME: this should be static as well - fun test2() = f(new C(new D(2))) +class C(val x) +class D() +staged module TestClass with + fun f() = new C(D()) + fun g() = C(D()) + fun id(x) = x + fun test() = id(C(D())) //│ > fun ctor_() = //│ > () -//│ > fun f(c) = c -//│ > fun test() = +//│ > fun f() = //│ > let tmp -//│ > tmp = C(2) -//│ > TestClass2.f1(tmp) -//│ > fun test2() = +//│ > tmp = D() +//│ > new C(tmp) +//│ > fun g() = //│ > let tmp1 +//│ > tmp1 = D() +//│ > C(tmp1) +//│ > fun id(x1) = x1 +//│ > fun test() = //│ > let tmp2 -//│ > tmp1 = new D(2) -//│ > tmp2 = new C(tmp1) -//│ > TestClass2.f1(tmp2) -//│ > Map(4) { +//│ > let tmp3 +//│ > tmp2 = D() +//│ > tmp3 = C(tmp2) +//│ > TestClass.id_C_D_(tmp3) +//│ > fun id_C_D_(x1) = +//│ > let obj_1 +//│ > let obj_2 +//│ > obj_1 = new D() +//│ > obj_2 = new C(obj_1) +//│ > obj_2 +//│ > Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] +//│ > 'g' => [Function: g_gen], +//│ > 'id' => [Function: id_gen], +//│ > 'test' => [Function: test_gen] //│ > } //│ > Map(3) { +//│ > [Function: D] { +//│ > class: [class D] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'D', +//│ > value: [Function: D] { class: [Function] }, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > }, //│ > [Function: C] { -//│ > class: [class C4] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > class: [class C4] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, -//│ > [class TestClass2] { -//│ > 'cache$TestClass2': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestClass2': Map(4) { +//│ > [class TestClass] { +//│ > 'cache$TestClass': FunCache { cache: [Map] }, +//│ > 'generatorMap$TestClass': Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] +//│ > 'g' => [Function: g_gen], +//│ > 'id' => [Function: id_gen], +//│ > 'test' => [Function: test_gen] //│ > } //│ > } => ModuleSymbol { -//│ > name: 'TestClass2', -//│ > value: [class TestClass2] { -//│ > 'cache$TestClass2': [FunCache], -//│ > 'generatorMap$TestClass2': [Map] +//│ > name: 'TestClass', +//│ > value: [class TestClass] { +//│ > 'cache$TestClass': [FunCache], +//│ > 'generatorMap$TestClass': [Map] //│ > } -//│ > }, -//│ > [Function: D] { -//│ > class: [class D2] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ClassSymbol { -//│ > name: 'D', -//│ > value: [Function: D] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] //│ > } //│ > } - -:noSanityCheck -class C(val n) -staged module TestIf with - fun f(x) = - let y - if x is C then - y = x.n - else - y = 0 - y + 1 -//│ > fun ctor_() = -//│ > () -//│ > fun f(x) = -//│ > let tmp -//│ > let y -//│ > if x is -//│ > C(n) then -//│ > y = x.n -//│ > tmp = Runtime.Unit -//│ > y+1 -//│ > else y = 0 -//│ > tmp = Runtime.Unit -//│ > 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(2) { -//│ > [Function: C] { -//│ > class: [class C6] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } -//│ > } From d1585381a45e799eefaccef94e8a16d76061356d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:30:45 +0800 Subject: [PATCH 413/654] Add ValDefn to Block IR ValDefn is used in constructors of data classes that have paramters, which will need to be staged. --- .../hkmc2/codegen/ReflectionInstrumenter.scala | 8 ++++++++ hkmc2/shared/src/test/mlscript-compile/Block.mls | 7 ++++++- .../src/test/mlscript/block-staging/PrintCode.mls | 13 ++++++------- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 5dc5c604b4..52070d9b59 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -276,6 +276,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n optionNone(): none => // TODO: handle companion object blockCtor("ClsLikeDefn", Ls(c, methods, none)): cls => blockCtor("Define", Ls(cls, p))(k(_, ctx)) + case Define(v: ValDefn, rest) => + // TODO: only allow ValDefn inside ctors + transformBlock(rest): p => + transformOption(v.tsym.owner, transformSymbol(_, N, "test")): owner => + transformSymbol(v.sym): sym => + transformPath(v.rhs): rhs => + blockCtor("ValDefn", Ls(owner, sym, rhs)): v => + blockCtor("Define", Ls(v, p))(k(_, ctx)) case End(_) => ruleEnd()(k(_, ctx)) case Match(p, ks, dflt, rest) => transformPath(p): x => diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d50b198682..812bc9f67a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -65,6 +65,7 @@ class Path extends Result with class Defn with constructor + ValDefn(val tsym: Symbol, val sym: Symbol, val rhs: Path) ClsLikeDefn(val sym: ClassSymbol, val methods: Array[FunDefn], val companion: Opt[ClsLikeBody]) // companion unused FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block, val stage: Bool) @@ -155,7 +156,11 @@ fun showDefn(d: Defn): Str = ClsLikeDefn(sym, methods, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + if methods is [] then "" else " with \n " + indent(methods.map(showDefn).join("\n")) - _ then "" + // TODO: used to represent assignments in constructors, which still need some adjustments + ValDefn(owner, sym, rhs) then + "set " + (if owner is Some(owner) then showSymbol(owner) + "." else "") + + showSymbol(sym) + " = " + showPath(rhs) + _ then "" fun showBlock(b) = if b is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index d84e90d531..6dda4f85ef 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -31,17 +31,11 @@ printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) //│ > p.x //│ > p.(field) +:silent class A(val x)(y) class B let aSym = ClassSymbol("A", A, Some([Symbol("x")]), [Symbol("y")]) let bSym = ClassSymbol("B", B, None, None) -//│ aSym = ClassSymbol( -//│ "A", -//│ fun A { class: class A }, -//│ Some([Symbol("x")]), -//│ [Symbol("y")] -//│ ) -//│ bSym = ClassSymbol("B", class B, None, None) printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) printCode(Instantiate(ValueRef(aSym), [Arg(ValueLit(0))])) @@ -67,3 +61,8 @@ printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), //│ > x = 4.2 //│ > x +printCode(Define(ValDefn(Some(aSym), Symbol("x"), ValueLit(1)), End())) +//│ > set A.x = 1 + +printCode(Define(ValDefn(None, Symbol("a"), ValueLit(1)), End())) +//│ > set a = 1 From ea0bae6d027ff51f236a0c00e43e8b4ab621ba4a Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 30 Mar 2026 22:41:54 +0800 Subject: [PATCH 414/654] some changes in diff test --- .../test/mlscript/block-staging/DefCtx.mls | 72 ------------------- .../test/mlscript/block-staging/Generate.mls | 10 +-- .../test/mlscript/block-staging/SymbolMap.mls | 2 +- 3 files changed, 6 insertions(+), 78 deletions(-) delete mode 100644 hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls diff --git a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls b/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls deleted file mode 100644 index 5c4e4c4584..0000000000 --- a/hkmc2/shared/src/test/mlscript/block-staging/DefCtx.mls +++ /dev/null @@ -1,72 +0,0 @@ -:js -:staging - -fun f() = 1 -staged module A with - fun f() = 1 - fun g(x) = x -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 -//│ > fun g(x) = x -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } - -class C() with - fun h() = 0 - -fun i() = 2 - -staged module B with - fun a() = A.f() - fun b() = C().h() - fun c() = i() - fun d() = A.g(1) - fun e() = f() -//│ > fun ctor_() = -//│ > () -//│ > fun a() = A.f() -//│ > fun b() = -//│ > let tmp -//│ > tmp = C() -//│ > tmp.h() -//│ > fun c() = i() -//│ > fun d() = A.g_Lit1(1) -//│ > fun e() = f() -//│ > Map(6) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'a' => [Function: a_gen], -//│ > 'b' => [Function: b_gen], -//│ > 'c' => [Function: c_gen], -//│ > 'd' => [Function: d_gen], -//│ > 'e' => [Function: e_gen] -//│ > } -//│ > Map(2) { -//│ > [class A] { -//│ > 'cache$A': FunCache { cache: [Map] }, -//│ > 'generatorMap$A': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] -//│ > } => ModuleSymbol { -//│ > name: 'A', -//│ > value: [class A] { -//│ > 'cache$A': [FunCache], -//│ > 'generatorMap$A': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > }, -//│ > [Function: C] { -//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] -//│ > } -//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index a1cd10a3eb..ab2537e1c2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -3,7 +3,7 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > fun ctor_() = //│ > () -//│ > fun f(x, y) = x+y +//│ > fun f(x, y) = x + y //│ > fun fib(n1) = //│ > let tmp //│ > let tmp1 @@ -14,17 +14,17 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > 1 then 1 //│ > 2 then 1 //│ > else n = n1 -//│ > tmp2 = n-1 +//│ > tmp2 = n - 1 //│ > tmp3 = SimpleStagedExample.fib(tmp2) -//│ > tmp = n-2 +//│ > tmp = n - 2 //│ > tmp1 = SimpleStagedExample.fib(tmp) -//│ > tmp3+tmp1 +//│ > tmp3 + tmp1 //│ > fun foo() = //│ > let tmp4 //│ > let tmp5 //│ > tmp4 = SimpleStagedExample.f1(2, 3) //│ > tmp5 = SimpleStagedExample.fib_Lit10(10) -//│ > tmp4+tmp5 +//│ > tmp4 + tmp5 //│ > fun fib_Lit10(n1) = //│ > let tmp //│ > let tmp1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls index 46afc0b964..ca158f9b3a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls @@ -17,7 +17,7 @@ staged module A with //│ > } //│ > Map(1) { //│ > [Function: C] { -//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, From 2d51268ce8ea94ab50018f8194fc05045bc6a9d5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 30 Mar 2026 22:45:42 +0800 Subject: [PATCH 415/654] fix test --- .../test/mlscript/block-staging/Functions.mls | 62 ++++++++++--------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 9b0ab545f4..513c8a11c5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -17,6 +17,7 @@ staged module Expressions with //│ > x = 42 //│ > x +let x = [1, 2, 3] staged module Expressions with fun lit() = 1 fun assign() = @@ -39,22 +40,6 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:515) -//│ ╔══[COMPILATION ERROR] Name not found: x -//│ ║ l.27: fun tup2() = [1, x] -//│ ╙── ^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:515) -//│ ╔══[COMPILATION ERROR] Name not found: x -//│ ║ l.37: if x is -//│ ╙── ^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: transformBlock (ReflectionInstrumenter.scala:304) -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Throw(Lit(StrLit(This code cannot be run as its compilation yielded an error.))) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: transformBlock (ReflectionInstrumenter.scala:304) -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Throw(Lit(StrLit(This code cannot be run as its compilation yielded an error.))) //│ > fun ctor_() = //│ > () //│ > fun lit() = 1 @@ -65,19 +50,38 @@ staged module Expressions with //│ > y = x //│ > y //│ > fun tup1() = [1, 2] -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:222) -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. -//│ at Runtime.checkCall (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs:608:41) -//│ at (REPL15:1:608) -//│ at REPL15:1:9995 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:600:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:935:10) -//│ at REPLServer.emit (node:events:508:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ > fun tup2() = [1, x1] +//│ > fun dynsel() = +//│ > let tmp +//│ > tmp = [1] +//│ > tmp.(0) +//│ > fun match1() = +//│ > let scrut +//│ > scrut = 9 +//│ > if scrut is +//│ > Bool then 1 +//│ > 8 then 2 +//│ > Int then 3 +//│ > else 0 +//│ > fun match2() = +//│ > let a +//│ > let element1_ +//│ > let element0_ +//│ > if x1 is +//│ > [] then 1 +//│ > [_, _] then +//│ > element0_ = Runtime.Tuple.get(x1, 0) +//│ > element1_ = Runtime.Tuple.get(x1, 1) +//│ > if element0_ is +//│ > 1 then +//│ > if element1_ is +//│ > 2 then 2 +//│ > else a = element0_ +//│ > 3 +//│ > else a = element0_ +//│ > 3 +//│ > else 0 +//│ x = [1, 2, 3] class Outside(a) staged module ClassInstrumentation with From 5230fbd72062759b2e7dea61665c222daf949660 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 30 Mar 2026 22:46:29 +0800 Subject: [PATCH 416/654] patch in staging `Runtime.Unit` --- .../codegen/ReflectionInstrumenter.scala | 2 ++ .../test/mlscript/block-staging/Functions.mls | 20 ++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 52070d9b59..543821a693 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -109,6 +109,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) + // FIXME: hack to patch in staging for returning the object Unit. + case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil) case _ => raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 513c8a11c5..1e0e4f11be 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -196,6 +196,13 @@ staged module ClassFunctions with //│ > +(1, tmp) //│ > fun g() = InnerClass.f() +:todo +staged module RetUnit with + fun f() = () +//│ > fun ctor_() = +//│ > () +//│ > fun f() = Runtime.Unit + // name collision class A() staged module A with @@ -212,7 +219,6 @@ module A with //│ > () //│ > fun f() = 1 - // TODO: force enable :ftc to desugar Label and Break :todo staged module M with @@ -222,22 +228,22 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.216: let x = 1 +//│ ║ l.226: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.216: let x = 1 +//│ ║ l.226: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.216: let x = 1 +//│ ║ l.226: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.216: let x = 1 +//│ ║ l.226: let x = 1 //│ ╙── ^ //│ > fun ctor_() = //│ > () -//│ ═══[RUNTIME ERROR] ReferenceError: x is not defined +//│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined // TODO: force enable :ftc to desugar Label and Break staged module M with @@ -263,7 +269,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.259: fun g() = {1 : 2} +//│ ║ l.269: fun g() = {1 : 2} //│ ╙── ^ //│ > fun ctor_() = //│ > x = C(1) From 915f37795f87053e8be682a3112444bd3d74d633 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 30 Mar 2026 22:59:37 +0800 Subject: [PATCH 417/654] add some renaming tests --- .../codegen/ReflectionInstrumenter.scala | 7 +-- .../mlscript/block-staging/SymbolRenaming.mls | 50 +++++++++++++++++++ 2 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 543821a693..2290a4b479 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -100,8 +100,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n // retain names to built-in functions or function definitions case t: TermSymbol if t.defn.exists(_.k == syntax.Fun) => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) - case _: BuiltinSymbol => - blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(k) case baseSym: BaseTypeSymbol => @@ -126,9 +124,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(k) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(k) - case _ => + case _: TempSymbol | _: NoSymbol | _: VarSymbol => val name = scope.allocateOrGetName(sym) blockCtor("Symbol", Ls(toValue(name)), symName)(k) + // FIXME: there may be more types of symbols that need to be renamed during staging + case _: BuiltinSymbol | _ => + blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match case S(x) => f(x)(optionSome(_)(k)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls new file mode 100644 index 0000000000..4714d68f40 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -0,0 +1,50 @@ +:js +:staging + +staged module TempVariable with + fun f() = + let x + let x + x +//│ > fun ctor_() = +//│ > () +//│ > fun f() = +//│ > let x +//│ > let x1 +//│ > x1 + +staged module DupeFunctionName with + fun f() = 1 +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 + +class C(val x) + +staged module NoSymbol with + fun f(g) = + g() + g() + () +//│ > fun ctor_() = +//│ > () +//│ > fun f(g) = +//│ > __no__symbol__ = g() +//│ > __no__symbol__ = g() +//│ > Runtime.Unit + +staged module Selection with + fun f(x) = + x.call() + C(1).x is Bool +//│ > fun ctor_() = +//│ > () +//│ > fun f(x) = +//│ > let tmp +//│ > let scrut +//│ > __no__symbol__ = x.call() +//│ > tmp = C(1) +//│ > scrut = tmp.x +//│ > if scrut is +//│ > Bool then true +//│ > else false From 2d25af375b84ea26535be86caef9e5366b9eba5f Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Mon, 30 Mar 2026 13:20:13 +0800 Subject: [PATCH 418/654] add more tests --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 6 +++--- .../src/test/mlscript/block-staging/PrintCode.mls | 8 ++++++++ .../test/mlscript/block-staging/SymbolRenaming.mls | 13 ++++++++++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 812bc9f67a..c5e808b0fb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -73,7 +73,7 @@ class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicField class Block with constructor - Match(val scrut: Path, val arms: Array[[Case, Block]], val dflt: Opt[Block], val rest: Block) + Match(val scrut: Path, val arms: Array[Arm], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) @@ -130,7 +130,7 @@ fun showCase(c) = Lit(l) then showLiteral(l) Cls(cls, p) then showSymbol(cls) + if isPrimitiveType(cls) then "" - else showParamsOpt(cls.paramsOpt) + else showParamsOpt(cls.paramsOpt) // it seems we only need the arity, printing the paramter names is unnecessary Tup(len) then "[" + Array(len).fill("_").join(", ") + "]" _ then "" @@ -173,7 +173,7 @@ fun showBlock(b) = Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" + indent("\n" + arms.map(showArm).join("\n")) - + indent(if dflt is Some(db) then "\nelse " + showBlock(db) else "") + + indent(if dflt is Some(db) then "\nelse" + indent("\n" + showBlock(db)) else "") + showRestBlock(rest) Scoped(symbols, rest) then // initialize symbols diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 6dda4f85ef..6a30d5c3ba 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -66,3 +66,11 @@ printCode(Define(ValDefn(Some(aSym), Symbol("x"), ValueLit(1)), End())) printCode(Define(ValDefn(None, Symbol("a"), ValueLit(1)), End())) //│ > set a = 1 + +printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2), false)), Arm(Cls(aSym, ValueRef(aSym)), Return(ValueLit(3), false))], Some(Return(ValueRef(Symbol("x")), false)), End())) +//│ > if x is +//│ > 1 then 2 +//│ > A(x) then 3 +//│ > else +//│ > x + diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 4714d68f40..b51e81654f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -47,4 +47,15 @@ staged module Selection with //│ > scrut = tmp.x //│ > if scrut is //│ > Bool then true -//│ > else false +//│ > else +//│ > false + +staged module DupeClass with + class C(val y) + fun f() = C(1).y +//│ > fun ctor_() = +//│ > class C(y) +//│ > fun f() = +//│ > let tmp +//│ > tmp = DupeClass.C(1) +//│ > tmp.y From e97fba5f047265f74bda20331ea3e62c02403dc7 Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 30 Mar 2026 23:16:26 +0800 Subject: [PATCH 419/654] fix printing to else --- .../src/test/mlscript-compile/Block.mls | 6 ++-- .../test/mlscript/block-staging/PrintCode.mls | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 431e8d2d8b..ff8b010f50 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -72,7 +72,7 @@ class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicField class Block with constructor - Match(val scrut: Path, val arms: Array[[Case, Block]], val dflt: Opt[Block], val rest: Block) + Match(val scrut: Path, val arms: Array[Arm], val dflt: Opt[Block], val rest: Block) Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) @@ -154,7 +154,7 @@ fun showDefn(d: Defn): Str = ClsLikeDefn(sym, methods, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + if methods is [] then "" else " with \n " + indent(methods.map(showDefn).join("\n")) - _ then "" + _ then "" + d fun showBlock(b) = if b is @@ -167,7 +167,7 @@ fun showBlock(b) = Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" + indent("\n" + arms.map(showArm).join("\n")) - + indent(if dflt is Some(db) then "\nelse " + showBlock(db) else "") + + indent(if dflt is Some(db) then "\nelse " + indent(showBlock(db)) else "") + showRestBlock(rest) Scoped(symbols, rest) then // initialize symbols diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index d84e90d531..db38c6dada 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -67,3 +67,31 @@ printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), //│ > x = 4.2 //│ > x +printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(1), Match( + ValueRef(Symbol("x")), + [Arm(Lit(1), Return(ValueLit(1), false))], + Some(Return(ValueLit(1), false)), + Return(ValueRef(Symbol("y")), false))))) +//│ > let x +//│ > let y +//│ > x = 1 +//│ > if x is +//│ > 1 then 1 +//│ > else 1 +//│ > y + + +printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(1), Match( + ValueRef(Symbol("x")), + [Arm(Lit(1), Return(ValueLit(1), false))], + Some(Assign(Symbol("y"), ValueLit(1), Return(ValueLit(1), false))), + Return(ValueRef(Symbol("y")), false))))) +//│ > let x +//│ > let y +//│ > x = 1 +//│ > if x is +//│ > 1 then 1 +//│ > else y = 1 +//│ > 1 +//│ > y + From 5456fe734a8063abc931ae8f9b5a99cf6c70e957 Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 30 Mar 2026 23:29:58 +0800 Subject: [PATCH 420/654] fix the printing for match --- .../src/test/mlscript-compile/Block.mls | 2 +- .../test/mlscript/block-staging/PrintCode.mls | 58 +++++++++++++------ 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index ff8b010f50..dd58b9e7dd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -167,7 +167,7 @@ fun showBlock(b) = Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" + indent("\n" + arms.map(showArm).join("\n")) - + indent(if dflt is Some(db) then "\nelse " + indent(showBlock(db)) else "") + + indent(if dflt is Some(db) then "\nelse " + indent((if db is Return then "" else "\n") + showBlock(db)) else "") + showRestBlock(rest) Scoped(symbols, rest) then // initialize symbols diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index db38c6dada..cd75eb1f85 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -67,31 +67,51 @@ printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), //│ > x = 4.2 //│ > x -printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(1), Match( - ValueRef(Symbol("x")), +printCode(Scoped([Symbol("y")], Match( + ValueLit(1), [Arm(Lit(1), Return(ValueLit(1), false))], Some(Return(ValueLit(1), false)), - Return(ValueRef(Symbol("y")), false))))) -//│ > let x + Return(ValueRef(Symbol("y")), false)))) //│ > let y -//│ > x = 1 -//│ > if x is +//│ > if 1 is //│ > 1 then 1 //│ > else 1 //│ > y - -printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(1), Match( - ValueRef(Symbol("x")), - [Arm(Lit(1), Return(ValueLit(1), false))], - Some(Assign(Symbol("y"), ValueLit(1), Return(ValueLit(1), false))), - Return(ValueRef(Symbol("y")), false))))) -//│ > let x +printCode(Scoped([Symbol("y")], Match( + ValueLit(1), + [Arm(Lit(1), Assign(Symbol("y"), ValueLit(1), Return(ValueRef(Symbol("y")), false)))], + Some(Assign(Symbol("y"), ValueLit(2), Return(ValueRef(Symbol("y")), false))), + End()))) //│ > let y -//│ > x = 1 -//│ > if x is -//│ > 1 then 1 -//│ > else y = 1 -//│ > 1 -//│ > y +//│ > if 1 is +//│ > 1 then +//│ > y = 1 +//│ > y +//│ > else +//│ > y = 2 +//│ > y +printCode(Scoped([Symbol("y")], Match( + ValueLit(1), + [Arm(Lit(1), Match( + ValueLit(2), + [Arm(Lit(2), Assign(Symbol("y"), ValueLit(1), Return(ValueRef(Symbol("y")), false)))], + Some(Assign(Symbol("y"), ValueLit(2), Return(ValueRef(Symbol("y")), false))), + End() + ))], + Some(Assign(Symbol("y"), ValueLit(3), Return(ValueRef(Symbol("y")), false))), + End()))) +//│ > let y +//│ > if 1 is +//│ > 1 then +//│ > if 2 is +//│ > 2 then +//│ > y = 1 +//│ > y +//│ > else +//│ > y = 2 +//│ > y +//│ > else +//│ > y = 3 +//│ > y From 1cfbc113571be13db94a6ddc1805c5f6f3f98a52 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 30 Mar 2026 23:30:09 +0800 Subject: [PATCH 421/654] update comment --- .../src/test/mlscript/block-staging/Functions.mls | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index bc2a75d2cf..d169aa0140 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -383,27 +383,26 @@ staged module Shadowing with //│ > fun f(x1, x) = x //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -// TODO: force enable :ftc to desugar Label and Break :todo -staged module M with +staged module Continue with fun f() = let x = 1 while x == 1 do set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.390: let x = 1 +//│ ║ l.389: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.390: let x = 1 +//│ ║ l.389: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.390: let x = 1 +//│ ║ l.389: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.390: let x = 1 +//│ ║ l.389: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -415,7 +414,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.415: fun g() = {1 : 2} +//│ ║ l.414: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From 226c068ce896e0cb2efa06c0d476dbbd1dbc6809 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 30 Mar 2026 23:38:46 +0800 Subject: [PATCH 422/654] add shapeProp config this separates shape prop testing from staging testing --- hkmc2/shared/src/main/scala/hkmc2/Config.scala | 2 ++ .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 4 ++-- hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls | 5 +++-- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 2 ++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/Config.scala b/hkmc2/shared/src/main/scala/hkmc2/Config.scala index f8752215fe..ecb1eec36b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/Config.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/Config.scala @@ -23,6 +23,7 @@ case class Config( liftDefns: Opt[LiftDefns], patMatConsequentSharingThreshold: Opt[Int], stageCode: Bool, + shapeProp: Bool, target: CompilationTarget, rewriteWhileLoops: Bool, tailRecOpt: Bool, @@ -63,6 +64,7 @@ object Config: target = CompilationTarget.JS, rewriteWhileLoops = false, stageCode = false, + shapeProp = false, tailRecOpt = true, deforest = N, qqEnabled = false, diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 362d528021..9de2b0374c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -47,7 +47,7 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = Value.Lit(l) // transform Block to Block IR so that it can be instrumented in mlscript -class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(SymbolSubst.Id): +class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTransformer(SymbolSubst.Id): // TODO: there could be a fresh scope per function body, instead of a single one for the entire program val scope = Scope.empty(Scope.Cfg.default) val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() @@ -374,7 +374,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: funParams else funParams val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => tuple(tups): args => - call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => + call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args, toValue(!config.shapeProp))): res => Return(res, false) FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(false) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index c326bf0141..daa14d6468 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -25,7 +25,7 @@ fun specializeName(funName, shapes) = ).join("") fun propStub(block, shapes) = [block, shapes] -fun specialize(cache, funName, dflt, shapes) = +fun specialize(cache, funName, dflt, shapes, useStub) = // replace function symbol in block definition to new name let newName = specializeName(funName, shapes) // console.log(cache.getFun(newName)) @@ -34,7 +34,8 @@ fun specialize(cache, funName, dflt, shapes) = None then let defn = dflt() if defn is FunDefn(Symbol(_), ps, _) then - let res = propStub(defn, shapes) + let propFun = if useStub then propStub else propStub + let res = propFun(defn, shapes) let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, res.0.body), res.1]) [entry.0.sym, entry.1] diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index bf985fb413..c110765d57 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -72,6 +72,7 @@ abstract class MLsDiffMaker extends DiffMaker: val liftDefns = NullaryCommand("lift") val importQQ = NullaryCommand("qq") val stageCode = NullaryCommand("staging") + val shapeProp = NullaryCommand("shapeProp") val rewriteWhile = NullaryCommand("rewriteWhile") val noTailRecOpt = NullaryCommand("noTailRec") val deforest = Command("deforest")(_.trim) @@ -114,6 +115,7 @@ abstract class MLsDiffMaker extends DiffMaker: patMatConsequentSharingThreshold = patMatConsequentSharingThreshold.get .orElse(Config.default.patMatConsequentSharingThreshold), stageCode = stageCode.isSet, + shapeProp = shapeProp.isSet, target = if wasm.isSet then CompilationTarget.Wasm else CompilationTarget.JS, rewriteWhileLoops = rewriteWhile.isSet, tailRecOpt = !noTailRecOpt.isSet, From b69e8f71d742534e4163d8462172f86273c1a66f Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 00:02:57 +0800 Subject: [PATCH 423/654] fixed the printing --- .../src/test/mlscript-compile/Block.mls | 5 +++-- .../test/mlscript/block-staging/ShapeProp.mls | 20 ++++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index ef4cc89969..772c56bf0e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -190,12 +190,13 @@ fun showBlock(b) = Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" + indent("\n" + arms.map(showArm).join("\n")) - + indent(if dflt is Some(db) then "\nelse " + showBlock(db) else "") + + indent(if dflt is Some(db) then "\nelse " + indent((if db is Return then "" else "\n") + showBlock(db)) else "") + showRestBlock(rest) Scoped(symbols, rest) then + // initialize symbols symbols.map(showSymbol).map("let " + _).join("\n") + showRestBlock(rest) End() then "()" - _ then "" + _ then "" // removes trailing newline fun showRestBlock(b : Block): Str = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index f5f6c189e1..d5fb9b18f5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -44,12 +44,13 @@ staged module Test with //│ > if n1 is //│ > 1 then 1 //│ > 2 then 1 -//│ > else n = n1 -//│ > tmp2 = n - 1 -//│ > tmp3 = Test.fib(tmp2) -//│ > tmp4 = n - 2 -//│ > tmp5 = Test.fib(tmp4) -//│ > tmp3 + tmp5 +//│ > else +//│ > n = n1 +//│ > tmp2 = n - 1 +//│ > tmp3 = Test.fib(tmp2) +//│ > tmp4 = n - 2 +//│ > tmp5 = Test.fib(tmp4) +//│ > tmp3 + tmp5 //│ > fun pyth(x1, y1) = //│ > let tmp6 //│ > let tmp7 @@ -258,9 +259,10 @@ staged module TestIf2 with //│ > y = x.n //│ > tmp = Runtime.Unit //│ > y + 1 -//│ > else y = 0 -//│ > tmp = Runtime.Unit -//│ > 1 +//│ > else +//│ > y = 0 +//│ > tmp = Runtime.Unit +//│ > 1 //│ > fun test() = //│ > let tmp1 //│ > tmp1 = C(2) From 986087ebc25d2e40a9c40acc5419c4e03b63b81d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 30 Mar 2026 23:38:46 +0800 Subject: [PATCH 424/654] add shapeProp config this separates shape prop testing from staging testing --- hkmc2/shared/src/main/scala/hkmc2/Config.scala | 2 ++ .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 4 ++-- hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls | 5 +++-- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 2 ++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/Config.scala b/hkmc2/shared/src/main/scala/hkmc2/Config.scala index f8752215fe..ecb1eec36b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/Config.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/Config.scala @@ -23,6 +23,7 @@ case class Config( liftDefns: Opt[LiftDefns], patMatConsequentSharingThreshold: Opt[Int], stageCode: Bool, + shapeProp: Bool, target: CompilationTarget, rewriteWhileLoops: Bool, tailRecOpt: Bool, @@ -63,6 +64,7 @@ object Config: target = CompilationTarget.JS, rewriteWhileLoops = false, stageCode = false, + shapeProp = false, tailRecOpt = true, deforest = N, qqEnabled = false, diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 027afd1f57..56f225d52f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -47,7 +47,7 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = Value.Lit(l) // transform Block to Block IR so that it can be instrumented in mlscript -class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(SymbolSubst.Id): +class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTransformer(SymbolSubst.Id): // TODO: there could be a fresh scope per function body, instead of a single one for the entire program val scope = Scope.empty(Scope.Cfg.default) val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() @@ -371,7 +371,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S } val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => tuple(tups): args => - call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => + call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args, toValue(!config.shapeProp))): res => Return(res, false) FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(false) val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 0f7e300b62..456966bdf9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -199,7 +199,7 @@ fun specializeName(funName, shapes) = if shapes.every(ps => ps.every(s => s.isDyn())) then funName else funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("__") -fun specialize(cache, funName, dflt, shapes) = +fun specialize(cache, funName, dflt, shapes, useStub) = // replace function symbol in block definition to new name let newName = specializeName(funName, shapes) if cache.getFun(newName) is @@ -210,7 +210,8 @@ fun specialize(cache, funName, dflt, shapes) = let ctx = Ctx.empty ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), shapes.(i).(j)))) cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) - let res = prop(ctx, body) + let propFun = if useStub then propStub else propStub + let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, bodyWithScoped), res.1]) [entry.0.sym, entry.1] diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index 51b85d58fa..b950823173 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -73,6 +73,7 @@ abstract class MLsDiffMaker extends DiffMaker: val liftDefns = NullaryCommand("lift") val importQQ = NullaryCommand("qq") val stageCode = NullaryCommand("staging") + val shapeProp = NullaryCommand("shapeProp") val rewriteWhile = NullaryCommand("rewriteWhile") val noTailRecOpt = NullaryCommand("noTailRec") val deforest = Command("deforest")(_.trim) @@ -115,6 +116,7 @@ abstract class MLsDiffMaker extends DiffMaker: patMatConsequentSharingThreshold = patMatConsequentSharingThreshold.get .orElse(Config.default.patMatConsequentSharingThreshold), stageCode = stageCode.isSet, + shapeProp = shapeProp.isSet, target = if wasm.isSet then CompilationTarget.Wasm else CompilationTarget.JS, rewriteWhileLoops = rewriteWhile.isSet, tailRecOpt = !noTailRecOpt.isSet, From 1080ae2943bf476b3065f22ea495e66db3ed3fb3 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 00:33:38 +0800 Subject: [PATCH 425/654] update tests --- .../mlscript-compile/SpecializeHelpers.mls | 8 +- .../test/mlscript/block-staging/Classes.mls | 34 +- .../test/mlscript/block-staging/Functions.mls | 95 +- .../test/mlscript/block-staging/Generate.mls | 2 + .../test/mlscript/block-staging/PrintCode.mls | 4 +- .../test/mlscript/block-staging/ShapeProp.mls | 43 +- .../block-staging/ShapeSetHelpers.mls | 853 ++++-------------- .../mlscript/block-staging/SpecializeTest.mls | 24 +- .../mlscript/block-staging/StageSymbols.mls | 19 +- .../codegen/FirstClassFunctionTransform.mls | 7 +- 10 files changed, 277 insertions(+), 812 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index b05cbc2d4d..6688ea95fe 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -100,8 +100,8 @@ fun sor(ctx, r) = if r is ">=" then lit(l1 >= l2) "===" then lit(l1 === l2) "!==" then lit(l1 !== l2) - // "&&" then lit(l1 && l2) - // "||" then lit(l1 || l2) + "&&" then lit(l1 && l2) + "||" then lit(l1 || l2) Select(ValueRef(ModuleSymbol(name, value)), Symbol(symb)) and let mapPropName = "generatorMap$" + name let cachePropName = "cache$" + name @@ -178,7 +178,7 @@ fun prop(ctx, b) = if b is // TODO: debug only; remove this fun propStub(ctx, body) = - console.log("Calling the propStub now which performs no shape propagation") + // console.log("Calling the propStub now which performs no shape propagation") [body, mkDyn()] fun buildShapeName(s: Shape): Str = @@ -221,5 +221,3 @@ class FunCache(val cache: Map[String, [FunDefn, ShapeSet]]) with // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions fun setFun(k, v) = cache.set(k, v); v fun toString() = cache.values().map((d, _, _) => showDefn(d.0)).toArray().join("\n") - - diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 3cf8273eb0..db558378f5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -8,13 +8,13 @@ class C with fun call(x) = x + 1 staged module M with fun f(x) = x.C#call(10) -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun f_{Dyn_28_29}(x) = x.call(10) +//│ > fun f(x) = x.call(10) //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged class A(val a) -//│ > fun ctor__{Dyn_28_29}_2c{Dyn_28_29}(a) = +//│ > fun ctor_(a) = //│ > set A1.a = a //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { @@ -30,7 +30,7 @@ staged class A(val a) staged module C with class I -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > class I //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { @@ -46,9 +46,9 @@ staged module C with class C staged module M with fun f() = C -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun f_() = C +//│ > fun f() = C //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [class C4] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { @@ -62,9 +62,9 @@ staged module M with // :sir staged class C with fun f() = 1 -//│ > fun ctor__{Dyn_28_29}_2c() = +//│ > fun ctor_() = //│ > () -//│ > fun f_{Dyn_28_29}_2c() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :e @@ -78,9 +78,9 @@ staged class B(val x) with staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 -//│ > fun ctor__{Dyn_28_29}_2c{Dyn_28_29}(x) = +//│ > fun ctor_(x) = //│ > set B1.x = x -//│ > fun f_{Dyn_28_29}_2c{Dyn_28_29}(y) = +(B1.x, y) +//│ > fun f(y) = B1.x + y //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [Function: B] { @@ -92,11 +92,11 @@ staged class D(val x) extends B(x+1) with //│ > auxParams: [] //│ > } //│ > } -//│ > fun ctor__{Dyn_28_29}_2c{Dyn_28_29}(x1) = +//│ > fun ctor_(x1) = //│ > let tmp -//│ > tmp = +(x1, 1) +//│ > tmp = x1 + 1 //│ > super(tmp) -//│ > fun f_{Dyn_28_29}_2c() = 42 +//│ > fun f() = 42 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: B] { @@ -131,9 +131,9 @@ staged module M with fun f() = Unstaged; Staged -//│ > fun ctor__{Dyn_28_29}_2c{Dyn_28_29}(x) = +//│ > fun ctor_(x) = //│ > set Staged1.x = x -//│ > fun inner_{Dyn_28_29}_2c() = 1 +//│ > fun inner() = 1 //│ > Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'inner' => [Function: inner_gen] @@ -151,9 +151,9 @@ staged module M with //│ > auxParams: [] //│ > } //│ > } -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun f_() = ,(Unstaged, Staged1) +//│ > fun f() = ,(Unstaged, Staged1) //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: Staged] { diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 68f75a6ebe..1e181265d4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -6,9 +6,9 @@ staged module Rebinding with fun lit() = let x = 42 x -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun lit_() = +//│ > fun lit() = //│ > let x //│ > x = 42 //│ > x @@ -43,25 +43,25 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun lit_{Dyn_28_29}(x) = +(x, x) -//│ > fun assign_() = +//│ > fun lit(x) = x + x +//│ > fun assign() = //│ > let x1 //│ > let y //│ > x1 = 42 //│ > y = x1 //│ > y -//│ > fun tup1_() = [1, 2] -//│ > fun tup2_() = +//│ > fun tup1() = [1, 2] +//│ > fun tup2() = //│ > let x2 //│ > x2 = [1, 2, 3] //│ > [1, x2] -//│ > fun dynsel_() = +//│ > fun dynsel() = //│ > let tmp //│ > tmp = [1] //│ > tmp.(0) -//│ > fun match1_() = +//│ > fun match1() = //│ > let scrut //│ > scrut = 9 //│ > if scrut is @@ -70,7 +70,7 @@ staged module Expressions with //│ > Int then 3 //│ > else //│ > 0 -//│ > fun match2_() = +//│ > fun match2() = //│ > let element1_ //│ > let element0_ //│ > let x3 @@ -117,13 +117,13 @@ staged module ClassInstrumentation with fun app2() = Inside(1, 2) fun inst2() = new NoArg fun app1() = Outside(1) -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > class Inside(a, b) //│ > class NoArg -//│ > fun inst1_() = Outside(1) -//│ > fun app2_() = ClassInstrumentation.Inside(1, 2) -//│ > fun inst2_() = new ClassInstrumentation.NoArg() -//│ > fun app1_() = Outside(1) +//│ > fun inst1() = Outside(1) +//│ > fun app2() = ClassInstrumentation.Inside(1, 2) +//│ > fun inst2() = new ClassInstrumentation.NoArg() +//│ > fun app1() = Outside(1) //│ > Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'inst1' => [Function: inst1_gen], @@ -186,13 +186,13 @@ staged module Call with fun call() = Nonstaged.f() Staged.f() -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun f_() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun call_() = +//│ > fun call() = //│ > __no__symbol__ = Nonstaged.f() //│ > Staged.f() //│ > Map(2) { @@ -229,12 +229,12 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun f_{Dyn_28_29}(x) = +//│ > fun f(x) = //│ > x = 1 //│ > x -//│ > fun g_{Dyn_28_29}(x1) = +//│ > fun g(x1) = //│ > let tmp //│ > tmp = new Function_() //│ > tmp @@ -267,13 +267,13 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun scope_() = +//│ > fun scope() = //│ > let a //│ > a = 1 //│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel_() = +//│ > fun breakAndLabel() = //│ > let scrut //│ > scrut = 1 //│ > if scrut is @@ -305,7 +305,7 @@ staged module OtherBlocks with staged module ClassDefs with class A -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > class A //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { @@ -322,12 +322,12 @@ staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > class InnerClass() with //│ > fun f() = //│ > let tmp //│ > tmp = Arguments.f(1) -//│ > +(1, tmp) +//│ > 1 + tmp //│ > fun g() = InnerClass.f() //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(2) { @@ -357,38 +357,29 @@ staged module ClassFunctions with //│ > } //│ > } -:todo -staged module RetUnit with - fun f() = () -//│ > fun ctor__() = -//│ > () -//│ > fun f_() = Runtime.Unit -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } - // name collision class A() staged module A with fun f() = 1 -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun f_() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } // nested module module A with staged module B with fun f() = 1 -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun f_() = 1 +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged module Shadowing with fun f(x, x) = x -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun f_{Dyn_28_29}_2c{Dyn_28_29}(x1, x) = x +//│ > fun f(x1, x) = x //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo @@ -399,18 +390,18 @@ staged module Continue with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.397: let x = 1 +//│ ║ l.388: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.397: let x = 1 +//│ ║ l.388: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.397: let x = 1 +//│ ║ l.388: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.397: let x = 1 +//│ ║ l.388: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined @@ -422,7 +413,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.422: fun g() = {1 : 2} +//│ ║ l.413: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error @@ -431,14 +422,14 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) -//│ > fun ctor__() = +//│ > fun ctor_() = //│ > () -//│ > fun f_() = +//│ > fun f() = +//│ > let middleElements +//│ > let element0_ //│ > let scrut //│ > let tmp //│ > let x -//│ > let middleElements -//│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > if scrut is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index a1cd10a3eb..af4374befe 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -1,5 +1,7 @@ :js +:shapeProp +// FIXME: shapeProp is not passed into the compilation of this, thus not showing propagation behaviour import "../../mlscript-compile/staging/SimpleStagedExample.mls" //│ > fun ctor_() = //│ > () diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 03b597fadb..a9504acc39 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -68,7 +68,7 @@ printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), //│ > x printCode(Define(ValDefn(Some(bSym), Symbol("x"), ValueLit(1)), End())) -//│ > set A.x = 1 +//│ > set B.x = 1 printCode(Define(ValDefn(None, Symbol("a"), ValueLit(1)), End())) //│ > set a = 1 @@ -76,7 +76,7 @@ printCode(Define(ValDefn(None, Symbol("a"), ValueLit(1)), End())) printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2), false)), Arm(Cls(bSym, ValueRef(bSym)), Return(ValueLit(3), false))], Some(Return(ValueRef(Symbol("x")), false)), End())) //│ > if x is //│ > 1 then 2 -//│ > A(x) then 3 +//│ > B then 3 //│ > else //│ > x diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index f5f6c189e1..5b74541342 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -1,6 +1,7 @@ :js :staging :noFreeze +:shapeProp module NonStaged with fun sq(x) = x * x @@ -44,12 +45,13 @@ staged module Test with //│ > if n1 is //│ > 1 then 1 //│ > 2 then 1 -//│ > else n = n1 -//│ > tmp2 = n - 1 -//│ > tmp3 = Test.fib(tmp2) -//│ > tmp4 = n - 2 -//│ > tmp5 = Test.fib(tmp4) -//│ > tmp3 + tmp5 +//│ > else +//│ > n = n1 +//│ > tmp2 = n - 1 +//│ > tmp3 = Test.fib(tmp2) +//│ > tmp4 = n - 2 +//│ > tmp5 = Test.fib(tmp4) +//│ > tmp3 + tmp5 //│ > fun pyth(x1, y1) = //│ > let tmp6 //│ > let tmp7 @@ -170,16 +172,16 @@ staged module Test with //│ > } //│ > }, //│ > [class NonStaged] { -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NonStaged' ] +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NonStaged' ] //│ > } => ModuleSymbol { //│ > name: 'NonStaged', -//│ > value: [class NonStaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > value: [class NonStaged] { Symbol(mlscript.definitionMetadata): [Array] } //│ > }, //│ > [class Staged] { -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Staged' ] +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Staged' ] //│ > } => ModuleSymbol { //│ > name: 'Staged', -//│ > value: [class Staged] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > value: [class Staged] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } //│ > } @@ -200,9 +202,11 @@ staged module TestIf with //│ > arg_C_0_ = x.x //│ > if arg_C_0_ is //│ > 2 then "wrong1" -//│ > else "wrong2" +//│ > else +//│ > "wrong2" //│ > 2 then "correct" -//│ > else "wrong2" +//│ > else +//│ > "wrong2" //│ > fun test() = TestIf.f_Lit2(2) //│ > fun f_Lit2(x) = //│ > let arg_C_0_ @@ -214,7 +218,7 @@ staged module TestIf with //│ > } //│ > Map(2) { //│ > [Function: C] { -//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, @@ -258,9 +262,10 @@ staged module TestIf2 with //│ > y = x.n //│ > tmp = Runtime.Unit //│ > y + 1 -//│ > else y = 0 -//│ > tmp = Runtime.Unit -//│ > 1 +//│ > else +//│ > y = 0 +//│ > tmp = Runtime.Unit +//│ > 1 //│ > fun test() = //│ > let tmp1 //│ > tmp1 = C(2) @@ -278,7 +283,7 @@ staged module TestIf2 with //│ > } //│ > Map(3) { //│ > [Function: C] { -//│ > class: [class C2] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > class: [class C2] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, @@ -341,7 +346,7 @@ staged module TestClass with //│ > } //│ > Map(3) { //│ > [Function: D] { -//│ > class: [class D] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > class: [class D] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ClassSymbol { //│ > name: 'D', //│ > value: [Function: D] { class: [Function] }, @@ -349,7 +354,7 @@ staged module TestClass with //│ > auxParams: [] //│ > }, //│ > [Function: C] { -//│ > class: [class C4] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > class: [class C4] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index c15b4845fc..58cbaa60df 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -62,20 +62,15 @@ selSet(arrSp, mkLit(1)) selSet(mkDyn(), mkLit(5)) //│ = {Dyn()} -let a = Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], undefined), [Lit(42), Lit("c")]) +let a = Class(ClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]) let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) selSet(x, liftMany([Lit("a"), Lit(2)])) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 6 -//│ ║ l.65: let a = Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"]), [], undefined), [Lit(42), Lit("c")]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //│ = {Dyn(),Lit(undefined)} //│ a = Class( -//│ ClassSymbol("A", undefined, undefined, Some(["a", "b"])), +//│ ClassSymbol("A", undefined, Some(["a", "b"]), []), //│ [Lit(42), Lit("c")] //│ ) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Dyn()} selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) //│ = {Lit(1)} @@ -83,18 +78,8 @@ selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) // union let x = liftMany([Lit(1), Lit(2)]) -let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) +let y = liftMany([Arr([Lit(2)]), Lit(1), Arr([Lit(1)])]) union(x, y) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.86: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) -//│ ╙── ^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.86: let y = liftMany([Arr([Lit(2)], false), Lit(1), Arr([Lit(1)], false)]) -//│ ╙── ^^^^^^^^^^^^^^^^^ //│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} //│ x = {Lit(1),Lit(2)} //│ y = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1)} @@ -105,20 +90,10 @@ filterSet(mkDyn(), Block.Lit("a")) //│ = {Lit("a")} filterSet(mkDyn(), Block.Tup(2)) -//│ = {Arr([fun Dyn { class: class Dyn }, fun Dyn { class: class Dyn }])} +//│ = {Arr([Dyn(), Dyn()])} -let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.110: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) -//│ ╙── ^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.110: let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()], true), Arr([Lit(1), Lit(2), Lit(3)], false), a]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Lit(1),Lit(null)} +let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()]), Arr([Lit(1), Lit(2), Lit(3)]), a]) +//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match @@ -128,7 +103,7 @@ filterSet(filterShapes, Block.Lit(1)) assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = {Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")])} +//│ = {Class(ClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")])} filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) //│ = {Lit(1)} @@ -142,202 +117,37 @@ filterSet(filterShapes, Tup(4)) assert(filterSet(filterShapes, Tup(0)).isEmpty()) open Block +open SpecializeHelpers { Ctx, sop, sor, prop } // Ctx let ctx = Ctx.empty let x = ValueRef(Symbol("x")) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.148: let ctx = Ctx.empty -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ ctx = undefined -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, member:Shape -> Shape, x -> x, member:SpecializeHelpers -> SpecializeHelpers1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ╟── which references the symbol introduced here -//│ ║ l.149: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, undefined, Some(["a", "b"])), [Lit(42), Lit("c")]),Dyn()} +//│ ctx = Ctx(Map(0) {}, []) +//│ x = ValueRef(Symbol("x")) ctx.add(x, mkLit(1)) ctx.get(x) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, x -> x, member:SpecializeHelpers -> SpecializeHelpers1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.179: ctx.add(x, mkLit(1)) -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.149: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, x -> x, member:SpecializeHelpers -> SpecializeHelpers1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.180: ctx.get(x) -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.149: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') -//│ at REPL111:1:68 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) +//│ = Some({Lit(1)}) ctx.add(x, mkLit(2)) ctx.get(x) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, x -> x, tmp:block$res -> block$res33, member:SpecializeHelpers -> SpecializeHelpers1, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.235: ctx.add(x, mkLit(2)) -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.149: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = x⁰ -//│ _2 = class hkmc2.semantics.VarSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp4, tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res8, tmp:tmp -> tmp5, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:block$res -> block$res9, tmp:Block -> Block, tmp:tmp -> tmp6, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:block$res -> block$res25, tmp:tmp -> tmp10, tmp:tmp -> tmp76, tmp:tmp -> tmp11, tmp:tmp -> tmp77, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:block$res -> block$res26, tmp:tmp -> tmp14, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res12, tmp:tmp -> tmp15, tmp:block$res -> block$res27, tmp:tmp -> tmp80, arrSp -> arrSp, tmp:block$res -> block$res28, tmp:tmp -> tmp81, tmp:block$res -> block$res13, tmp:tmp -> tmp16, tmp:tmp -> tmp17, tmp:tmp -> tmp18, tmp:scrut -> scrut2, tmp:block$res -> block$res14, tmp:tmp -> tmp19, tmp:block$res -> block$res29, tmp:tmp -> tmp82, tmp:tmp -> tmp83, tmp:block$res -> block$res30, tmp:block$res -> block$res15, ctx -> ctx, tmp:tmp -> tmp20, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, a -> a, member:Option -> Option, tmp:block$res -> block$res32, tmp:tmp -> tmp84, member:Shape -> Shape, x -> x, tmp:block$res -> block$res33, member:SpecializeHelpers -> SpecializeHelpers1, tmp:tmp -> tmp85, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, tmp:tmp -> tmp32, tmp:tmp -> tmp33, member:Predef -> Predef, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, member:Block -> Block1, tmp:tmp -> tmp40, tmp:block$res -> block$res18, tmp:tmp -> tmp41, tmp:tmp -> tmp42, tmp:tmp -> tmp43, tmp:tmp -> tmp44, tmp:tmp -> tmp45, tmp:tmp -> tmp46, x -> x1, y -> y, member:Runtime -> Runtime, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:block$res -> block$res2, tmp:tmp -> tmp59, tmp:block$res -> block$res3, tmp:block$res -> block$res21, tmp:block$res -> block$res4, tmp:tmp -> tmp60, tmp:tmp -> tmp61, filterShapes -> filterShapes, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res6, tmp:tmp -> tmp2, tmp:tmp -> tmp3, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:scrut -> scrut, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:block$res -> block$res7, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.236: ctx.get(x) -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.149: let x = ValueRef(Symbol("x")) -//│ ╙── ^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') -//│ at REPL114:1:68 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) +//│ = Some({Lit(1),Lit(2)}) let y = ValueRef(Symbol("y")) ctx.add(y, mkLit("a")) ctx.get(y) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'add') -//│ at REPL117:1:176 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) +//│ = Some({Lit("a")}) //│ y = ValueRef(Symbol("y")) let ctx2 = ctx.clone ctx2.add(y, mkLit("b")) ctx2.get(y) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'clone') -//│ at REPL121:1:44 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) -//│ ctx2 = undefined +//│ = Some({Lit("a"),Lit("b")}) +//│ ctx2 = Ctx(Map(2) {"x" => {Lit(1),Lit(2)}, "y" => {Lit("a"),Lit("b")}}, []) ctx.get(y) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'get') -//│ at REPL125:1:42 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) +//│ = Some({Lit("a")}) // DefCtx @@ -349,273 +159,97 @@ ctx.get(y) // sop sop(Ctx.empty, ValueLit(42)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sop -//│ ║ l.351: sop(Ctx.empty, ValueLit(42)) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.351: sop(Ctx.empty, ValueLit(42)) -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ = {Lit(42)} sop(Ctx.empty, ValueLit(false)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sop -//│ ║ l.366: sop(Ctx.empty, ValueLit(false)) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.366: sop(Ctx.empty, ValueLit(false)) -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ = {Lit(false)} sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sop -//│ ║ l.381: sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.381: sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ = {} val x = Symbol("x") -val C = ClassSymbol("C", Some(["a"])) +val C = ClassSymbol("C", undefined, Some(["a"]), []) val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) let ctx = Ctx.empty ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.400: let ctx = Ctx.empty -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sop -//│ ║ l.402: sop(ctx, selPath) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.398: val C = ClassSymbol("C", Some(["a"])) -//│ ╙── ^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ C = ClassSymbol("C", Some(["a"]), undefined, undefined) -//│ ctx = undefined +//│ = {} +//│ C = ClassSymbol("C", undefined, Some(["a"]), []) +//│ ctx = Ctx( +//│ Map(1) { +//│ "x" => {Class(ClassSymbol("C", undefined, Some(["a"]), []), [Lit("pass")])} +//│ }, +//│ [] +//│ ) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") // sor -val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) -sor(DefCtx.empty, Ctx.empty, tup) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.429: sor(DefCtx.empty, Ctx.empty, tup) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.429: sor(DefCtx.empty, Ctx.empty, tup) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.429: sor(DefCtx.empty, Ctx.empty, tup) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.428: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.428: val tup = Tuple([Arg(None, ValueLit(1)), Arg(None, ValueLit(true))]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ tup = Tuple([Arg(None), Arg(None)]) - -let c = ClassSymbol("C", Some([Symbol("p")])) -let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) -sor(DefCtx.empty, Ctx.empty, inst) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.462: sor(DefCtx.empty, Ctx.empty, inst) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.462: sor(DefCtx.empty, Ctx.empty, inst) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.462: sor(DefCtx.empty, Ctx.empty, inst) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.460: let c = ClassSymbol("C", Some([Symbol("p")])) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.461: let inst = Instantiate(ValueRef(c), [Arg(None, ValueLit(123))]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ c = ClassSymbol("C", Some([Symbol("p")]), undefined, undefined) +val tup = Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]) +sor(Ctx.empty, tup) +//│ = [ +//│ End(), +//│ Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]), +//│ {Arr([Lit(1), Lit(true)])} +//│ ] +//│ tup = Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]) + +let c = ClassSymbol("C", undefined, Some([Symbol("p")]), []) +let inst = Instantiate(ValueRef(c), [Arg(ValueLit(123))]) +sor(Ctx.empty, inst) +//│ = [ +//│ End(), +//│ Instantiate( +//│ ValueRef(ClassSymbol("C", undefined, Some([Symbol("p")]), [])), +//│ [Arg(ValueLit(123))] +//│ ), +//│ {Class(ClassSymbol("C", undefined, Some([Symbol("p")]), []), [Lit(123)])} +//│ ] +//│ c = ClassSymbol("C", undefined, Some([Symbol("p")]), []) //│ inst = Instantiate( -//│ ValueRef(ClassSymbol("C", Some([Symbol("p")]), undefined, undefined)), -//│ [Arg(None)] +//│ ValueRef(ClassSymbol("C", undefined, Some([Symbol("p")]), [])), +//│ [Arg(ValueLit(123))] //│ ) fun testBinOp(op, v1, v2) = - let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] + let args = [Arg(ValueLit(v1)), Arg(ValueLit(v2))] let c = Call(ValueRef(Symbol(op)), args) - let def = DefCtx.empty - def.add(ValueRef(Symbol("+")), undefined, false) - def.add(ValueRef(Symbol("==")), undefined, false) - def.add(ValueRef(Symbol("===")), undefined, false) - def.add(ValueRef(Symbol("&&")), undefined, false) - sor(def, Ctx.empty, c).1.lit -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.500: let def = DefCtx.empty -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.505: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.505: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.498: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.498: let args = [Arg(None, ValueLit(v1)), Arg(None, ValueLit(v2))] -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ + sor(Ctx.empty, c).1.lit :expect 12 testBinOp("+", 10, 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: '12', got: 'undefined' +//│ = 12 :expect true testBinOp("==", 10, 10) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: 'true', got: 'undefined' +//│ = true :expect false testBinOp("===", 10, "10") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' +//│ = false :expect false testBinOp("&&", true, false) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' +//│ = false fun testUnaryOp(op, v) = - let args = [Arg(None, ValueLit(v))] + let args = [Arg(ValueLit(v))] let c = Call(ValueRef(Symbol(op)), args) - let def = DefCtx.empty - def.add(ValueRef(Symbol("-")), undefined, false) - def.add(ValueRef(Symbol("!")), undefined, false) - def.add(ValueRef(Symbol("~")), undefined, false) - sor(def, Ctx.empty, c).1.lit -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.571: let def = DefCtx.empty -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.575: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.575: sor(def, Ctx.empty, c).1.lit -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.569: let args = [Arg(None, ValueLit(v))] -//│ ╙── ^^^^^^^^^^^^^^^^^^^ + sor(Ctx.empty, c).1.lit :expect -10 testUnaryOp("-", 10) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: '-10', got: 'undefined' +//│ = -10 :expect false testUnaryOp("!", true) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:266) -//│ ═══[RUNTIME ERROR] Expected: 'false', got: 'undefined' +//│ = false :re -testUnaryOp("~", 10) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. - +testUnaryOp("~", 10) +//│ ═══[RUNTIME ERROR] Error: Access to required field 'lit' yielded 'undefined' // prop @@ -631,95 +265,49 @@ let plus = ValueRef(Symbol("+")) // let x // x = 1 + 1 // x + 1 -let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.635: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.635: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.635: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.635: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.634: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.634: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.634: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.634: let c = Scoped([x], Assign(x, Call(plus, [Arg(None, ValueLit(1)), Arg(None, ValueLit(1))]), Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueLit(1))]), false))) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +let c = Scoped([x], Assign(x, Call(plus, [Arg(ValueLit(1)), Arg(ValueLit(1))]), Return(Call(plus, [Arg(ValueRef(x)), Arg(ValueLit(1))]), false))) +prop(Ctx.empty, c) +//│ = [ +//│ Scoped( +//│ [Symbol("x")], +//│ Assign(Symbol("x"), ValueLit(2), Return(ValueLit(3), false)) +//│ ), +//│ {Lit(3)} +//│ ] //│ c = Scoped( //│ [Symbol("x")], //│ Assign( //│ Symbol("x"), -//│ Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), -//│ Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) +//│ Call(ValueRef(Symbol("+")), [Arg(ValueLit(1)), Arg(ValueLit(1))]), +//│ Return( +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(ValueRef(Symbol("x"))), Arg(ValueLit(1))] +//│ ), +//│ false +//│ ) //│ ) //│ ) let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) -prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.689: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.689: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.689: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.689: prop(DefCtx.empty, Ctx.empty, Cache.empty, c) -//│ ╙── ^^^^^ +prop(Ctx.empty, c) //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.688: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ║ l.292: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) //│ ╙── ^^^^^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.688: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +//│ ║ l.292: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) //│ ╙── ^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ = [ +//│ Scoped( +//│ [Symbol("x")], +//│ Assign(Symbol("x"), ValueLit(9), Return(ValueLit(3), false)) +//│ ), +//│ {Lit(3)} +//│ ] //│ c = Scoped( //│ [Symbol("x")], //│ Assign( @@ -756,123 +344,57 @@ fun f_gen(args) = val fSym = Symbol("f") val M = ValueRef(Symbol("M")) val fPath = Select(M, fSym) -val defs = DefCtx.empty.add(fPath, f_gen, true) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: DefCtx -//│ ║ l.759: val defs = DefCtx.empty.add(fPath, f_gen, true) -//│ ╙── ^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. //│ M = ValueRef(Symbol("M")) -//│ defs = undefined //│ fPath = Select(ValueRef(Symbol("M")), Symbol("f")) //│ fSym = Symbol("f") -val callF = Call(fPath, [Arg(None, ValueLit(12))]) -sor(defs, Ctx.empty, callF) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: sor -//│ ║ l.774: sor(defs, Ctx.empty, callF) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.774: sor(defs, Ctx.empty, callF) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.773: val callF = Call(fPath, [Arg(None, ValueLit(12))]) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(None)]) +val callF = Call(fPath, [Arg(ValueLit(12))]) +sor(Ctx.empty, callF) +//│ = [ +//│ End(), +//│ Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(ValueLit(12))]), +//│ {Dyn()} +//│ ] +//│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(ValueLit(12))]) val ctxXY = Ctx.empty .add(ValueRef(x), mkLit(10)) .add(ValueRef(y), mkLit(32)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.795: val ctxXY = Ctx.empty -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ ctxXY = undefined +//│ ctxXY = Ctx(Map(2) {"x" => {Lit(10)}, "y" => {Lit(32)}}, []) // x + y -val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) +val blockAdd = Return(Call(plus, [Arg(ValueRef(x)), Arg(ValueRef(y))]), false) printCode(blockAdd) -prop(defs, ctxXY, Cache.empty, blockAdd) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.811: prop(defs, ctxXY, Cache.empty, blockAdd) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.811: prop(defs, ctxXY, Cache.empty, blockAdd) -//│ ╙── ^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.809: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 1 arguments, got 2 -//│ ║ l.809: val blockAdd = Return(Call(plus, [Arg(None, ValueRef(x)), Arg(None, ValueRef(y))]), false) -//│ ╙── ^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at Block.showPath (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:637:38) -//│ at showArg (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:641:18) -//│ at Array.map () -//│ at Block.showArgs (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:645:33) -//│ at Block.showResult (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:659:20) -//│ at Block.showBlock (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:854:20) -//│ at Block.show (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:925:20) -//│ at Block.printCode (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/Block.mjs:932:17) -//│ at REPL213:1:436 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ blockAdd = Return(Call(ValueRef(Symbol("+")), [Arg(None), Arg(None)]), false) +prop(ctxXY, blockAdd) +//│ > x + y +//│ = [Return(ValueLit(42), false), {Lit(42)}] +//│ blockAdd = Return( +//│ Call( +//│ ValueRef(Symbol("+")), +//│ [Arg(ValueRef(Symbol("x"))), Arg(ValueRef(Symbol("y")))] +//│ ), +//│ false +//│ ) val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit(1), End())), Arm(Lit(2), Assign(z, ValueLit(2), End()))], Some(Assign(z, ValueLit(3), End())), Return(ValueRef(z), false))) printCode(blockBranch) -prop(defs, Ctx.empty, Cache.empty, blockBranch) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.849: prop(defs, Ctx.empty, Cache.empty, blockBranch) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.849: prop(defs, Ctx.empty, Cache.empty, blockBranch) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.849: prop(defs, Ctx.empty, Cache.empty, blockBranch) -//│ ╙── ^^^^^ +prop(Ctx.empty, blockBranch) //│ > let z //│ > if 1 is //│ > 1 then //│ > z = 1 //│ > 2 then //│ > z = 2 -//│ > else z = 3 +//│ > else +//│ > z = 3 //│ > z -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ = [ +//│ Scoped( +//│ [Symbol("z")], +//│ Assign(Symbol("z"), ValueLit(1), Return(ValueLit(1), false)) +//│ ), +//│ {Lit(1)} +//│ ] //│ blockBranch = Scoped( //│ [Symbol("z")], //│ Match( @@ -888,22 +410,7 @@ prop(defs, Ctx.empty, Cache.empty, blockBranch) val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Return(ValueLit(10), false)), Arm(Lit(false), Assign(y, ValueLit(20), End()))], End(), Return(ValueRef(y), false)))) printCode(earlyRetBlock) -prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.891: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.891: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.891: prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) -//│ ╙── ^^^^^ +prop(Ctx.empty, earlyRetBlock) //│ > let x //│ > let y //│ > x = false @@ -912,9 +419,17 @@ prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) //│ > false then //│ > y = 20 //│ > y -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ = [ +//│ Scoped( +//│ [Symbol("x"), Symbol("y")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(false), +//│ Assign(Symbol("y"), ValueLit(20), Return(ValueLit(20), false)) +//│ ) +//│ ), +//│ {Lit(20)} +//│ ] //│ earlyRetBlock = Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( @@ -942,29 +457,7 @@ prop(defs, Ctx.empty, Cache.empty, earlyRetBlock) // else return 3 // return 4 val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Match(ValueRef(y), [Arm(Lit(true), Return(ValueLit(1), false))], Some(Return(ValueLit(2), false)), End()))], Some(Return(ValueLit(3), false)), Return(ValueLit(4), false))))) -let c = Cache.empty -val res = prop(defs, Ctx.empty, c, nestedBlock) -c.add("f", mkDyn(), res.0, res.1) -c.printImps() -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Cache -//│ ║ l.945: let c = Cache.empty -//│ ╙── ^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: prop -//│ ║ l.946: val res = prop(defs, Ctx.empty, c, nestedBlock) -//│ ╙── ^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: subterm (Elaborator.scala:517) -//│ ╔══[COMPILATION ERROR] Name not found: Ctx -//│ ║ l.946: val res = prop(defs, Ctx.empty, c, nestedBlock) -//│ ╙── ^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. -//│ c = undefined +val res = prop(Ctx.empty, nestedBlock) //│ nestedBlock = Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( @@ -992,37 +485,17 @@ c.printImps() //│ ) //│ ) //│ ) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: lookup_! (Scope.scala:131) -//│ FAILURE INFO: Tuple2: -//│ _1 = Tuple2: -//│ _1 = member:res⁰ -//│ _2 = class hkmc2.semantics.BlockMemberSymbol -//│ _2 = Scope: -//│ parentOrCfg = Left of Cfg: -//│ escapeChars = true -//│ useSuperscripts = false -//│ includeZero = false -//│ defaultName = "tmp" -//│ curThis = S of S of globalThis:globalThis⁰ -//│ bindings = HashMap(tmp:tmp -> tmp69, tmp:tmp -> tmp70, tmp:tmp -> tmp71, tmp:tmp -> tmp72, tmp:block$res -> block$res23, tmp:tmp -> tmp73, tmp:runtime -> runtime, tmp:definitionMetadata -> definitionMetadata, tmp:prettyPrint -> prettyPrint, tmp:Term -> Term, tmp:Block -> Block, tmp:ShapeSet -> ShapeSet, tmp:SpecializeHelpers -> SpecializeHelpers, tmp:option -> option, tmp:scrut -> scrut1, tmp:block$res -> block$res24, tmp:tmp -> tmp74, tmp:tmp -> tmp75, tmp:block$res -> block$res25, tmp:tmp -> tmp76, tmp:tmp -> tmp77, tmp:block$res -> block$res26, tmp:tmp -> tmp78, tmp:tmp -> tmp79, tmp:block$res -> block$res54, tmp:tmp -> tmp125, tmp:tmp -> tmp126, tmp:block$res -> block$res27, tmp:tmp -> tmp127, tmp:tmp -> tmp80, tmp:tmp -> tmp128, tmp:tmp -> tmp129, tmp:tmp -> tmp130, tmp:tmp -> tmp131, tmp:tmp -> tmp132, tmp:tmp -> tmp133, tmp:tmp -> tmp134, tmp:block$res -> block$res28, tmp:tmp -> tmp135, tmp:tmp -> tmp81, tmp:tmp -> tmp136, tmp:tmp -> tmp137, tmp:tmp -> tmp138, tmp:tmp -> tmp139, tmp:tmp -> tmp140, tmp:tmp -> tmp141, tmp:tmp -> tmp142, tmp:tmp -> tmp143, tmp:tmp -> tmp144, tmp:tmp -> tmp145, tmp:scrut -> scrut2, tmp:tmp -> tmp146, tmp:tmp -> tmp147, tmp:block$res -> block$res29, tmp:tmp -> tmp148, tmp:tmp -> tmp82, tmp:tmp -> tmp149, tmp:tmp -> tmp83, tmp:tmp -> tmp150, tmp:tmp -> tmp151, tmp:tmp -> tmp152, tmp:block$res -> block$res30, tmp:tmp -> tmp153, tmp:tmp -> tmp154, ctx -> ctx, tmp:tmp -> tmp155, tmp:tmp -> tmp156, member:f_gen -> f_gen, tmp:block$res -> block$res31, member:CachedHash -> CachedHash, tmp:block$res -> block$res55, member:Option -> Option, tmp:block$res -> block$res32, member:defs -> defs, tmp:tmp -> tmp84, member:fPath -> fPath, member:M -> M, member:Shape -> Shape, member:fSym -> fSym, tmp:block$res -> block$res33, member:SpecializeHelpers -> SpecializeHelpers1, tmp:tmp -> tmp85, y -> y1, member:ShapeSet -> ShapeSet1, tmp:block$res -> block$res34, tmp:tmp -> tmp86, tmp:tmp -> tmp87, tmp:block$res -> block$res56, ctx2 -> ctx2, tmp:tmp -> tmp157, tmp:tmp -> tmp158, tmp:tmp -> tmp159, tmp:tmp -> tmp160, member:callF -> callF, tmp:block$res -> block$res35, tmp:selRes -> selRes, tmp:tmp -> tmp88, member:Predef -> Predef, tmp:block$res -> block$res36, member:Block -> Block1, tmp:block$res -> block$res57, tmp:tmp -> tmp161, tmp:tmp -> tmp162, tmp:tmp -> tmp163, tmp:block$res -> block$res37, tmp:tmp -> tmp164, member:ctxXY -> ctxXY, tmp:block$res -> block$res38, tmp:block$res -> block$res58, member:blockAdd -> blockAdd, tmp:block$res -> block$res39, member:selPath -> selPath, member:C -> C, member:x -> x2, member:Runtime -> Runtime, tmp:block$res -> block$res59, tmp:tmp -> tmp165, tmp:tmp -> tmp166, tmp:tmp -> tmp167, tmp:tmp -> tmp168, ctx -> ctx1, tmp:tmp -> tmp169, tmp:tmp -> tmp170, tmp:tmp -> tmp171, member:blockBranch -> blockBranch, tmp:block$res -> block$res, tmp:block$res -> block$res1, tmp:block$res -> block$res40, tmp:tmp -> tmp89, tmp:block$res -> block$res2, tmp:tmp -> tmp90, tmp:tmp -> tmp91, tmp:tmp -> tmp92, tmp:tmp -> tmp93, tmp:tmp -> tmp94, tmp:block$res -> block$res3, tmp:tmp -> tmp95, member:tup -> tup, tmp:block$res -> block$res4, tmp:block$res -> block$res5, tmp:tmp -> tmp, tmp:tmp -> tmp1, tmp:block$res -> block$res41, tmp:block$res -> block$res6, tmp:tmp -> tmp96, tmp:tmp -> tmp2, tmp:tmp -> tmp97, tmp:tmp -> tmp3, tmp:tmp -> tmp98, tmp:tmp -> tmp99, tmp:tmp -> tmp100, tmp:tmp -> tmp101, c -> c, tmp:scrut -> scrut, tmp:block$res -> block$res60, tmp:tmp -> tmp172, tmp:block$res -> block$res7, tmp:tmp -> tmp173, tmp:tmp -> tmp4, tmp:tmp -> tmp174, inst -> inst, tmp:tmp -> tmp175, tmp:tmp -> tmp176, tmp:tmp -> tmp177, tmp:tmp -> tmp178, tmp:tmp -> tmp179, tmp:tmp -> tmp180, tmp:block$res -> block$res8, tmp:tmp -> tmp181, tmp:tmp -> tmp5, tmp:tmp -> tmp182, tmp:tmp -> tmp183, tmp:tmp -> tmp184, tmp:tmp -> tmp185, tmp:tmp -> tmp186, tmp:tmp -> tmp187, tmp:tmp -> tmp188, tmp:block$res -> block$res9, tmp:block$res -> block$res42, tmp:tmp -> tmp189, tmp:tmp -> tmp6, tmp:tmp -> tmp102, tmp:tmp -> tmp190, tmp:tmp -> tmp103, tmp:tmp -> tmp191, tmp:tmp -> tmp104, tmp:tmp -> tmp192, tmp:tmp -> tmp105, tmp:tmp -> tmp106, member:earlyRetBlock -> earlyRetBlock, tmp:tmp -> tmp107, tmp:tmp -> tmp108, member:testBinOp -> testBinOp, tmp:block$res -> block$res10, tmp:tmp -> tmp7, tmp:tmp -> tmp8, tmp:tmp -> tmp9, tmp:tmp -> tmp10, tmp:tmp -> tmp11, tmp:tmp -> tmp12, tmp:tmp -> tmp13, tmp:block$res -> block$res11, tmp:tmp -> tmp14, tmp:block$res -> block$res12, tmp:tmp -> tmp15, arrSp -> arrSp, tmp:block$res -> block$res13, tmp:block$res -> block$res61, tmp:tmp -> tmp16, tmp:tmp -> tmp193, tmp:tmp -> tmp17, tmp:tmp -> tmp194, tmp:tmp -> tmp18, tmp:tmp -> tmp195, tmp:tmp -> tmp196, tmp:tmp -> tmp197, tmp:tmp -> tmp198, tmp:tmp -> tmp199, tmp:tmp -> tmp200, tmp:tmp -> tmp201, tmp:block$res -> block$res14, tmp:tmp -> tmp202, tmp:tmp -> tmp19, tmp:tmp -> tmp203, tmp:tmp -> tmp204, tmp:tmp -> tmp205, tmp:tmp -> tmp206, tmp:tmp -> tmp207, tmp:block$res -> block$res43, tmp:tmp -> tmp208, tmp:tmp -> tmp209, tmp:block$res -> block$res15, tmp:tmp -> tmp210, tmp:tmp -> tmp20, tmp:tmp -> tmp211, member:nestedBlock -> nestedBlock, tmp:block$res -> block$res44, tmp:block$res -> block$res16, tmp:tmp -> tmp21, tmp:tmp -> tmp22, tmp:block$res -> block$res45, a -> a, tmp:block$res -> block$res46, tmp:block$res -> block$res47, member:testUnaryOp -> testUnaryOp, x -> x, tmp:block$res -> block$res17, tmp:tmp -> tmp23, tmp:tmp -> tmp24, tmp:tmp -> tmp25, tmp:tmp -> tmp26, tmp:tmp -> tmp27, tmp:tmp -> tmp28, tmp:tmp -> tmp29, tmp:tmp -> tmp30, tmp:tmp -> tmp31, c -> c3, tmp:tmp -> tmp32, tmp:tmp -> tmp33, tmp:tmp -> tmp34, tmp:tmp -> tmp35, tmp:tmp -> tmp36, tmp:tmp -> tmp37, tmp:tmp -> tmp38, tmp:tmp -> tmp39, tmp:tmp -> tmp40, tmp:block$res -> block$res48, tmp:block$res -> block$res62, tmp:tmp -> tmp212, tmp:block$res -> block$res49, tmp:tmp -> tmp213, tmp:tmp -> tmp214, tmp:tmp -> tmp215, tmp:tmp -> tmp216, tmp:block$res -> block$res50, tmp:tmp -> tmp217, tmp:tmp -> tmp218, tmp:block$res -> block$res18, tmp:tmp -> tmp219, tmp:tmp -> tmp41, tmp:tmp -> tmp220, tmp:tmp -> tmp42, tmp:block$res -> block$res51, tmp:tmp -> tmp221, tmp:tmp -> tmp43, tmp:tmp -> tmp222, tmp:tmp -> tmp44, x -> x3, tmp:tmp -> tmp223, tmp:tmp -> tmp45, tmp:tmp -> tmp224, tmp:tmp -> tmp46, tmp:tmp -> tmp225, y -> y2, tmp:tmp -> tmp226, x -> x1, tmp:tmp -> tmp227, tmp:tmp -> tmp228, z -> z, tmp:tmp -> tmp229, tmp:tmp -> tmp230, tmp:tmp -> tmp231, plus -> plus, tmp:tmp -> tmp232, tmp:tmp -> tmp233, y -> y, tmp:tmp -> tmp234, tmp:tmp -> tmp235, tmp:tmp -> tmp236, tmp:tmp -> tmp237, tmp:block$res -> block$res52, tmp:tmp -> tmp238, tmp:tmp -> tmp109, c -> c1, tmp:block$res -> block$res19, tmp:tmp -> tmp47, tmp:tmp -> tmp48, tmp:tmp -> tmp49, tmp:tmp -> tmp50, tmp:tmp -> tmp51, tmp:tmp -> tmp52, tmp:tmp -> tmp53, tmp:tmp -> tmp54, tmp:tmp -> tmp55, tmp:tmp -> tmp56, tmp:tmp -> tmp57, tmp:block$res -> block$res20, tmp:tmp -> tmp58, tmp:tmp -> tmp59, tmp:block$res -> block$res53, tmp:tmp -> tmp110, tmp:tmp -> tmp111, tmp:tmp -> tmp112, tmp:block$res -> block$res21, tmp:tmp -> tmp113, tmp:tmp -> tmp60, tmp:tmp -> tmp114, tmp:tmp -> tmp61, tmp:tmp -> tmp115, tmp:tmp -> tmp116, filterShapes -> filterShapes, tmp:tmp -> tmp117, tmp:tmp -> tmp118, tmp:tmp -> tmp119, tmp:tmp -> tmp120, tmp:tmp -> tmp121, tmp:tmp -> tmp122, tmp:tmp -> tmp123, tmp:tmp -> tmp124, c -> c2, tmp:block$res -> block$res22, tmp:tmp -> tmp62, tmp:tmp -> tmp63, tmp:tmp -> tmp64, tmp:tmp -> tmp65, tmp:tmp -> tmp66, tmp:tmp -> tmp67, tmp:tmp -> tmp68) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'res' -//│ ╟── which references the symbol introduced here -//│ ║ l.946: val res = prop(defs, Ctx.empty, c, nestedBlock) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] ReferenceError: res is not defined -//│ at REPL229:1:42 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) +//│ res = [ +//│ Scoped( +//│ [Symbol("x"), Symbol("y")], +//│ Assign( +//│ Symbol("x"), +//│ ValueLit(true), +//│ Assign(Symbol("y"), ValueLit(false), Return(ValueLit(2), false)) +//│ ) +//│ ), +//│ {Lit(2),Lit(4)} +//│ ] val2path(1, mut []) //│ = [End(), ValueLit(1)] @@ -1051,23 +524,19 @@ val2path(TestClass(1, 2), mut []) //│ ValueRef(Symbol("obj_2")) //│ ] - -val2path(TestClass(1, [1,2])) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 1 -//│ ║ l.1055: val2path(TestClass(1, [1,2])) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'push') -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:384:33) -//│ at lambda7 (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:419:39) -//│ at Array.map () -//│ at ShapeSet.val2path (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:421:59) -//│ at REPL240:1:168 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) +val2path(TestClass(1, [1,2]), mut []) +//│ = [ +//│ Assign( +//│ Symbol("tup_3"), +//│ Tuple([Arg(ValueLit(1)), Arg(ValueLit(2))]), +//│ Assign( +//│ Symbol("obj_4"), +//│ Instantiate( +//│ ValueRef(ClassSymbol("TestClass", undefined, None, [])), +//│ [Arg(ValueLit(1)), Arg(ValueRef(Symbol("tup_3")))] +//│ ), +//│ End() +//│ ) +//│ ), +//│ ValueRef(Symbol("obj_4")) +//│ ] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 58afc3de7e..6c9c5e861e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -1,11 +1,13 @@ :js :staging :noModuleCheck +:shapeProp -import "../../mlscript-compile/Shape.mls" +import "../../mlscript-compile/ShapeSet.mls" -open Shape +open ShapeSet +// :sjs staged module M with fun f(x) = let y = x * 2 @@ -19,11 +21,11 @@ staged module M with //│ > y //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -M.f_gen(Dyn()) -//│ = [Symbol("f_Dyn_28_29"), [[Dyn()]]] +M.f_gen(mkDyn()) +//│ = [Symbol("f"), {Dyn()}] -M.f_gen(Lit(2)) -//│ = [Symbol("f_Lit_282_29"), [[Lit(2)]]] +M.f_gen(mkLit(2)) +//│ = [Symbol("f_Lit2"), {Lit(4)}] print(M."cache$M") //│ > fun ctor_() = @@ -32,11 +34,7 @@ print(M."cache$M") //│ > let y //│ > y = *(x, 2) //│ > y -//│ > fun f_Dyn_28_29(x) = +//│ > fun f_Lit2(x) = //│ > let y -//│ > y = *(x, 2) -//│ > y -//│ > fun f_Lit_282_29(x) = -//│ > let y -//│ > y = *(x, 2) -//│ > y +//│ > y = 4 +//│ > 4 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index b5dc561bd6..b1131b8bd3 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -44,7 +44,8 @@ staged module D with //│ > scrut = B.f //│ > if scrut is //│ > Bool then true -//│ > else false +//│ > else +//│ > false //│ > fun matching() = //│ > let tmp //│ > let scrut1 @@ -53,11 +54,13 @@ staged module D with //│ > if scrut1 is //│ > Int then //│ > tmp = true -//│ > else tmp = false +//│ > else +//│ > tmp = false //│ > scrut2 = 1 //│ > if scrut2 is //│ > C(a, b) then true -//│ > else false +//│ > else +//│ > false //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -176,7 +179,7 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.177: fun g()() = 1 +//│ ║ l.180: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -225,8 +228,10 @@ staged module M with //│ > } //│ > } -:todo creating symbols for objects staged module RetUnit with fun f() = () -//│ ═══[COMPILATION ERROR] Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: object:Unit -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ > fun ctor_() = +//│ > () +//│ > fun f() = Runtime.Unit +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } diff --git a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls index 0dedd3cd49..a652e4075f 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls @@ -253,9 +253,6 @@ module Foo with //│ }; //│ define Foo¹ as class Foo² { //│ private val Foo$cap⁰; -//│ constructor { -//│ runtime⁰.Unit⁰ -//│ } //│ } //│ module Foo³ { //│ private val Foo_mod$cap⁰; @@ -392,7 +389,7 @@ foo.Foo#x :ge foo.f(0) //│ ╔══[COMPILATION ERROR] Cannot determine if f is a function object. -//│ ║ l.393: foo.f(0) +//│ ║ l.390: foo.f(0) //│ ╙── ^^^^^ //│ = 1 @@ -410,7 +407,7 @@ foo.Foo#f(0) :ge foo.x(0) //│ ╔══[COMPILATION ERROR] Cannot determine if x is a function object. -//│ ║ l.411: foo.x(0) +//│ ║ l.408: foo.x(0) //│ ╙── ^^^^^ From 2a4ab9fa304ba924aa09a6af85b8f27816886afe Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 00:39:58 +0800 Subject: [PATCH 426/654] remove unused staging code --- .../codegen/ReflectionInstrumenter.scala | 11 ++---- .../test/mlscript/block-staging/Functions.mls | 36 +++++++++++++------ 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 9de2b0374c..71aefbc8c2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -301,14 +301,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans tuple(symsStaged): tup => transformBlock(body): (body, ctx) => blockCtor("Scoped", Ls(tup, body))(b => Scoped(syms, k(b, ctx))) - case Label(labelSymbol, loop, body, rest) => - transformSymbol(labelSymbol): labelSymbol => - transformBlock(body): (body, ctx) => - transformBlock(rest)(using ctx): (rest, ctx) => - blockCtor("Label", Ls(labelSymbol, toValue(loop), body, rest))(k(_, ctx)) - case Break(labelSymbol) => - transformSymbol(labelSymbol): labelSymbol => - blockCtor("Break", Ls(labelSymbol))(k(_, ctx)) + case _: Label | _: Break | Define(_: FunDefn, _) => + raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}.\n Try enabling :ftc." -> N :: Nil)) + End() case _ => raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}" -> N :: Nil)) End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index d169aa0140..d835195550 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -389,22 +389,36 @@ staged module Continue with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),Some(End()),End()))),End()). +//│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.389: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here //│ ║ l.389: let x = 1 //│ ╙── ^ -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.389: let x = 1 -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.389: let x = 1 -//│ ╙── ^ -//│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. + +:todo +:ftc +staged module NestedFunDefn with + fun f() = + fun g() = 1 + g() + fun g(x, y) = x || y +//│ ═══[COMPILATION ERROR] Cannot determine if short_or is a function object. +//│ > fun ctor_() = +//│ > () +//│ > fun f() = g() +//│ > fun g(x, y) = +//│ > let tmp +//│ > tmp = Function__(false, y) +//│ > Runtime.short_or(x, tmp) +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } :e class C(val a) @@ -414,7 +428,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.414: fun g() = {1 : 2} +//│ ║ l.428: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From 2a78b85369d72beb51c03ebb286639f356f21ace Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 00:39:58 +0800 Subject: [PATCH 427/654] remove unused staging code --- .../codegen/ReflectionInstrumenter.scala | 11 ++---- .../test/mlscript/block-staging/Functions.mls | 36 +++++++++++++------ 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 52900fb5fa..d1fa36749c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -298,14 +298,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans tuple(symsStaged): tup => transformBlock(body): (body, ctx) => blockCtor("Scoped", Ls(tup, body))(b => Scoped(syms, k(b, ctx))) - case Label(labelSymbol, loop, body, rest) => - transformSymbol(labelSymbol): labelSymbol => - transformBlock(body): (body, ctx) => - transformBlock(rest)(using ctx): (rest, ctx) => - blockCtor("Label", Ls(labelSymbol, toValue(loop), body, rest))(k(_, ctx)) - case Break(labelSymbol) => - transformSymbol(labelSymbol): labelSymbol => - blockCtor("Break", Ls(labelSymbol))(k(_, ctx)) + case _: Label | _: Break | Define(_: FunDefn, _) => + raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}.\n Try enabling :ftc." -> N :: Nil)) + End() case _ => raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}" -> N :: Nil)) End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 1e181265d4..072b81fc4c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -388,22 +388,36 @@ staged module Continue with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:scrut, tmp:tmp),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),Some(End()),End()))),End()). +//│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.388: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here //│ ║ l.388: let x = 1 //│ ╙── ^ -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.388: let x = 1 -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.388: let x = 1 -//│ ╙── ^ -//│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined +//│ ═══[RUNTIME ERROR] Error: match error + +:todo +:ftc +staged module NestedFunDefn with + fun f() = + fun g() = 1 + g() + fun g(x, y) = x || y +//│ ═══[COMPILATION ERROR] Cannot determine if short_or is a function object. +//│ > fun ctor_() = +//│ > () +//│ > fun f() = g() +//│ > fun g(x, y) = +//│ > let tmp +//│ > tmp = Function__(false, y) +//│ > Runtime.short_or(x, tmp) +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } :e class C(val a) @@ -413,7 +427,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.413: fun g() = {1 : 2} +//│ ║ l.427: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error From 420c43a0f94d5ffe990de49e11e0a70ecf5ff353 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 00:45:18 +0800 Subject: [PATCH 428/654] update tests --- .../test/mlscript/block-staging/Functions.mls | 20 ++++++++++--------- .../mlscript/block-staging/StageSymbols.mls | 5 +++-- .../mlscript/block-staging/SymbolRenaming.mls | 3 +-- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 1e0e4f11be..0a27a97ace 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -76,10 +76,12 @@ staged module Expressions with //│ > 1 then //│ > if element1_ is //│ > 2 then 2 -//│ > else a = element0_ -//│ > 3 -//│ > else a = element0_ -//│ > 3 +//│ > else +//│ > a = element0_ +//│ > 3 +//│ > else +//│ > a = element0_ +//│ > 3 //│ > else 0 //│ x = [1, 2, 3] @@ -228,18 +230,18 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.226: let x = 1 +//│ ║ l.228: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.226: let x = 1 +//│ ║ l.228: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.226: let x = 1 +//│ ║ l.228: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.226: let x = 1 +//│ ║ l.228: let x = 1 //│ ╙── ^ //│ > fun ctor_() = //│ > () @@ -269,7 +271,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.269: fun g() = {1 : 2} +//│ ║ l.271: fun g() = {1 : 2} //│ ╙── ^ //│ > fun ctor_() = //│ > x = C(1) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index aa6d32ef4a..ec34c63e4b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -39,7 +39,8 @@ staged module D with //│ > if scrut is //│ > Int then //│ > tmp = true -//│ > else tmp = false +//│ > else +//│ > tmp = false //│ > scrut1 = 1 //│ > if scrut1 is //│ > C(a, b) then true @@ -65,7 +66,7 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.66: fun g()() = 1 +//│ ║ l.67: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index b51e81654f..3dd7c303d6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -47,8 +47,7 @@ staged module Selection with //│ > scrut = tmp.x //│ > if scrut is //│ > Bool then true -//│ > else -//│ > false +//│ > else false staged module DupeClass with class C(val y) From 561ee74b09da92b45ce82dfdb874c8c2000334ae Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 00:48:40 +0800 Subject: [PATCH 429/654] make dyn absorbing --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 12 +++++------- hkmc2/shared/src/test/mlscript/ShapeSetTest.mls | 3 +++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 17617dca1d..fb4bbc8cab 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -28,12 +28,7 @@ class ShapeSet(val shapeset: Map[String, Shape]) extends CachedHash with fun toString() = "{" ~ shapeset.keys().toArray().toSorted().toString() ~ "}" - fun isDyn() = - shapeset.size == 1 and values().0 is Dyn - - fun isDynArr() = - if shapeset.size == 1 and values().0 is Arr(shapes) then shapes.every(s => s is Dyn) else false - + fun isDyn() = shapeset.size == 1 and values().0 is Dyn module ShapeSet with fun empty = ShapeSet(new Map) @@ -43,7 +38,10 @@ fun lift(s: Shape) = ShapeSet(new Map([[s.hash(), s]])) fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [s.hash(), s]))) -fun union(s1: ShapeSet, s2: ShapeSet) = ShapeSet(new Map([...s1.shapeset, ...s2.shapeset])) +fun union(s1: ShapeSet, s2: ShapeSet) = + if s1.isDyn() then s1 + else if s2.isDyn() then s2 + else ShapeSet(new Map([...s1.shapeset, ...s2.shapeset])) fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.shapeset.entries().toArray()).flat())) diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index c8e46c1afb..4ff27d1ed6 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -24,6 +24,9 @@ let y = liftMany([Arr([Lit(1)]), Arr([Lit(2)])]) union(x, y) //│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} +union(mkDyn(), x) +//│ = {Dyn()} + mkArr([x, y]) //│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} From d9f20c461c886f6b556fe972afd3951631a88d4f Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 00:49:30 +0800 Subject: [PATCH 430/654] add the shapeprop flag --- .../mlscript-compile/SpecializeHelpers.mls | 6 +- .../test/mlscript/block-staging/Functions.mls | 315 +++++++++++++----- .../test/mlscript/block-staging/ShapeProp.mls | 1 + .../mlscript/block-staging/StageSymbols.mls | 103 ++++-- .../test/mlscript/block-staging/SymbolMap.mls | 3 + .../test/mlscript/block-staging/Syntax.mls | 3 +- 6 files changed, 324 insertions(+), 107 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 456966bdf9..c49fb991c0 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -178,7 +178,7 @@ fun prop(ctx, b) = if b is // TODO: debug only; remove this fun propStub(ctx, body) = - console.log("Calling the propStub now which performs no shape propagation") + console.log("[SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation") [body, mkDyn()] fun buildShapeName(s: Shape): Str = @@ -210,9 +210,11 @@ fun specialize(cache, funName, dflt, shapes, useStub) = let ctx = Ctx.empty ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), shapes.(i).(j)))) cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) - let propFun = if useStub then propStub else propStub + let propFun = if useStub then propStub else prop let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) + if staticSet(res.1) do + bodyWithScoped = val2path(valOfSet(res.1)) let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, bodyWithScoped), res.1]) [entry.0.sym, entry.1] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index c3efaadddf..147049604f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -8,12 +8,14 @@ staged module Expressions with fun lit() = let x = 42 x +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun lit() = //│ > let x //│ > x = 42 -//│ > 42 +//│ > x //│ > Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'lit' => [Function: lit_gen] @@ -46,35 +48,62 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () -//│ > fun lit(x) = +(x, x) +//│ > fun lit(x) = x + x //│ > fun assign() = -//│ > let x +//│ > let x1 //│ > let y -//│ > x = 42 -//│ > y = 42 -//│ > 42 +//│ > x1 = 42 +//│ > y = x1 +//│ > y //│ > fun tup1() = [1, 2] //│ > fun tup2() = -//│ > let x -//│ > x = [1, 2, 3] -//│ > [1, x] +//│ > let x2 +//│ > x2 = [1, 2, 3] +//│ > [1, x2] //│ > fun dynsel() = //│ > let tmp //│ > tmp = [1] -//│ > 1 +//│ > tmp.(0) //│ > fun match1() = //│ > let scrut //│ > scrut = 9 -//│ > 3 +//│ > if scrut is +//│ > Bool then 1 +//│ > 8 then 2 +//│ > Int then 3 +//│ > else 0 //│ > fun match2() = //│ > let element1_ //│ > let element0_ -//│ > let x +//│ > let x3 //│ > let a -//│ > x = [1, 2, 3] -//│ > 0 +//│ > x3 = [1, 2, 3] +//│ > if x3 is +//│ > [] then 1 +//│ > [_, _] then +//│ > element0_ = Runtime.Tuple.get(x3, 0) +//│ > element1_ = Runtime.Tuple.get(x3, 1) +//│ > if element0_ is +//│ > 1 then +//│ > if element1_ is +//│ > 2 then 2 +//│ > else +//│ > a = element0_ +//│ > 3 +//│ > else +//│ > a = element0_ +//│ > 3 +//│ > else 0 //│ > Map(8) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'lit' => [Function: lit_gen], @@ -98,19 +127,71 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:961:38) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1087:39) -//│ at ClassInstrumentation.ctor$_gen (REPL20:1:4538) -//│ at (REPL20:1:2216) -//│ at REPL20:1:10503 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > class Inside(a, b) +//│ > class NoArg +//│ > fun inst1() = Outside(1) +//│ > fun inst2() = new ClassInstrumentation.NoArg() +//│ > fun app1() = Outside(1) +//│ > fun app2() = ClassInstrumentation.Inside(1, 2) +//│ > Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'inst1' => [Function: inst1_gen], +//│ > 'inst2' => [Function: inst2_gen], +//│ > 'app1' => [Function: app1_gen], +//│ > 'app2' => [Function: app2_gen] +//│ > } +//│ > Map(4) { +//│ > [class NoArg] { +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NoArg' ] +//│ > } => ClassSymbol { +//│ > name: 'NoArg', +//│ > value: [class NoArg] { [Symbol(mlscript.definitionMetadata)]: [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Inside] { +//│ > class: [class Inside] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'Inside', +//│ > value: [Function: Inside] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Outside] { +//│ > class: [class Outside] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'Outside', +//│ > value: [Function: Outside] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > [class ClassInstrumentation] { +//│ > Inside: [Function: Inside] { class: [Function] }, +//│ > NoArg: [class NoArg] { [Symbol(mlscript.definitionMetadata)]: [Array] }, +//│ > 'cache$ClassInstrumentation': FunCache { cache: [Map] }, +//│ > 'generatorMap$ClassInstrumentation': Map(5) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'inst1' => [Function: inst1_gen], +//│ > 'inst2' => [Function: inst2_gen], +//│ > 'app1' => [Function: app1_gen], +//│ > 'app2' => [Function: app2_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'ClassInstrumentation', +//│ > value: [class ClassInstrumentation] { +//│ > Inside: [Function], +//│ > NoArg: [Function], +//│ > 'cache$ClassInstrumentation': [FunCache], +//│ > 'generatorMap$ClassInstrumentation': [Map] +//│ > } +//│ > } +//│ > } module Nonstaged with fun f() = 1 @@ -120,14 +201,18 @@ staged module CallSubst with fun call() = Nonstaged.f() Staged.f() +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun call() = -//│ > __no__symbol__ = 1 +//│ > __no__symbol__ = Nonstaged.f() //│ > Staged.f() //│ > Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], @@ -160,12 +245,12 @@ staged module CallSubst with :e print(CallSubst."cache$CallSubst") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type CallSubst. -//│ ║ l.161: print(CallSubst."cache$CallSubst") +//│ ║ l.246: print(CallSubst."cache$CallSubst") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () //│ > fun call() = -//│ > __no__symbol__ = 1 +//│ > __no__symbol__ = Nonstaged.f() //│ > Staged.f() :ftc @@ -174,19 +259,35 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] TypeError: Class constructor Function$1 cannot be invoked without 'new' -//│ at ShapeSet.valOf (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:311:36) -//│ at ShapeSet.valOfSet (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:331:23) -//│ at SpecializeHelpers.sor (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:226:24) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:721:37) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:782:40) -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:754:36) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1087:39) -//│ at Arguments.g_gen (REPL29:1:5963) -//│ at (REPL29:1:2586) -//│ at REPL29:1:6127 +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > () +//│ > fun f(x) = +//│ > x = 1 +//│ > x +//│ > fun g(x1) = +//│ > let tmp +//│ > tmp = new Function_() +//│ > tmp +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > } +//│ > Map(1) { +//│ > [class Function$1 extends Function] { +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Function$' ] +//│ > } => ClassSymbol { +//│ > name: 'Function$', +//│ > value: [class Function$1 extends Function] { +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] +//│ > }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } staged module OtherBlocks with fun scope() = @@ -199,6 +300,9 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun scope() = @@ -208,7 +312,10 @@ staged module OtherBlocks with //│ > fun breakAndLabel() = //│ > let scrut //│ > scrut = 1 -//│ > 0 +//│ > if scrut is +//│ > 2 then 0 +//│ > 3 then 0 +//│ > else 0 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'scope' => [Function: scope_gen], @@ -234,24 +341,23 @@ staged module OtherBlocks with staged module ClassDefs with class A -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:961:38) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1087:39) -//│ at ClassDefs.ctor$_gen (REPL35:1:2307) -//│ at (REPL35:1:927) -//│ at REPL35:1:2461 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > class A +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } +//│ > Map(1) { +//│ > [class A] { [Symbol(mlscript.definitionMetadata)]: [ 'class', 'A' ] } => ClassSymbol { +//│ > name: 'A', +//│ > value: [class A] { [Symbol(mlscript.definitionMetadata)]: [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > } :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.252: print(ClassDefs."cache$ClassDefs") +//│ ║ l.358: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > class A @@ -261,25 +367,51 @@ staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:227) -//│ ═══[RUNTIME ERROR] Error: match error -//│ at SpecializeHelpers.prop (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:961:38) -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/Documents/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1087:39) -//│ at ClassFunctions.ctor$_gen (REPL41:1:5323) -//│ at (REPL41:1:1570) -//│ at REPL41:1:5492 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > class InnerClass() with +//│ > fun f() = +//│ > let tmp +//│ > tmp = Arguments.f(1) +//│ > 1 + tmp +//│ > fun g() = InnerClass.f() +//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } +//│ > Map(2) { +//│ > [Function: InnerClass] { +//│ > class: [class InnerClass] { +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] +//│ > } +//│ > } => ClassSymbol { +//│ > name: 'InnerClass', +//│ > value: [Function: InnerClass] { class: [Function] }, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > }, +//│ > [class Arguments] { +//│ > 'cache$Arguments': FunCache { cache: [Map] }, +//│ > 'generatorMap$Arguments': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'g' => [Function: g_gen] +//│ > }, +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Arguments' ] +//│ > } => ModuleSymbol { +//│ > name: 'Arguments', +//│ > value: [class Arguments] { +//│ > 'cache$Arguments': [FunCache], +//│ > 'generatorMap$Arguments': [Map], +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] +//│ > } +//│ > } +//│ > } // name collision class A() staged module A with fun f() = 1 +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun f() = 1 @@ -289,6 +421,8 @@ staged module A with module A with staged module B with fun f() = 1 +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun f() = 1 @@ -296,23 +430,27 @@ module A with staged module Shadowing with fun f(x, x) = x +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () -//│ > fun f(x, x) = x +//│ > fun f(x1, x) = x //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.305: print(Shadowing."cache$Shadowing") +//│ ║ l.441: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () -//│ > fun f(x, x) = x +//│ > fun f(x1, x) = x // testing generatorMap staged module M with fun f() = 1 +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun f() = 1 @@ -321,7 +459,7 @@ staged module M with :e M."generatorMap$M" //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.322: M."generatorMap$M" +//│ ║ l.460: M."generatorMap$M" //│ ╙── ^ //│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} @@ -334,19 +472,20 @@ staged module M with set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.332: let x = 1 +//│ ║ l.470: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.332: let x = 1 +//│ ║ l.470: let x = 1 //│ ╙── ^ //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.332: let x = 1 +//│ ║ l.470: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.332: let x = 1 +//│ ║ l.470: let x = 1 //│ ╙── ^ +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ ═══[RUNTIME ERROR] ReferenceError: x is not defined :e @@ -357,8 +496,9 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.357: fun g() = {1 : 2} +//│ ║ l.496: fun g() = {1 : 2} //│ ╙── ^ +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ ═══[RUNTIME ERROR] Error: match error :todo @@ -366,6 +506,8 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun f() = @@ -376,12 +518,23 @@ staged module Spread with //│ > let x //│ > tmp = [1, 2] //│ > scrut = [1, tmp] -//│ > 0 +//│ > if scrut is +//│ > [_] then +//│ > element0_ = Runtime.Tuple.get(scrut, 0) +//│ > middleElements = Runtime.Tuple.slice(scrut, 1, 0) +//│ > if element0_ is +//│ > 1 then +//│ > x = middleElements +//│ > x +//│ > else 0 +//│ > else 0 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo staged module RetUnit with fun f() = () +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun f() = Runtime.Unit diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index d5fb9b18f5..e9d5199abf 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -1,6 +1,7 @@ :js :staging :noFreeze +:shapeProp module NonStaged with fun sq(x) = x * x diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 5245e85379..58b68c6d0b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -5,11 +5,16 @@ staged module M with class C with fun f() = 1 fun g() = f() +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > class C with +//│ > fun f() = 1 +//│ > fun g() = C.f() //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { -//│ > [class C] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ClassSymbol { +//│ > [class C] { [Symbol(mlscript.definitionMetadata)]: [ 'class', 'C' ] } => ClassSymbol { //│ > name: 'C', -//│ > value: [class C] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > value: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] }, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > } @@ -28,16 +33,43 @@ staged module D with fun matching() = 1 is Int 1 is C +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > () +//│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > class E +//│ > fun f() = +//│ > __no__symbol__ = A.f() +//│ > B.f() +//│ > fun matching() = +//│ > let tmp +//│ > let scrut +//│ > let scrut1 +//│ > scrut = 1 +//│ > if scrut is +//│ > Int then +//│ > tmp = true +//│ > else +//│ > tmp = false +//│ > scrut1 = 1 +//│ > if scrut1 is +//│ > C(a, b) then true +//│ > else false //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'matching' => [Function: matching_gen] //│ > } //│ > Map(5) { -//│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { +//│ > [class E] { [Symbol(mlscript.definitionMetadata)]: [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', -//│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > value: [class E] { [Symbol(mlscript.definitionMetadata)]: [Array] }, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, @@ -47,22 +79,22 @@ staged module D with //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen] //│ > }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'A' ] //│ > } => ModuleSymbol { //│ > name: 'A', //│ > value: [class A] { //│ > 'cache$A': [FunCache], //│ > 'generatorMap$A': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] //│ > } //│ > }, -//│ > [class B] { Symbol(mlscript.definitionMetadata): [ 'class', 'B' ] } => ModuleSymbol { +//│ > [class B] { [Symbol(mlscript.definitionMetadata)]: [ 'class', 'B' ] } => ModuleSymbol { //│ > name: 'B', -//│ > value: [class B] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > value: [class B] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > }, //│ > 'Int' => VirtualClassSymbol { name: 'Int' }, //│ > [Function: C] { -//│ > class: [class C1] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > class: [class C1] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, @@ -81,39 +113,46 @@ staged module M with A.B.C A.B.C(1) E +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > class E +//│ > fun f() = +//│ > __no__symbol__ = A.B.C(1) +//│ > M.E //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(5) { -//│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { +//│ > [class E1] { [Symbol(mlscript.definitionMetadata)]: [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', -//│ > value: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > value: [class E1] { [Symbol(mlscript.definitionMetadata)]: [Array] }, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, //│ > [class A2] { //│ > B: [class B2] { //│ > C: [Function], -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] //│ > }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'A' ] //│ > } => ModuleSymbol { //│ > name: 'A', //│ > value: [class A2] { //│ > B: [Function], -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] //│ > } //│ > }, //│ > [class B2] { //│ > C: [Function: C] { class: [Function] }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'B' ] +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'B' ] //│ > } => ModuleSymbol { //│ > name: 'B', //│ > value: [class B2] { //│ > C: [Function], -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] //│ > } //│ > }, //│ > [Function: C] { -//│ > class: [class C3] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > class: [class C3] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { //│ > name: 'C', //│ > value: [Function: C] { class: [Function] }, @@ -121,7 +160,7 @@ staged module M with //│ > auxParams: [] //│ > }, //│ > [class M2] { -//│ > E: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > E: [class E1] { [Symbol(mlscript.definitionMetadata)]: [Array] }, //│ > 'cache$M': FunCache { cache: [Map] }, //│ > 'generatorMap$M': Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], @@ -141,14 +180,32 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.142: fun g()() = 1 +//│ ║ l.181: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > () +//│ > fun g()() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } :ftc staged module M with fun f() = x => x fun g()() = 1 +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > fun ctor_() = +//│ > () +//│ > fun f() = +//│ > let tmp +//│ > tmp = new Function_() +//│ > tmp +//│ > fun g() = +//│ > let tmp1 +//│ > tmp1 = new Function_1() +//│ > tmp1 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -156,21 +213,21 @@ staged module M with //│ > } //│ > Map(2) { //│ > [class Function$1 extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Function$' ] //│ > } => ClassSymbol { //│ > name: 'Function$', //│ > value: [class Function$1 extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] //│ > }, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, //│ > [class Function$ extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Function$' ] //│ > } => ClassSymbol { //│ > name: 'Function$1', //│ > value: [class Function$ extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] //│ > }, //│ > paramsOpt: None {}, //│ > auxParams: [] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls index ca158f9b3a..787de57d40 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls @@ -6,6 +6,9 @@ class C(val x) staged module A with fun g() = C(1) fun h() = C(2) +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > fun g() = C(1) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 57e42156d1..01a5c71cb8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -60,12 +60,13 @@ staged module A //│ let tmp, tmp1, tmp2; //│ set tmp = []; //│ set tmp1 = [tmp]; -//│ set tmp2 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp1); +//│ set tmp2 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp1, true); //│ return tmp2 //│ } //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ > [SpecializeHelpers.mls]: calling the propStub now which performs no shape propagation //│ > fun ctor_() = //│ > () //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } From 7c4069fec0e95ae8bbba0be44706b3941bb5bf46 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 01:10:00 +0800 Subject: [PATCH 431/654] if returned shape is static just construct it directly --- .../src/test/mlscript-compile/Block.mls | 1 - .../mlscript-compile/SpecializeHelpers.mls | 3 +- .../test/mlscript/block-staging/ShapeProp.mls | 106 +++--------------- 3 files changed, 16 insertions(+), 94 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 772c56bf0e..ce3dc5c785 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -93,7 +93,6 @@ class Block with Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) - // TODO: [fyp] handle Scoped nodes Scoped(val symbols: Array[Symbol], val rest: Block) End() diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index c49fb991c0..6346a59532 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -112,6 +112,7 @@ fun sor(ctx, r) = if r is let res = f(...argShapes) [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] else + print("Hi") [End(), r, mkDyn()] // TODO argShapes.every(staticSet) then // non staged function but params known let f = value.(symb) @@ -214,7 +215,7 @@ fun specialize(cache, funName, dflt, shapes, useStub) = let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) if staticSet(res.1) do - bodyWithScoped = val2path(valOfSet(res.1)) + bodyWithScoped = Return(val2path(valOfSet(res.1), mut []).1, false) let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, bodyWithScoped), res.1]) [entry.0.sym, entry.1] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e9d5199abf..9c12ef1572 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -64,74 +64,14 @@ staged module Test with //│ > tmp8 = Staged.sq(x2) //│ > tmp9 = Staged.sq(y2) //│ > tmp8 + tmp9 -//│ > fun test() = -//│ > let five -//│ > five = Test.f_Lit2_Lit3(2, 3) -//│ > __no__symbol__ = Test.fib_Lit5(five) -//│ > __no__symbol__ = 5 -//│ > Test.pyth_Lit3_Lit4(3, 4) -//│ > fun f_Lit2_Lit3(x, y) = -//│ > let tmp -//│ > let tmp1 -//│ > tmp = 5 -//│ > tmp1 = 6 -//│ > 5 -//│ > fun fib_Lit5(n1) = -//│ > let tmp2 -//│ > let tmp3 -//│ > let tmp4 -//│ > let tmp5 -//│ > let n -//│ > n = 5 -//│ > tmp2 = 4 -//│ > tmp3 = Test.fib_Lit4(tmp2) -//│ > tmp4 = 3 -//│ > tmp5 = Test.fib_Lit3(tmp4) -//│ > 5 -//│ > fun fib_Lit4(n1) = -//│ > let tmp2 -//│ > let tmp3 -//│ > let tmp4 -//│ > let tmp5 -//│ > let n -//│ > n = 4 -//│ > tmp2 = 3 -//│ > tmp3 = Test.fib_Lit3(tmp2) -//│ > tmp4 = 2 -//│ > tmp5 = Test.fib_Lit2(tmp4) -//│ > 3 -//│ > fun fib_Lit3(n1) = -//│ > let tmp2 -//│ > let tmp3 -//│ > let tmp4 -//│ > let tmp5 -//│ > let n -//│ > n = 3 -//│ > tmp2 = 2 -//│ > tmp3 = Test.fib_Lit2(tmp2) -//│ > tmp4 = 1 -//│ > tmp5 = Test.fib_Lit1(tmp4) -//│ > 2 -//│ > fun fib_Lit2(n1) = -//│ > let tmp2 -//│ > let tmp3 -//│ > let tmp4 -//│ > let tmp5 -//│ > let n -//│ > 1 -//│ > fun fib_Lit1(n1) = -//│ > let tmp2 -//│ > let tmp3 -//│ > let tmp4 -//│ > let tmp5 -//│ > let n -//│ > 1 -//│ > fun pyth_Lit3_Lit4(x1, y1) = -//│ > let tmp6 -//│ > let tmp7 -//│ > tmp6 = 9 -//│ > tmp7 = 16 -//│ > 25 +//│ > fun test() = 25 +//│ > fun f_Lit2_Lit3(x, y) = 5 +//│ > fun fib_Lit5(n1) = 5 +//│ > fun fib_Lit4(n1) = 3 +//│ > fun fib_Lit3(n1) = 2 +//│ > fun fib_Lit2(n1) = 1 +//│ > fun fib_Lit1(n1) = 1 +//│ > fun pyth_Lit3_Lit4(x1, y1) = 25 //│ > fun test2(n2) = //│ > let tmp10 //│ > __no__symbol__ = Test.pyth_Dyn_Lit2(n2, 2) @@ -205,10 +145,8 @@ staged module TestIf with //│ > else "wrong2" //│ > 2 then "correct" //│ > else "wrong2" -//│ > fun test() = TestIf.f_Lit2(2) -//│ > fun f_Lit2(x) = -//│ > let arg_C_0_ -//│ > "correct" +//│ > fun test() = "correct" +//│ > fun f_Lit2(x) = "correct" //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -314,27 +252,11 @@ staged module TestClass with fun test() = id(C(D())) //│ > fun ctor_() = //│ > () -//│ > fun f() = -//│ > let tmp -//│ > tmp = D() -//│ > new C(tmp) -//│ > fun g() = -//│ > let tmp1 -//│ > tmp1 = D() -//│ > C(tmp1) +//│ > fun f() = obj_2 +//│ > fun g() = obj_4 //│ > fun id(x1) = x1 -//│ > fun test() = -//│ > let tmp2 -//│ > let tmp3 -//│ > tmp2 = D() -//│ > tmp3 = C(tmp2) -//│ > TestClass.id_C_D_(tmp3) -//│ > fun id_C_D_(x1) = -//│ > let obj_1 -//│ > let obj_2 -//│ > obj_1 = new D() -//│ > obj_2 = new C(obj_1) -//│ > obj_2 +//│ > fun test() = obj_10 +//│ > fun id_C_D_(x1) = obj_8 //│ > Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], From fb88b083ab16e7074ed7791d5916d0247227f3be Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 01:24:15 +0800 Subject: [PATCH 432/654] some minor change to test --- .../src/test/mlscript/block-staging/ShapeProp.mls | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index dbe6627409..abf5869d96 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -22,10 +22,10 @@ staged module Test with fun pyth(x, y) = NonStaged.sq(x) + NonStaged.sq(y) fun pyth2(x, y) = Staged.sq(x) + Staged.sq(y) fun test() = - let five = f(2, 3) - fib(five) - Staged.fib(five) - pyth(3, 4) + let four = f(2, 2) + let three = fib(four) + Staged.fib(three) // fib(5) + pyth(three, 4) fun test2(n) = pyth(n, 2) fib(n * 2) @@ -66,8 +66,7 @@ staged module Test with //│ > tmp9 = Staged.sq(y2) //│ > tmp8 + tmp9 //│ > fun test() = 25 -//│ > fun f_Lit2_Lit3(x, y) = 5 -//│ > fun fib_Lit5(n1) = 5 +//│ > fun f_Lit2_Lit2(x, y) = 4 //│ > fun fib_Lit4(n1) = 3 //│ > fun fib_Lit3(n1) = 2 //│ > fun fib_Lit2(n1) = 1 From 8ccf1b6253b0a2811ec30d5d4651b65fbcd4edc3 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 01:27:56 +0800 Subject: [PATCH 433/654] fix the static result thing if it's not ValueLit --- .../mlscript-compile/SpecializeHelpers.mls | 4 +- .../test/mlscript/block-staging/ShapeProp.mls | 42 ++++++++++++++----- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 816a3083f4..ce61943275 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -214,7 +214,9 @@ fun specialize(cache, funName, dflt, shapes, useStub) = let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) if staticSet(res.1) do - bodyWithScoped = Return(val2path(valOfSet(res.1), mut []).1, false) + let allocs = mut [] + let v2p = val2path(valOfSet(res.1), allocs) + bodyWithScoped = wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, bodyWithScoped), res.1]) [entry.0.sym, entry.1] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index abf5869d96..b5f07fa2e4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -180,17 +180,17 @@ staged module TestIf with :noSanityCheck class C(val n) staged module TestIf2 with - fun f2(x) = + fun f(x) = let y if x is C then y = x.n else y = 0 y + 1 - fun test() = f2(C(2)) + fun test() = f(C(2)) //│ > fun ctor_() = //│ > () -//│ > fun f2(x) = +//│ > fun f(x) = //│ > let y //│ > let tmp //│ > if x is @@ -205,8 +205,8 @@ staged module TestIf2 with //│ > fun test() = //│ > let tmp1 //│ > tmp1 = C(2) -//│ > TestIf2.f2_C_Lit2(tmp1) -//│ > fun f2_C_Lit2(x) = +//│ > TestIf2.f_C_Lit2(tmp1) +//│ > fun f_C_Lit2(x) = //│ > let y //│ > let tmp //│ > y = 2 @@ -214,7 +214,7 @@ staged module TestIf2 with //│ > 3 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f2' => [Function: f2_gen], +//│ > 'f' => [Function: f_gen], //│ > 'test' => [Function: test_gen] //│ > } //│ > Map(3) { @@ -231,7 +231,7 @@ staged module TestIf2 with //│ > 'cache$TestIf2': FunCache { cache: [Map] }, //│ > 'generatorMap$TestIf2': Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f2' => [Function: f2_gen], +//│ > 'f' => [Function: f_gen], //│ > 'test' => [Function: test_gen] //│ > } //│ > } => ModuleSymbol { @@ -252,11 +252,31 @@ staged module TestClass with fun test() = id(C(D())) //│ > fun ctor_() = //│ > () -//│ > fun f() = obj_2 -//│ > fun g() = obj_4 +//│ > fun f() = +//│ > let obj_1 +//│ > let obj_2 +//│ > obj_1 = new D() +//│ > obj_2 = new C(obj_1) +//│ > obj_2 +//│ > fun g() = +//│ > let obj_3 +//│ > let obj_4 +//│ > obj_3 = new D() +//│ > obj_4 = new C(obj_3) +//│ > obj_4 //│ > fun id(x1) = x1 -//│ > fun test() = obj_10 -//│ > fun id_C_D_(x1) = obj_8 +//│ > fun test() = +//│ > let obj_9 +//│ > let obj_10 +//│ > obj_9 = new D() +//│ > obj_10 = new C(obj_9) +//│ > obj_10 +//│ > fun id_C_D_(x1) = +//│ > let obj_7 +//│ > let obj_8 +//│ > obj_7 = new D() +//│ > obj_8 = new C(obj_7) +//│ > obj_8 //│ > Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], From 1fe5626213b778e1b4f4f5237b3c8f153ec39f32 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 01:31:42 +0800 Subject: [PATCH 434/654] add a tuple matching example --- .../mlscript-compile/SpecializeHelpers.mls | 1 + .../test/mlscript/block-staging/ShapeProp.mls | 51 +++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index ce61943275..66ca1eb744 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -213,6 +213,7 @@ fun specialize(cache, funName, dflt, shapes, useStub) = let propFun = if useStub then propStub else prop let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) + // print(res.1) if staticSet(res.1) do let allocs = mut [] let v2p = val2path(valOfSet(res.1), allocs) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index b5f07fa2e4..b56a6ad9f6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -318,3 +318,54 @@ staged module TestClass with //│ > } //│ > } //│ > } + +staged module TestTupleMatching with + fun count(x) = if x + is [_] then "one" + is [_, _] then "two" + is [_, _, _] then "three" + else "more than three" + fun test() = count([1, 2]) +//│ > fun ctor_() = +//│ > () +//│ > fun count(x) = +//│ > let element2_ +//│ > let element1_ +//│ > let element0_ +//│ > if x is +//│ > [_] then +//│ > element0_ = x.(0) +//│ > "one" +//│ > [_, _] then +//│ > element0_ = x.(0) +//│ > element1_ = x.(1) +//│ > "two" +//│ > [_, _, _] then +//│ > element0_ = x.(0) +//│ > element1_ = x.(1) +//│ > element2_ = x.(2) +//│ > "three" +//│ > else "more than three" +//│ > fun test() = "two" +//│ > fun count_Arr_Lit1_Lit2_end(x) = "two" +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'count' => [Function: count_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > Map(1) { +//│ > [class TestTupleMatching] { +//│ > 'cache$TestTupleMatching': FunCache { cache: [Map] }, +//│ > 'generatorMap$TestTupleMatching': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'count' => [Function: count_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'TestTupleMatching', +//│ > value: [class TestTupleMatching] { +//│ > 'cache$TestTupleMatching': [FunCache], +//│ > 'generatorMap$TestTupleMatching': [Map] +//│ > } +//│ > } +//│ > } From 1ef9af2789c42b34e05306e84eb742c95b6f21da Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 02:16:31 +0800 Subject: [PATCH 435/654] fix a bug in prop --- .../mlscript-compile/SpecializeHelpers.mls | 4 +-- .../test/mlscript/block-staging/ShapeProp.mls | 27 +++++++++---------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 66ca1eb744..281f5c415e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -157,8 +157,7 @@ fun prop(ctx, b) = if b is else prop(ctx, concat(if dflt is Some(d) then d else End(), restBlock)) 1 and filteredArms.0.isEmpty() then - let newRest = prop(ctx, restBlock) - [concat(filteredArms.2.0.body, newRest.0), union(filteredArms.1, newRest.1)] + [filteredArms.2.0.body, filteredArms.1] dflt is Some(d) then let branchCtx = ctx.clone @@ -213,7 +212,6 @@ fun specialize(cache, funName, dflt, shapes, useStub) = let propFun = if useStub then propStub else prop let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) - // print(res.1) if staticSet(res.1) do let allocs = mut [] let v2p = val2path(valOfSet(res.1), allocs) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index b56a6ad9f6..d8278200e1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -188,11 +188,12 @@ staged module TestIf2 with y = 0 y + 1 fun test() = f(C(2)) + fun test2() = f(0) //│ > fun ctor_() = //│ > () //│ > fun f(x) = -//│ > let y //│ > let tmp +//│ > let y //│ > if x is //│ > C(n) then //│ > y = x.n @@ -202,20 +203,15 @@ staged module TestIf2 with //│ > y = 0 //│ > tmp = Runtime.Unit //│ > 1 -//│ > fun test() = -//│ > let tmp1 -//│ > tmp1 = C(2) -//│ > TestIf2.f_C_Lit2(tmp1) -//│ > fun f_C_Lit2(x) = -//│ > let y -//│ > let tmp -//│ > y = 2 -//│ > tmp = Runtime.Unit -//│ > 3 -//│ > Map(3) { +//│ > fun test() = 3 +//│ > fun f_C_Lit2(x) = 3 +//│ > fun test2() = 1 +//│ > fun f_Lit0(x) = 1 +//│ > Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], -//│ > 'test' => [Function: test_gen] +//│ > 'test' => [Function: test_gen], +//│ > 'test2' => [Function: test2_gen] //│ > } //│ > Map(3) { //│ > [Function: C] { @@ -229,10 +225,11 @@ staged module TestIf2 with //│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} }, //│ > [class TestIf2] { //│ > 'cache$TestIf2': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestIf2': Map(3) { +//│ > 'generatorMap$TestIf2': Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], -//│ > 'test' => [Function: test_gen] +//│ > 'test' => [Function: test_gen], +//│ > 'test2' => [Function: test2_gen] //│ > } //│ > } => ModuleSymbol { //│ > name: 'TestIf2', From f3320942658df40ebb86c99d348117ea8a5d7cf1 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 03:03:16 +0800 Subject: [PATCH 436/654] add some more tests --- .../src/test/mlscript-compile/ShapeMap.mls | 41 ---- .../mlscript-compile/SpecializeHelpers.mls | 3 +- .../test/mlscript/block-staging/ShapeProp.mls | 187 +++++++++++++++++- 3 files changed, 180 insertions(+), 51 deletions(-) delete mode 100644 hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls deleted file mode 100644 index ee0e89ea0a..0000000000 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeMap.mls +++ /dev/null @@ -1,41 +0,0 @@ -import "./Option.mls" -import "./ShapeSet.mls" -import "./StrOps.mls" -import "./Block.mls" - -open Option { Some, None } -open ShapeSet -open StrOps - -type ShapeMap = ShapeMap.ShapeMap - -module ShapeMap with... - -fun hash(s: ShapeSet) = s.keys().join(", ") - -// TODO: do we need it? -class ShapeMap(val underlying: Map[ShapeSet, Block.Block]) with - fun add(s: ShapeSet, code) = underlying.set(s.hash(), code) - - fun get(s: ShapeSet) = - if underlying.get(s.hash()) - == () then None - is value then Some of value - -// TODO: improve it -class Cache(underlying: Map[String, [String, ShapeSet, Block.Block]], names: Map[String, Int]) with - fun add(fname, argShape, codefrag, resShape) = - let key = fname ~ argShape.hash() - let newName = freshName(fname) // TODO: hygiene - underlying.set(key, [newName, resShape, codefrag]) - fun get(fname, argShape) = - let key = fname ~ argShape.hash() - if underlying.has(key) then Some of underlying.get(key) - else None - fun freshName(name) = - if not names.has(name) do - names.set(name, 0) - let i = names.get(name) - names.set(name, i + 1) - StrOps.concat of name, "_", i.toString() - diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 281f5c415e..64011a8681 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -111,8 +111,7 @@ fun sor(ctx, r) = if r is not (f is Runtime.Unit) then // staged function let res = f(...argShapes) [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] - else - [End(), r, mkDyn()] // TODO + else [End(), r, mkDyn()] argShapes.every(staticSet) then // non staged function but params known let f = value.(symb) let evaluated = f(...argShapes.map(valOfSet)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index d8278200e1..9cf235421a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -24,11 +24,11 @@ staged module Test with fun test() = let four = f(2, 2) let three = fib(four) - Staged.fib(three) // fib(5) - pyth(three, 4) + let two = Staged.fib(three) + pyth(two, 4) fun test2(n) = - pyth(n, 2) - fib(n * 2) + let dyn = pyth(n, 2) + fib(dyn * 2) //│ > fun ctor_() = //│ > () //│ > fun f(x, y) = @@ -65,17 +65,18 @@ staged module Test with //│ > tmp8 = Staged.sq(x2) //│ > tmp9 = Staged.sq(y2) //│ > tmp8 + tmp9 -//│ > fun test() = 25 +//│ > fun test() = 20 //│ > fun f_Lit2_Lit2(x, y) = 4 //│ > fun fib_Lit4(n1) = 3 //│ > fun fib_Lit3(n1) = 2 //│ > fun fib_Lit2(n1) = 1 //│ > fun fib_Lit1(n1) = 1 -//│ > fun pyth_Lit3_Lit4(x1, y1) = 25 +//│ > fun pyth_Lit2_Lit4(x1, y1) = 20 //│ > fun test2(n2) = //│ > let tmp10 -//│ > __no__symbol__ = Test.pyth_Dyn_Lit2(n2, 2) -//│ > tmp10 = *(n2, 2) +//│ > let dyn +//│ > dyn = Test.pyth_Dyn_Lit2(n2, 2) +//│ > tmp10 = *(dyn, 2) //│ > Test.fib(tmp10) //│ > fun pyth_Dyn_Lit2(x1, y1) = //│ > let tmp6 @@ -366,3 +367,173 @@ staged module TestTupleMatching with //│ > } //│ > } //│ > } + +staged module TailRecursion with + fun sum(n, acc) = if n is + 0 then acc + _ then sum(n - 1, acc + n) + fun test() = sum(5, 0) +//│ > fun ctor_() = +//│ > () +//│ > fun sum(n, acc) = +//│ > let tmp +//│ > let tmp1 +//│ > if n is +//│ > 0 then acc +//│ > else +//│ > tmp = n - 1 +//│ > tmp1 = acc + n +//│ > TailRecursion.sum(tmp, tmp1) +//│ > fun test() = 15 +//│ > fun sum_Lit5_Lit0(n, acc) = 15 +//│ > fun sum_Lit4_Lit5(n, acc) = 15 +//│ > fun sum_Lit3_Lit9(n, acc) = 15 +//│ > fun sum_Lit2_Lit12(n, acc) = 15 +//│ > fun sum_Lit1_Lit14(n, acc) = 15 +//│ > fun sum_Lit0_Lit15(n, acc) = 15 +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'sum' => [Function: sum_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > Map(1) { +//│ > [class TailRecursion] { +//│ > 'cache$TailRecursion': FunCache { cache: [Map] }, +//│ > 'generatorMap$TailRecursion': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'sum' => [Function: sum_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'TailRecursion', +//│ > value: [class TailRecursion] { +//│ > 'cache$TailRecursion': [FunCache], +//│ > 'generatorMap$TailRecursion': [Map] +//│ > } +//│ > } +//│ > } + +staged module TestTupleConstruct with + fun first(x) = if x is + [a, _] then a + else 0 + fun second(x) = if x is + [_, b] then b + else 0 + fun test(y) = + let t = [10, y] + first(t) + second(t) +//│ > fun ctor_() = +//│ > () +//│ > fun first(x) = +//│ > let a +//│ > let element1_ +//│ > let element0_ +//│ > if x is +//│ > [_, _] then +//│ > element0_ = x.(0) +//│ > element1_ = x.(1) +//│ > a = element0_ +//│ > a +//│ > else 0 +//│ > fun second(x1) = +//│ > let element1_1 +//│ > let element0_1 +//│ > let b +//│ > if x1 is +//│ > [_, _] then +//│ > element0_1 = x1.(0) +//│ > element1_1 = x1.(1) +//│ > b = element1_1 +//│ > b +//│ > else 0 +//│ > fun test(y) = +//│ > let tmp +//│ > let tmp1 +//│ > let t +//│ > t = [10, y] +//│ > tmp = TestTupleConstruct.first_Arr_Lit10_Dyn_end(t) +//│ > tmp1 = TestTupleConstruct.second_Arr_Lit10_Dyn_end(t) +//│ > tmp + tmp1 +//│ > fun first_Arr_Lit10_Dyn_end(x) = 10 +//│ > fun second_Arr_Lit10_Dyn_end(x1) = +//│ > let element1_1 +//│ > let element0_1 +//│ > let b +//│ > element0_1 = x1.(0) +//│ > element1_1 = x1.(1) +//│ > b = element1_1 +//│ > b +//│ > Map(4) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'first' => [Function: first_gen], +//│ > 'second' => [Function: second_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > Map(1) { +//│ > [class TestTupleConstruct] { +//│ > 'cache$TestTupleConstruct': FunCache { cache: [Map] }, +//│ > 'generatorMap$TestTupleConstruct': Map(4) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'first' => [Function: first_gen], +//│ > 'second' => [Function: second_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'TestTupleConstruct', +//│ > value: [class TestTupleConstruct] { +//│ > 'cache$TestTupleConstruct': [FunCache], +//│ > 'generatorMap$TestTupleConstruct': [Map] +//│ > } +//│ > } +//│ > } + +:noSanityCheck +class Box(val value) +staged module TestPartialObject with + fun get_val(b) = b.value + fun test_dyn(dyn_val) = get_val(Box(dyn_val)) + get_val(Box(5)) +//│ > fun ctor_() = +//│ > () +//│ > fun get_val(b) = b.value +//│ > fun test_dyn(dyn_val) = +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > tmp = Box(dyn_val) +//│ > tmp1 = TestPartialObject.get_val_Box_Dyn(tmp) +//│ > tmp2 = Box(5) +//│ > tmp3 = TestPartialObject.get_val_Box_Lit5(tmp2) +//│ > tmp1 + tmp3 +//│ > fun get_val_Box_Dyn(b) = b.value +//│ > fun get_val_Box_Lit5(b) = 5 +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'get_val' => [Function: get_val_gen], +//│ > 'test_dyn' => [Function: test_dyn_gen] +//│ > } +//│ > Map(2) { +//│ > [Function: Box] { +//│ > class: [class Box] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > } => ClassSymbol { +//│ > name: 'Box', +//│ > value: [Function: Box] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > [class TestPartialObject] { +//│ > 'cache$TestPartialObject': FunCache { cache: [Map] }, +//│ > 'generatorMap$TestPartialObject': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'get_val' => [Function: get_val_gen], +//│ > 'test_dyn' => [Function: test_dyn_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'TestPartialObject', +//│ > value: [class TestPartialObject] { +//│ > 'cache$TestPartialObject': [FunCache], +//│ > 'generatorMap$TestPartialObject': [Map] +//│ > } +//│ > } +//│ > } From a5144549e26a6af137363dc6e274a9789a1a8343 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 03:17:08 +0800 Subject: [PATCH 437/654] remove a duplicated function --- .../test/mlscript/block-staging/Functions.mls | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 5127041c99..97eeaa3dec 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -115,16 +115,6 @@ staged module ClassInstrumentation with fun app2() = Inside(1, 2) fun inst2() = new NoArg fun app1() = Outside(1) - fun app2() = Inside(1, 2) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: blockOrRcd (Elaborator.scala:976) -//│ ╔══[COMPILATION ERROR] Multiple definitions of symbol 'app2' -//│ ╟── defined here -//│ ║ l.115: fun app2() = Inside(1, 2) -//│ ║ ^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ ╟── defined here -//│ ║ l.118: fun app2() = Inside(1, 2) -//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > class Inside(a, b) //│ > class NoArg @@ -234,7 +224,7 @@ staged module Call with :e print(CallSubst."cache$CallSubst") //│ ╔══[COMPILATION ERROR] Name not found: CallSubst -//│ ║ l.235: print(CallSubst."cache$CallSubst") +//│ ║ l.225: print(CallSubst."cache$CallSubst") //│ ╙── ^^^^^^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. @@ -334,7 +324,7 @@ staged module ClassDefs with :e print(ClassDefs."cache$ClassDefs") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type ClassDefs. -//│ ║ l.335: print(ClassDefs."cache$ClassDefs") +//│ ║ l.325: print(ClassDefs."cache$ClassDefs") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > class A @@ -410,7 +400,7 @@ staged module Shadowing with :todo these symbols may be confused dueing shape propagation print(Shadowing."cache$Shadowing") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Shadowing. -//│ ║ l.411: print(Shadowing."cache$Shadowing") +//│ ║ l.401: print(Shadowing."cache$Shadowing") //│ ╙── ^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -427,7 +417,7 @@ staged module M with :e M."generatorMap$M" //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.428: M."generatorMap$M" +//│ ║ l.418: M."generatorMap$M" //│ ╙── ^ //│ = Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} @@ -441,10 +431,10 @@ staged module M with //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(Set(tmp:scrut, tmp:tmp),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),Some(End()),End()))),End()). //│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.438: let x = 1 +//│ ║ l.428: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.438: let x = 1 +//│ ║ l.428: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error @@ -456,7 +446,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.456: fun g() = {1 : 2} +//│ ║ l.446: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error From 2c7d096ce6cfd07f42e1e071ffa1f6bf84723a97 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 04:02:38 +0800 Subject: [PATCH 438/654] one more test --- .../test/mlscript/block-staging/ShapeProp.mls | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 9cf235421a..dedc8adadc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -189,7 +189,8 @@ staged module TestIf2 with y = 0 y + 1 fun test() = f(C(2)) - fun test2() = f(0) + fun test2(dyn) = f(C(dyn)) + fun test3() = f(0) //│ > fun ctor_() = //│ > () //│ > fun f(x) = @@ -206,13 +207,24 @@ staged module TestIf2 with //│ > 1 //│ > fun test() = 3 //│ > fun f_C_Lit2(x) = 3 -//│ > fun test2() = 1 +//│ > fun test2(dyn) = +//│ > let tmp2 +//│ > tmp2 = C(dyn) +//│ > TestIf2.f_C_Dyn(tmp2) +//│ > fun f_C_Dyn(x) = +//│ > let tmp +//│ > let y +//│ > y = x.n +//│ > tmp = Runtime.Unit +//│ > y + 1 +//│ > fun test3() = 1 //│ > fun f_Lit0(x) = 1 -//│ > Map(4) { +//│ > Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] +//│ > 'test2' => [Function: test2_gen], +//│ > 'test3' => [Function: test3_gen] //│ > } //│ > Map(3) { //│ > [Function: C] { @@ -226,11 +238,12 @@ staged module TestIf2 with //│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} }, //│ > [class TestIf2] { //│ > 'cache$TestIf2': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestIf2': Map(4) { +//│ > 'generatorMap$TestIf2': Map(5) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] +//│ > 'test2' => [Function: test2_gen], +//│ > 'test3' => [Function: test3_gen] //│ > } //│ > } => ModuleSymbol { //│ > name: 'TestIf2', @@ -381,9 +394,9 @@ staged module TailRecursion with //│ > if n is //│ > 0 then acc //│ > else -//│ > tmp = n - 1 -//│ > tmp1 = acc + n -//│ > TailRecursion.sum(tmp, tmp1) +//│ > tmp1 = n - 1 +//│ > tmp = acc + n +//│ > TailRecursion.sum(tmp1, tmp) //│ > fun test() = 15 //│ > fun sum_Lit5_Lit0(n, acc) = 15 //│ > fun sum_Lit4_Lit5(n, acc) = 15 @@ -426,9 +439,9 @@ staged module TestTupleConstruct with //│ > fun ctor_() = //│ > () //│ > fun first(x) = -//│ > let a //│ > let element1_ //│ > let element0_ +//│ > let a //│ > if x is //│ > [_, _] then //│ > element0_ = x.(0) @@ -437,9 +450,9 @@ staged module TestTupleConstruct with //│ > a //│ > else 0 //│ > fun second(x1) = +//│ > let b //│ > let element1_1 //│ > let element0_1 -//│ > let b //│ > if x1 is //│ > [_, _] then //│ > element0_1 = x1.(0) @@ -448,18 +461,18 @@ staged module TestTupleConstruct with //│ > b //│ > else 0 //│ > fun test(y) = +//│ > let t //│ > let tmp //│ > let tmp1 -//│ > let t //│ > t = [10, y] //│ > tmp = TestTupleConstruct.first_Arr_Lit10_Dyn_end(t) //│ > tmp1 = TestTupleConstruct.second_Arr_Lit10_Dyn_end(t) //│ > tmp + tmp1 //│ > fun first_Arr_Lit10_Dyn_end(x) = 10 //│ > fun second_Arr_Lit10_Dyn_end(x1) = +//│ > let b //│ > let element1_1 //│ > let element0_1 -//│ > let b //│ > element0_1 = x1.(0) //│ > element1_1 = x1.(1) //│ > b = element1_1 From c4ce50ae830b32f3a6f7ddfb75efc4ea5dc8a794 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 10:27:15 +0800 Subject: [PATCH 439/654] improve codegen --- .../hkmc2/codegen/ReflectionInstrumenter.scala | 11 +++++------ hkmc2/shared/src/test/mlscript-compile/Block.mls | 4 +++- .../src/test/mlscript/block-staging/Functions.mls | 2 +- .../test/mlscript/block-staging/StageSymbols.mls | 4 ++-- .../test/mlscript/block-staging/SymbolRenaming.mls | 14 +------------- .../src/test/mlscript/block-staging/Syntax.mls | 6 +++--- 6 files changed, 15 insertions(+), 26 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 2290a4b479..032cd984b4 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -60,9 +60,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n def tuple(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = assign(Tuple(false, elems.map(asArg)), symName)(k) - def ctor(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - assign(Instantiate(false, cls, args.map(asArg)), symName)(k) - // isMlsFun is probably always true? def call(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = assign(Call(fun, args.map(asArg))(isMlsFun, false, false), symName)(k) @@ -73,9 +70,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n def optionMod(name: Str) = summon[State].optionSymbol.asPath.selSN(name) def blockCtor(name: Str, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - ctor(blockMod(name), args, symName)(k) + call(blockMod(name), args, true, symName)(k) def optionSome(arg: ArgWrappable, symName: Str = "tmp")(k: Path => Block): Block = - ctor(optionMod("Some"), Ls(arg), symName)(k) + call(optionMod("Some"), Ls(arg), true, symName)(k) def optionNone(symName: Str = "tmp")(k: Path => Block): Block = assign(optionMod("None"), symName)(k) @@ -124,7 +121,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(k) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(k) - case _: TempSymbol | _: NoSymbol | _: VarSymbol => + case _: NoSymbol => + blockCtor("NoSymbol", Nil, symName)(k) + case _: TempSymbol | _: VarSymbol => val name = scope.allocateOrGetName(sym) blockCtor("Symbol", Ls(toValue(name)), symName)(k) // FIXME: there may be more types of symbols that need to be renamed during staging diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 0140f62ee6..1969b4154e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -21,6 +21,7 @@ class Symbol(val name: Str) class VirtualClassSymbol(val name: Str) extends Symbol(name) class ClassSymbol(val name: Str, val value, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList]) extends Symbol(name) class ModuleSymbol(val name: Str, val value) extends Symbol(name) +class NoSymbol() extends Symbol("$no_symbol$") class Arm(val cse: Case, val body: Block) fun isPrimitiveType(sym: Symbol) = @@ -165,7 +166,8 @@ fun showDefn(d: Defn): Str = fun showBlock(b) = if b is Assign(lhs, rhs, rest) then - showSymbol(lhs) + " = " + showResult(rhs) + showRestBlock(rest) + (if lhs is NoSymbol then "" else showSymbol(lhs) + " = ") + + showResult(rhs) + showRestBlock(rest) Define(d, rest) then showDefn(d) + showRestBlock(rest) Return(res, _) then diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 0a27a97ace..cc83a2fc17 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -116,7 +116,7 @@ staged module CallSubst with //│ > fun ctor_() = //│ > () //│ > fun call() = -//│ > __no__symbol__ = Nonstaged.f() +//│ > Nonstaged.f() //│ > Staged.f_gen() :ftc diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index ec34c63e4b..faa873b914 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -29,7 +29,7 @@ staged module D with //│ > fun ctor_() = //│ > class E //│ > fun f() = -//│ > __no__symbol__ = A.f_gen() +//│ > A.f_gen() //│ > B.f() //│ > fun matching() = //│ > let tmp @@ -59,7 +59,7 @@ staged module M with //│ > fun ctor_() = //│ > class E //│ > fun f() = -//│ > __no__symbol__ = A.B.C(1) +//│ > A.B.C(1) //│ > M.E :e diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 3dd7c303d6..815d34f836 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -21,18 +21,6 @@ staged module DupeFunctionName with class C(val x) -staged module NoSymbol with - fun f(g) = - g() - g() - () -//│ > fun ctor_() = -//│ > () -//│ > fun f(g) = -//│ > __no__symbol__ = g() -//│ > __no__symbol__ = g() -//│ > Runtime.Unit - staged module Selection with fun f(x) = x.call() @@ -42,7 +30,7 @@ staged module Selection with //│ > fun f(x) = //│ > let tmp //│ > let scrut -//│ > __no__symbol__ = x.call() +//│ > x.call() //│ > tmp = C(1) //│ > scrut = tmp.x //│ > if scrut is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 68dcbe20b6..b803314853 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -33,11 +33,11 @@ staged module A //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { //│ let end, tmp, tmp1, tmp2, tmp3; -//│ set end = new Block⁰.End﹖(); -//│ set tmp = new Block⁰.Symbol﹖("ctor$"); +//│ set end = Block⁰.End﹖(); +//│ set tmp = Block⁰.Symbol﹖("ctor$"); //│ set tmp1 = []; //│ set tmp2 = [tmp1]; -//│ set tmp3 = new Block⁰.FunDefn﹖(tmp, tmp2, end, true); +//│ set tmp3 = Block⁰.FunDefn﹖(tmp, tmp2, end, true); //│ return tmp3 //│ } //│ }; From 4e568a37a1ed5c9c3766c4ef91db65b8c8b3638e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 11:13:34 +0800 Subject: [PATCH 440/654] print ctor from funcache into next stage --- .../codegen/ReflectionInstrumenter.scala | 3 +- .../src/test/mlscript-compile/Block.mls | 6 ++-- .../staging/out/SimpleStagedExample.mls | 1 + .../test/mlscript/block-staging/Generate.mls | 2 -- .../test/mlscript/block-staging/Syntax.mls | 31 +++++++++---------- 5 files changed, 20 insertions(+), 23 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 64ec3c0566..35bf184c95 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -416,8 +416,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans ((args, k) => call(_, args, true, "gen_call")(k)) (genPath) ) - callGenCont(call(cachePath.selSN("dump"), Nil, false)(mthds => - call(blockMod("codegen"), toValue(modSym.nme) :: mthds :: psym.asPath :: Nil, true, "tmp")(_ => End()))) + callGenCont(call(blockMod("codegen"), toValue(modSym.nme) :: cachePath :: psym.asPath :: Nil, true, "tmp")(_ => End())) val entryFunDef = val sym = BlockMemberSymbol("generate", Nil) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index b1e687f1d4..9429f4097c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -217,9 +217,11 @@ fun printCode(x) = fun printModule(name, methods) = print("module " + name + " with" + indent("\n" + methods.map(showDefn).join("\n"))) -fun codegen(name, methods, file) = +fun codegen(name, cache, file) = + let methods = cache.dump() + let ctorBody = cache.getFun("ctor$").value.0.body let fullpath = path.join of process.cwd(), file - let code = "module " + name + " with" + indent("\n" + methods.map(showDefn).join("\n")) + let code = "module " + name + " with" + indent("\n" + showBlock(ctorBody) + "\n" + methods.map(showDefn).join("\n")) if not fs.existsSync(fullpath) do fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index c51da2445b..821853d57f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,4 +1,5 @@ module SimpleStagedExample with + () fun ctor_() = () fun f(x, y) = x+y diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 6b8e8a9d8a..9422a1a24c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -1,6 +1,5 @@ :js :shapeProp -//│ /!\ Unrecognized command: shapeProp // FIXME: shapeProp is not passed into the compilation of this, thus not showing propagation behaviour import "../../mlscript-compile/staging/SimpleStagedExample.mjs" @@ -15,7 +14,6 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mjs" //│ } - SimpleStagedExample.generate("./hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls") diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 6e93292652..90338cde24 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -24,22 +24,22 @@ staged module A //│ define A⁰ as class A¹ //│ staged module A² { //│ constructor { -//│ let tmp_dyn, tmp, tmp1, tmp2, gen_call, tmp3, tmp4, tmp5, tmp6, tmp7; -//│ set tmp6 = new mut globalThis⁰.Map﹖(); -//│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp6); -//│ define cache$A⁰ as val cache$A¹ = tmp7; -//│ set tmp3 = ["ctor$", A².ctor$_gen﹖]; -//│ set tmp4 = [tmp3]; -//│ set tmp5 = new mut globalThis⁰.Map﹖(tmp4); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp5; -//│ set tmp_dyn = ShapeSet⁰.mkDyn﹖(); -//│ set gen_call = A².ctor$_gen﹖(); -//│ set tmp = A².cache$A﹖.toString﹖(); -//│ set tmp1 = globalThis⁰.console﹖.log﹖(tmp); -//│ set tmp2 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ let tmp, tmp1, tmp2, tmp3, tmp4; +//│ set tmp3 = new mut globalThis⁰.Map﹖(); +//│ set tmp4 = new SpecializeHelpers⁰.FunCache﹖(tmp3); +//│ define cache$A⁰ as val cache$A¹ = tmp4; +//│ set tmp = ["ctor$", A².ctor$_gen﹖]; +//│ set tmp1 = [tmp]; +//│ set tmp2 = new mut globalThis⁰.Map﹖(tmp1); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp2; //│ end //│ } -//│ method generate⁰ = fun generate¹() { +//│ method generate⁰ = fun generate¹(path) { +//│ let tmp_dyn, tmp, tmp1, gen_call; +//│ set tmp_dyn = ShapeSet⁰.mkDyn﹖(); +//│ set gen_call = A².ctor$_gen﹖(); +//│ set tmp = A².cache$A﹖.dump﹖(); +//│ set tmp1 = Block⁰.codegen﹖("A", tmp, path); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { @@ -61,6 +61,3 @@ staged module A //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > fun ctor_() = -//│ > () -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } From d8452424bf0fe1bcf62b65952d5c801060086450 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 11:16:47 +0800 Subject: [PATCH 441/654] update test --- .../test/mlscript/block-staging/GeneratorMap.mls | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls index f7e76d29ea..21f7b40bff 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls @@ -1,15 +1,10 @@ :js :staging +:noModuleCheck staged module A with fun f() = 1 fun g(x) = x -//│ > fun ctor_() = -//│ > () -//│ > fun f() = 1 -//│ > fun g(x) = x -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } + +A."generatorMap$A" +//│ = Map(3) {"ctor$" => fun ctor$_gen, "f" => fun f_gen, "g" => fun g_gen} From c969bd9df148ed2e5d4ccdef00fea415709ab158 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 11:21:38 +0800 Subject: [PATCH 442/654] fix test case --- .../mlscript/block-staging/ShapeSetHelpers.mls | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 42a9c257f2..64836a7775 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -289,18 +289,8 @@ prop(Ctx.empty, c) //│ ) //│ ) -let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) +let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(VirtualClassSymbol("Bool"), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(VirtualClassSymbol("Int"), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) prop(Ctx.empty, c) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.292: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) -//│ ╙── ^^^^^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 4 arguments, got 2 -//│ ║ l.292: let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(ClassSymbol("Bool", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(ClassSymbol("Int", None), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) -//│ ╙── ^^^^^^^^^^^^^ //│ = [ //│ Scoped( //│ [Symbol("x")], @@ -318,7 +308,7 @@ prop(Ctx.empty, c) //│ [ //│ Arm( //│ Cls( -//│ ClassSymbol("Bool", None, undefined, undefined), +//│ VirtualClassSymbol("Bool"), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(1), false) @@ -326,7 +316,7 @@ prop(Ctx.empty, c) //│ Arm(Lit(8), Return(ValueLit(2), false)), //│ Arm( //│ Cls( -//│ ClassSymbol("Int", None, undefined, undefined), +//│ VirtualClassSymbol("Int"), //│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(3), false) From d03b166b41d77b975a1a19d593b4d2e17624f318 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 00:39:58 +0800 Subject: [PATCH 443/654] remove unused staging code --- .../codegen/ReflectionInstrumenter.scala | 11 ++----- .../test/mlscript/block-staging/Functions.mls | 31 ++++++++++++------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 032cd984b4..d3037d189b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -302,14 +302,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n tuple(symsStaged): tup => transformBlock(body): (body, ctx) => blockCtor("Scoped", Ls(tup, body))(b => Scoped(syms, k(b, ctx))) - case Label(labelSymbol, loop, body, rest) => - transformSymbol(labelSymbol): labelSymbol => - transformBlock(body): (body, ctx) => - transformBlock(rest)(using ctx): (rest, ctx) => - blockCtor("Label", Ls(labelSymbol, toValue(loop), body, rest))(k(_, ctx)) - case Break(labelSymbol) => - transformSymbol(labelSymbol): labelSymbol => - blockCtor("Break", Ls(labelSymbol))(k(_, ctx)) + case _: Label | _: Break | Define(_: FunDefn, _) => + raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}.\n Try enabling :ftc." -> N :: Nil)) + End() case _ => raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}" -> N :: Nil)) End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index cc83a2fc17..2ad65bfc52 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -228,15 +228,8 @@ staged module M with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Continue(label:lbl) -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.228: let x = 1 -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.228: let x = 1 -//│ ╙── ^ -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),Some(End()),End()))),End()). +//│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.228: let x = 1 //│ ║ ^ @@ -245,7 +238,23 @@ staged module M with //│ ╙── ^ //│ > fun ctor_() = //│ > () -//│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. + +:todo +:ftc +staged module NestedFunDefn with + fun f() = + fun g() = 1 + g() + fun g(x, y) = x || y +//│ ═══[COMPILATION ERROR] Cannot determine if short_or is a function object. +//│ > fun ctor_() = +//│ > () +//│ > fun f() = g() +//│ > fun g(x, y) = +//│ > let tmp +//│ > tmp = Function__(false, y) +//│ > Runtime.short_or(x, tmp) // TODO: force enable :ftc to desugar Label and Break staged module M with @@ -271,7 +280,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.271: fun g() = {1 : 2} +//│ ║ l.280: fun g() = {1 : 2} //│ ╙── ^ //│ > fun ctor_() = //│ > x = C(1) From 18e577a15f87f624b994c1b8725af660fb75ca9a Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 12:00:59 +0800 Subject: [PATCH 444/654] update test --- .../block-staging/ShapeSetHelpers.mls | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 64836a7775..d6d171e239 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -437,17 +437,20 @@ prop(Ctx.empty, earlyRetBlock) //│ ) //│ ) -// let x = true -// let y = false -// if x is -// true then -// if y is -// true then return 1 -// else return 2 -// else return 3 -// return 4 val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Match(ValueRef(y), [Arm(Lit(true), Return(ValueLit(1), false))], Some(Return(ValueLit(2), false)), End()))], Some(Return(ValueLit(3), false)), Return(ValueLit(4), false))))) +printCode(nestedBlock) val res = prop(Ctx.empty, nestedBlock) +//│ > let x +//│ > let y +//│ > x = true +//│ > y = false +//│ > if x is +//│ > true then +//│ > if y is +//│ > true then 1 +//│ > else 2 +//│ > else 3 +//│ > 4 //│ nestedBlock = Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( @@ -484,7 +487,7 @@ val res = prop(Ctx.empty, nestedBlock) //│ Assign(Symbol("y"), ValueLit(false), Return(ValueLit(2), false)) //│ ) //│ ), -//│ {Lit(2),Lit(4)} +//│ {Lit(2)} //│ ] val2path(1, mut []) From 29d42e84d1d1872cb5e47300b35a97c55e5a5ef9 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 12:03:38 +0800 Subject: [PATCH 445/654] fix some printing bugs --- .../src/test/mlscript-compile/Block.mls | 12 +++++----- .../test/mlscript/block-staging/Functions.mls | 12 +++++----- .../test/mlscript/block-staging/PrintCode.mls | 22 +++++-------------- .../mlscript/block-staging/StageSymbols.mls | 8 +++---- .../mlscript/block-staging/SymbolRenaming.mls | 2 +- 5 files changed, 22 insertions(+), 34 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 1969b4154e..500e8049cf 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -121,7 +121,7 @@ fun showResult(r: Result): Str = if r is Path then showPath(r) Call(fun_, args) then showPath(fun_) + "(" + showArgs(args) + ")" - Instantiate(cls, args) then "new " + showPath(cls) + "(" + showArgs(args) + ")" + Instantiate(cls, args) then "new " + showPath(cls) + (if args.length != 0 then "(" + showArgs(args) + ")" else "") Tuple(elems) then "[" + showArgs(elems) + "]" _ then "" @@ -131,7 +131,7 @@ fun showCase(c) = Lit(l) then showLiteral(l) Cls(cls, p) then showSymbol(cls) + if isPrimitiveType(cls) then "" - else showParamsOpt(cls.paramsOpt) // it seems we only need the arity, printing the paramter names is unnecessary + else showParamsOpt(cls.paramsOpt) // it seems we only need the arity, printing the parameter names is unnecessary Tup(len) then "[" + Array(len).fill("_").join(", ") + "]" _ then "" @@ -156,11 +156,11 @@ fun showDefn(d: Defn): Str = (if body is Return then " " else "\n ") + indent(showBlock(body)) ClsLikeDefn(sym, methods, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) - + if methods is [] then "" else " with \n " + indent(methods.map(showDefn).join("\n")) + + indent((if methods is [] then "" else " with\n") + methods.map(showDefn).join("\n")) // TODO: used to represent assignments in constructors, which still need some adjustments ValDefn(owner, sym, rhs) then - "set " + (if owner is Some(owner) then showSymbol(owner) + "." else "") - + showSymbol(sym) + " = " + showPath(rhs) + let prefix = if owner is Some(owner) then "set " + showSymbol(owner) + "." else "val " + prefix + showSymbol(sym) + " = " + showPath(rhs) _ then "" fun showBlock(b) = @@ -175,7 +175,7 @@ fun showBlock(b) = Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" + indent("\n" + arms.map(showArm).join("\n")) - + indent(if dflt is Some(db) then "\nelse " + indent((if db is Return then "" else "\n") + showBlock(db)) else "") + + if dflt is Some(db) then indent("\nelse" + indent((if db is Return then " " else "\n") + showBlock(db))) else "" + showRestBlock(rest) Scoped(symbols, rest) then // initialize symbols diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 2ad65bfc52..ca2b8a7c87 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -76,10 +76,10 @@ staged module Expressions with //│ > 1 then //│ > if element1_ is //│ > 2 then 2 -//│ > else +//│ > else //│ > a = element0_ //│ > 3 -//│ > else +//│ > else //│ > a = element0_ //│ > 3 //│ > else 0 @@ -97,7 +97,7 @@ staged module ClassInstrumentation with //│ > class Inside(a1, b) //│ > class NoArg //│ > fun inst1() = new Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg() +//│ > fun inst2() = new ClassInstrumentation.NoArg //│ > fun app1() = Outside(1) //│ > fun app2() = ClassInstrumentation.Inside(1, 2) @@ -132,7 +132,7 @@ staged module Arguments with //│ > x //│ > fun g(x) = //│ > let tmp -//│ > tmp = new Function_() +//│ > tmp = new Function_ //│ > tmp staged module OtherBlocks with @@ -170,7 +170,7 @@ staged module ClassFunctions with fun f() = 1 fun g() = 1 //│ > fun ctor_() = -//│ > class A with +//│ > class A with //│ > fun f() = 1 //│ > fun g() = 1 @@ -191,7 +191,7 @@ staged module ClassFunctions with fun f() = 1 + Arguments.f(1) fun g() = f() //│ > fun ctor_() = -//│ > class InnerClass() with +//│ > class InnerClass() with //│ > fun f() = //│ > let tmp //│ > tmp = Arguments.f_gen(1) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 94987756c7..4702a90bdf 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -51,7 +51,7 @@ printCode(f) printCode(ClsLikeDefn(aSym, [f], None)) printCode(ClsLikeDefn(bSym, [], None)) //│ > fun f(x) = 1 -//│ > class A(x) with +//│ > class A(x) with //│ > fun f(x) = 1 //│ > class B @@ -65,19 +65,7 @@ printCode(Define(ValDefn(Some(aSym), Symbol("x"), ValueLit(1)), End())) //│ > set A.x = 1 printCode(Define(ValDefn(None, Symbol("a"), ValueLit(1)), End())) -//│ > set a = 1 - -printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2), false)), Arm(Cls(aSym, ValueRef(aSym)), Return(ValueLit(3), false))], Some(Return(ValueRef(Symbol("x")), false)), End())) -//│ > if x is -//│ > 1 then 2 -//│ > A(x) then 3 -//│ > else x - -printCode(Define(ValDefn(Some(aSym), Symbol("x"), ValueLit(1)), End())) -//│ > set A.x = 1 - -printCode(Define(ValDefn(None, Symbol("a"), ValueLit(1)), End())) -//│ > set a = 1 +//│ > val a = 1 printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2), false)), Arm(Cls(aSym, ValueRef(aSym)), Return(ValueLit(3), false))], Some(Return(ValueRef(Symbol("x")), false)), End())) //│ > if x is @@ -106,7 +94,7 @@ printCode(Scoped([Symbol("y")], Match( //│ > 1 then //│ > y = 1 //│ > y -//│ > else +//│ > else //│ > y = 2 //│ > y @@ -127,9 +115,9 @@ printCode(Scoped([Symbol("y")], Match( //│ > 2 then //│ > y = 1 //│ > y -//│ > else +//│ > else //│ > y = 2 //│ > y -//│ > else +//│ > else //│ > y = 3 //│ > y diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index faa873b914..b86862e5e4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -6,7 +6,7 @@ staged module M with fun f() = 1 fun g() = f() //│ > fun ctor_() = -//│ > class C with +//│ > class C with //│ > fun f() = 1 //│ > fun g() = C.f() @@ -39,7 +39,7 @@ staged module D with //│ > if scrut is //│ > Int then //│ > tmp = true -//│ > else +//│ > else //│ > tmp = false //│ > scrut1 = 1 //│ > if scrut1 is @@ -80,9 +80,9 @@ staged module M with //│ > () //│ > fun f() = //│ > let tmp -//│ > tmp = new Function_() +//│ > tmp = new Function_ //│ > tmp //│ > fun g() = //│ > let tmp1 -//│ > tmp1 = new Function_1() +//│ > tmp1 = new Function_1 //│ > tmp1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 815d34f836..570ce3ac79 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -28,8 +28,8 @@ staged module Selection with //│ > fun ctor_() = //│ > () //│ > fun f(x) = -//│ > let tmp //│ > let scrut +//│ > let tmp //│ > x.call() //│ > tmp = C(1) //│ > scrut = tmp.x From 9cdb70f1d4c5ffda3f8cc6661120379a27853947 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 12:18:42 +0800 Subject: [PATCH 446/654] clean up --- .../src/test/mlscript-compile/Block.mls | 17 +++-- .../test/mlscript/block-staging/Functions.mls | 68 ++++++------------- .../mlscript/block-staging/StageSymbols.mls | 11 ++- .../mlscript/block-staging/SymbolRenaming.mls | 11 ++- .../test/mlscript/block-staging/Syntax.mls | 3 +- 5 files changed, 39 insertions(+), 71 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 500e8049cf..4b7b7c02de 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -1,6 +1,7 @@ import "./Predef.mls" import "./Option.mls" import "./StrOps.mls" +import "./Runtime.mls" open Predef open StrOps @@ -24,7 +25,7 @@ class ModuleSymbol(val name: Str, val value) extends Symbol(name) class NoSymbol() extends Symbol("$no_symbol$") class Arm(val cse: Case, val body: Block) -fun isPrimitiveType(sym: Symbol) = +fun isPrimitiveType(sym: Symbol) = if sym.name is "Str" then true "Int" then true @@ -68,7 +69,7 @@ class Defn with constructor ValDefn(val tsym: Symbol, val sym: Symbol, val rhs: Path) ClsLikeDefn(val sym: ClassSymbol, val methods: Array[FunDefn], val companion: Opt[ClsLikeBody]) // companion unused - FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block, val stage: Bool) + FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused @@ -106,8 +107,10 @@ fun showSymbol(s: Symbol) = if s.name is fun showPath(p: Path): Str = if p is + // avoids needing to import the runtime module + Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" Select(qual, name) then showPath(qual) + "." + showSymbol(name) - DynSelect(qual, fld, arrayIdx) then showPath(qual) + ".(" + showPath(fld) + ")" + DynSelect(qual, fld, arrayIdx) then showPath(qual) + ".(" + showPath(fld) + ")" ValueRef(l) then showSymbol(l) ValueLit(lit) then showLiteral(lit) @@ -141,7 +144,7 @@ fun showArm(a) = fun showParams(p: ParamList) = "(" + p.map(showSymbol(_)).join(", ") + ")" -fun showParamsOpt(p) = +fun showParamsOpt(p) = if p is Some(s) then showParams(s) None then "" @@ -151,9 +154,9 @@ fun showParamList(ps: Array[ParamList]) = fun showDefn(d: Defn): Str = if d is - FunDefn(sym, ps, body, _) then + FunDefn(sym, ps, body) then "fun " + showSymbol(sym) + showParamList(ps) + " =" + - (if body is Return then " " else "\n ") + indent(showBlock(body)) + (if body is Return | End then " " else "\n ") + indent(showBlock(body)) ClsLikeDefn(sym, methods, _) then "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + indent((if methods is [] then "" else " with\n") + methods.map(showDefn).join("\n")) @@ -175,7 +178,7 @@ fun showBlock(b) = Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" + indent("\n" + arms.map(showArm).join("\n")) - + if dflt is Some(db) then indent("\nelse" + indent((if db is Return then " " else "\n") + showBlock(db))) else "" + + if dflt is Some(db) then indent("\nelse" + indent((if db is Return then " " else "\n") + showBlock(db))) else "" + showRestBlock(rest) Scoped(symbols, rest) then // initialize symbols diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index ca2b8a7c87..cf2f50efd1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -10,8 +10,7 @@ staged module Expressions with //│ ╔══[INTERNAL ERROR] [BlockChecker] Invalid IR: symbol x⁰ is bound more than once //│ ║ l.8: let x = 42 //│ ╙── ^ -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun lit() = //│ > let x //│ > x = 42 @@ -40,8 +39,7 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun lit() = 1 //│ > fun assign() = //│ > let x @@ -105,16 +103,14 @@ module Nonstaged with fun f() = 1 staged module Staged with fun f() = 1 -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f() = 1 staged module CallSubst with fun call() = 1 + 1 Nonstaged.f() Staged.f() -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun call() = //│ > Nonstaged.f() //│ > Staged.f_gen() @@ -125,8 +121,7 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f(x) = //│ > x = 1 //│ > x @@ -146,8 +141,7 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun scope() = //│ > let a //│ > a = 1 @@ -165,15 +159,6 @@ staged module ClassDefs with //│ > fun ctor_() = //│ > class A -staged module ClassFunctions with - class A with - fun f() = 1 - fun g() = 1 -//│ > fun ctor_() = -//│ > class A with -//│ > fun f() = 1 -//│ > fun g() = 1 - // :lot :todo ValDefn in class staged module ValClass with @@ -181,11 +166,6 @@ staged module ValClass with //│ > fun ctor_() = //│ > class A(a) -staged module ClassDefs with - class A -//│ > fun ctor_() = -//│ > class A - staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) @@ -201,55 +181,49 @@ staged module ClassFunctions with :todo staged module RetUnit with fun f() = () -//│ > fun ctor_() = -//│ > () -//│ > fun f() = Runtime.Unit +//│ > fun ctor_() = () +//│ > fun f() = () // name collision class A() staged module A with fun f() = 1 -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f() = 1 // nested module module A with staged module B with fun f() = 1 -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f() = 1 -// TODO: force enable :ftc to desugar Label and Break -:todo +:todo force enable :ftc to desugar Label and Break staged module M with - fun f() = + fun f() = let x = 1 while x == 1 do set x = x + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),Some(End()),End()))),End()). //│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.228: let x = 1 +//│ ║ l.204: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.228: let x = 1 +//│ ║ l.204: let x = 1 //│ ╙── ^ -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :todo :ftc staged module NestedFunDefn with - fun f() = + fun f() = fun g() = 1 g() fun g(x, y) = x || y //│ ═══[COMPILATION ERROR] Cannot determine if short_or is a function object. -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f() = g() //│ > fun g(x, y) = //│ > let tmp @@ -262,8 +236,7 @@ staged module M with 0 then 2 1 then 2 else 2 -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f() = //│ > let scrut //│ > scrut = 1 @@ -280,7 +253,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.280: fun g() = {1 : 2} +//│ ║ l.253: fun g() = {1 : 2} //│ ╙── ^ //│ > fun ctor_() = //│ > x = C(1) @@ -291,6 +264,5 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Arg(Some(Lazy),Ref(tmp:tmp,None)) //│ ═══[COMPILATION ERROR] No definition found in scope for member 'tmp' -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index b86862e5e4..9e963b8e9c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -23,8 +23,7 @@ staged module D with fun matching() = 1 is Int 1 is C -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f() = 1 //│ > fun ctor_() = //│ > class E @@ -66,18 +65,16 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.67: fun g()() = 1 +//│ ║ l.66: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun g()() = 1 :ftc staged module M with fun f() = x => x fun g()() = 1 -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f() = //│ > let tmp //│ > tmp = new Function_ diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 570ce3ac79..4c5acbda1c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -2,12 +2,11 @@ :staging staged module TempVariable with - fun f() = + fun f() = let x let x x -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f() = //│ > let x //│ > let x1 @@ -15,8 +14,7 @@ staged module TempVariable with staged module DupeFunctionName with fun f() = 1 -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f() = 1 class C(val x) @@ -25,8 +23,7 @@ staged module Selection with fun f(x) = x.call() C(1).x is Bool -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () //│ > fun f(x) = //│ > let scrut //│ > let tmp diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index b803314853..9fcd45b18a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -43,5 +43,4 @@ staged module A //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > fun ctor_() = -//│ > () +//│ > fun ctor_() = () From dc3b55d9909ce051c1354b057b04134f2ac0deb0 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 31 Mar 2026 13:41:25 +0800 Subject: [PATCH 447/654] fix nonstaged call to class result --- .../src/test/mlscript-compile/ShapeSet.mls | 8 ++-- .../mlscript-compile/SpecializeHelpers.mls | 9 +++- .../test/mlscript/block-staging/ShapeProp.mls | 43 +++++++++++++------ .../block-staging/ShapeSetHelpers.mls | 2 +- 4 files changed, 43 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index fb4bbc8cab..b21e574520 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -96,7 +96,7 @@ fun valOf(s : Shape) = Dyn() then throw Error("valOf on Dyn") Lit(l) then l Arr(shapes) then shapes.map((x, _, _) => valOf(x)) - Class(ClassSymbol(name, value, paramsOpt, auxParams), params) then value(...params.map(valOf)) + Class(ClassSymbol(name, value, paramsOpt, auxParams), params) then new value(...params.map(valOf)) else throw Error("Unknown shape") fun valOfSet(s : ShapeSet) = @@ -122,9 +122,9 @@ fun val2path(v, allocs) = let fullBlock = foldl((b, acc) => Block.concat(b, acc))(tupAssign, ...blocks) [fullBlock, Block.ValueRef(tupSym)] else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then - let md = v.constructor.(Symbols.definitionMetadata) - let clsName = md.1 - let paramNames = md.2 + let meta = v.constructor.(Symbols.definitionMetadata) + let clsName = meta.1 + let paramNames = meta.2 let classSym = Block.ClassSymbol(clsName, undefined, None, []) // TODO: add correct Paramters to ClassSymbol let mapped = paramNames.map((fld, _, _) => val2path(v.(fld), allocs)) let blocks = mapped.map(_.0) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 64011a8681..cb40f6784d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -40,8 +40,13 @@ fun sov(v): ShapeSet = else if Array.isArray(v) then mkArr(v.map(sov)) else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then - // TODO - undefined + let meta = v.constructor.(Symbols.definitionMetadata) + let clsName = meta.1 + let paramsOpt = meta.2 + let symParams = if paramsOpt is undefined or paramsOpt is null then None else Some(paramsOpt.map(p => if p is null then Symbol("") else Symbol(p))) + let classSymbol = ClassSymbol(clsName, v.constructor, symParams, []) + let args = if paramsOpt is undefined or paramsOpt is null then [] else paramsOpt.map(p => if p is null then mkDyn() else sov(v.(p))) + mkClass(classSymbol, args) fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index dedc8adadc..eaa8d176e1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -256,11 +256,14 @@ staged module TestIf2 with class C(val x) class D() +module NonStagedStaticClass with + fun f() = C(D()) staged module TestClass with fun f() = new C(D()) - fun g() = C(D()) + fun g() = C(new D()) fun id(x) = x - fun test() = id(C(D())) + fun test() = id(f()) + fun test2() = NonStagedStaticClass.f() //│ > fun ctor_() = //│ > () //│ > fun f() = @@ -288,14 +291,21 @@ staged module TestClass with //│ > obj_7 = new D() //│ > obj_8 = new C(obj_7) //│ > obj_8 -//│ > Map(5) { +//│ > fun test2() = +//│ > let obj_13 +//│ > let obj_14 +//│ > obj_13 = new D() +//│ > obj_14 = new C(obj_13) +//│ > obj_14 +//│ > Map(6) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'g' => [Function: g_gen], //│ > 'id' => [Function: id_gen], -//│ > 'test' => [Function: test_gen] +//│ > 'test' => [Function: test_gen], +//│ > 'test2' => [Function: test2_gen] //│ > } -//│ > Map(3) { +//│ > Map(4) { //│ > [Function: D] { //│ > class: [class D] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > } => ClassSymbol { @@ -314,12 +324,13 @@ staged module TestClass with //│ > }, //│ > [class TestClass] { //│ > 'cache$TestClass': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestClass': Map(5) { +//│ > 'generatorMap$TestClass': Map(6) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], //│ > 'g' => [Function: g_gen], //│ > 'id' => [Function: id_gen], -//│ > 'test' => [Function: test_gen] +//│ > 'test' => [Function: test_gen], +//│ > 'test2' => [Function: test2_gen] //│ > } //│ > } => ModuleSymbol { //│ > name: 'TestClass', @@ -327,6 +338,14 @@ staged module TestClass with //│ > 'cache$TestClass': [FunCache], //│ > 'generatorMap$TestClass': [Map] //│ > } +//│ > }, +//│ > [class NonStagedStaticClass] { +//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NonStagedStaticClass' ] +//│ > } => ModuleSymbol { +//│ > name: 'NonStagedStaticClass', +//│ > value: [class NonStagedStaticClass] { +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] +//│ > } //│ > } //│ > } @@ -394,9 +413,9 @@ staged module TailRecursion with //│ > if n is //│ > 0 then acc //│ > else -//│ > tmp1 = n - 1 -//│ > tmp = acc + n -//│ > TailRecursion.sum(tmp1, tmp) +//│ > tmp = n - 1 +//│ > tmp1 = acc + n +//│ > TailRecursion.sum(tmp, tmp1) //│ > fun test() = 15 //│ > fun sum_Lit5_Lit0(n, acc) = 15 //│ > fun sum_Lit4_Lit5(n, acc) = 15 @@ -439,9 +458,9 @@ staged module TestTupleConstruct with //│ > fun ctor_() = //│ > () //│ > fun first(x) = +//│ > let a //│ > let element1_ //│ > let element0_ -//│ > let a //│ > if x is //│ > [_, _] then //│ > element0_ = x.(0) @@ -461,9 +480,9 @@ staged module TestTupleConstruct with //│ > b //│ > else 0 //│ > fun test(y) = -//│ > let t //│ > let tmp //│ > let tmp1 +//│ > let t //│ > t = [10, y] //│ > tmp = TestTupleConstruct.first_Arr_Lit10_Dyn_end(t) //│ > tmp1 = TestTupleConstruct.second_Arr_Lit10_Dyn_end(t) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 42a9c257f2..a82c0ca018 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -494,7 +494,7 @@ val res = prop(Ctx.empty, nestedBlock) //│ Assign(Symbol("y"), ValueLit(false), Return(ValueLit(2), false)) //│ ) //│ ), -//│ {Lit(2),Lit(4)} +//│ {Lit(2)} //│ ] val2path(1, mut []) From 04115ab2fb6afad18bd44037717aa0ee341ddb6d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:13:03 +0800 Subject: [PATCH 448/654] try caching staged symbols --- .../codegen/ReflectionInstrumenter.scala | 213 ++++++++++-------- .../mlscript/block-staging/StageSymbols.mls | 39 +++- 2 files changed, 147 insertions(+), 105 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 71aefbc8c2..c95681f46b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -16,10 +16,10 @@ import syntax.{Literal, Tree} // it should be possible to cache some common constructions (End, Option) into the context // this avoids having to rebuild the same shapes everytime they are needed -case class Context(cache: HashMap[Path, Path]): - def getCache(p: Path): Option[Path] = cache.get(p) - def addCache(p: Path, v: Path): Context = Context(cache.clone() += (p -> v)) - def delCache(p: Path): Context = Context(cache.clone() -= p) +case class Context(cache: HashMap[Path | Symbol, Path]): + def getCache(p: Path | Symbol): Option[Path] = cache.get(p) + def addCache(p: Path | Symbol, v: Path): Context = Context(cache.clone() += (p -> v)) + def delCache(p: Path | Symbol): Context = Context(cache.clone() -= p) extension [A, B](ls: Iterable[(A => B) => B]) def collectApply(f: Ls[A] => B): B = @@ -31,6 +31,16 @@ extension [A, B](ls: Iterable[(A => B) => B]) k(head :: tail) )(f) + +extension [A](xs: Ls[Context => ((A, Context) => Block) => Block]) + def chainContext(using ctx: Context)(k: (Ls[A], Context) => Block): Block = + xs.foldRight((ctx: Context) => (k: (Ls[A], Context) => Block) => k(Nil, ctx))((head, tail) => + ctx => k => + head(ctx): (head, ctx) => + tail(ctx): (tail, ctx) => + k(head :: tail, ctx) + )(ctx)(k) + type ArgWrappable = Path | Symbol def asArg(x: ArgWrappable): Arg = x match @@ -99,52 +109,56 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans // transformation helpers // if sym is ClassSymbol, we may need pOpt to link to the path pointing to the value of the symbol - def transformSymbol(sym: Symbol, pOpt: Option[Path] = N, symName: Str = "sym")(k: Path => Block): Block = - def checkMap(key: Path, p: Path) = + def transformSymbol(sym: Symbol, pOpt: Option[Path] = N, symName: Str = "sym")(using stagingCtx: Context)(k: (Path, Context) => Block): Block = + def cachedK(p: Path, ctx: Context) = + k(p, ctx.addCache(sym, p)) + def checkMap(key: Path, p: Path, ctx: Context) = symbolMapUsed = true - blockCall("checkMap", Ls(symbolMapSym, key, p))(k) - sym match - case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => - transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(k) - // avoid name collision - case _: TempSymbol | _: NoSymbol => - val name = scope.allocateOrGetName(sym) - blockCtor("Symbol", Ls(toValue(name)), symName)(k) - case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => - blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap(toValue(sym.nme), _)) - case baseSym: BaseTypeSymbol => - val name = scope.allocateOrGetName(sym) - // FIXME: we want the parent path for subtyping, but it is only available for ClsLikeDefn, not ClassDef - val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match - case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) - case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) - // FIXME: hack to patch in staging for returning the object Unit. - case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil) - case _ => - raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) - return End() - - val path = pOpt.getOrElse(owner match - case S(owner) => owner.asPath.selSN(sym.nme) - case N => bsym.asPath) - baseSym match - case _: ClassSymbol => - transformParamsOpt(paramsOpt): paramsOpt => - auxParams.map(transformParamList).collectApply: auxParams => - tuple(auxParams): auxParams => - blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap(path, _)) - case _: ModuleOrObjectSymbol => - blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap(path, _)) - case _: TempSymbol | _: NoSymbol | _: VarSymbol => - val name = scope.allocateOrGetName(sym) - blockCtor("Symbol", Ls(toValue(name)), symName)(k) - // FIXME: there may be more types of symbols that need to be renamed during staging - case _: BuiltinSymbol | _ => - blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) - - def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match - case S(x) => f(x)(optionSome(_)(k)) - case N => optionNone()(k) + blockCall("checkMap", Ls(symbolMapSym, key, p))(cachedK(_, ctx)) + println((sym, stagingCtx)) + stagingCtx.getCache(sym).map(cachedK(_, stagingCtx)).getOrElse: + sym match + case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => + transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(cachedK) + // avoid name collision + case _: TempSymbol | _: NoSymbol => + val name = scope.allocateOrGetName(sym) + blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) + case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => + blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap(toValue(sym.nme), _, stagingCtx)) + case baseSym: BaseTypeSymbol => + val name = scope.allocateOrGetName(sym) + // FIXME: we want the parent path for subtyping, but it is only available for ClsLikeDefn, not ClassDef + val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match + case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) + case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) + // FIXME: hack to patch in staging for returning the object Unit. + case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil) + case _ => + raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) + return End() + + val path = pOpt.getOrElse(owner match + case S(owner) => owner.asPath.selSN(sym.nme) + case N => bsym.asPath) + baseSym match + case _: ClassSymbol => + transformParamsOpt(paramsOpt): (paramsOpt, ctx) => + auxParams.map(ps => ctx => transformParamList(ps)(using ctx)).chainContext: (auxParams, ctx) => + tuple(auxParams): auxParams => + blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap(path, _, ctx)) + case _: ModuleOrObjectSymbol => + blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap(path, _, stagingCtx)) + case _: TempSymbol | _: NoSymbol | _: VarSymbol => + val name = scope.allocateOrGetName(sym) + blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) + // FIXME: there may be more types of symbols that need to be renamed during staging + case _: BuiltinSymbol | _ => + blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(cachedK(_, stagingCtx)) + + def transformOption[A](xOpt: Opt[A], f: A => ((Path, Context) => Block) => Block)(using Context)(k: (Path, Context) => Block): Block = xOpt match + case S(x) => f(x)((p, ctx) => optionSome(p)(k(_, ctx))) + case N => optionNone()(k(_, summon)) // instrumentation rules @@ -172,76 +186,79 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans // transformations of Block - def transformPath(p: Path)(using ctx: Context)(k: Path => Block): Block = + def transformPath(p: Path)(using ctx: Context)(k: (Path, Context) => Block): Block = // rulePath - ctx.getCache(p).map(k).getOrElse: + ctx.getCache(p).map(k(_, ctx)).getOrElse: p match case Value.Ref(l, disamb) => - transformSymbol(disamb.getOrElse(l)): sym => - blockCtor("ValueRef", Ls(sym), "var")(k) + transformSymbol(disamb.getOrElse(l)): (sym, ctx) => + blockCtor("ValueRef", Ls(sym), "var")(k(_, ctx)) case l: Value.Lit => - blockCtor("ValueLit", Ls(l), "lit")(k) + blockCtor("ValueLit", Ls(l), "lit")(k(_, ctx)) case s @ Select(p, Tree.Ident(name)) => - transformPath(p): x => - val sym = s.symbol.map(transformSymbol(_, S(s))) - .getOrElse(blockCtor("Symbol", Ls(toValue(name)))) - sym: sym => - blockCtor("Select", Ls(x, sym), "sel")(k) + transformPath(p): (x, ctx) => + s.symbol match + case S(sym) => transformSymbol(sym, S(s))(using ctx)((sym, ctx) => blockCtor("Select", Ls(x, sym), "sel")(k(_, ctx))) + case N => blockCtor("Symbol", Ls(toValue(name)))(sym => blockCtor("Select", Ls(x, sym), "sel")(k(_, ctx))) + // val sym = s.symbol.map(transformSymbol(_, S(s))(using ctx)) + // .getOrElse(blockCtor("Symbol", Ls(toValue(name)))) + // sym: sym => + // blockCtor("Select", Ls(x, sym), "sel")(k) case DynSelect(qual, fld, arrayIdx) => - transformPath(qual): x => - transformPath(fld): y => - blockCtor("DynSelect", Ls(x, y, toValue(arrayIdx)), "dynsel")(k) + transformPath(qual): (x, ctx) => + transformPath(fld)(using ctx): (y, ctx) => + blockCtor("DynSelect", Ls(x, y, toValue(arrayIdx)), "dynsel")(k(_, ctx)) case _: Value.This => raise(ErrorReport(msg"Value.This not supported in staged module." -> p.toLoc :: Nil)) End() def transformResult(r: Result)(using ctx: Context)(k: (Path, Context) => Block): Block = r match - case p: Path => transformPath(p)(k(_, ctx)) + case p: Path => transformPath(p)(k) case Tuple(mut, elems) => if mut then raise(ErrorReport(msg"Mutable tuples not supported in staged module." -> r.toLoc :: Nil)) - transformArgs(elems): xs => + transformArgs(elems): (xs, ctx) => tuple(xs.map(_._1)): codes => blockCtor("Tuple", Ls(codes), "tup")(k(_, ctx)) case Instantiate(mut, cls, args) => if mut then raise(ErrorReport(msg"Mutable instantiations not supported in staged module." -> r.toLoc :: Nil)) - transformArgs(args): xs => - transformPath(cls): cls => + transformArgs(args): (xs, ctx) => + transformPath(cls)(using ctx): (cls, ctx) => tuple(xs.map(_._1)): codes => blockCtor("Instantiate", Ls(cls, codes), "inst")(k(_, ctx)) case Call(fun, args) => - transformPath(fun): stagedFun => - transformArgs(args): args => + transformPath(fun): (stagedFun, ctx) => + transformArgs(args)(using ctx): (args, ctx) => tuple(args.map(_._1)): tup => blockCtor("Call", Ls(stagedFun, tup), "app")(k(_, ctx)) case _ => raise(ErrorReport(msg"Other Results not supported in staged module." -> r.toLoc :: Nil)) End() - def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = + def transformArg(a: Arg)(using Context)(k: ((Path, Bool), Context) => Block): Block = val Arg(spread, value) = a if spread.isDefined then raise(ErrorReport(msg"Spread parameters are not supported in staged module." -> value.toLoc :: Nil)) - transformPath(value): value => + transformPath(value): (value, ctx) => blockCtor("Arg", Ls(value)): cde => - k(cde, spread.isDefined) + k((cde, spread.isDefined), ctx) - def transformArgs(args: Ls[Arg])(using Context)(k: Ls[(Path, Bool)] => Block): Block = - args.map(transformArg).collectApply(k) + def transformArgs(args: Ls[Arg])(using Context)(k: (Ls[(Path, Bool)], Context) => Block): Block = + args.map(a => ctx => transformArg(a)(using ctx)).chainContext(k) // maintain parameter names in instrumented code - def transformParamList(ps: ParamList)(k: Path => Block) = - ps.params.map(p => transformSymbol(p.sym)).collectApply(tuple(_)(k)) + def transformParamList(ps: ParamList)(using ctx: Context)(k: (Path, Context) => Block) = + ps.params.map(p => ctx => transformSymbol(p.sym)(using ctx)).chainContext((ps, ctx) => tuple(ps)(k(_, ctx))) - def transformParamsOpt(pOpt: Opt[ParamList])(k: Path => Block) = + def transformParamsOpt(pOpt: Opt[ParamList])(using ctx: Context)(k: (Path, Context) => Block) = transformOption(pOpt, transformParamList)(k) - def transformParams(params: Ls[ParamList])(k: Path => Block) = - params.map(transformParamList).collectApply(tuple(_)(k)) + def transformParams(params: Ls[ParamList])(using Context)(k: (Path, Context) => Block) = + params.map(ps => ctx => transformParamList(ps)(using ctx)).chainContext((p, ctx) => tuple(p)(k(_, ctx))) def transformCase(cse: Case)(using Context)(k: Path => Block): Block = cse match case Case.Lit(lit) => blockCtor("Lit", Ls(Value.Lit(lit)))(k) case Case.Cls(cls, path) => - transformSymbol(cls): cls => - transformPath(path): path => + transformSymbol(cls): (cls, ctx) => + transformPath(path)(using ctx): (path, ctx) => blockCtor("Cls", Ls(cls, path))(k) case Case.Tup(len, inf) => if inf then raise(ErrorReport(msg"Spread parameters are not supported in staged module: ${cse.toString()}" -> N :: Nil)) @@ -250,8 +267,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans raise(ErrorReport(msg"Case.Field not supported in staged module." -> name.toLoc :: Nil)) End() - def transformBlock(b: Block)(using Context)(k: Path => Block): Block = - transformBlock(b)((p, _) => k(p)) + // def transformBlock(b: Block)(using Context)(k: Path => Block): Block = + // transformBlock(b)((p, _) => k(p)) def transformBlock(b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = b match case Return(res, implct) => @@ -259,7 +276,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans blockCtor("Return", Ls(x, toValue(implct)), "return")(k(_, ctx)) case Assign(x, r, b) => transformResult(r): (y, ctx) => - transformSymbol(x): xSym => + transformSymbol(x)(using ctx): (xSym, ctx) => blockCtor("ValueRef", Ls(xSym)): xStaged => (Assign(x, xStaged, _)): given Context = ctx.addCache(x.asPath, xStaged) @@ -267,28 +284,26 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) case Define(cls: ClsLikeDefn, rest) => assert(cls.companion.isEmpty, "nested module not supported") - transformBlock(rest): p => - transformSymbol(cls.isym): c => + transformBlock(rest): (p, ctx) => + transformSymbol(cls.isym)(using ctx): (c, ctx) => // staging the methods within the module - cls.methods.map(transformFunDefn).collectApply: pairs => - // TODO: ignore ctx? - val (methods, _) = pairs.unzip + cls.methods.map(defn => ctx => transformFunDefn(defn)(using ctx)).chainContext(using ctx): (methods, ctx) => tuple(methods): methods => optionNone(): none => // TODO: handle companion object blockCtor("ClsLikeDefn", Ls(c, methods, none)): cls => blockCtor("Define", Ls(cls, p))(k(_, ctx)) case Define(v: ValDefn, rest) => // TODO: only allow ValDefn inside ctors - transformBlock(rest): p => - transformOption(v.tsym.owner, transformSymbol(_, N, "test")): owner => - transformSymbol(v.sym): sym => - transformPath(v.rhs): rhs => + transformBlock(rest): (p, ctx) => + transformOption(v.tsym.owner, transformSymbol(_, N, "test"))(using ctx): (owner, ctx) => + transformSymbol(v.sym)(using ctx): (sym, ctx) => + transformPath(v.rhs)(using ctx): (rhs, ctx) => blockCtor("ValDefn", Ls(owner, sym, rhs)): v => blockCtor("Define", Ls(v, p))(k(_, ctx)) case End(_) => ruleEnd()(k(_, ctx)) case Match(p, ks, dflt, rest) => - transformPath(p): x => - ruleBranches(x, p, ks, dflt): (stagedMatch, ctx) => + transformPath(p): (x, ctx) => + ruleBranches(x, p, ks, dflt)(using ctx): (stagedMatch, ctx) => transformBlock(rest)(using ctx): (z, ctx) => fnConcat(stagedMatch, z, "match")(k(_, ctx)) case Begin(sub, rest) => @@ -297,9 +312,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans transformBlock(rest)(using ctx): (rest, ctx) => fnConcat(sub, rest)(k(_, ctx)) case Scoped(syms, body) => - syms.toList.map(transformSymbol(_)).collectApply: symsStaged => + syms.toList.map(s => ctx => transformSymbol(s)(using ctx)).chainContext(using ctx): (symsStaged, ctx) => tuple(symsStaged): tup => - transformBlock(body): (body, ctx) => + transformBlock(body)(using ctx): (body, ctx) => blockCtor("Scoped", Ls(tup, body))(b => Scoped(syms, k(b, ctx))) case _: Label | _: Break | Define(_: FunDefn, _) => raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}.\n Try enabling :ftc." -> N :: Nil)) @@ -308,13 +323,13 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}" -> N :: Nil)) End() - def transformFunDefn(f: FunDefn)(using Context)(k: ((Path, Context)) => Block): Block = + def transformFunDefn(f: FunDefn)(using Context)(k: (Path, Context) => Block): Block = transformBlock(f.body): (body, ctx) => if f.params.length > 1 then raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) // maintain parameter names in instrumented code - transformParams(f.params): paramList => - transformSymbol(f.sym): sym => + transformParams(f.params): (paramList, ctx) => + transformSymbol(f.sym)(using ctx): (sym, ctx) => blockCtor("FunDefn", Ls(sym, paramList, body))(k(_, ctx)) def stageMethod(f: FunDefn): FunDefn = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index ce66a84888..65cf0c904b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -108,23 +108,50 @@ module A with staged module M with class E fun f() = - D.E - A.B.C - A.B.C(1) + let x = D.E + x = A.B.C + A.B.C(2) E //│ > fun ctor_() = //│ > class E //│ > fun f() = -//│ > __no__symbol__ = A.B.C(1) +//│ > let x +//│ > x = D.E1 +//│ > x = A.B.C +//│ > __no__symbol__ = A.B.C(2) //│ > M.E //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(5) { +//│ > Map(7) { //│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', //│ > value: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, +//│ > [class D] { +//│ > E: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > 'cache$D': FunCache { cache: [Map] }, +//│ > 'generatorMap$D': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'f' => [Function: f_gen], +//│ > 'matching' => [Function: matching_gen] +//│ > }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'D' ] +//│ > } => ModuleSymbol { +//│ > name: 'D', +//│ > value: [class D] { +//│ > E: [Function], +//│ > 'cache$D': [FunCache], +//│ > 'generatorMap$D': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > }, +//│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { +//│ > name: 'E1', +//│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, //│ > [class A2] { //│ > B: [class B2] { //│ > C: [Function], @@ -177,7 +204,7 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.178: fun g()() = 1 +//│ ║ l.205: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () From ab99554724da095a04b00406bdaf9943387e6de9 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 1 Apr 2026 00:14:39 +0800 Subject: [PATCH 449/654] update tests --- hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 4702a90bdf..ceebce9846 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -7,7 +7,7 @@ import "../../mlscript-compile/Option.mls" open Block open Option -printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false)) +printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false))) //│ > fun f(x) = 1 printCode(ValueLit(true)) @@ -44,8 +44,8 @@ printCode(Tuple([Arg(ValueRef(Symbol("x"))), Arg(ValueRef(Symbol("y")))])) //│ > new A(0) //│ > [x, y] -let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false) -//│ f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false), false) +:silent +let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) printCode(f) printCode(ClsLikeDefn(aSym, [f], None)) From 7725090cc7a43e99b56d67fdc42bc0139d3be9ad Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:15:13 +0800 Subject: [PATCH 450/654] always declare variable when printing ValDefn --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 3 +-- hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 4b7b7c02de..b6f488cb9c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -162,8 +162,7 @@ fun showDefn(d: Defn): Str = + indent((if methods is [] then "" else " with\n") + methods.map(showDefn).join("\n")) // TODO: used to represent assignments in constructors, which still need some adjustments ValDefn(owner, sym, rhs) then - let prefix = if owner is Some(owner) then "set " + showSymbol(owner) + "." else "val " - prefix + showSymbol(sym) + " = " + showPath(rhs) + "val " + showSymbol(sym) + " = " + showPath(rhs) _ then "" fun showBlock(b) = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index ceebce9846..26fd484606 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -62,9 +62,8 @@ printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), //│ > x printCode(Define(ValDefn(Some(aSym), Symbol("x"), ValueLit(1)), End())) -//│ > set A.x = 1 - printCode(Define(ValDefn(None, Symbol("a"), ValueLit(1)), End())) +//│ > val x = 1 //│ > val a = 1 printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2), false)), Arm(Cls(aSym, ValueRef(aSym)), Return(ValueLit(3), false))], Some(Return(ValueRef(Symbol("x")), false)), End())) From 4889002910f4009a451b43a588a481cd87f35924 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 4 Apr 2026 02:32:49 +0800 Subject: [PATCH 451/654] Fix mkClass --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 7 +------ .../src/test/mlscript-compile/SpecializeHelpers.mls | 11 +++++------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index b21e574520..24250e542d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -45,12 +45,7 @@ fun union(s1: ShapeSet, s2: ShapeSet) = fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.shapeset.entries().toArray()).flat())) -// Cartesian product: https://stackoverflow.com/a/43053803 -fun prod(xs) = - if xs.length == - 0 then [[]] - 1 then xs - else xs.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat()))) +fun prod(xs) = xs.reduce((a, b) => a.flatMap(d => b.map(e => [...d, e])), [[]]) // lifted constructors diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index cb40f6784d..31f58712ab 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -81,7 +81,7 @@ fun sor(ctx, r) = if r is let recovered = DynSelect(scrut, litArg, false) [End(), recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then - throw Error("runtime.Tuple.slice not handled in shape propagation") // TODO + throw Error("runtime.Tuple.slice not handled in shape propagation") ValueRef(clsSymb) and clsSymb is ClassSymbol then [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] ValueRef(symb) and // built-in or top-level @@ -122,11 +122,9 @@ fun sor(ctx, r) = if r is let evaluated = f(...argShapes.map(valOfSet)) let evaluated_path = val2path(evaluated, ctx.allocs) [evaluated_path.0, evaluated_path.1, sov(evaluated)] - Select(ValueRef(ClassSymbol(name, value, paramsOpt, auxParams)), Symbol(symb)) then - // TODO - [End(), r, mkDyn()] - Select(ValueRef(symb), Symbol(f)) and sop(ctx, ValueRef(symb)) is Class(sym, params) then // class method call - // TODO + Select(ValueRef(symb), Symbol(f)) then + let a = sop(ctx, ValueRef(symb)) + [End(), r, mkDyn()] // Basic fallback for method calls until deep pattern matching is built else [End(), r, mkDyn()] @@ -178,6 +176,7 @@ fun prop(ctx, b) = if b is [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] else [Match(p, filteredArms.2, None, End()), filteredArms.1] + else [b, mkDyn()] // TODO: debug only; remove this fun propStub(ctx, body) = From f15ca4b52b71c8a427b42c3323f130e34909aebf Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 4 Apr 2026 17:52:52 +0800 Subject: [PATCH 452/654] wip: staged class, finish split and isSubClass, clean up shapeset --- .../src/test/mlscript-compile/Shape.mls | 2 +- .../src/test/mlscript-compile/ShapeSet.mls | 4 +- .../mlscript-compile/SpecializeHelpers.mls | 31 +++- .../test/mlscript/block-staging/ShapeProp.mls | 164 ++++++++---------- 4 files changed, 101 insertions(+), 100 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 50db9dc604..628a6dc495 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -14,7 +14,7 @@ class Shape extends CachedHash with Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape]) - Class(val sym: ClassSymbol, val params: Array[Shape]) // track the auxParams as well? + Class(val sym: ClassSymbol, val params: Array[Shape]) // TODO: track the auxParams as well fun show(s: Shape) = if s is diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 24250e542d..e8df9b23ee 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -16,7 +16,7 @@ type ShapeSet = ShapeSet.ShapeSet module ShapeSet with... class ShapeSet(val shapeset: Map[String, Shape]) extends CachedHash with - fun keys() = [...shapeset.keys()].toSorted() + fun keys() = shapeset.keys().toArray().toSorted() fun values() = shapeset.values().toArray() @@ -26,7 +26,7 @@ class ShapeSet(val shapeset: Map[String, Shape]) extends CachedHash with fun flatMap(f) = liftMany(values().flatMap(f)) - fun toString() = "{" ~ shapeset.keys().toArray().toSorted().toString() ~ "}" + fun toString() = "{" ~ keys().toSorted().toString() ~ "}" fun isDyn() = shapeset.size == 1 and values().0 is Dyn diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 31f58712ab..9e406fcf2d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -13,6 +13,10 @@ open ShapeSet module SpecializeHelpers with ... +fun getActualClass(c) = if c."class" !== undefined then c.class else c + +fun isSubClassOf(d, b) = getActualClass(b).isPrototypeOf(getActualClass(d)) + fun wrapScoped(symbols, block) = if symbols.length == 0 then block else if block is Scoped(oldSymbols, rest) then Scoped([...symbols, ...oldSymbols], rest) @@ -43,9 +47,13 @@ fun sov(v): ShapeSet = let meta = v.constructor.(Symbols.definitionMetadata) let clsName = meta.1 let paramsOpt = meta.2 - let symParams = if paramsOpt is undefined or paramsOpt is null then None else Some(paramsOpt.map(p => if p is null then Symbol("") else Symbol(p))) + let symParams = if paramsOpt is + undefined then None + else Some(paramsOpt.map(p => if p is null then Symbol("") else Symbol(p))) let classSymbol = ClassSymbol(clsName, v.constructor, symParams, []) - let args = if paramsOpt is undefined or paramsOpt is null then [] else paramsOpt.map(p => if p is null then mkDyn() else sov(v.(p))) + let args = if paramsOpt is + undefined then [] + else paramsOpt.map(p => if p is null then mkDyn() else sov(v.(p))) mkClass(classSymbol, args) fun sop(ctx, p): ShapeSet = @@ -76,7 +84,7 @@ fun sor(ctx, r) = if r is fun lit(l) = [End(), ValueLit(l), mkLit(l)] let argShapes = args.map((a, _, _) => sop(ctx, a.value)) if f is - Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) + Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) and args is [Arg(scrut), Arg(litArg)] then let recovered = DynSelect(scrut, litArg, false) [End(), recovered, sop(ctx, recovered)] @@ -117,13 +125,26 @@ fun sor(ctx, r) = if r is let res = f(...argShapes) [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] else [End(), r, mkDyn()] - argShapes.every(staticSet) then // non staged function but params known + argShapes.every(staticSet) then // non staged function and params known let f = value.(symb) let evaluated = f(...argShapes.map(valOfSet)) let evaluated_path = val2path(evaluated, ctx.allocs) [evaluated_path.0, evaluated_path.1, sov(evaluated)] + else + [End(), r, mkDyn()] // non staged function and params unknown Select(ValueRef(symb), Symbol(f)) then - let a = sop(ctx, ValueRef(symb)) + fun isStaged(c) = + let actualClass = getActualClass(c) + let clsName = actualClass.(Symbols.definitionMetadata).1 + let genMapName = "generatorMap$" + clsName + actualClass.(genMapName) != undefined + fun split(pss) = + foldl((acc, s) => if s is + Class(ClassSymbol(sym, v), params) and isStaged(v) then [union(acc.0, lift(s)), acc.1] + else [acc.0, union(acc.1, mkDyn())] + )([mkBot(), mkBot()], ...pss.values()) + let pss = sop(ctx, ValueRef(symb)) + // TODO: finish [End(), r, mkDyn()] // Basic fallback for method calls until deep pattern matching is built else [End(), r, mkDyn()] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index eaa8d176e1..c00cec41ef 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -2,7 +2,6 @@ :staging :noFreeze :shapeProp -:shapeProp module NonStaged with fun sq(x) = x * x @@ -400,52 +399,7 @@ staged module TestTupleMatching with //│ > } //│ > } -staged module TailRecursion with - fun sum(n, acc) = if n is - 0 then acc - _ then sum(n - 1, acc + n) - fun test() = sum(5, 0) -//│ > fun ctor_() = -//│ > () -//│ > fun sum(n, acc) = -//│ > let tmp -//│ > let tmp1 -//│ > if n is -//│ > 0 then acc -//│ > else -//│ > tmp = n - 1 -//│ > tmp1 = acc + n -//│ > TailRecursion.sum(tmp, tmp1) -//│ > fun test() = 15 -//│ > fun sum_Lit5_Lit0(n, acc) = 15 -//│ > fun sum_Lit4_Lit5(n, acc) = 15 -//│ > fun sum_Lit3_Lit9(n, acc) = 15 -//│ > fun sum_Lit2_Lit12(n, acc) = 15 -//│ > fun sum_Lit1_Lit14(n, acc) = 15 -//│ > fun sum_Lit0_Lit15(n, acc) = 15 -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'sum' => [Function: sum_gen], -//│ > 'test' => [Function: test_gen] -//│ > } -//│ > Map(1) { -//│ > [class TailRecursion] { -//│ > 'cache$TailRecursion': FunCache { cache: [Map] }, -//│ > 'generatorMap$TailRecursion': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'sum' => [Function: sum_gen], -//│ > 'test' => [Function: test_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'TailRecursion', -//│ > value: [class TailRecursion] { -//│ > 'cache$TailRecursion': [FunCache], -//│ > 'generatorMap$TailRecursion': [Map] -//│ > } -//│ > } -//│ > } - -staged module TestTupleConstruct with +staged module TestTuple with fun first(x) = if x is [a, _] then a else 0 @@ -469,9 +423,9 @@ staged module TestTupleConstruct with //│ > a //│ > else 0 //│ > fun second(x1) = -//│ > let b //│ > let element1_1 //│ > let element0_1 +//│ > let b //│ > if x1 is //│ > [_, _] then //│ > element0_1 = x1.(0) @@ -480,18 +434,18 @@ staged module TestTupleConstruct with //│ > b //│ > else 0 //│ > fun test(y) = +//│ > let t //│ > let tmp //│ > let tmp1 -//│ > let t //│ > t = [10, y] -//│ > tmp = TestTupleConstruct.first_Arr_Lit10_Dyn_end(t) -//│ > tmp1 = TestTupleConstruct.second_Arr_Lit10_Dyn_end(t) +//│ > tmp = TestTuple.first_Arr_Lit10_Dyn_end(t) +//│ > tmp1 = TestTuple.second_Arr_Lit10_Dyn_end(t) //│ > tmp + tmp1 //│ > fun first_Arr_Lit10_Dyn_end(x) = 10 //│ > fun second_Arr_Lit10_Dyn_end(x1) = -//│ > let b //│ > let element1_1 //│ > let element0_1 +//│ > let b //│ > element0_1 = x1.(0) //│ > element1_1 = x1.(1) //│ > b = element1_1 @@ -503,69 +457,95 @@ staged module TestTupleConstruct with //│ > 'test' => [Function: test_gen] //│ > } //│ > Map(1) { -//│ > [class TestTupleConstruct] { -//│ > 'cache$TestTupleConstruct': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestTupleConstruct': Map(4) { +//│ > [class TestTuple] { +//│ > 'cache$TestTuple': FunCache { cache: [Map] }, +//│ > 'generatorMap$TestTuple': Map(4) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'first' => [Function: first_gen], //│ > 'second' => [Function: second_gen], //│ > 'test' => [Function: test_gen] //│ > } //│ > } => ModuleSymbol { -//│ > name: 'TestTupleConstruct', -//│ > value: [class TestTupleConstruct] { -//│ > 'cache$TestTupleConstruct': [FunCache], -//│ > 'generatorMap$TestTupleConstruct': [Map] +//│ > name: 'TestTuple', +//│ > value: [class TestTuple] { +//│ > 'cache$TestTuple': [FunCache], +//│ > 'generatorMap$TestTuple': [Map] //│ > } //│ > } //│ > } -:noSanityCheck -class Box(val value) -staged module TestPartialObject with - fun get_val(b) = b.value - fun test_dyn(dyn_val) = get_val(Box(dyn_val)) + get_val(Box(5)) +staged class L1() with + fun call(x) = x + 2 +staged class L2() with + fun call(x) = x +staged class L3() with + fun call(x) = x * 2 //│ > fun ctor_() = //│ > () -//│ > fun get_val(b) = b.value -//│ > fun test_dyn(dyn_val) = +//│ > fun call(x) = x + 2 +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'call' => [Function: call_gen] +//│ > } +//│ > fun ctor_() = +//│ > () +//│ > fun call(x1) = x1 +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'call' => [Function: call_gen] +//│ > } +//│ > fun ctor_() = +//│ > () +//│ > fun call(x2) = *(x2, 2) +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'call' => [Function: call_gen] +//│ > } + +staged module M with + fun twice(f, x) = f.call(f.call(x)) + fun foo(b) = twice(new L1(), 5) +//│ > fun ctor_() = +//│ > () +//│ > fun twice(f, x) = //│ > let tmp +//│ > tmp = f.call(x) +//│ > f.call(tmp) +//│ > fun foo(b) = //│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > tmp = Box(dyn_val) -//│ > tmp1 = TestPartialObject.get_val_Box_Dyn(tmp) -//│ > tmp2 = Box(5) -//│ > tmp3 = TestPartialObject.get_val_Box_Lit5(tmp2) -//│ > tmp1 + tmp3 -//│ > fun get_val_Box_Dyn(b) = b.value -//│ > fun get_val_Box_Lit5(b) = 5 +//│ > tmp1 = new L1() +//│ > M.twice_L1__Lit5(tmp1, 5) +//│ > fun twice_L1__Lit5(f, x) = +//│ > let tmp +//│ > tmp = f.call(x) +//│ > f.call(tmp) //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'get_val' => [Function: get_val_gen], -//│ > 'test_dyn' => [Function: test_dyn_gen] +//│ > 'twice' => [Function: twice_gen], +//│ > 'foo' => [Function: foo_gen] //│ > } //│ > Map(2) { -//│ > [Function: Box] { -//│ > class: [class Box] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > [Function: L1] { +//│ > class: [class L1] { +//│ > 'cache$L1': [FunCache], +//│ > 'generatorMap$L1': [Map], +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] +//│ > } //│ > } => ClassSymbol { -//│ > name: 'Box', -//│ > value: [Function: Box] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, +//│ > name: 'L1', +//│ > value: [Function: L1] { class: [Function] }, +//│ > paramsOpt: Some { value: [] }, //│ > auxParams: [] //│ > }, -//│ > [class TestPartialObject] { -//│ > 'cache$TestPartialObject': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestPartialObject': Map(3) { +//│ > [class M] { +//│ > 'cache$M': FunCache { cache: [Map] }, +//│ > 'generatorMap$M': Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'get_val' => [Function: get_val_gen], -//│ > 'test_dyn' => [Function: test_dyn_gen] +//│ > 'twice' => [Function: twice_gen], +//│ > 'foo' => [Function: foo_gen] //│ > } //│ > } => ModuleSymbol { -//│ > name: 'TestPartialObject', -//│ > value: [class TestPartialObject] { -//│ > 'cache$TestPartialObject': [FunCache], -//│ > 'generatorMap$TestPartialObject': [Map] -//│ > } +//│ > name: 'M', +//│ > value: [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } //│ > } //│ > } From 0fb4a69799e7293328eab003069ad7e8147fbaa4 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 5 Apr 2026 00:00:23 +0800 Subject: [PATCH 453/654] fix test case --- hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index 3074610cb7..ce7354f244 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -157,8 +157,8 @@ f().foo() //│ }; //│ define Good⁰ as class Good¹ { //│ private val Good$cap⁰; -//│ private val x¹; //│ private val y²; +//│ private val x¹; //│ private val scope0$cap⁰; //│ constructor Good² { //│ set scope0$cap⁰ = scope0$cap; From 9141cc887ad20eddcff435dbf7bc406f7023697b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 5 Apr 2026 00:13:47 +0800 Subject: [PATCH 454/654] rerun tests --- .../codegen/ReflectionInstrumenter.scala | 1 - .../test/mlscript/block-staging/Functions.mls | 23 +++++-------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 828296ebf1..be12d6974a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -115,7 +115,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans def checkMap(key: Path, p: Path, ctx: Context) = symbolMapUsed = true blockCall("checkMap", Ls(symbolMapSym, key, p))(cachedK(_, ctx)) - println((sym, stagingCtx)) stagingCtx.getCache(sym).map(cachedK(_, stagingCtx)).getOrElse: sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 0fee4f81d0..10ec5dcd32 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -386,7 +386,7 @@ staged module Continue with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),Some(End()),End()))),End()). +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). //│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.386: let x = 1 @@ -403,19 +403,8 @@ staged module NestedFunDefn with fun g() = 1 g() fun g(x, y) = x || y -//│ ═══[COMPILATION ERROR] Cannot determine if short_or is a function object. -//│ > fun ctor_() = -//│ > () -//│ > fun f() = g() -//│ > fun g(x, y) = -//│ > let tmp -//│ > tmp = Function__(false, y) -//│ > Runtime.short_or(x, tmp) -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Unreachable(Rest of abortive match) +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :e class C(val a) @@ -425,7 +414,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.425: fun g() = {1 : 2} +//│ ║ l.414: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -437,11 +426,11 @@ staged module Spread with //│ > fun ctor_() = //│ > () //│ > fun f() = -//│ > let middleElements -//│ > let element0_ //│ > let scrut //│ > let tmp //│ > let x +//│ > let middleElements +//│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > if scrut is From fe37a171794bb929271d2000ef829f7f7ccca252 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 5 Apr 2026 00:27:36 +0800 Subject: [PATCH 455/654] rerun tests --- .../test/mlscript/block-staging/Functions.mls | 6 +++--- .../codegen/FirstClassFunctionTransform.mls | 18 +++++++++--------- .../src/test/mlscript/lifter/ClassInFun.mls | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 10ec5dcd32..dc58612104 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -386,7 +386,7 @@ staged module Continue with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:scrut, tmp:tmp),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). //│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.386: let x = 1 @@ -426,11 +426,11 @@ staged module Spread with //│ > fun ctor_() = //│ > () //│ > fun f() = +//│ > let middleElements +//│ > let element0_ //│ > let scrut //│ > let tmp //│ > let x -//│ > let middleElements -//│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > if scrut is diff --git a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls index 0255996675..3e7a3dda59 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls @@ -94,13 +94,13 @@ let f = foo in bar(f) bar([foo].0) bar([foo, x => x].1) //│ ╔══[COMPILATION ERROR] Cannot determine if 0 is a function. -//│ ║ l.100: bar([foo].0) -//│ ╙── ^^ +//│ ║ l.94: bar([foo].0) +//│ ╙── ^^ //│ ═══[COMPILATION ERROR] Cannot determine if 0$__checkNotMethod is a function. //│ ═══[COMPILATION ERROR] Cannot determine if Error is a function. //│ ╔══[COMPILATION ERROR] Cannot determine if 1 is a function. -//│ ║ l.101: bar([foo, x => x].1) -//│ ╙── ^^ +//│ ║ l.95: bar([foo, x => x].1) +//│ ╙── ^^ //│ ═══[COMPILATION ERROR] Cannot determine if 1$__checkNotMethod is a function. //│ ═══[COMPILATION ERROR] Cannot determine if Error is a function. //│ = 0 @@ -116,7 +116,7 @@ bar([foo, x => x].(i)) :ge [foo, x => x].(i)(0) //│ ╔══[COMPILATION ERROR] Cannot determine if the dynamic selection is a function object. -//│ ║ l.133: [foo, x => x].(i)(0) +//│ ║ l.117: [foo, x => x].(i)(0) //│ ╙── ^ @@ -130,10 +130,10 @@ let foo = Foo() foo.("f")(0) foo.("h")(1) //│ ╔══[COMPILATION ERROR] Cannot determine if the dynamic selection is a function object. -//│ ║ l.151: foo.("f")(0) +//│ ║ l.130: foo.("f")(0) //│ ╙── ^^^^^^^^ //│ ╔══[COMPILATION ERROR] Cannot determine if the dynamic selection is a function object. -//│ ║ l.152: foo.("h")(1) +//│ ║ l.131: foo.("h")(1) //│ ╙── ^^^^^^^^ //│ = 0 //│ foo = Foo() @@ -391,7 +391,7 @@ foo.Foo#x :ge foo.f(0) //│ ╔══[COMPILATION ERROR] Cannot determine if f is a function object. -//│ ║ l.424: foo.f(0) +//│ ║ l.392: foo.f(0) //│ ╙── ^^^^^ //│ = 1 @@ -409,7 +409,7 @@ foo.Foo#f(0) :ge foo.x(0) //│ ╔══[COMPILATION ERROR] Cannot determine if x is a function object. -//│ ║ l.447: foo.x(0) +//│ ║ l.410: foo.x(0) //│ ╙── ^^^^^ diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index ce7354f244..3074610cb7 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -157,8 +157,8 @@ f().foo() //│ }; //│ define Good⁰ as class Good¹ { //│ private val Good$cap⁰; -//│ private val y²; //│ private val x¹; +//│ private val y²; //│ private val scope0$cap⁰; //│ constructor Good² { //│ set scope0$cap⁰ = scope0$cap; From b8570acbd05ca9bc16be7a27e5bfe64d396364f2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 5 Apr 2026 23:09:20 +0800 Subject: [PATCH 456/654] fix renaming for staging Select we follow Block.mls to use a string for the name field --- .../codegen/ReflectionInstrumenter.scala | 10 +----- .../src/test/mlscript-compile/Block.mls | 4 +-- .../test/mlscript/block-staging/Functions.mls | 13 ++++---- .../mlscript/block-staging/StageSymbols.mls | 31 ++----------------- .../mlscript/block-staging/SymbolRenaming.mls | 1 - 5 files changed, 12 insertions(+), 47 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index be12d6974a..781fde1baa 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -131,8 +131,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) - // FIXME: hack to patch in staging for returning the object Unit. - case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil) case _ => raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() @@ -196,13 +194,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans blockCtor("ValueLit", Ls(l), "lit")(k(_, ctx)) case s @ Select(p, Tree.Ident(name)) => transformPath(p): (x, ctx) => - s.symbol match - case S(sym) => transformSymbol(sym, S(s))(using ctx)((sym, ctx) => blockCtor("Select", Ls(x, sym), "sel")(k(_, ctx))) - case N => blockCtor("Symbol", Ls(toValue(name)))(sym => blockCtor("Select", Ls(x, sym), "sel")(k(_, ctx))) - // val sym = s.symbol.map(transformSymbol(_, S(s))(using ctx)) - // .getOrElse(blockCtor("Symbol", Ls(toValue(name)))) - // sym: sym => - // blockCtor("Select", Ls(x, sym), "sel")(k) + blockCtor("Select", Ls(x, toValue(name)))(k(_, ctx)) case DynSelect(qual, fld, arrayIdx) => transformPath(qual): (x, ctx) => transformPath(fld)(using ctx): (y, ctx) => diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index da58ebd26a..d5a85d39d1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -69,7 +69,7 @@ class Result extends CachedHash with class Path extends Result with constructor - Select(val qual: Path, val name: Symbol) + Select(val qual: Path, val name: Str) DynSelect(val qual: Path, val fld: Path, val arrayIdx: Bool) // is arrayIdx used? ValueRef(val l: Symbol) ValueLit(val lit: Literal) @@ -116,7 +116,7 @@ fun showSymbol(s: Symbol) = if s.name is fun showPath(p: Path): Str = if p is - Select(qual, name) then showPath(qual) + "." + showSymbol(name) + Select(qual, name) then showPath(qual) + "." + name DynSelect(qual, fld, arrayIdx) then showPath(qual) + ".(" + showPath(fld) + ")" ValueRef(l) then showSymbol(l) ValueLit(lit) then showLiteral(lit) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index dc58612104..81edb51800 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -353,7 +353,6 @@ staged module RetUnit with //│ > () //│ > fun f() = Runtime.Unit //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } // name collision class A() @@ -386,13 +385,13 @@ staged module Continue with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:scrut, tmp:tmp),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). //│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.386: let x = 1 +//│ ║ l.385: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.386: let x = 1 +//│ ║ l.385: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -414,7 +413,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.414: fun g() = {1 : 2} +//│ ║ l.413: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -426,11 +425,11 @@ staged module Spread with //│ > fun ctor_() = //│ > () //│ > fun f() = -//│ > let middleElements -//│ > let element0_ //│ > let scrut //│ > let tmp //│ > let x +//│ > let middleElements +//│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > if scrut is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 65cf0c904b..8cee2a33bd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -116,12 +116,12 @@ staged module M with //│ > class E //│ > fun f() = //│ > let x -//│ > x = D.E1 +//│ > x = D.E //│ > x = A.B.C //│ > __no__symbol__ = A.B.C(2) //│ > M.E //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(7) { +//│ > Map(4) { //│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { //│ > name: 'E', //│ > value: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, @@ -146,12 +146,6 @@ staged module M with //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } //│ > }, -//│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ClassSymbol { -//│ > name: 'E1', -//│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, //│ > [class A2] { //│ > B: [class B2] { //│ > C: [Function], @@ -165,24 +159,6 @@ staged module M with //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } //│ > }, -//│ > [class B2] { -//│ > C: [Function: C] { class: [Function] }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'B' ] -//│ > } => ModuleSymbol { -//│ > name: 'B', -//│ > value: [class B2] { -//│ > C: [Function], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > }, -//│ > [Function: C] { -//│ > class: [class C3] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, //│ > [class M2] { //│ > E: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > 'cache$M': FunCache { cache: [Map] }, @@ -204,7 +180,7 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.205: fun g()() = 1 +//│ ║ l.181: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > fun ctor_() = //│ > () @@ -260,4 +236,3 @@ staged module RetUnit with //│ > () //│ > fun f() = Runtime.Unit //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 703c194b40..d62177cfcc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -35,7 +35,6 @@ staged module NoSymbol with //│ > __no__symbol__ = g() //│ > Runtime.Unit //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } staged module Selection with fun f(x) = From f282e4c0f3b313db8dffb5e1095da8e992abcc36 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 6 Apr 2026 00:03:36 +0800 Subject: [PATCH 457/654] update transformSymbol --- .../codegen/ReflectionInstrumenter.scala | 15 +++++------ .../test/mlscript/block-staging/Classes.mls | 26 +++++++++---------- .../test/mlscript/block-staging/Functions.mls | 8 +++--- .../test/mlscript/block-staging/PrintCode.mls | 2 +- .../mlscript/block-staging/SymbolRenaming.mls | 8 +++--- .../test/mlscript/block-staging/Syntax.mls | 4 +-- 6 files changed, 30 insertions(+), 33 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 781fde1baa..1df9e74a73 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -146,11 +146,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap(path, _, ctx)) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap(path, _, stagingCtx)) - case _: TempSymbol | _: NoSymbol | _: VarSymbol => - val name = scope.allocateOrGetName(sym) - blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) // FIXME: there may be more types of symbols that need to be renamed during staging - case _: BuiltinSymbol | _ => + case _: BuiltinSymbol | _: VarSymbol | _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(cachedK(_, stagingCtx)) def transformOption[A](xOpt: Opt[A], f: A => ((Path, Context) => Block) => Block)(using Context)(k: (Path, Context) => Block): Block = xOpt match @@ -315,11 +312,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans End() def transformFunDefn(f: FunDefn)(using Context)(k: (Path, Context) => Block): Block = - transformBlock(f.body): (body, ctx) => - if f.params.length > 1 then - raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) - // maintain parameter names in instrumented code - transformParams(f.params): (paramList, ctx) => + // maintain parameter names in instrumented code + transformParams(f.params): (paramList, ctx) => + transformBlock(f.body)(using ctx): (body, ctx) => + if f.params.length > 1 then + raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) transformSymbol(f.sym)(using ctx): (sym, ctx) => blockCtor("FunDefn", Ls(sym, paramList, body))(k(_, ctx)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index cb0dc4ba6c..d764b5058b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -15,13 +15,13 @@ staged module M with staged class A(val a) //│ > fun ctor_(a) = -//│ > set A1.a = a +//│ > set A.a = a //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(1) { //│ > [Function: A] { //│ > class: [class A] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } //│ > } => ClassSymbol { -//│ > name: 'A1', +//│ > name: 'A', //│ > value: [Function: A] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] @@ -79,22 +79,22 @@ staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 //│ > fun ctor_(x) = -//│ > set B1.x = x -//│ > fun f(y) = +(B1.x, y) +//│ > set B.x = x +//│ > fun f(y) = +(B.x, y) //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [Function: B] { //│ > class: [class B] { 'cache$B': [FunCache], 'generatorMap$B': [Map] } //│ > } => ClassSymbol { -//│ > name: 'B1', +//│ > name: 'B', //│ > value: [Function: B] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > } //│ > } -//│ > fun ctor_(x1) = +//│ > fun ctor_(x) = //│ > let tmp -//│ > tmp = +(x1, 1) +//│ > tmp = +(x, 1) //│ > super(tmp) //│ > fun f() = 42 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } @@ -106,7 +106,7 @@ staged class D(val x) extends B(x+1) with //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } //│ > } => ClassSymbol { -//│ > name: 'B1', +//│ > name: 'B', //│ > value: [Function: B] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] @@ -117,7 +117,7 @@ staged class D(val x) extends B(x+1) with //│ > 'generatorMap$D': [Map] //│ > } //│ > } => ClassSymbol { -//│ > name: 'D1', +//│ > name: 'D', //│ > value: [Function: D] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] @@ -132,7 +132,7 @@ staged module M with Unstaged; Staged //│ > fun ctor_(x) = -//│ > set Staged1.x = x +//│ > set Staged.x = x //│ > fun inner() = 1 //│ > Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], @@ -145,7 +145,7 @@ staged module M with //│ > 'generatorMap$Staged': [Map] //│ > } //│ > } => ClassSymbol { -//│ > name: 'Staged1', +//│ > name: 'Staged', //│ > value: [Function: Staged] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] @@ -153,7 +153,7 @@ staged module M with //│ > } //│ > fun ctor_() = //│ > () -//│ > fun f() = ,(Unstaged, Staged1) +//│ > fun f() = ,(Unstaged, Staged) //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: Staged] { @@ -163,7 +163,7 @@ staged module M with //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } //│ > } => ClassSymbol { -//│ > name: 'Staged1', +//│ > name: 'Staged', //│ > value: [Function: Staged] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 81edb51800..d441154610 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -224,7 +224,7 @@ staged module Arguments with //│ > fun f(x) = //│ > x = 1 //│ > x -//│ > fun g(x1) = +//│ > fun g(x) = //│ > let tmp //│ > tmp = new Function_() //│ > tmp @@ -376,7 +376,7 @@ staged module Shadowing with fun f(x, x) = x //│ > fun ctor_() = //│ > () -//│ > fun f(x1, x) = x +//│ > fun f(x, x) = x //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } :todo @@ -425,11 +425,11 @@ staged module Spread with //│ > fun ctor_() = //│ > () //│ > fun f() = +//│ > let middleElements +//│ > let element0_ //│ > let scrut //│ > let tmp //│ > let x -//│ > let middleElements -//│ > let element0_ //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > if scrut is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 37580e3749..6125be6f5c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -26,7 +26,7 @@ printCode(Symbol("runtime")) //│ > internal_ //│ > Runtime -printCode(Select(ValueRef(Symbol("p")), Symbol("x"))) +printCode(Select(ValueRef(Symbol("p")), "x")) printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) //│ > p.x //│ > p.(field) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index d62177cfcc..2ec7eb71bc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -8,10 +8,10 @@ staged module Variables with x //│ > fun ctor_() = //│ > () -//│ > fun f(x2, x3) = +//│ > fun f(x, x) = //│ > let x -//│ > let x1 -//│ > x1 +//│ > let x +//│ > x //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged module DupeFunctionName with @@ -43,8 +43,8 @@ staged module Selection with //│ > fun ctor_() = //│ > () //│ > fun f(x) = -//│ > let scrut //│ > let tmp +//│ > let scrut //│ > __no__symbol__ = x.call() //│ > tmp = C(1) //│ > scrut = tmp.x diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 56b8bbe292..6989aaeec5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -42,10 +42,10 @@ staged module A //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { -//│ let end, tmp, tmp1, sym, tmp2; -//│ set end = new mut Block⁰.End﹖(); +//│ let tmp, tmp1, end, sym, tmp2; //│ set tmp = []; //│ set tmp1 = [tmp]; +//│ set end = new mut Block⁰.End﹖(); //│ set sym = new mut Block⁰.Symbol﹖("ctor$"); //│ set tmp2 = new mut Block⁰.FunDefn﹖(sym, tmp1, end); //│ return tmp2 From d276cf790579497e1a66290fb8d486bdd15e3121 Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 6 Apr 2026 00:45:57 +0800 Subject: [PATCH 458/654] wip: staging classes --- .../src/test/mlscript-compile/Block.mls | 4 +- .../src/test/mlscript-compile/ShapeSet.mls | 2 +- .../mlscript-compile/SpecializeHelpers.mls | 52 ++++- .../test/mlscript/block-staging/ShapeProp.mls | 190 +++++++++++++++--- .../block-staging/ShapeSetHelpers.mls | 18 +- .../mlscript/block-staging/StageSymbols.mls | 2 +- 6 files changed, 221 insertions(+), 47 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 574705bf37..b501c08a82 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -146,9 +146,7 @@ fun showResult(r: Result): Str = fun showCase(c) = if c is Lit(l) then showLiteral(l) - Cls(cls, p) then showSymbol(cls) + - if isPrimitiveType(cls) then "" - else showParamsOpt(cls.paramsOpt) // it seems we only need the arity, printing the paramter names is unnecessary + Cls(cls, p) then showSymbol(cls) Tup(len) then "[" + Array(len).fill("_").join(", ") + "]" _ then "" diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index e8df9b23ee..bf32dbeec6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -91,7 +91,7 @@ fun valOf(s : Shape) = Dyn() then throw Error("valOf on Dyn") Lit(l) then l Arr(shapes) then shapes.map((x, _, _) => valOf(x)) - Class(ClassSymbol(name, value, paramsOpt, auxParams), params) then new value(...params.map(valOf)) + Class(ClassSymbol(name, value, paramsOpt, auxParams), params) then new! value(...params.map(valOf)) else throw Error("Unknown shape") fun valOfSet(s : ShapeSet) = diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 9e406fcf2d..929f35cbc9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -138,14 +138,44 @@ fun sor(ctx, r) = if r is let clsName = actualClass.(Symbols.definitionMetadata).1 let genMapName = "generatorMap$" + clsName actualClass.(genMapName) != undefined - fun split(pss) = - foldl((acc, s) => if s is - Class(ClassSymbol(sym, v), params) and isStaged(v) then [union(acc.0, lift(s)), acc.1] - else [acc.0, union(acc.1, mkDyn())] - )([mkBot(), mkBot()], ...pss.values()) + fun fsplit(pss) = + let knownMap = new Map() + let unkShape = foldl((acc, s) => if s is + Class(sym, params) and isStaged(sym.value) then + if knownMap.has(sym) then knownMap.set(sym, union(knownMap.get(sym), lift(s))) + else knownMap.set(sym, lift(s)) + acc + else union(acc, mkDyn()) + )(mkBot(), ...pss.values()) + [knownMap, unkShape] let pss = sop(ctx, ValueRef(symb)) - // TODO: finish - [End(), r, mkDyn()] // Basic fallback for method calls until deep pattern matching is built + let splitted = fsplit(pss) + let knownMap = splitted.0 + let unkShape = splitted.1 + let outSym = Symbol("__tmp__") + ctx.allocs.push(outSym) + + let armsRet = [...knownMap.entries()].map(entry => + let C_i = entry.0 + let ss_i = entry.1 + let genMapName = "generatorMap$" + C_i.name + let genMap = getActualClass(C_i.value).(genMapName) + let f_gen = genMap.get(f) + let generated = f_gen(ss_i)(...argShapes) + let retSym = generated.0 + let retShape = generated.1 + [Arm(Cls(C_i, ValueRef(symb)), Assign(outSym, Call(Select(ValueRef(symb), retSym), args), End())), retShape] + ) + + let armsAcc = armsRet.map(x => x.0) + let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) + let dfltRet = if unkShape.isEmpty() then [None, totalStagedRetShape] else + [Some(Assign(outSym, Call(Select(ValueRef(symb), Symbol(f)), args), End())), union(totalStagedRetShape, mkDyn())] + + let dflt = dfltRet.0 + let totalRetShape = dfltRet.1 + + [Match(ValueRef(symb), armsAcc, dflt, End()), ValueRef(outSym), totalRetShape] else [End(), r, mkDyn()] @@ -231,7 +261,13 @@ fun specialize(cache, funName, dflt, shapes, useStub) = let defn = dflt() defn is FunDefn(Symbol(_), ps, body) then let ctx = Ctx.empty - ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), shapes.(i).(j)))) + let isMethod = shapes.length > ps.length // TODO: clean up + let paramShapes = if isMethod then shapes.slice(1) else shapes + ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) + if isMethod do + let clsSymb = shapes.(0).(0).values().0.sym + // print(newName, "shapes", shapes.(0).(0)) + // ctx.add(ValueRef(clsSymb), shapes.(0).(0)) cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) let propFun = if useStub then propStub else prop let res = propFun(ctx, body) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index c00cec41ef..e5fa4fe2f5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -5,12 +5,52 @@ module NonStaged with fun sq(x) = x * x -module Staged with +staged module Staged with fun sq(x) = x * x fun fib(n) = if n is 1 then 1 2 then 1 n then fib(n - 1) + fib(n - 2) +//│ > fun ctor_() = +//│ > () +//│ > fun sq(x) = *(x, x) +//│ > fun fib(n1) = +//│ > let n +//│ > let tmp +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > if n1 is +//│ > 1 then 1 +//│ > 2 then 1 +//│ > else +//│ > n = n1 +//│ > tmp = n - 1 +//│ > tmp1 = Staged.fib(tmp) +//│ > tmp2 = n - 2 +//│ > tmp3 = Staged.fib(tmp2) +//│ > tmp1 + tmp3 +//│ > Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'sq' => [Function: sq_gen], +//│ > 'fib' => [Function: fib_gen] +//│ > } +//│ > Map(1) { +//│ > [class Staged] { +//│ > 'cache$Staged': FunCache { cache: [Map] }, +//│ > 'generatorMap$Staged': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'sq' => [Function: sq_gen], +//│ > 'fib' => [Function: fib_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'Staged', +//│ > value: [class Staged] { +//│ > 'cache$Staged': [FunCache], +//│ > 'generatorMap$Staged': [Map] +//│ > } +//│ > } +//│ > } staged module Test with fun f(x, y) = x + y + 1 - 1 @@ -72,8 +112,8 @@ staged module Test with //│ > fun fib_Lit1(n1) = 1 //│ > fun pyth_Lit2_Lit4(x1, y1) = 20 //│ > fun test2(n2) = -//│ > let tmp10 //│ > let dyn +//│ > let tmp10 //│ > dyn = Test.pyth_Dyn_Lit2(n2, 2) //│ > tmp10 = *(dyn, 2) //│ > Test.fib(tmp10) @@ -118,35 +158,50 @@ staged module Test with //│ > value: [class NonStaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } //│ > }, //│ > [class Staged] { +//│ > 'cache$Staged': FunCache { cache: [Map] }, +//│ > 'generatorMap$Staged': Map(3) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'sq' => [Function: sq_gen], +//│ > 'fib' => [Function: fib_gen] +//│ > }, //│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Staged' ] //│ > } => ModuleSymbol { //│ > name: 'Staged', -//│ > value: [class Staged] { [Symbol(mlscript.definitionMetadata)]: [Array] } +//│ > value: [class Staged] { +//│ > 'cache$Staged': [FunCache], +//│ > 'generatorMap$Staged': [Map], +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] +//│ > } //│ > } //│ > } + class C(val x) + staged module TestIf with fun f(x) = if x is - C(2) then "wrong1" - 2 then "correct" - else "wrong2" + C(2) then "correct" + else "wrong" fun test() = - f(2) + f(new C(2)) //│ > fun ctor_() = //│ > () //│ > fun f(x) = //│ > let arg_C_0_ //│ > if x is -//│ > C(x1) then +//│ > C then //│ > arg_C_0_ = x.x //│ > if arg_C_0_ is -//│ > 2 then "wrong1" -//│ > else "wrong2" -//│ > 2 then "correct" -//│ > else "wrong2" -//│ > fun test() = "correct" -//│ > fun f_Lit2(x) = "correct" +//│ > 2 then "correct" +//│ > else "wrong" +//│ > else "wrong" +//│ > fun test() = +//│ > let tmp +//│ > tmp = new C(2) +//│ > TestIf.f_C_Lit2(tmp) +//│ > fun f_C_Lit2(x) = +//│ > let arg_C_0_ +//│ > arg_C_0_ = x.x //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'f' => [Function: f_gen], @@ -196,7 +251,7 @@ staged module TestIf2 with //│ > let tmp //│ > let y //│ > if x is -//│ > C(n) then +//│ > C then //│ > y = x.n //│ > tmp = Runtime.Unit //│ > y + 1 @@ -434,9 +489,9 @@ staged module TestTuple with //│ > b //│ > else 0 //│ > fun test(y) = -//│ > let t //│ > let tmp //│ > let tmp1 +//│ > let t //│ > t = [10, y] //│ > tmp = TestTuple.first_Arr_Lit10_Dyn_end(t) //│ > tmp1 = TestTuple.second_Arr_Lit10_Dyn_end(t) @@ -476,10 +531,8 @@ staged module TestTuple with staged class L1() with fun call(x) = x + 2 -staged class L2() with - fun call(x) = x -staged class L3() with - fun call(x) = x * 2 +//│ > ctor$ shapes {Dyn()} +//│ > call shapes {Dyn()} //│ > fun ctor_() = //│ > () //│ > fun call(x) = x + 2 @@ -487,16 +540,26 @@ staged class L3() with //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'call' => [Function: call_gen] //│ > } + + +staged class L2() with + fun call(x) = x +staged class L3() with + fun call(x) = x * 2 +//│ > ctor$ shapes {Dyn()} +//│ > call shapes {Dyn()} //│ > fun ctor_() = //│ > () -//│ > fun call(x1) = x1 +//│ > fun call(x) = x //│ > Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'call' => [Function: call_gen] //│ > } +//│ > ctor$ shapes {Dyn()} +//│ > call shapes {Dyn()} //│ > fun ctor_() = //│ > () -//│ > fun call(x2) = *(x2, 2) +//│ > fun call(x1) = *(x1, 2) //│ > Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'call' => [Function: call_gen] @@ -505,20 +568,30 @@ staged class L3() with staged module M with fun twice(f, x) = f.call(f.call(x)) fun foo(b) = twice(new L1(), 5) +//│ > call_L1___Lit5 shapes {Class(ClassSymbol("L1", fun L1 { class: class L1 { cache$L1: fun ctor_() = +//│ > () +//│ > fun call(x) = x + 2, generatorMap$L1: Map(2) {"ctor$" => fun ctor$_gen, "call" => fun call_gen} } }, Some([]), []), [])} +//│ > call_L1___Lit7 shapes {Class(ClassSymbol("L1", fun L1 { class: class L1 { cache$L1: fun ctor_() = +//│ > () +//│ > fun call(x) = x + 2, generatorMap$L1: Map(2) {"ctor$" => fun ctor$_gen, "call" => fun call_gen} } }, Some([]), []), [])} //│ > fun ctor_() = //│ > () //│ > fun twice(f, x) = //│ > let tmp -//│ > tmp = f.call(x) -//│ > f.call(tmp) -//│ > fun foo(b) = -//│ > let tmp1 -//│ > tmp1 = new L1() -//│ > M.twice_L1__Lit5(tmp1, 5) -//│ > fun twice_L1__Lit5(f, x) = -//│ > let tmp -//│ > tmp = f.call(x) -//│ > f.call(tmp) +//│ > let __tmp__ +//│ > let __tmp__ +//│ > if f is +//│ > +//│ > else +//│ > __tmp__ = f.call(x) +//│ > tmp = __tmp__ +//│ > if f is +//│ > +//│ > else +//│ > __tmp__ = f.call(tmp) +//│ > __tmp__ +//│ > fun foo(b) = 9 +//│ > fun twice_L1__Lit5(f, x) = 9 //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'twice' => [Function: twice_gen], @@ -549,3 +622,56 @@ staged module M with //│ > value: [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } //│ > } //│ > } + +staged class F(val x) with + fun f(y) = this.x + y +//│ > ctor$ shapes {Dyn()} +//│ > f shapes {Dyn()} +//│ > fun ctor_(x) = +//│ > set F1.x = x +//│ > fun f(y) = F1.x + y +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(1) { +//│ > [Function: F] { +//│ > class: [class F] { 'cache$F': [FunCache], 'generatorMap$F': [Map] } +//│ > } => ClassSymbol { +//│ > name: 'F1', +//│ > value: [Function: F] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } +//│ > } + +staged module M with + fun test() = (new F(1)).f(2) +//│ > f_F_Lit1__Lit2 shapes {Class(ClassSymbol("F", fun F { class: class F { cache$F: fun ctor_(x) = +//│ > set F1.x = x +//│ > fun f(y) = F1.x + y, generatorMap$F: Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} } }, Some([Symbol("x")]), []), [Lit(1)])} +//│ > fun ctor_() = +//│ > () +//│ > fun test() = +//│ > let tmp +//│ > let __tmp__ +//│ > tmp = new F(1) +//│ > if tmp is +//│ > F then +//│ > __tmp__ = tmp.f_F_Lit1__Lit2(2) +//│ > __tmp__ +//│ > Map(2) { +//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'test' => [Function: test_gen] +//│ > } +//│ > Map(1) { +//│ > [Function: F] { +//│ > class: [class F] { +//│ > 'cache$F': [FunCache], +//│ > 'generatorMap$F': [Map], +//│ > [Symbol(mlscript.definitionMetadata)]: [Array] +//│ > } +//│ > } => ClassSymbol { +//│ > name: 'F', +//│ > value: [Function: F] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } +//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index d6d171e239..5b222b0b11 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -341,8 +341,22 @@ val fPath = Select(M, fSym) val callF = Call(fPath, [Arg(ValueLit(12))]) sor(Ctx.empty, callF) //│ = [ -//│ End(), -//│ Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(ValueLit(12))]), +//│ Match( +//│ ValueRef(Symbol("M")), +//│ [], +//│ Some( +//│ Assign( +//│ Symbol("hi"), +//│ Call( +//│ Select(ValueRef(Symbol("M")), Symbol("f")), +//│ [Arg(ValueLit(12))] +//│ ), +//│ End() +//│ ) +//│ ), +//│ End() +//│ ), +//│ ValueRef(Symbol("hi")), //│ {Dyn()} //│ ] //│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(ValueLit(12))]) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 48d170610f..c9a3c51add 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -57,7 +57,7 @@ staged module D with //│ > tmp = false //│ > scrut2 = 1 //│ > if scrut2 is -//│ > C(a, b) then true +//│ > C then true //│ > else false //│ > Map(3) { //│ > 'ctor$' => [Function: ctor$_gen], From e7bde26bab6c1b577c7e58b22e760162aa9ee369 Mon Sep 17 00:00:00 2001 From: Ching Long Tin <26105652+ChingLongTin@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:19:56 +0800 Subject: [PATCH 459/654] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 7 +++++-- hkmc2/shared/src/test/mlscript-compile/Block.mls | 8 +++++--- .../shared/src/test/mlscript/block-staging/PrintCode.mls | 4 ++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 7b62cd75f9..e27e8e8b29 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -127,7 +127,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n val name = scope.allocateOrGetName(sym) blockCtor("Symbol", Ls(toValue(name)), symName)(k) // FIXME: there may be more types of symbols that need to be renamed during staging - case _: BuiltinSymbol | _ => + case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) def transformOption[A](xOpt: Opt[A], f: A => (Path => Block) => Block)(k: Path => Block): Block = xOpt match @@ -302,7 +302,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n tuple(symsStaged): tup => transformBlock(body): (body, ctx) => blockCtor("Scoped", Ls(tup, body))(b => Scoped(syms, k(b, ctx))) - case _: Label | _: Break | Define(_: FunDefn, _) => + case Define(_: FunDefn, _) => + raise(ErrorReport(msg"Nested function definitions are not supported in staged modules: ${b.toString()}" -> N :: Nil)) + End() + case _: Label | _: Break => raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}.\n Try enabling :ftc." -> N :: Nil)) End() case _ => diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index b6f488cb9c..37a18e7174 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -49,7 +49,7 @@ class Arg(val value: Path) class Case with constructor Lit(val lit: Literal) - Cls(val cls: ClassSymbol, val path: Path) + Cls(val cls: Symbol, val path: Path) Tup(val len: Int) class Result with @@ -67,7 +67,7 @@ class Path extends Result with class Defn with constructor - ValDefn(val tsym: Symbol, val sym: Symbol, val rhs: Path) + ValDefn(val tsym: Opt[Symbol], val sym: Symbol, val rhs: Path) ClsLikeDefn(val sym: ClassSymbol, val methods: Array[FunDefn], val companion: Opt[ClsLikeBody]) // companion unused FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) @@ -110,7 +110,9 @@ fun showPath(p: Path): Str = // avoids needing to import the runtime module Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" Select(qual, name) then showPath(qual) + "." + showSymbol(name) - DynSelect(qual, fld, arrayIdx) then showPath(qual) + ".(" + showPath(fld) + ")" + DynSelect(qual, fld, arrayIdx) then + if arrayIdx then showPath(qual) + ".[" + showPath(fld) + "]" + else showPath(qual) + ".(" + showPath(fld) + ")" ValueRef(l) then showSymbol(l) ValueLit(lit) then showLiteral(lit) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 26fd484606..ee399fa1b3 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -34,8 +34,8 @@ printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) :silent class A(val x)(y) class B -let aSym = ClassSymbol("A", A, Some([Symbol("x")]), [Symbol("y")]) -let bSym = ClassSymbol("B", B, None, None) +let aSym = ClassSymbol("A", A, Some([Symbol("x")]), [[Symbol("y")]]) +let bSym = ClassSymbol("B", B, None, []) printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) printCode(Instantiate(ValueRef(aSym), [Arg(ValueLit(0))])) From 32f1446966f9bd15b1be5f491de2edf416c968e6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:22:25 +0800 Subject: [PATCH 460/654] fixup! Apply suggestions from code review --- .../hkmc2/codegen/ReflectionInstrumenter.scala | 7 +++++-- hkmc2/shared/src/test/mlscript-compile/Block.mls | 14 +++++++------- .../src/test/mlscript/block-staging/PrintCode.mls | 4 ++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e27e8e8b29..49d3d14475 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -118,7 +118,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n transformParamsOpt(paramsOpt): paramsOpt => auxParams.map(ps => transformParamList(ps)).collectApply: auxParams => tuple(auxParams): auxParams => - blockCtor("ClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(k) + blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(k) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(k) case _: NoSymbol => @@ -126,6 +126,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n case _: TempSymbol | _: VarSymbol => val name = scope.allocateOrGetName(sym) blockCtor("Symbol", Ls(toValue(name)), symName)(k) + // preserve names to builtin symbols + case _: BuiltinSymbol => + blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) // FIXME: there may be more types of symbols that need to be renamed during staging case _ => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(k) @@ -281,7 +284,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n case Define(v: ValDefn, rest) => // TODO: only allow ValDefn inside ctors transformBlock(rest): p => - transformOption(v.tsym.owner, transformSymbol(_, N, "test")): owner => + transformOption(v.tsym.owner, transformSymbol(_)): owner => transformSymbol(v.sym): sym => transformPath(v.rhs): rhs => blockCtor("ValDefn", Ls(owner, sym, rhs)): v => diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 37a18e7174..dfe7c3095b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -19,8 +19,9 @@ type ParamList = Array[Symbol] class Symbol(val name: Str) // this is so that we're able to retrieve information about the class from the symbol -class VirtualClassSymbol(val name: Str) extends Symbol(name) -class ClassSymbol(val name: Str, val value, val paramsOpt: Option[ParamList], val auxParams: Array[ParamList]) extends Symbol(name) +class ClassSymbol(val name: Str) extends Symbol(name) +class VirtualClassSymbol(val name: Str) extends ClassSymbol(name) +class ConcreteClassSymbol(val name: Str, val value, val paramsOpt: Opt[ParamList], val auxParams: Array[ParamList]) extends ClassSymbol(name) class ModuleSymbol(val name: Str, val value) extends Symbol(name) class NoSymbol() extends Symbol("$no_symbol$") class Arm(val cse: Case, val body: Block) @@ -67,8 +68,8 @@ class Path extends Result with class Defn with constructor - ValDefn(val tsym: Opt[Symbol], val sym: Symbol, val rhs: Path) - ClsLikeDefn(val sym: ClassSymbol, val methods: Array[FunDefn], val companion: Opt[ClsLikeBody]) // companion unused + ValDefn(val owner: Opt[Symbol], val sym: Symbol, val rhs: Path) + ClsLikeDefn(val sym: ConcreteClassSymbol, val methods: Array[FunDefn], val companion: Opt[ClsLikeBody]) // companion unused FunDefn(val sym: Symbol, val params: Array[ParamList], val body: Block) class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicFields: Array[[Symbol, Symbol]]) // unused @@ -110,9 +111,8 @@ fun showPath(p: Path): Str = // avoids needing to import the runtime module Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" Select(qual, name) then showPath(qual) + "." + showSymbol(name) - DynSelect(qual, fld, arrayIdx) then - if arrayIdx then showPath(qual) + ".[" + showPath(fld) + "]" - else showPath(qual) + ".(" + showPath(fld) + ")" + DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" + DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" ValueRef(l) then showSymbol(l) ValueLit(lit) then showLiteral(lit) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index ee399fa1b3..5b64bee94c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -34,8 +34,8 @@ printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) :silent class A(val x)(y) class B -let aSym = ClassSymbol("A", A, Some([Symbol("x")]), [[Symbol("y")]]) -let bSym = ClassSymbol("B", B, None, []) +let aSym = ConcreteClassSymbol("A", A, Some([Symbol("x")]), [[Symbol("y")]]) +let bSym = ConcreteClassSymbol("B", B, None, []) printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) printCode(Instantiate(ValueRef(aSym), [Arg(ValueLit(0))])) From 289f482f72e827460545577074c7b8d892065ada Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:23:43 +0800 Subject: [PATCH 461/654] add todo --- .../src/test/mlscript/block-staging/StageSymbols.mls | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 9e963b8e9c..8181c2a0bd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -83,3 +83,12 @@ staged module M with //│ > let tmp1 //│ > tmp1 = new Function_1 //│ > tmp1 + +// TODO: these need to be printed, somehow: +:noModuleCheck +let x = M."f_instr"().body.rest.rhs.cls.l.value +let y = M."g_instr"().body.rest.rhs.cls.l.value +//│ x = class Function$ +//│ y = class Function$ +(new x).call(2) +//│ = 2 From c1bb6ae1af6a1507fdb2185f2c63ad126540064b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:57:51 +0800 Subject: [PATCH 462/654] update printing --- .../src/test/mlscript-compile/Block.mls | 9 ++++- .../test/mlscript/block-staging/Functions.mls | 40 ++++++++----------- .../test/mlscript/block-staging/PrintCode.mls | 9 ++--- .../mlscript/block-staging/StageSymbols.mls | 19 ++++++--- .../mlscript/block-staging/SymbolRenaming.mls | 8 ++-- 5 files changed, 44 insertions(+), 41 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index dfe7c3095b..b268169681 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -125,7 +125,12 @@ fun showArgs(args: Array[Arg]) = fun showResult(r: Result): Str = if r is Path then showPath(r) - Call(fun_, args) then showPath(fun_) + "(" + showArgs(args) + ")" + Call(fun_, args) and + // use infix to avoid parsing + and - as taking a unary argument + args is [lhs, rhs] and fun_ is + ValueRef(Symbol("+")) then showArg(lhs) + " + " + showArg(rhs) + ValueRef(Symbol("-")) then showArg(lhs) + " - " + showArg(rhs) + else showPath(fun_) + "(" + showArgs(args) + ")" Instantiate(cls, args) then "new " + showPath(cls) + (if args.length != 0 then "(" + showArgs(args) + ")" else "") Tuple(elems) then "[" + showArgs(elems) + "]" _ then "" @@ -183,7 +188,7 @@ fun showBlock(b) = + showRestBlock(rest) Scoped(symbols, rest) then // initialize symbols - symbols.map(showSymbol).map("let " + _).join("\n") + showRestBlock(rest) + "let {" + symbols.map(showSymbol).join(", ") + "}" + showRestBlock(rest) End() then "()" _ then "" + b diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index cf2f50efd1..625179e3ef 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -12,7 +12,7 @@ staged module Expressions with //│ ╙── ^ //│ > fun ctor_() = () //│ > fun lit() = -//│ > let x +//│ > let {x} //│ > x = 42 //│ > x @@ -42,19 +42,18 @@ staged module Expressions with //│ > fun ctor_() = () //│ > fun lit() = 1 //│ > fun assign() = -//│ > let x -//│ > let y +//│ > let {x, y} //│ > x = 42 //│ > y = x //│ > y //│ > fun tup1() = [1, 2] //│ > fun tup2() = [1, x1] //│ > fun dynsel() = -//│ > let tmp +//│ > let {tmp} //│ > tmp = [1] //│ > tmp.(0) //│ > fun match1() = -//│ > let scrut +//│ > let {scrut} //│ > scrut = 9 //│ > if scrut is //│ > Bool then 1 @@ -62,9 +61,7 @@ staged module Expressions with //│ > Int then 3 //│ > else 0 //│ > fun match2() = -//│ > let a -//│ > let element1_ -//│ > let element0_ +//│ > let {a, element1_, element0_} //│ > if x1 is //│ > [] then 1 //│ > [_, _] then @@ -126,7 +123,7 @@ staged module Arguments with //│ > x = 1 //│ > x //│ > fun g(x) = -//│ > let tmp +//│ > let {tmp} //│ > tmp = new Function_ //│ > tmp @@ -143,11 +140,11 @@ staged module OtherBlocks with else 0 //│ > fun ctor_() = () //│ > fun scope() = -//│ > let a +//│ > let {a} //│ > a = 1 //│ > OtherBlocks.scope.locally(a) //│ > fun breakAndLabel() = -//│ > let scrut +//│ > let {scrut} //│ > scrut = 1 //│ > if scrut is //│ > 2 then 0 @@ -173,9 +170,9 @@ staged module ClassFunctions with //│ > fun ctor_() = //│ > class InnerClass() with //│ > fun f() = -//│ > let tmp +//│ > let {tmp} //│ > tmp = Arguments.f_gen(1) -//│ > +(1, tmp) +//│ > 1 + tmp //│ > fun g() = InnerClass.f() :todo @@ -204,13 +201,13 @@ staged module M with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),Some(End()),End()))),End()). +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). //│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.204: let x = 1 +//│ ║ l.201: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.204: let x = 1 +//│ ║ l.201: let x = 1 //│ ╙── ^ //│ > fun ctor_() = () //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -222,13 +219,10 @@ staged module NestedFunDefn with fun g() = 1 g() fun g(x, y) = x || y -//│ ═══[COMPILATION ERROR] Cannot determine if short_or is a function object. +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Unreachable(Rest of abortive match) //│ > fun ctor_() = () //│ > fun f() = g() -//│ > fun g(x, y) = -//│ > let tmp -//│ > tmp = Function__(false, y) -//│ > Runtime.short_or(x, tmp) +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. // TODO: force enable :ftc to desugar Label and Break staged module M with @@ -238,7 +232,7 @@ staged module M with else 2 //│ > fun ctor_() = () //│ > fun f() = -//│ > let scrut +//│ > let {scrut} //│ > scrut = 1 //│ > if scrut is //│ > 0 then 2 @@ -253,7 +247,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.253: fun g() = {1 : 2} +//│ ║ l.247: fun g() = {1 : 2} //│ ╙── ^ //│ > fun ctor_() = //│ > x = C(1) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 5b64bee94c..ce17b2b328 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -56,8 +56,7 @@ printCode(ClsLikeDefn(bSym, [], None)) //│ > class B printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), Return(ValueRef(Symbol("x")), true)))) -//│ > let x -//│ > let y +//│ > let {x, y} //│ > x = 4.2 //│ > x @@ -77,7 +76,7 @@ printCode(Scoped([Symbol("y")], Match( [Arm(Lit(1), Return(ValueLit(1), false))], Some(Return(ValueLit(1), false)), Return(ValueRef(Symbol("y")), false)))) -//│ > let y +//│ > let {y} //│ > if 1 is //│ > 1 then 1 //│ > else 1 @@ -88,7 +87,7 @@ printCode(Scoped([Symbol("y")], Match( [Arm(Lit(1), Assign(Symbol("y"), ValueLit(1), Return(ValueRef(Symbol("y")), false)))], Some(Assign(Symbol("y"), ValueLit(2), Return(ValueRef(Symbol("y")), false))), End()))) -//│ > let y +//│ > let {y} //│ > if 1 is //│ > 1 then //│ > y = 1 @@ -107,7 +106,7 @@ printCode(Scoped([Symbol("y")], Match( ))], Some(Assign(Symbol("y"), ValueLit(3), Return(ValueRef(Symbol("y")), false))), End()))) -//│ > let y +//│ > let {y} //│ > if 1 is //│ > 1 then //│ > if 2 is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 9e963b8e9c..68d9939cb6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -31,9 +31,7 @@ staged module D with //│ > A.f_gen() //│ > B.f() //│ > fun matching() = -//│ > let tmp -//│ > let scrut -//│ > let scrut1 +//│ > let {tmp, scrut, scrut1} //│ > scrut = 1 //│ > if scrut is //│ > Int then @@ -65,7 +63,7 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.66: fun g()() = 1 +//│ ║ l.64: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > fun ctor_() = () //│ > fun g()() = 1 @@ -76,10 +74,19 @@ staged module M with fun g()() = 1 //│ > fun ctor_() = () //│ > fun f() = -//│ > let tmp +//│ > let {tmp} //│ > tmp = new Function_ //│ > tmp //│ > fun g() = -//│ > let tmp1 +//│ > let {tmp1} //│ > tmp1 = new Function_1 //│ > tmp1 + +// TODO: these need to be printed, somehow: +:noModuleCheck +let x = M."f_instr"().body.rest.rhs.cls.l.value +let y = M."g_instr"().body.rest.rhs.cls.l.value +//│ x = class Function$ +//│ y = class Function$ +(new x).call(2) +//│ = 2 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 4c5acbda1c..5d90233cfd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -8,8 +8,7 @@ staged module TempVariable with x //│ > fun ctor_() = () //│ > fun f() = -//│ > let x -//│ > let x1 +//│ > let {x, x1} //│ > x1 staged module DupeFunctionName with @@ -25,8 +24,7 @@ staged module Selection with C(1).x is Bool //│ > fun ctor_() = () //│ > fun f(x) = -//│ > let scrut -//│ > let tmp +//│ > let {scrut, tmp} //│ > x.call() //│ > tmp = C(1) //│ > scrut = tmp.x @@ -40,6 +38,6 @@ staged module DupeClass with //│ > fun ctor_() = //│ > class C(y) //│ > fun f() = -//│ > let tmp +//│ > let {tmp} //│ > tmp = DupeClass.C(1) //│ > tmp.y From 11e8d943b1dd475846f327f1698ffcabeb2d9eab Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 00:30:58 +0800 Subject: [PATCH 463/654] rerun tests --- hkmc2/shared/src/test/mlscript/block-staging/Functions.mls | 4 ++-- .../shared/src/test/mlscript/block-staging/SymbolRenaming.mls | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 625179e3ef..a5875a3acf 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -61,7 +61,7 @@ staged module Expressions with //│ > Int then 3 //│ > else 0 //│ > fun match2() = -//│ > let {a, element1_, element0_} +//│ > let {element1_, element0_, a} //│ > if x1 is //│ > [] then 1 //│ > [_, _] then @@ -201,7 +201,7 @@ staged module M with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:scrut, tmp:tmp),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). //│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ║ l.201: let x = 1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 5d90233cfd..6c37c3d3e6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -24,7 +24,7 @@ staged module Selection with C(1).x is Bool //│ > fun ctor_() = () //│ > fun f(x) = -//│ > let {scrut, tmp} +//│ > let {tmp, scrut} //│ > x.call() //│ > tmp = C(1) //│ > scrut = tmp.x From b9f4b089d51322964ff1fcf14c611d7756247abb Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 00:34:45 +0800 Subject: [PATCH 464/654] rerun tests --- .../test/mlscript/block-staging/Functions.mls | 45 ++++++++----------- .../mlscript/block-staging/SymbolRenaming.mls | 2 +- .../src/test/mlscript/lifter/ClassInFun.mls | 2 +- 3 files changed, 21 insertions(+), 28 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index ddf6052df8..338ecd9d6e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -8,7 +8,7 @@ staged module Rebinding with x //│ > fun ctor_() = () //│ > fun lit() = -//│ > let x +//│ > let {x} //│ > x = 42 //│ > x //│ > Map(2) { @@ -42,19 +42,18 @@ staged module Expressions with //│ > fun ctor_() = () //│ > fun lit() = 1 //│ > fun assign() = -//│ > let x -//│ > let y +//│ > let {x, y} //│ > x = 42 //│ > y = x //│ > y //│ > fun tup1() = [1, 2] //│ > fun tup2() = [1, x] //│ > fun dynsel() = -//│ > let tmp +//│ > let {tmp} //│ > tmp = [1] //│ > tmp.(0) //│ > fun match1() = -//│ > let scrut +//│ > let {scrut} //│ > scrut = 9 //│ > if scrut is //│ > Bool then 1 @@ -62,9 +61,7 @@ staged module Expressions with //│ > Int then 3 //│ > else 0 //│ > fun match2() = -//│ > let element1_ -//│ > let element0_ -//│ > let a +//│ > let {element1_, element0_, a} //│ > if x is //│ > [] then 1 //│ > [_, _] then @@ -220,7 +217,7 @@ staged module Arguments with //│ > x = 1 //│ > x //│ > fun g(x) = -//│ > let tmp +//│ > let {tmp} //│ > tmp = new Function_ //│ > tmp //│ > Map(3) { @@ -254,11 +251,11 @@ staged module OtherBlocks with else 0 //│ > fun ctor_() = () //│ > fun scope() = -//│ > let a +//│ > let {a} //│ > a = 1 //│ > OtherBlocks.scope.locally(a) //│ > fun breakAndLabel() = -//│ > let scrut +//│ > let {scrut} //│ > scrut = 1 //│ > if scrut is //│ > 2 then 0 @@ -324,9 +321,9 @@ staged module ClassFunctions with //│ > fun ctor_() = //│ > class InnerClass() with //│ > fun f() = -//│ > let tmp +//│ > let {tmp} //│ > tmp = Arguments.f(1) -//│ > +(1, tmp) +//│ > 1 + tmp //│ > fun g() = InnerClass.f() //│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } //│ > Map(2) { @@ -391,13 +388,13 @@ staged module Continue with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:scrut, tmp:tmp),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). //│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.391: let x = 1 +//│ ║ l.388: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.391: let x = 1 +//│ ║ l.388: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -415,10 +412,10 @@ staged module NestedFunDefn with staged module M with fun f() = if 1 is //│ ╔══[PARSE ERROR] Expected start of expression in this position; found end of input instead -//│ ║ l.416: fun f() = if 1 is +//│ ║ l.413: fun f() = if 1 is //│ ╙── ^ //│ ╔══[COMPILATION ERROR] Unrecognized pattern split (‹erroneous syntax›). -//│ ║ l.416: fun f() = if 1 is +//│ ║ l.413: fun f() = if 1 is //│ ╙── ^ //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Throw(Lit(StrLit(This code cannot be run as its compilation yielded an error.))) //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' @@ -427,9 +424,9 @@ staged module M with 1 then 1 + 1 + 1 else 1 + 1 + 1 //│ ╔══[COMPILATION ERROR] Unexpected infix use of keyword 'then' here -//│ ║ l.426: 0 then 1 + 1 + 1 +//│ ║ l.423: 0 then 1 + 1 + 1 //│ ║ ^^^^^^^^^^^^^^^^ -//│ ║ l.427: 1 then 1 + 1 + 1 +//│ ║ l.424: 1 then 1 + 1 + 1 //│ ╙── ^^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. @@ -441,7 +438,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.441: fun g() = {1 : 2} +//│ ║ l.438: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -452,11 +449,7 @@ staged module Spread with //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) //│ > fun ctor_() = () //│ > fun f() = -//│ > let element0_ -//│ > let scrut -//│ > let tmp -//│ > let x -//│ > let middleElements +//│ > let {middleElements, element0_, scrut, tmp, x} //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > if scrut is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 54bf09cca7..b5b0341539 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -26,7 +26,7 @@ staged module Selection with C(1).x is Bool //│ > fun ctor_() = () //│ > fun f(x) = -//│ > let {tmp, scrut} +//│ > let {scrut, tmp} //│ > x.call() //│ > tmp = C(1) //│ > scrut = tmp.x diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index 3074610cb7..ce7354f244 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -157,8 +157,8 @@ f().foo() //│ }; //│ define Good⁰ as class Good¹ { //│ private val Good$cap⁰; -//│ private val x¹; //│ private val y²; +//│ private val x¹; //│ private val scope0$cap⁰; //│ constructor Good² { //│ set scope0$cap⁰ = scope0$cap; From c165abe531781c3ef0b18f1b8b3df082cb98aabc Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 01:34:54 +0800 Subject: [PATCH 465/654] WIP: take into account printing parameters within a class --- .../codegen/ReflectionInstrumenter.scala | 3 +- .../src/test/mlscript-compile/Block.mls | 232 +++++++++--------- .../test/mlscript/block-staging/PrintCode.mls | 5 + .../test/mlscript/block-staging/Syntax.mls | 2 +- 4 files changed, 126 insertions(+), 116 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 49d3d14475..11a7f620a5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -82,8 +82,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n // linking functions defined in MLscipt def fnPrintCode(p: Path)(k: Block): Block = + val printCodeFun = blockMod("Printer").selSN("class").selSN("default").selSN("printCode") // discard result, we only care about side effect - blockCall("printCode", Ls(p))(_ => k) + call(printCodeFun, Ls(p))(_ => k) def fnConcat(p1: Path, p2: Path, symName: String = "concat")(k: Path => Block): Block = blockCall("concat", Ls(p1, p2), symName)(k) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index cab3f6b4e5..a9108b88c6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -94,117 +94,121 @@ fun concat(b1: Block, b2: Block) = if b1 is fun indent(s: Str) = s.replaceAll("\n", "\n ") -fun showLiteral(l: Literal) = - if l is - undefined then "undefined" - null then "null" - Str then "\"" + l.toString() + "\"" - else l.toString() - -fun showSymbol(s: Symbol) = if s.name is - "runtime" then "Runtime" - // FIXME: this is a hack for local symbols, and will fail if global symbols contain them, like the generated classes of :ftc. - else s.name.replaceAll("$", "_") - -fun showPath(p: Path): Str = - if p is - // avoids needing to import the runtime module - Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" - Select(qual, name) then showPath(qual) + "." + showSymbol(name) - DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" - DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" - ValueRef(l) then showSymbol(l) - ValueLit(lit) then showLiteral(lit) - -fun showArg(arg: Arg) = - showPath(arg.value) - -fun showArgs(args: Array[Arg]) = - args.map(showArg).join(", ") - -fun showResult(r: Result): Str = - if r is - Path then showPath(r) - Call(fun_, args) and - // use infix to avoid parsing + and - as taking a unary argument - args is [lhs, rhs] and fun_ is - ValueRef(Symbol("+")) then showArg(lhs) + " + " + showArg(rhs) - ValueRef(Symbol("-")) then showArg(lhs) + " - " + showArg(rhs) - else showPath(fun_) + "(" + showArgs(args) + ")" - Instantiate(cls, args) then "new " + showPath(cls) + (if args.length != 0 then "(" + showArgs(args) + ")" else "") - Tuple(elems) then "[" + showArgs(elems) + "]" - _ then "" - -// Case (match arm patterns) -fun showCase(c) = - if c is - Lit(l) then showLiteral(l) - Cls(cls, p) then showSymbol(cls) + - if isPrimitiveType(cls) then "" - else showParamsOpt(cls.paramsOpt) // it seems we only need the arity, printing the parameter names is unnecessary - Tup(len) then "[" + Array(len).fill("_").join(", ") + "]" - _ then "" - -fun showArm(a) = - showCase(a.cse) + " then" + (if a.body is Return then " " else "\n ") + indent(showBlock(a.body)) - -fun showParams(p: ParamList) = - "(" + p.map(showSymbol(_)).join(", ") + ")" - -fun showParamsOpt(p) = - if p is - Some(s) then showParams(s) - None then "" - -fun showParamList(ps: Array[ParamList]) = - ps.map(showParams).join("") - -fun showDefn(d: Defn): Str = - if d is - FunDefn(sym, ps, body) then - "fun " + showSymbol(sym) + showParamList(ps) + " =" + - (if body is Return | End then " " else "\n ") + indent(showBlock(body)) - ClsLikeDefn(sym, methods, _) then - "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) - + indent((if methods is [] then "" else " with\n") + methods.map(showDefn).join("\n")) - // TODO: used to represent assignments in constructors, which still need some adjustments - ValDefn(owner, sym, rhs) then - "val " + showSymbol(sym) + " = " + showPath(rhs) - _ then "" - -fun showBlock(b) = - if b is - Assign(lhs, rhs, rest) then - (if lhs is NoSymbol then "" else showSymbol(lhs) + " = ") - + showResult(rhs) + showRestBlock(rest) - Define(d, rest) then - showDefn(d) + showRestBlock(rest) - Return(res, _) then - showResult(res) - Match(scrut, arms, dflt, rest) then - "if " + showPath(scrut) + " is" - + indent("\n" + arms.map(showArm).join("\n")) - + if dflt is Some(db) then indent("\nelse" + indent((if db is Return then " " else "\n") + showBlock(db))) else "" - + showRestBlock(rest) - Scoped(symbols, rest) then - // initialize symbols - "let {" + symbols.map(showSymbol).join(", ") + "}" + showRestBlock(rest) - End() then "()" - _ then "" + b - -// removes trailing newline -fun showRestBlock(b : Block): Str = - if b is End then "" else "\n" + showBlock(b) - -fun show(x) = - if x is - Symbol then showSymbol(x) - Path then showPath(x) - Result then showResult(x) - Case then showCase(x) - Defn then showDefn(x) - Block then showBlock(x) - else - "" - -fun printCode(x) = print(show(x)) \ No newline at end of file +class Printer(val owner: Opt[Class]) with + fun showLiteral(l: Literal) = + if l is + undefined then "undefined" + null then "null" + Str then "\"" + l.toString() + "\"" + else l.toString() + + fun showSymbol(s: Symbol) = if s.name is + "runtime" then "Runtime" + // FIXME: this is a hack for local symbols, and will fail if global symbols contain them, like the generated classes of :ftc. + else s.name.replaceAll("$", "_") + + fun showPath(p: Path): Str = + if p is + // avoids needing to import the runtime module + Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" + Select(qual, name) and + qual is ValueRef(sym) and owner is Some(owner) and sym == owner then showSymbol(name) + else showPath(qual) + "." + showSymbol(name) + DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" + DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" + ValueRef(l) then showSymbol(l) + ValueLit(lit) then showLiteral(lit) + + fun showArg(arg: Arg) = + showPath(arg.value) + + fun showArgs(args: Array[Arg]) = + args.map(showArg(_)).join(", ") + fun showResult(r: Result): Str = + if r is + Path then showPath(r) + Call(fun_, args) and + // use infix to avoid parsing + and - as taking a unary argument + args is [lhs, rhs] and fun_ is + ValueRef(Symbol("+")) then showArg(lhs) + " + " + showArg(rhs) + ValueRef(Symbol("-")) then showArg(lhs) + " - " + showArg(rhs) + else showPath(fun_) + "(" + showArgs(args) + ")" + Instantiate(cls, args) then "new " + showPath(cls) + (if args.length != 0 then "(" + showArgs(args) + ")" else "") + Tuple(elems) then "[" + showArgs(elems) + "]" + _ then "" + + // Case (match arm patterns) + fun showCase(c) = + if c is + Lit(l) then showLiteral(l) + Cls(cls, p) then showSymbol(cls) + + if isPrimitiveType(cls) then "" + else showParamsOpt(cls.paramsOpt) // it seems we only need the arity, printing the parameter names is unnecessary + Tup(len) then "[" + Array(len).fill("_").join(", ") + "]" + _ then "" + + fun showArm(a) = + showCase(a.cse) + " then" + (if a.body is Return then " " else "\n ") + indent(showBlock(a.body)) + + fun showParams(p: ParamList) = + "(" + p.map(showSymbol(_)).join(", ") + ")" + + fun showParamsOpt(p) = + if p is + Some(s) then showParams(s) + None then "" + + fun showParamList(ps: Array[ParamList]) = + ps.map(showParams(_)).join("") + fun showDefn(d: Defn): Str = + if d is + FunDefn(sym, ps, body) then + "fun " + showSymbol(sym) + showParamList(ps) + " =" + + (if body is Return | End then " " else "\n ") + indent(showBlock(body)) + ClsLikeDefn(sym, methods, _) then + "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + + indent((if methods is [] then "" else " with\n") + methods.map(showDefn(_)).join("\n")) + // TODO: used to represent assignments in constructors, which still need some adjustments + ValDefn(owner, sym, rhs) then + "val " + showSymbol(sym) + " = " + showPath(rhs) + _ then "" + + fun showBlock(b) = + if b is + Assign(lhs, rhs, rest) then + (if lhs is NoSymbol then "" else showSymbol(lhs) + " = ") + + showResult(rhs) + showRestBlock(rest) + Define(d, rest) then + showDefn(d) + showRestBlock(rest) + Return(res, _) then + showResult(res) + Match(scrut, arms, dflt, rest) then + "if " + showPath(scrut) + " is" + + indent("\n" + arms.map(showArm(_)).join("\n")) + + if dflt is Some(db) then indent("\nelse" + indent((if db is Return then " " else "\n") + showBlock(db))) else "" + + showRestBlock(rest) + Scoped(symbols, rest) then + // initialize symbols + "let {" + symbols.map(showSymbol).join(", ") + "}" + showRestBlock(rest) + End() then "()" + _ then "" + b + + // removes trailing newline + fun showRestBlock(b : Block): Str = + if b is End then "" else "\n" + showBlock(b) + + fun show(x) = + if x is + Symbol then showSymbol(x) + Path then showPath(x) + Result then showResult(x) + Case then showCase(x) + Defn then showDefn(x) + Block then showBlock(x) + else + "" + fun printCode(x) = + print(show(x)) + +module Printer with + val default = Printer(None) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index ce17b2b328..2e0741804c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -7,6 +7,8 @@ import "../../mlscript-compile/Option.mls" open Block open Option +fun printCode(x) = Printer.default.printCode(x) + printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false))) //│ > fun f(x) = 1 @@ -119,3 +121,6 @@ printCode(Scoped([Symbol("y")], Match( //│ > else //│ > y = 3 //│ > y + +Printer(Some(aSym)).printCode(Select(ValueRef(aSym), Symbol("x"))) +//│ > x diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 590abbe822..dc1cab92a2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -26,7 +26,7 @@ staged module A //│ constructor { //│ let tmp, tmp1; //│ set tmp = A².ctor$_instr﹖(); -//│ set tmp1 = Block⁰.printCode﹖(tmp); +//│ set tmp1 = Block⁰.Printer﹖.class﹖.default﹖.printCode﹖(tmp); //│ runtime⁰.Unit﹖ //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { From 5f63b5d955c7876e9d63f45dc919bd1cdf00db71 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 01:41:16 +0800 Subject: [PATCH 466/654] formatting --- .../scala/hkmc2/codegen/ReflectionInstrumenter.scala | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index f62478be57..1436ecf569 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -31,7 +31,6 @@ extension [A, B](ls: Iterable[(A => B) => B]) k(head :: tail) )(f) - extension [A](xs: Ls[Context => ((A, Context) => Block) => Block]) def chainContext(using ctx: Context)(k: (Ls[A], Context) => Block): Block = xs.foldRight((ctx: Context) => (k: (Ls[A], Context) => Block) => k(Nil, ctx))((head, tail) => @@ -67,16 +66,16 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans // helpers for constructing Block - def assign(using State)(res: Result, symName: Str = "tmp")(k: Path => Block): Block = + def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = // TODO: skip assignment if res: Path? val sym = new TempSymbol(N, symName) Scoped(Set(sym), Assign(sym, res, k(sym.asPath))) - def tuple(using State)(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + def tuple(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = assign(Tuple(false, elems.map(asArg)), symName)(k) def ctor(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - assign(Instantiate(false, cls, args.map(asArg)), symName)(k) + assign(Instantiate(false, cls, args.map(asArg)), symName)(k) def call(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = assign(Call(fun, args.map(asArg))(isMlsFun, false, false), symName)(k) @@ -118,7 +117,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans stagingCtx.getCache(sym).map(cachedK(_, stagingCtx)).getOrElse: sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => - transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(cachedK) + // no need to perform caching for redirecting call + transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(k) // avoid name collision case _: TempSymbol => val name = scope.allocateOrGetName(sym) From 521d20b2c6c1db86b0a3bbba6e176d1cab931148 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 02:33:26 +0800 Subject: [PATCH 467/654] Revert "fix renaming for staging Select" This reverts commit b8570acbd05ca9bc16be7a27e5bfe64d396364f2. --- .../codegen/ReflectionInstrumenter.scala | 6 ++- .../src/test/mlscript-compile/Block.mls | 4 +- .../test/mlscript/block-staging/Functions.mls | 21 +++++----- .../mlscript/block-staging/StageSymbols.mls | 38 +++++++++++++++++-- .../mlscript/block-staging/SymbolRenaming.mls | 15 +++++++- 5 files changed, 67 insertions(+), 17 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 1436ecf569..a87947a4f7 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -133,6 +133,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) + // FIXME: hack to patch in staging for returning the object Unit. + case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil) case _ => raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() @@ -196,7 +198,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans blockCtor("ValueLit", Ls(l), "lit")(k(_, ctx)) case s @ Select(p, Tree.Ident(name)) => transformPath(p): (x, ctx) => - blockCtor("Select", Ls(x, toValue(name)))(k(_, ctx)) + s.symbol match + case S(sym) => transformSymbol(sym, S(s))(using ctx)((sym, ctx) => blockCtor("Select", Ls(x, sym), "sel")(k(_, ctx))) + case N => blockCtor("Symbol", Ls(toValue(name)))(sym => blockCtor("Select", Ls(x, sym), "sel")(k(_, ctx))) case DynSelect(qual, fld, arrayIdx) => transformPath(qual): (x, ctx) => transformPath(fld)(using ctx): (y, ctx) => diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index b198f4589e..95be006261 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -72,7 +72,7 @@ class Result extends CachedHash with class Path extends Result with constructor - Select(val qual: Path, val name: Str) + Select(val qual: Path, val name: Symbol) DynSelect(val qual: Path, val fld: Path, val arrayIdx: Bool) // is arrayIdx used? ValueRef(val l: Symbol) ValueLit(val lit: Literal) @@ -121,7 +121,7 @@ fun showPath(p: Path): Str = if p is // avoids needing to import the runtime module Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" - Select(qual, name) then showPath(qual) + "." + name + Select(qual, name) then showPath(qual) + "." + showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" ValueRef(l) then showSymbol(l) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 338ecd9d6e..e21d8b24d8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -357,8 +357,9 @@ staged module ClassFunctions with staged module RetUnit with fun f() = () //│ > fun ctor_() = () -//│ > fun f() = Runtime.Unit +//│ > fun f() = () //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } // name collision class A() @@ -388,13 +389,13 @@ staged module Continue with let x = 1 while x == 1 do set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:tmp, tmp:scrut),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:scrut, tmp:tmp),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). //│ Try enabling :ftc. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.388: let x = 1 +//│ ║ l.389: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.388: let x = 1 +//│ ║ l.389: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -412,10 +413,10 @@ staged module NestedFunDefn with staged module M with fun f() = if 1 is //│ ╔══[PARSE ERROR] Expected start of expression in this position; found end of input instead -//│ ║ l.413: fun f() = if 1 is +//│ ║ l.414: fun f() = if 1 is //│ ╙── ^ //│ ╔══[COMPILATION ERROR] Unrecognized pattern split (‹erroneous syntax›). -//│ ║ l.413: fun f() = if 1 is +//│ ║ l.414: fun f() = if 1 is //│ ╙── ^ //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Throw(Lit(StrLit(This code cannot be run as its compilation yielded an error.))) //│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' @@ -424,9 +425,9 @@ staged module M with 1 then 1 + 1 + 1 else 1 + 1 + 1 //│ ╔══[COMPILATION ERROR] Unexpected infix use of keyword 'then' here -//│ ║ l.423: 0 then 1 + 1 + 1 +//│ ║ l.424: 0 then 1 + 1 + 1 //│ ║ ^^^^^^^^^^^^^^^^ -//│ ║ l.424: 1 then 1 + 1 + 1 +//│ ║ l.425: 1 then 1 + 1 + 1 //│ ╙── ^^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. @@ -438,7 +439,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.438: fun g() = {1 : 2} +//│ ║ l.439: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -449,7 +450,7 @@ staged module Spread with //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) //│ > fun ctor_() = () //│ > fun f() = -//│ > let {middleElements, element0_, scrut, tmp, x} +//│ > let {scrut, tmp, x, middleElements, element0_} //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > if scrut is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index eab0202a1c..ec5687a022 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -113,12 +113,12 @@ staged module M with //│ > class E //│ > fun f() = //│ > let {x} -//│ > x = D.E +//│ > x = D.E1 //│ > x = A.B.C //│ > A.B.C(2) //│ > M.E //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(4) { +//│ > Map(7) { //│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { //│ > name: 'E', //│ > value: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, @@ -143,6 +143,12 @@ staged module M with //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } //│ > }, +//│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { +//│ > name: 'E1', +//│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, //│ > [class A2] { //│ > B: [class B2] { //│ > C: [Function], @@ -156,6 +162,24 @@ staged module M with //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } //│ > }, +//│ > [class B2] { +//│ > C: [Function: C] { class: [Function] }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'B' ] +//│ > } => ModuleSymbol { +//│ > name: 'B', +//│ > value: [class B2] { +//│ > C: [Function], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > }, +//│ > [Function: C] { +//│ > class: [class C3] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, //│ > [class M2] { //│ > E: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > 'cache$M': FunCache { cache: [Map] }, @@ -177,7 +201,7 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.178: fun g()() = 1 +//│ ║ l.202: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > fun ctor_() = () //│ > fun g()() = 1 @@ -230,3 +254,11 @@ let x = M."f_instr"().body.rest.rhs.cls.l.value let y = M."g_instr"().body.rest.rhs.cls.l.value //│ x = class Function$ //│ y = class Function$ + +:todo creating symbols for objects +staged module RetUnit with + fun f() = () +//│ > fun ctor_() = () +//│ > fun f() = () +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 54bf09cca7..18e92992b4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -20,13 +20,26 @@ staged module DupeFunctionName with class C(val x) +staged module NoSymbol with + fun f(g) = + g() + g() + () +//│ > fun ctor_() = () +//│ > fun f(g) = +//│ > g() +//│ > g() +//│ > () +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } + staged module Selection with fun f(x) = x.call() C(1).x is Bool //│ > fun ctor_() = () //│ > fun f(x) = -//│ > let {tmp, scrut} +//│ > let {scrut, tmp} //│ > x.call() //│ > tmp = C(1) //│ > scrut = tmp.x From c0bab5bfb43aac19c737279eb5b6881bbd85ee77 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 7 Apr 2026 04:22:28 +0800 Subject: [PATCH 468/654] finish S-METHOD. remove some printing in reflectioninstrumeter.scala for easier debugging in this branch --- .../codegen/ReflectionInstrumenter.scala | 24 +- .../mlscript-compile/SpecializeHelpers.mls | 233 ++++-- .../test/mlscript/block-staging/ShapeProp.mls | 770 +++++------------- 3 files changed, 361 insertions(+), 666 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 1df9e74a73..30635faae3 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -396,11 +396,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans // initialize cache for the module def cacheDecl(rest: Block) = - cacheEntries.collectApply: cacheTups => - tuple(cacheTups): tup => - this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => - assign(Instantiate(false, helperMod("FunCache"), Ls(Arg(N, map)))): funCache => - Define(ValDefn(cacheTsym, cacheSym, funCache)(N), rest) + this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Nil): map => + assign(Instantiate(false, helperMod("FunCache"), Ls(Arg(N, map)))): funCache => + Define(ValDefn(cacheTsym, cacheSym, funCache)(N), rest) def generatorMapDecl(rest: Block) = generatorEntries.collectApply: defs => @@ -408,24 +406,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => Define(ValDefn(generatorMapTsym, generatorMapSym, map)(N), rest) - // TODO: remove this. only for testing - def debugCont(rest: Block) = - val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") - // val renderFun = State.runtimeSymbol.asPath.selSN("render") - // val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) - - // assign(options): options => - call(cachePath.selSN("toString"), Nil, false): str => - call(printFun, Ls(str), false): _ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest - // used for staging classes inside modules val newCompanion = companion.copy( methods = helperMethods.flatten, - ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), + ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(End()))), publicFields = companion.publicFields ) val newClsLikeDefn = defn.copy(companion = S(newCompanion))(defn.configOverride) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 929f35cbc9..a8e5564d45 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -22,28 +22,53 @@ fun wrapScoped(symbols, block) = else if block is Scoped(oldSymbols, rest) then Scoped([...symbols, ...oldSymbols], rest) else Scoped(symbols, block) -class Ctx(val ctx: Map[String, ShapeSet], val allocs: Array[Block.Symbol]) with +fun showCtxPath(p) = if p is // FIXME + Select(qual, name) then showCtxPath(qual) + "." + name + DynSelect(qual, fld, _) then showCtxPath(qual) + ".(" + showCtxPath(fld) + ")" + ValueRef(l) and + l is + ClassSymbol(n, v, _, _) then "ClassSymbol(" + n + ")" + ModuleSymbol(n, v) then "ModuleSymbol(" + n + ")" + Symbol(n) then "Symbol(" + n + ")" + ValueLit(lit) then "Lit(" + lit.toString() + ")" + +class Ctx( + val ctx: Map[String, ShapeSet], + val allocs: Array[Block.Symbol], + val currentThis: Option[Block.ClassSymbol], + val thisShape: ShapeSet, + val cache: FunCache +) with fun get(path) = - let ps = showPath(path) + let ps = showCtxPath(path) if ctx.has(ps) then Some(ctx.get(ps)) else None - fun clone = Ctx(new Map(ctx), allocs) + fun clone = Ctx(new Map(ctx), allocs, currentThis, thisShape, cache) fun add(path, ss) = - let ps = showPath(path) + let ps = showCtxPath(path) if ctx.has(ps) then ctx.set(ps, union(ctx.get(ps), ss)) else ctx.set(ps, ss) this module Ctx with - fun empty = Ctx(new Map(), mut []) + fun empty() = Ctx(new Map(), mut [], None, mkBot(), new FunCache(new Map())) + fun withCache(cache) = Ctx(new Map(), mut [], None, mkBot(), cache) + +class FunCache(val cache: Map[String, [Block.FunDefn, ShapeSet]]) with + fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None + fun setFun(k, v) = cache.set(k, v); v + fun toString() = cache.values().map((d, _, _) => showDefn(d.0)).toArray().join("\n") + +module FunCache with + fun empty() = FunCache(new Map()) -fun sov(v): ShapeSet = +fun sov(v): ShapeSet = // compute the shape of a value if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then mkLit(v) else if Array.isArray(v) then mkArr(v.map(sov)) - else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then + else if v !== undefined and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then let meta = v.constructor.(Symbols.definitionMetadata) let clsName = meta.1 let paramsOpt = meta.2 @@ -53,30 +78,36 @@ fun sov(v): ShapeSet = let classSymbol = ClassSymbol(clsName, v.constructor, symParams, []) let args = if paramsOpt is undefined then [] - else paramsOpt.map(p => if p is null then mkDyn() else sov(v.(p))) + else paramsOpt.map(p => sov(v.(p))) mkClass(classSymbol, args) + else throw Error("sov on unknown value" + v.toString()) -fun sop(ctx, p): ShapeSet = - if ctx.get(p) is Some(s) then s +// shape of path +fun sop(ctx, p): ShapeSet = if ctx.get(p) is + Some(s) then s else if p is - Select(qual, sym) then - selSet(sop(ctx, qual), mkLit(sym.name)) + Select(qual, name) then + if ctx.currentThis is Some(t) and qual is ValueRef(sym) and sym is t then + selSet(ctx.thisShape, mkLit(name)) + else + selSet(sop(ctx, qual), mkLit(name)) DynSelect(qual, fld, _) then selSet(sop(ctx, qual), sop(ctx, fld)) ValueLit(lit) then mkLit(lit) ValueRef(l) then mkDyn() -fun sor(ctx, r) = if r is +// shape of result: return [blk, res, s] +// where blk is the block needed to construct the result res (End() if not needed) and s is the shape +fun sor(ctx, r) = if r is Path and - let s = sop(ctx, r) - staticSet(s) and val2path(valOfSet(s), ctx.allocs) is [blk, res] then [blk, res, s] - else - [End(), r, s] - Instantiate(cls, args) then + let s = sop(ctx, r) + // If a path has a statically known shape, then just replace it with the known value + staticSet(s) and val2path(valOfSet(s), ctx.allocs) is [blk, res] then [blk, res, s] + else [End(), r, s] + Instantiate(cls, args) then // FIXME: propagate through the constructor as well let clsSymb = if cls is - ValueRef(symb) and symb is ClassSymbol then - symb - Select(_, symb) and symb is ClassSymbol then symb + ValueRef(symb) and symb is ClassSymbol then symb // class defined globally + Select(_, symb) and symb is ClassSymbol then symb // class defined in a module else throw Error("Instantiate with non-ClassSymbol in shape propagation: " + cls.toString()) [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] @@ -84,12 +115,13 @@ fun sor(ctx, r) = if r is fun lit(l) = [End(), ValueLit(l), mkLit(l)] let argShapes = args.map((a, _, _) => sop(ctx, a.value)) if f is - Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) + Select(Select(ValueRef(Symbol("runtime")), "Tuple"), "get") // runtime.Tuple.get is generated by the compiler in the IR and args is [Arg(scrut), Arg(litArg)] then let recovered = DynSelect(scrut, litArg, false) [End(), recovered, sop(ctx, recovered)] - Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then + Select(Select(ValueRef(Symbol("runtime")), "Tuple"), "slice") then throw Error("runtime.Tuple.slice not handled in shape propagation") + // Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ClassSymbol then // FIXME ValueRef(clsSymb) and clsSymb is ClassSymbol then [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] ValueRef(symb) and // built-in or top-level @@ -115,24 +147,26 @@ fun sor(ctx, r) = if r is "!==" then lit(l1 !== l2) "&&" then lit(l1 && l2) "||" then lit(l1 || l2) - Select(ValueRef(ModuleSymbol(name, value)), Symbol(symb)) and + else [End(), r, mkDyn()] + Select(ValueRef(ModuleSymbol(name, value)), fld) and let mapPropName = "generatorMap$" + name let cachePropName = "cache$" + name let genMap = value.(mapPropName) not (genMap is undefined) and - let f = genMap.get(symb) - not (f is Runtime.Unit) then // staged function - let res = f(...argShapes) + let f_gen = genMap.get(fld) + not (f_gen is Runtime.Unit) then // staged function + let res = f_gen(...argShapes) [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] - else [End(), r, mkDyn()] + else + throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") argShapes.every(staticSet) then // non staged function and params known - let f = value.(symb) - let evaluated = f(...argShapes.map(valOfSet)) + let f_imp = value.(fld) + let evaluated = f_imp(...argShapes.map(valOfSet)) let evaluated_path = val2path(evaluated, ctx.allocs) [evaluated_path.0, evaluated_path.1, sov(evaluated)] else [End(), r, mkDyn()] // non staged function and params unknown - Select(ValueRef(symb), Symbol(f)) then + Select(ValueRef(symb), f) then // class method call fun isStaged(c) = let actualClass = getActualClass(c) let clsName = actualClass.(Symbols.definitionMetadata).1 @@ -152,32 +186,78 @@ fun sor(ctx, r) = if r is let splitted = fsplit(pss) let knownMap = splitted.0 let unkShape = splitted.1 - let outSym = Symbol("__tmp__") - ctx.allocs.push(outSym) - - let armsRet = [...knownMap.entries()].map(entry => - let C_i = entry.0 - let ss_i = entry.1 - let genMapName = "generatorMap$" + C_i.name - let genMap = getActualClass(C_i.value).(genMapName) - let f_gen = genMap.get(f) - let generated = f_gen(ss_i)(...argShapes) - let retSym = generated.0 - let retShape = generated.1 - [Arm(Cls(C_i, ValueRef(symb)), Assign(outSym, Call(Select(ValueRef(symb), retSym), args), End())), retShape] - ) - - let armsAcc = armsRet.map(x => x.0) - let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) - let dfltRet = if unkShape.isEmpty() then [None, totalStagedRetShape] else - [Some(Assign(outSym, Call(Select(ValueRef(symb), Symbol(f)), args), End())), union(totalStagedRetShape, mkDyn())] - - let dflt = dfltRet.0 - let totalRetShape = dfltRet.1 - - [Match(ValueRef(symb), armsAcc, dflt, End()), ValueRef(outSym), totalRetShape] - else - [End(), r, mkDyn()] + if knownMap.size == 0 then + [End(), r, mkDyn()] + else + let wrapperName = specializeName(f, [ [pss, ...argShapes] ]) + if ctx.cache.getFun(wrapperName) is + Some(x) and + staticSet(x.1) then + let v2p = val2path(valOfSet(x.1), ctx.allocs) + [v2p.0, v2p.1, x.1] + else if ctx.cache.getFun(wrapperName) is + Some(x) then + [End(), Call(ValueRef(Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), x.1] + else throw Error("FIXME") + None then + let recvSym = Symbol("recv") + let argSymRefs = args.map((a, i, _) => Symbol("arg" + i)) + let ps = [ [recvSym, ...argSymRefs] ] + if knownMap.size == 1 and unkShape.isEmpty() then + let entry = [...knownMap.entries()].0 + let C_i = entry.0 + let ss_i = entry.1 + let actualClass = getActualClass(C_i.value) + let clsName = actualClass.(Symbols.definitionMetadata).1 + let genMapName = "generatorMap$" + clsName + let genMap = actualClass.(genMapName) + let f_gen = genMap.get(f) + let generated = f_gen(ss_i)(...argShapes) + let retSym = generated.0 + let retShape = generated.1 + let body = if staticSet(retShape) then + let allocs = mut [] + let v2p = val2path(valOfSet(retShape), allocs) + wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) + else + Return(Call(Select(ValueRef(recvSym), retSym), argSymRefs.map(s => Arg(ValueRef(s)))), false) + ctx.cache.setFun(wrapperName, [FunDefn(Symbol(wrapperName), ps, body), retShape]) + if staticSet(retShape) then + let v2p = val2path(valOfSet(retShape), ctx.allocs) + [v2p.0, v2p.1, retShape] + else + [End(), Call(ValueRef(Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), retShape] + else + let armsRet = [...knownMap.entries()].map(entry => + let C_i = entry.0 + let ss_i = entry.1 + let actualClass = getActualClass(C_i.value) + let clsName = actualClass.(Symbols.definitionMetadata).1 + let genMapName = "generatorMap$" + clsName + let genMap = actualClass.(genMapName) + let f_gen = genMap.get(f) + let generated = f_gen(ss_i)(...argShapes) + let retSym = generated.0 + let retShape = generated.1 + let callRes = Call(Select(ValueRef(recvSym), retSym), argSymRefs.map(s => Arg(ValueRef(s)))) + [Arm(Cls(C_i, ValueRef(recvSym)), Return(callRes, false)), retShape] + ) + let armsAcc = armsRet.map(x => x.0) + let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) + let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else + let callRes = Call(Select(ValueRef(recvSym), f), argSymRefs.map(s => Arg(ValueRef(s)))) + [Some(Return(callRes, false)), mkDyn()] + let dflt = dfltRet.0 + let totalRetShape = union(totalStagedRetShape, dfltRet.1) + let matchBody = Match(ValueRef(recvSym), armsAcc, dflt, End()) + ctx.cache.setFun(wrapperName, [FunDefn(Symbol(wrapperName), ps, matchBody), totalRetShape]) + if staticSet(totalRetShape) then + let v2p = val2path(valOfSet(totalRetShape), ctx.allocs) + [v2p.0, v2p.1, totalRetShape] + else + [End(), Call(ValueRef(Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), totalRetShape] + else throw Error("unknown call in sor: " + r.toString()) + else throw Error("unknown result in sor: " + r.toString()) fun prop(ctx, b) = if b is End then [b, mkBot()] @@ -186,7 +266,7 @@ fun prop(ctx, b) = if b is Scoped(symbols, rest) then symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] - let newCtx = Ctx(new Map(ctx.ctx), newAllocs) + let newCtx = Ctx(new Map(ctx.ctx), newAllocs, ctx.currentThis, ctx.thisShape, ctx.cache) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] Assign(x, r, b) and @@ -231,7 +311,6 @@ fun prop(ctx, b) = if b is // TODO: debug only; remove this fun propStub(ctx, body) = - // console.log("Calling the propStub now which performs no shape propagation") [body, mkDyn()] fun buildShapeName(s: Shape): Str = @@ -240,8 +319,10 @@ fun buildShapeName(s: Shape): Str = Lit(lit) and lit is Str then "Str" + lit Lit(lit) then "Lit" + lit.toString() Arr(shapes) then "Arr_" + shapes.map(buildShapeName).join("_") + "_end" - Class(sym, params) then sym.name + "_" + params.map(buildShapeName).join("_") - else "Unk" + Class(sym, params) and params.length == + 0 then sym.name + else sym.name + "_" + params.map(buildShapeName).join("_") + else throw Error("unknown shape when building shape name" + s.toString()) fun buildShapeSetName(ss: ShapeSet): Str = let vals = ss.values() @@ -253,34 +334,28 @@ fun specializeName(funName, shapes) = else funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("__") fun specialize(cache, funName, dflt, shapes, useStub) = - // replace function symbol in block definition to new name let newName = specializeName(funName, shapes) if cache.getFun(newName) is - Some(x) then [x.0.sym, x.1] + Some(x) then [x.0.sym.name, x.1] None and let defn = dflt() defn is FunDefn(Symbol(_), ps, body) then - let ctx = Ctx.empty let isMethod = shapes.length > ps.length // TODO: clean up let paramShapes = if isMethod then shapes.slice(1) else shapes - ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) - if isMethod do + let ctx = if isMethod then let clsSymb = shapes.(0).(0).values().0.sym - // print(newName, "shapes", shapes.(0).(0)) - // ctx.add(ValueRef(clsSymb), shapes.(0).(0)) + Ctx(new Map(), mut [], Some(clsSymb), shapes.(0).(0), cache) + else Ctx.withCache(cache) + ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) - let propFun = if useStub then propStub else prop + let propFun = prop let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) - if staticSet(res.1) do + let finalBody = if staticSet(res.1) then let allocs = mut [] let v2p = val2path(valOfSet(res.1), allocs) - bodyWithScoped = wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) - let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, bodyWithScoped), res.1]) - [entry.0.sym, entry.1] - -class FunCache(val cache: Map[String, [FunDefn, ShapeSet]]) with - fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None - // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions - fun setFun(k, v) = cache.set(k, v); v - fun toString() = cache.values().map((d, _, _) => showDefn(d.0)).toArray().join("\n") + wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) + else bodyWithScoped + let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, finalBody), res.1]) + [entry.0.sym.name, entry.1] + else throw Error("cache error") \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e5fa4fe2f5..6d9fb6a0fa 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -1,56 +1,18 @@ :js :staging :noFreeze -:shapeProp +import "../../mlscript-compile/ShapeSet.mls" +open ShapeSet module NonStaged with fun sq(x) = x * x + staged module Staged with fun sq(x) = x * x fun fib(n) = if n is 1 then 1 2 then 1 n then fib(n - 1) + fib(n - 2) -//│ > fun ctor_() = -//│ > () -//│ > fun sq(x) = *(x, x) -//│ > fun fib(n1) = -//│ > let n -//│ > let tmp -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > if n1 is -//│ > 1 then 1 -//│ > 2 then 1 -//│ > else -//│ > n = n1 -//│ > tmp = n - 1 -//│ > tmp1 = Staged.fib(tmp) -//│ > tmp2 = n - 2 -//│ > tmp3 = Staged.fib(tmp2) -//│ > tmp1 + tmp3 -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'sq' => [Function: sq_gen], -//│ > 'fib' => [Function: fib_gen] -//│ > } -//│ > Map(1) { -//│ > [class Staged] { -//│ > 'cache$Staged': FunCache { cache: [Map] }, -//│ > 'generatorMap$Staged': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'sq' => [Function: sq_gen], -//│ > 'fib' => [Function: fib_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'Staged', -//│ > value: [class Staged] { -//│ > 'cache$Staged': [FunCache], -//│ > 'generatorMap$Staged': [Map] -//│ > } -//│ > } -//│ > } staged module Test with fun f(x, y) = x + y + 1 - 1 @@ -68,169 +30,89 @@ staged module Test with fun test2(n) = let dyn = pyth(n, 2) fib(dyn * 2) -//│ > fun ctor_() = -//│ > () -//│ > fun f(x, y) = -//│ > let tmp -//│ > let tmp1 -//│ > tmp = x + y -//│ > tmp1 = tmp + 1 -//│ > tmp1 - 1 -//│ > fun fib(n1) = -//│ > let tmp2 -//│ > let tmp3 -//│ > let tmp4 -//│ > let tmp5 -//│ > let n -//│ > if n1 is -//│ > 1 then 1 -//│ > 2 then 1 -//│ > else -//│ > n = n1 -//│ > tmp2 = n - 1 -//│ > tmp3 = Test.fib(tmp2) -//│ > tmp4 = n - 2 -//│ > tmp5 = Test.fib(tmp4) -//│ > tmp3 + tmp5 -//│ > fun pyth(x1, y1) = -//│ > let tmp6 -//│ > let tmp7 -//│ > tmp6 = NonStaged.sq(x1) -//│ > tmp7 = NonStaged.sq(y1) -//│ > tmp6 + tmp7 -//│ > fun pyth2(x2, y2) = -//│ > let tmp8 -//│ > let tmp9 -//│ > tmp8 = Staged.sq(x2) -//│ > tmp9 = Staged.sq(y2) -//│ > tmp8 + tmp9 + +Test.test_gen() +Test.test2_gen(mkDyn()) +print(Test."cache$Test") +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ ╔══[COMPILATION ERROR] Module 'Test' does not contain member 'test_gen' +//│ ║ l.34: Test.test_gen() +//│ ╙── ^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ ╔══[COMPILATION ERROR] Module 'Test' does not contain member 'test2_gen' +//│ ║ l.35: Test.test2_gen(mkDyn()) +//│ ╙── ^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: traverse (Resolver.scala:349) +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Test. +//│ ║ l.36: print(Test."cache$Test") +//│ ╙── ^^^^ //│ > fun test() = 20 //│ > fun f_Lit2_Lit2(x, y) = 4 -//│ > fun fib_Lit4(n1) = 3 -//│ > fun fib_Lit3(n1) = 2 -//│ > fun fib_Lit2(n1) = 1 -//│ > fun fib_Lit1(n1) = 1 -//│ > fun pyth_Lit2_Lit4(x1, y1) = 20 -//│ > fun test2(n2) = +//│ > fun fib_Lit4(n) = 3 +//│ > fun fib_Lit3(n) = 2 +//│ > fun fib_Lit2(n) = 1 +//│ > fun fib_Lit1(n) = 1 +//│ > fun pyth_Lit2_Lit4(x, y) = 20 +//│ > fun test2(n) = //│ > let dyn //│ > let tmp10 -//│ > dyn = Test.pyth_Dyn_Lit2(n2, 2) +//│ > dyn = Test.pyth_Dyn_Lit2(n, 2) //│ > tmp10 = *(dyn, 2) //│ > Test.fib(tmp10) -//│ > fun pyth_Dyn_Lit2(x1, y1) = +//│ > fun pyth_Dyn_Lit2(x, y) = //│ > let tmp6 //│ > let tmp7 -//│ > tmp6 = NonStaged.sq(x1) +//│ > tmp6 = NonStaged.sq(x) //│ > tmp7 = 4 //│ > tmp6 + tmp7 -//│ > Map(7) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'fib' => [Function: fib_gen], -//│ > 'pyth' => [Function: pyth_gen], -//│ > 'pyth2' => [Function: pyth2_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] -//│ > } -//│ > Map(3) { -//│ > [class Test] { -//│ > 'cache$Test': FunCache { cache: [Map] }, -//│ > 'generatorMap$Test': Map(7) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'fib' => [Function: fib_gen], -//│ > 'pyth' => [Function: pyth_gen], -//│ > 'pyth2' => [Function: pyth2_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'Test', -//│ > value: [class Test] { -//│ > 'cache$Test': [FunCache], -//│ > 'generatorMap$Test': [Map] -//│ > } -//│ > }, -//│ > [class NonStaged] { -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NonStaged' ] -//│ > } => ModuleSymbol { -//│ > name: 'NonStaged', -//│ > value: [class NonStaged] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > }, -//│ > [class Staged] { -//│ > 'cache$Staged': FunCache { cache: [Map] }, -//│ > 'generatorMap$Staged': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'sq' => [Function: sq_gen], -//│ > 'fib' => [Function: fib_gen] -//│ > }, -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'Staged' ] -//│ > } => ModuleSymbol { -//│ > name: 'Staged', -//│ > value: [class Staged] { -//│ > 'cache$Staged': [FunCache], -//│ > 'generatorMap$Staged': [Map], -//│ > [Symbol(mlscript.definitionMetadata)]: [Array] -//│ > } -//│ > } -//│ > } - +//│ > fun fib(n) = +//│ > let tmp2 +//│ > let tmp3 +//│ > let tmp4 +//│ > let n +//│ > let tmp5 +//│ > if n is +//│ > 1 then 1 +//│ > 2 then 1 +//│ > else +//│ > n = n +//│ > tmp5 = n - 1 +//│ > tmp2 = Test.fib(tmp5) +//│ > tmp3 = n - 2 +//│ > tmp4 = Test.fib(tmp3) +//│ > tmp2 + tmp4 class C(val x) staged module TestIf with fun f(x) = if x is - C(2) then "correct" - else "wrong" + C(2) then "C(2)" + C then "C" + else "else" fun test() = - f(new C(2)) -//│ > fun ctor_() = -//│ > () -//│ > fun f(x) = -//│ > let arg_C_0_ -//│ > if x is -//│ > C then -//│ > arg_C_0_ = x.x -//│ > if arg_C_0_ is -//│ > 2 then "correct" -//│ > else "wrong" -//│ > else "wrong" -//│ > fun test() = -//│ > let tmp -//│ > tmp = new C(2) -//│ > TestIf.f_C_Lit2(tmp) -//│ > fun f_C_Lit2(x) = -//│ > let arg_C_0_ -//│ > arg_C_0_ = x.x -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'test' => [Function: test_gen] -//│ > } -//│ > Map(2) { -//│ > [Function: C] { -//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > } => ClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > [class TestIf] { -//│ > 'cache$TestIf': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestIf': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'test' => [Function: test_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'TestIf', -//│ > value: [class TestIf] { -//│ > 'cache$TestIf': [FunCache], -//│ > 'generatorMap$TestIf': [Map] -//│ > } -//│ > } -//│ > } + f(C(2)) + f(C(3)) + f(2) + +TestIf.test_gen() +print(TestIf."cache$TestIf") +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ ╔══[COMPILATION ERROR] Module 'TestIf' does not contain member 'test_gen' +//│ ║ l.100: TestIf.test_gen() +//│ ╙── ^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: traverse (Resolver.scala:349) +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestIf. +//│ ║ l.101: print(TestIf."cache$TestIf") +//│ ╙── ^^^^^^ +//│ > fun test() = "else" +//│ > fun f_C_Lit2(x) = "C(2)" +//│ > fun f_C_Lit3(x) = "C" +//│ > fun f_Lit2(x) = "else" :noSanityCheck class C(val n) @@ -245,20 +127,31 @@ staged module TestIf2 with fun test() = f(C(2)) fun test2(dyn) = f(C(dyn)) fun test3() = f(0) -//│ > fun ctor_() = -//│ > () -//│ > fun f(x) = -//│ > let tmp -//│ > let y -//│ > if x is -//│ > C then -//│ > y = x.n -//│ > tmp = Runtime.Unit -//│ > y + 1 -//│ > else -//│ > y = 0 -//│ > tmp = Runtime.Unit -//│ > 1 + +TestIf2.test_gen() +TestIf2.test2_gen(mkDyn()) +TestIf2.test3_gen() +print(TestIf2."cache$TestIf2") +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test_gen' +//│ ║ l.131: TestIf2.test_gen() +//│ ╙── ^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test2_gen' +//│ ║ l.132: TestIf2.test2_gen(mkDyn()) +//│ ╙── ^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test3_gen' +//│ ║ l.133: TestIf2.test3_gen() +//│ ╙── ^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: traverse (Resolver.scala:349) +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestIf2. +//│ ║ l.134: print(TestIf2."cache$TestIf2") +//│ ╙── ^^^^^^^ //│ > fun test() = 3 //│ > fun f_C_Lit2(x) = 3 //│ > fun test2(dyn) = @@ -273,186 +166,6 @@ staged module TestIf2 with //│ > y + 1 //│ > fun test3() = 1 //│ > fun f_Lit0(x) = 1 -//│ > Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen], -//│ > 'test3' => [Function: test3_gen] -//│ > } -//│ > Map(3) { -//│ > [Function: C] { -//│ > class: [class C2] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > } => ClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} }, -//│ > [class TestIf2] { -//│ > 'cache$TestIf2': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestIf2': Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen], -//│ > 'test3' => [Function: test3_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'TestIf2', -//│ > value: [class TestIf2] { -//│ > 'cache$TestIf2': [FunCache], -//│ > 'generatorMap$TestIf2': [Map] -//│ > } -//│ > } -//│ > } - -class C(val x) -class D() -module NonStagedStaticClass with - fun f() = C(D()) -staged module TestClass with - fun f() = new C(D()) - fun g() = C(new D()) - fun id(x) = x - fun test() = id(f()) - fun test2() = NonStagedStaticClass.f() -//│ > fun ctor_() = -//│ > () -//│ > fun f() = -//│ > let obj_1 -//│ > let obj_2 -//│ > obj_1 = new D() -//│ > obj_2 = new C(obj_1) -//│ > obj_2 -//│ > fun g() = -//│ > let obj_3 -//│ > let obj_4 -//│ > obj_3 = new D() -//│ > obj_4 = new C(obj_3) -//│ > obj_4 -//│ > fun id(x1) = x1 -//│ > fun test() = -//│ > let obj_9 -//│ > let obj_10 -//│ > obj_9 = new D() -//│ > obj_10 = new C(obj_9) -//│ > obj_10 -//│ > fun id_C_D_(x1) = -//│ > let obj_7 -//│ > let obj_8 -//│ > obj_7 = new D() -//│ > obj_8 = new C(obj_7) -//│ > obj_8 -//│ > fun test2() = -//│ > let obj_13 -//│ > let obj_14 -//│ > obj_13 = new D() -//│ > obj_14 = new C(obj_13) -//│ > obj_14 -//│ > Map(6) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen], -//│ > 'id' => [Function: id_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] -//│ > } -//│ > Map(4) { -//│ > [Function: D] { -//│ > class: [class D] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > } => ClassSymbol { -//│ > name: 'D', -//│ > value: [Function: D] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] -//│ > }, -//│ > [Function: C] { -//│ > class: [class C4] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > } => ClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > [class TestClass] { -//│ > 'cache$TestClass': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestClass': Map(6) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen], -//│ > 'id' => [Function: id_gen], -//│ > 'test' => [Function: test_gen], -//│ > 'test2' => [Function: test2_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'TestClass', -//│ > value: [class TestClass] { -//│ > 'cache$TestClass': [FunCache], -//│ > 'generatorMap$TestClass': [Map] -//│ > } -//│ > }, -//│ > [class NonStagedStaticClass] { -//│ > [Symbol(mlscript.definitionMetadata)]: [ 'class', 'NonStagedStaticClass' ] -//│ > } => ModuleSymbol { -//│ > name: 'NonStagedStaticClass', -//│ > value: [class NonStagedStaticClass] { -//│ > [Symbol(mlscript.definitionMetadata)]: [Array] -//│ > } -//│ > } -//│ > } - -staged module TestTupleMatching with - fun count(x) = if x - is [_] then "one" - is [_, _] then "two" - is [_, _, _] then "three" - else "more than three" - fun test() = count([1, 2]) -//│ > fun ctor_() = -//│ > () -//│ > fun count(x) = -//│ > let element2_ -//│ > let element1_ -//│ > let element0_ -//│ > if x is -//│ > [_] then -//│ > element0_ = x.(0) -//│ > "one" -//│ > [_, _] then -//│ > element0_ = x.(0) -//│ > element1_ = x.(1) -//│ > "two" -//│ > [_, _, _] then -//│ > element0_ = x.(0) -//│ > element1_ = x.(1) -//│ > element2_ = x.(2) -//│ > "three" -//│ > else "more than three" -//│ > fun test() = "two" -//│ > fun count_Arr_Lit1_Lit2_end(x) = "two" -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'count' => [Function: count_gen], -//│ > 'test' => [Function: test_gen] -//│ > } -//│ > Map(1) { -//│ > [class TestTupleMatching] { -//│ > 'cache$TestTupleMatching': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestTupleMatching': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'count' => [Function: count_gen], -//│ > 'test' => [Function: test_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'TestTupleMatching', -//│ > value: [class TestTupleMatching] { -//│ > 'cache$TestTupleMatching': [FunCache], -//│ > 'generatorMap$TestTupleMatching': [Map] -//│ > } -//│ > } -//│ > } staged module TestTuple with fun first(x) = if x is @@ -464,30 +177,19 @@ staged module TestTuple with fun test(y) = let t = [10, y] first(t) + second(t) -//│ > fun ctor_() = -//│ > () -//│ > fun first(x) = -//│ > let a -//│ > let element1_ -//│ > let element0_ -//│ > if x is -//│ > [_, _] then -//│ > element0_ = x.(0) -//│ > element1_ = x.(1) -//│ > a = element0_ -//│ > a -//│ > else 0 -//│ > fun second(x1) = -//│ > let element1_1 -//│ > let element0_1 -//│ > let b -//│ > if x1 is -//│ > [_, _] then -//│ > element0_1 = x1.(0) -//│ > element1_1 = x1.(1) -//│ > b = element1_1 -//│ > b -//│ > else 0 + +TestTuple.test_gen(mkDyn()) +print(TestTuple."cache$TestTuple") +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ ╔══[COMPILATION ERROR] Module 'TestTuple' does not contain member 'test_gen' +//│ ║ l.181: TestTuple.test_gen(mkDyn()) +//│ ╙── ^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: traverse (Resolver.scala:349) +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestTuple. +//│ ║ l.182: print(TestTuple."cache$TestTuple") +//│ ╙── ^^^^^^^^^ //│ > fun test(y) = //│ > let tmp //│ > let tmp1 @@ -497,181 +199,115 @@ staged module TestTuple with //│ > tmp1 = TestTuple.second_Arr_Lit10_Dyn_end(t) //│ > tmp + tmp1 //│ > fun first_Arr_Lit10_Dyn_end(x) = 10 -//│ > fun second_Arr_Lit10_Dyn_end(x1) = +//│ > fun second_Arr_Lit10_Dyn_end(x) = +//│ > let b //│ > let element1_1 //│ > let element0_1 -//│ > let b -//│ > element0_1 = x1.(0) -//│ > element1_1 = x1.(1) +//│ > element0_1 = x.(0) +//│ > element1_1 = x.(1) //│ > b = element1_1 //│ > b -//│ > Map(4) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'first' => [Function: first_gen], -//│ > 'second' => [Function: second_gen], -//│ > 'test' => [Function: test_gen] -//│ > } -//│ > Map(1) { -//│ > [class TestTuple] { -//│ > 'cache$TestTuple': FunCache { cache: [Map] }, -//│ > 'generatorMap$TestTuple': Map(4) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'first' => [Function: first_gen], -//│ > 'second' => [Function: second_gen], -//│ > 'test' => [Function: test_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'TestTuple', -//│ > value: [class TestTuple] { -//│ > 'cache$TestTuple': [FunCache], -//│ > 'generatorMap$TestTuple': [Map] -//│ > } -//│ > } -//│ > } staged class L1() with fun call(x) = x + 2 -//│ > ctor$ shapes {Dyn()} -//│ > call shapes {Dyn()} -//│ > fun ctor_() = -//│ > () -//│ > fun call(x) = x + 2 -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'call' => [Function: call_gen] -//│ > } - - staged class L2() with fun call(x) = x staged class L3() with fun call(x) = x * 2 -//│ > ctor$ shapes {Dyn()} -//│ > call shapes {Dyn()} -//│ > fun ctor_() = -//│ > () -//│ > fun call(x) = x -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'call' => [Function: call_gen] -//│ > } -//│ > ctor$ shapes {Dyn()} -//│ > call shapes {Dyn()} -//│ > fun ctor_() = -//│ > () -//│ > fun call(x1) = *(x1, 2) -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'call' => [Function: call_gen] -//│ > } staged module M with fun twice(f, x) = f.call(f.call(x)) - fun foo(b) = twice(new L1(), 5) -//│ > call_L1___Lit5 shapes {Class(ClassSymbol("L1", fun L1 { class: class L1 { cache$L1: fun ctor_() = -//│ > () -//│ > fun call(x) = x + 2, generatorMap$L1: Map(2) {"ctor$" => fun ctor$_gen, "call" => fun call_gen} } }, Some([]), []), [])} -//│ > call_L1___Lit7 shapes {Class(ClassSymbol("L1", fun L1 { class: class L1 { cache$L1: fun ctor_() = -//│ > () -//│ > fun call(x) = x + 2, generatorMap$L1: Map(2) {"ctor$" => fun ctor$_gen, "call" => fun call_gen} } }, Some([]), []), [])} -//│ > fun ctor_() = -//│ > () -//│ > fun twice(f, x) = -//│ > let tmp -//│ > let __tmp__ -//│ > let __tmp__ -//│ > if f is -//│ > -//│ > else -//│ > __tmp__ = f.call(x) -//│ > tmp = __tmp__ -//│ > if f is -//│ > -//│ > else -//│ > __tmp__ = f.call(tmp) -//│ > __tmp__ -//│ > fun foo(b) = 9 -//│ > fun twice_L1__Lit5(f, x) = 9 -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'twice' => [Function: twice_gen], -//│ > 'foo' => [Function: foo_gen] -//│ > } -//│ > Map(2) { -//│ > [Function: L1] { -//│ > class: [class L1] { -//│ > 'cache$L1': [FunCache], -//│ > 'generatorMap$L1': [Map], -//│ > [Symbol(mlscript.definitionMetadata)]: [Array] -//│ > } -//│ > } => ClassSymbol { -//│ > name: 'L1', -//│ > value: [Function: L1] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] -//│ > }, -//│ > [class M] { -//│ > 'cache$M': FunCache { cache: [Map] }, -//│ > 'generatorMap$M': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'twice' => [Function: twice_gen], -//│ > 'foo' => [Function: foo_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } -//│ > } -//│ > } + fun pick(x, y, b) = if b then x else y + fun foo(b) = + let y = twice(new L1(), 5) + let m = pick(new L2(), new L3(), b) + twice(m, 5) + y -staged class F(val x) with - fun f(y) = this.x + y -//│ > ctor$ shapes {Dyn()} -//│ > f shapes {Dyn()} -//│ > fun ctor_(x) = -//│ > set F1.x = x -//│ > fun f(y) = F1.x + y -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [Function: F] { -//│ > class: [class F] { 'cache$F': [FunCache], 'generatorMap$F': [Map] } -//│ > } => ClassSymbol { -//│ > name: 'F1', -//│ > value: [Function: F] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } -//│ > } +M.foo_gen(mkDyn()) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'foo_gen' +//│ ║ l.226: M.foo_gen(mkDyn()) +//│ ╙── ^^^^^^^^ +//│ = ["foo", {Dyn()}] -staged module M with - fun test() = (new F(1)).f(2) -//│ > f_F_Lit1__Lit2 shapes {Class(ClassSymbol("F", fun F { class: class F { cache$F: fun ctor_(x) = -//│ > set F1.x = x -//│ > fun f(y) = F1.x + y, generatorMap$F: Map(2) {"ctor$" => fun ctor$_gen, "f" => fun f_gen} } }, Some([Symbol("x")]), []), [Lit(1)])} -//│ > fun ctor_() = -//│ > () -//│ > fun test() = +print(M."cache$M") +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: traverse (Resolver.scala:349) +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. +//│ ║ l.234: print(M."cache$M") +//│ ╙── ^ +//│ > fun foo(b) = +//│ > let y +//│ > let tmp1 +//│ > let tmp2 +//│ > let tmp3 +//│ > let m +//│ > let tmp4 +//│ > tmp1 = new L1() +//│ > y = M.twice_L1_Lit5(tmp1, 5) +//│ > tmp2 = new L2() +//│ > tmp3 = new L3() +//│ > m = M.pick_L2_L3_Dyn(tmp2, tmp3, b) +//│ > tmp4 = M.twice_Union_L2_L3_end_Lit5(m, 5) +//│ > tmp4 + y +//│ > fun twice_L1_Lit5(f, x) = 9 +//│ > fun call_L1_Lit5(recv, arg0) = 7 +//│ > fun call_L1_Lit7(recv, arg0) = 9 +//│ > fun pick_L2_L3_Dyn(x, y, b) = +//│ > let obj_1 +//│ > let obj_2 +//│ > if b is +//│ > true then +//│ > obj_1 = new L2() +//│ > obj_1 +//│ > else +//│ > obj_2 = new L3() +//│ > obj_2 +//│ > fun twice_Union_L2_L3_end_Lit5(f, x) = //│ > let tmp -//│ > let __tmp__ -//│ > tmp = new F(1) -//│ > if tmp is -//│ > F then -//│ > __tmp__ = tmp.f_F_Lit1__Lit2(2) -//│ > __tmp__ -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'test' => [Function: test_gen] -//│ > } -//│ > Map(1) { -//│ > [Function: F] { -//│ > class: [class F] { -//│ > 'cache$F': [FunCache], -//│ > 'generatorMap$F': [Map], -//│ > [Symbol(mlscript.definitionMetadata)]: [Array] -//│ > } -//│ > } => ClassSymbol { -//│ > name: 'F', -//│ > value: [Function: F] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } -//│ > } +//│ > tmp = call_Union_L2_L3_end_Lit5(f, x) +//│ > call_Union_L2_L3_end_Union_Lit5_Lit10_end(f, tmp) +//│ > fun call_Union_L2_L3_end_Lit5(recv, arg0) = +//│ > if recv is +//│ > L2 then recv.call_L2__Lit5(arg0) +//│ > L3 then recv.call_L3__Lit5(arg0) +//│ > fun call_Union_L2_L3_end_Union_Lit5_Lit10_end(recv, arg0) = +//│ > if recv is +//│ > L2 then recv.call_L2__Union_Lit5_Lit10_end(arg0) +//│ > L3 then recv.call_L3__Union_Lit5_Lit10_end(arg0) + +print(L2.class."cache$L2") +print(L3.class."cache$L3") +//│ > fun call_L2__Lit5(x) = 5 +//│ > fun call_L2__Union_Lit5_Lit10_end(x) = x +//│ > fun call_L3__Lit5(x) = 10 +//│ > fun call_L3__Union_Lit5_Lit10_end(x) = *(x, 2) + +staged class A(val x: Int) with + fun f(y: Int) = this.x + y +staged class B(val x: Int) with + fun f(y: A) = y.f(this.x) + +staged module TestThis with + fun test() = B(2).f(A(2)) + +TestThis.test_gen() +print(TestThis."cache$TestThis") +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' +//│ ║ l.295: TestThis.test_gen() +//│ ╙── ^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: traverse (Resolver.scala:349) +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. +//│ ║ l.296: print(TestThis."cache$TestThis") +//│ ╙── ^^^^^^^^ +//│ > fun test() = 4 +//│ > fun f_B_Lit2_A_Lit2(recv, arg0) = 4 + +:todo +staged class D(val x) extends B(x+1) with + val y = 1 + fun f() = 42 From 356a68fc31b2a495abe8d244a9245a30c3edb46d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 15:36:04 +0800 Subject: [PATCH 469/654] fixup! Revert "fix renaming for staging Select" --- hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index f0453b9148..cc34e765d3 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -26,7 +26,7 @@ printCode(Symbol("runtime")) //│ > internal_ //│ > Runtime -printCode(Select(ValueRef(Symbol("p")), "x")) +printCode(Select(ValueRef(Symbol("p")), Symbol("x"))) printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) //│ > p.x //│ > p.(field) From 377957f8c6067589c14cea97255a8ec85115d54e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 15:36:19 +0800 Subject: [PATCH 470/654] formatting --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index a87947a4f7..afd23d7f71 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -129,7 +129,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap(toValue(sym.nme), _, stagingCtx)) case baseSym: BaseTypeSymbol => val name = scope.allocateOrGetName(sym) - // FIXME: we want the parent path for subtyping, but it is only available for ClsLikeDefn, not ClassDef val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) @@ -264,9 +263,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans raise(ErrorReport(msg"Case.Field not supported in staged module." -> name.toLoc :: Nil)) End() - // def transformBlock(b: Block)(using Context)(k: Path => Block): Block = - // transformBlock(b)((p, _) => k(p)) - def transformBlock(b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = b match case Return(res, implct) => transformResult(res): (x, ctx) => From 3f8dc376c61bad6b161a43ac6de950d1828bfe76 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 17:03:25 +0800 Subject: [PATCH 471/654] account for class and module both being staged --- .../codegen/ReflectionInstrumenter.scala | 190 ++++++++++-------- .../test/mlscript/block-staging/Classes.mls | 73 ++++--- .../test/mlscript/block-staging/Functions.mls | 22 +- .../block-staging/StageWtihCompanion.mls | 26 +++ 4 files changed, 177 insertions(+), 134 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index afd23d7f71..62a1edce6a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -341,100 +341,114 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans FunDefn.withFreshSymbol(f.dSym.owner, stageSym, Ls(PlainParamList(Nil)), newBody)(false, f.configOverride) - override def applyBlock(b: Block): Block = b match - // TODO: assume staged classes have no companion module - // find modules with staged annotation, or classes without companion module - case Define(defn: ClsLikeDefn, rest) - if defn.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) || - defn.companion.isEmpty && defn.isym.defn.exists(_.hasStagedModifier.isDefined) => - val (sym, companion, ctor, ctorParams, methods) = defn.companion match - case S(companion) => (companion.isym, companion, companion.ctor, N, companion.methods) - case N => - if !defn.privateFields.isEmpty then - raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) - return End() - val companion = ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End()) - val ctor = Begin(defn.preCtor, defn.ctor) - (defn.sym, companion, ctor, defn.paramsOpt, defn.methods) - - val modSym = companion.isym - + def genMethod(cache: Path, classFun: Bool)(f: FunDefn, stagedPath: Path) = + val genSymName = f.sym.nme + "_gen" + val sym = BlockMemberSymbol(genSymName, Nil, false) + val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) + + // refresh parameters + val funParams = f.params.map(ps => PlainParamList(ps.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme)))))) + val params = if classFun then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: funParams else funParams + val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => + tuple(tups): args => + call(helperMod("specialize"), Ls(cache, toValue(f.sym.nme), stagedPath, args, toValue(!config.shapeProp))): res => + Return(res, false) + FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(false, f.configOverride) + + def stageMethods(modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(ctor: FunDefn, methods: Ls[FunDefn]): (Ls[FunDefn], Block => Block) = + // avoid name clash of cache and generator map for derived staged classes + // for storing specialized functions in each staged module + val cacheSym = BlockMemberSymbol(cacheNme, Nil, true) + val cacheTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(cacheNme)) + val cachePath = modSym.asPath.selSN(cacheNme) + val generatorMapSym = BlockMemberSymbol(generatorMapNme, Nil, true) + val generatorMapTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(generatorMapNme)) + + // TODO: remove generator function for ctor, we only need the staged function + val (helperMethods, cacheEntries, generatorEntries) = (ctor :: methods).map(f => + val staged = stageMethod(f) + val stagedPath = modSym.asPath.selSN(staged.sym.nme) + val gen = genMethod(cachePath, forClass)(f, stagedPath) + def cacheDebug(k: Path => Block) = + call(stagedPath, Nil): res => + // stub for the returned shape of the function + // TODO: we should call the _gen function with all arguments dynamic instead + tuple(Ls(res, toValue(1))): entry => + tuple(Ls(toValue(f.sym.nme), entry))(k) + + ( + Ls(staged, gen), + cacheDebug, + tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))) + ) + ).unzip3 + + // initialize cache for the module + def cacheDecl(rest: Block) = + cacheEntries.collectApply: cacheTups => + tuple(cacheTups): tup => + this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => + this.ctor(helperMod("FunCache"), Ls(map)): funCache => + Define(ValDefn(cacheTsym, cacheSym, funCache)(N), rest) + + def generatorMapDecl(rest: Block) = + generatorEntries.collectApply: defs => + tuple(defs): tup => + this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => + Define(ValDefn(generatorMapTsym, generatorMapSym, map)(N), rest) + + // TODO: remove this. only for testing + def debugCont(rest: Block) = + val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") + call(cachePath.selSN("toString"), Nil, false): str => + call(printFun, Ls(str), false): _ => + call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => + if symbolMapUsed + then call(printFun, Ls(symbolMapSym), false)(_ => rest) + else rest + + (helperMethods.flatten, b => cacheDecl(generatorMapDecl(debugCont(b)))) + + override def applyObjBody(companion: ClsLikeBody) = companion.isym.defn match + // staged modules + case S(defn) if defn.hasStagedModifier.isDefined => + val (sym, ctor, methods) = (companion.isym, companion.ctor, companion.methods) // avoid name clash of cache and generator map for derived staged classes - val suffix = "$" + scope.allocateOrGetName(sym) - // for storing specialized functions in each staged module + val modSym = companion.isym + val suffix = "$" + sym.nme val cacheNme = "cache" + suffix - val cacheSym = BlockMemberSymbol(cacheNme, Nil, true) - val cacheTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(cacheNme)) - val cachePath = modSym.asPath.selSN(cacheNme) val generatorMapNme = "generatorMap" + suffix - val generatorMapSym = BlockMemberSymbol(generatorMapNme, Nil, true) - val generatorMapTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(generatorMapNme)) - - def genMethod(f: FunDefn, stagedPath: Path) = - val genSymName = f.sym.nme + "_gen" - val sym = BlockMemberSymbol(genSymName, Nil, false) - val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) - - // refresh parameters - val funParams = f.params.map(ps => PlainParamList(ps.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme)))))) - val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: funParams else funParams - val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => - tuple(tups): args => - call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args, toValue(!config.shapeProp))): res => - Return(res, false) - FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(false, f.configOverride) - - val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false, N) - val (helperMethods, cacheEntries, generatorEntries) = (ctorFun :: methods).map(f => - val staged = stageMethod(f) - val stagedPath = modSym.asPath.selSN(staged.sym.nme) - val gen = genMethod(f, stagedPath) - def cacheDebug(k: Path => Block) = - call(stagedPath, Nil): res => - // stub for the returned shape of the function - tuple(Ls(res, toValue(1))): entry => - tuple(Ls(toValue(f.sym.nme), entry))(k) - - ( - Ls(staged, gen), - cacheDebug, - tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))) - ) - ).unzip3 - - // initialize cache for the module - def cacheDecl(rest: Block) = - cacheEntries.collectApply: cacheTups => - tuple(cacheTups): tup => - this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => - assign(Instantiate(false, helperMod("FunCache"), Ls(Arg(N, map)))): funCache => - Define(ValDefn(cacheTsym, cacheSym, funCache)(N), rest) - - def generatorMapDecl(rest: Block) = - generatorEntries.collectApply: defs => - tuple(defs): tup => - this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => - Define(ValDefn(generatorMapTsym, generatorMapSym, map)(N), rest) - - // TODO: remove this. only for testing - def debugCont(rest: Block) = - val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") - // val renderFun = State.runtimeSymbol.asPath.selSN("render") - // val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) - - // assign(options): options => - call(cachePath.selSN("toString"), Nil, false): str => - call(printFun, Ls(str), false): _ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest + val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(PlainParamList(Nil)), ctor)(false, N) + + val (newMethods, cont) = stageMethods(modSym, false, cacheNme, generatorMapNme)(ctorFun, methods) + companion.copy( + methods = newMethods, + ctor = Begin(companion.ctor, cont(End())), + ) + case b => super.applyObjBody(companion) + + override def applyBlock(b: Block): Block = b match + // staged classes + case Define(defn: ClsLikeDefn, rest) if defn.isym.defn.exists(_.hasStagedModifier.isDefined) => + if !defn.privateFields.isEmpty then + raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) + return End() + + // stage the companion module first + val companion = defn.companion.map(applyObjBody).getOrElse(ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End())) + + val (sym, ctor, ctorParams, methods) = (defn.sym, Begin(defn.preCtor, defn.ctor), defn.paramsOpt, defn.methods) + val modSym = companion.isym + val suffix = "$" + sym.nme + val cacheNme = "class$cache" + suffix + val generatorMapNme = "class$generatorMap" + suffix + val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("class$ctor$", Nil, false), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false, N) + val (newMethods, cont) = stageMethods(modSym, true, cacheNme, generatorMapNme)(ctorFun, methods) // used for staging classes inside modules val newCompanion = companion.copy( - methods = helperMethods.flatten, - ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), - publicFields = companion.publicFields + methods = companion.methods ++ newMethods, + ctor = Begin(companion.ctor, cont(End())), ) val newClsLikeDefn = defn.copy(companion = S(newCompanion))(defn.configOverride) Define(newClsLikeDefn, applyBlock(rest)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index a23f22c6b7..bcfbae3723 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -13,14 +13,17 @@ staged module M with //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } staged class A(val a) -//│ > fun ctor_(a) = +//│ > fun class_ctor_(a) = //│ > val a = a -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } +//│ > Map(1) { 'class$ctor$' => [Function: class$ctor$_gen] } //│ > Map(1) { //│ > [Function: A] { -//│ > class: [class A] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } +//│ > class: [class A] { +//│ > 'class$cache$A': [FunCache], +//│ > 'class$generatorMap$A': [Map] +//│ > } //│ > } => ConcreteClassSymbol { -//│ > name: 'A1', +//│ > name: 'A', //│ > value: [Function: A] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] @@ -60,14 +63,17 @@ staged module M with // :sir staged class C with fun f() = 1 -//│ > fun ctor_() = () +//│ > fun class_ctor_() = () //│ > fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(2) { +//│ > 'class$ctor$' => [Function: class$ctor$_gen], +//│ > 'f' => [Function: f_gen] +//│ > } :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.68: staged class C(x) +//│ ║ l.74: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with @@ -75,46 +81,55 @@ staged class B(val x) with staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 -//│ > fun ctor_(x) = +//│ > fun class_ctor_(x) = //│ > val x = x -//│ > fun f(y) = B1.x + y -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > fun f(y) = B.x + y +//│ > Map(2) { +//│ > 'class$ctor$' => [Function: class$ctor$_gen], +//│ > 'f' => [Function: f_gen] +//│ > } //│ > Map(1) { //│ > [Function: B] { -//│ > class: [class B] { 'cache$B': [FunCache], 'generatorMap$B': [Map] } +//│ > class: [class B] { +//│ > 'class$cache$B': [FunCache], +//│ > 'class$generatorMap$B': [Map] +//│ > } //│ > } => ConcreteClassSymbol { -//│ > name: 'B1', +//│ > name: 'B', //│ > value: [Function: B] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > } //│ > } -//│ > fun ctor_(x) = +//│ > fun class_ctor_(x) = //│ > let {tmp} //│ > tmp = x + 1 //│ > super(tmp) //│ > fun f() = 42 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > Map(2) { +//│ > 'class$ctor$' => [Function: class$ctor$_gen], +//│ > 'f' => [Function: f_gen] +//│ > } //│ > Map(2) { //│ > [Function: B] { //│ > class: [class B] { -//│ > 'cache$B': [FunCache], -//│ > 'generatorMap$B': [Map], +//│ > 'class$cache$B': [FunCache], +//│ > 'class$generatorMap$B': [Map], //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } //│ > } => ConcreteClassSymbol { -//│ > name: 'B1', +//│ > name: 'B', //│ > value: [Function: B] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, //│ > [Function: D] { //│ > class: [class D extends B] { -//│ > 'cache$D': [FunCache], -//│ > 'generatorMap$D': [Map] +//│ > 'class$cache$D': [FunCache], +//│ > 'class$generatorMap$D': [Map] //│ > } //│ > } => ConcreteClassSymbol { -//│ > name: 'D1', +//│ > name: 'D', //│ > value: [Function: D] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] @@ -128,38 +143,38 @@ staged module M with fun f() = Unstaged; Staged -//│ > fun ctor_(x) = +//│ > fun class_ctor_(x) = //│ > val x = x //│ > fun inner() = 1 //│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'class$ctor$' => [Function: class$ctor$_gen], //│ > 'inner' => [Function: inner_gen] //│ > } //│ > Map(1) { //│ > [Function: Staged] { //│ > class: [class Staged] { -//│ > 'cache$Staged': [FunCache], -//│ > 'generatorMap$Staged': [Map] +//│ > 'class$cache$Staged': [FunCache], +//│ > 'class$generatorMap$Staged': [Map] //│ > } //│ > } => ConcreteClassSymbol { -//│ > name: 'Staged1', +//│ > name: 'Staged', //│ > value: [Function: Staged] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > } //│ > } //│ > fun ctor_() = () -//│ > fun f() = ,(Unstaged, Staged1) +//│ > fun f() = ,(Unstaged, Staged) //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: Staged] { //│ > class: [class Staged] { -//│ > 'cache$Staged': [FunCache], -//│ > 'generatorMap$Staged': [Map], +//│ > 'class$cache$Staged': [FunCache], +//│ > 'class$generatorMap$Staged': [Map], //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } //│ > } => ConcreteClassSymbol { -//│ > name: 'Staged1', +//│ > name: 'Staged', //│ > value: [Function: Staged] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e21d8b24d8..e24f1d5ba0 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -412,24 +412,12 @@ staged module NestedFunDefn with :todo force enable :ftc to desugar Label and Break staged module M with fun f() = if 1 is -//│ ╔══[PARSE ERROR] Expected start of expression in this position; found end of input instead -//│ ║ l.414: fun f() = if 1 is -//│ ╙── ^ -//│ ╔══[COMPILATION ERROR] Unrecognized pattern split (‹erroneous syntax›). -//│ ║ l.414: fun f() = if 1 is -//│ ╙── ^ -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Throw(Lit(StrLit(This code cannot be run as its compilation yielded an error.))) -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' -//│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined 0 then 1 + 1 + 1 1 then 1 + 1 + 1 else 1 + 1 + 1 -//│ ╔══[COMPILATION ERROR] Unexpected infix use of keyword 'then' here -//│ ║ l.424: 0 then 1 + 1 + 1 -//│ ║ ^^^^^^^^^^^^^^^^ -//│ ║ l.425: 1 then 1 + 1 + 1 -//│ ╙── ^^^^^ -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:split_root$,false,Label(label:split_1$,false,Assign(tmp:scrut,Lit(IntLit(1)),Match(Ref(tmp:scrut,None),List((Lit(IntLit(0)),Break(label:split_1$)), (Lit(IntLit(1)),Break(label:split_1$))),Some(Break(label:split_1$)),End())),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Lit(IntLit(1))), Arg(None,Lit(IntLit(1))))),Return(Call(Ref(builtin:+,None),List(Arg(None,Ref(tmp:tmp,None)), Arg(None,Lit(IntLit(1))))),false))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). +//│ Try enabling :ftc. +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :e class C(val a) @@ -439,7 +427,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.439: fun g() = {1 : 2} +//│ ║ l.427: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -450,7 +438,7 @@ staged module Spread with //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) //│ > fun ctor_() = () //│ > fun f() = -//│ > let {scrut, tmp, x, middleElements, element0_} +//│ > let {middleElements, element0_, scrut, tmp, x} //│ > tmp = [1, 2] //│ > scrut = [1, tmp] //│ > if scrut is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls new file mode 100644 index 0000000000..fe36e3bbcf --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls @@ -0,0 +1,26 @@ +:js +:staging + +staged class M with + fun f() = 1 +staged module M with + fun g() = 2 +//│ > fun ctor_() = () +//│ > fun g() = 2 +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } +//│ > fun class_ctor_() = () +//│ > fun f() = 1 +//│ > Map(2) { +//│ > 'class$ctor$' => [Function: class$ctor$_gen], +//│ > 'f' => [Function: f_gen] +//│ > } + +staged class B +module B with + fun f() = 1 +//│ > fun class_ctor_() = () +//│ > Map(1) { 'class$ctor$' => [Function: class$ctor$_gen] } + +:expect 1 +B.f() +//│ = 1 From 1ac49a476b9a89eb955ade89e3bd4ddfd137fc14 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 17:05:59 +0800 Subject: [PATCH 472/654] Revert "add shapeProp config" This reverts commit 226c068ce896e0cb2efa06c0d476dbbd1dbc6809. We can dynamically select the instrumented functions if needed, no need to create a compiler flag. --- hkmc2/shared/src/main/scala/hkmc2/Config.scala | 2 -- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 4 ++-- hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls | 5 ++--- hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala | 2 -- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/Config.scala b/hkmc2/shared/src/main/scala/hkmc2/Config.scala index d1a50339ac..4053e7af34 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/Config.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/Config.scala @@ -24,7 +24,6 @@ case class Config( liftDefns: Opt[LiftDefns], patMatConsequentSharingThreshold: Opt[Int], stageCode: Bool, - shapeProp: Bool, target: CompilationTarget, rewriteWhileLoops: Bool, tailRecOpt: Bool, @@ -66,7 +65,6 @@ object Config: target = CompilationTarget.JS, rewriteWhileLoops = false, stageCode = false, - shapeProp = false, tailRecOpt = true, deforest = N, inlining = S(Inliner(1)), diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index afd23d7f71..9edfc85b66 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -56,7 +56,7 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = Value.Lit(l) // transform Block to Block IR so that it can be instrumented in mlscript -class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTransformer(SymbolSubst.Id): +class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(SymbolSubst.Id): // TODO: there could be a fresh scope per function body, instead of a single one for the entire program val scope = Scope.empty(Scope.Cfg.default) val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() @@ -380,7 +380,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx, Config) extends BlockTrans val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: funParams else funParams val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => tuple(tups): args => - call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args, toValue(!config.shapeProp))): res => + call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => Return(res, false) FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(false, f.configOverride) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index daa14d6468..c326bf0141 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -25,7 +25,7 @@ fun specializeName(funName, shapes) = ).join("") fun propStub(block, shapes) = [block, shapes] -fun specialize(cache, funName, dflt, shapes, useStub) = +fun specialize(cache, funName, dflt, shapes) = // replace function symbol in block definition to new name let newName = specializeName(funName, shapes) // console.log(cache.getFun(newName)) @@ -34,8 +34,7 @@ fun specialize(cache, funName, dflt, shapes, useStub) = None then let defn = dflt() if defn is FunDefn(Symbol(_), ps, _) then - let propFun = if useStub then propStub else propStub - let res = propFun(defn, shapes) + let res = propStub(defn, shapes) let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, res.0.body), res.1]) [entry.0.sym, entry.1] diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala index 193dbc4327..d7b9d83df7 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/MLsDiffMaker.scala @@ -73,7 +73,6 @@ abstract class MLsDiffMaker extends DiffMaker: val liftDefns = NullaryCommand("lift") val importQQ = NullaryCommand("qq") val stageCode = NullaryCommand("staging") - val shapeProp = NullaryCommand("shapeProp") val rewriteWhile = NullaryCommand("rewriteWhile") val noInlineOpt = NullaryCommand("noInline") val inlineThreshold = Command("inlineThreshold")(_.trim.toInt) @@ -120,7 +119,6 @@ abstract class MLsDiffMaker extends DiffMaker: patMatConsequentSharingThreshold = patMatConsequentSharingThreshold.get .orElse(Config.default.patMatConsequentSharingThreshold), stageCode = stageCode.isSet, - shapeProp = shapeProp.isSet, target = if wasm.isSet then CompilationTarget.Wasm else CompilationTarget.JS, rewriteWhileLoops = rewriteWhile.isSet, tailRecOpt = !noTailRecOpt.isSet, From c741cf745bd369d466910a6b92b7dd4f88ccef04 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 7 Apr 2026 17:13:05 +0800 Subject: [PATCH 473/654] Fix S-METHOD --- .../src/test/mlscript-compile/Shape.mls | 8 +- .../src/test/mlscript-compile/ShapeSet.mls | 8 +- .../mlscript-compile/SpecializeHelpers.mls | 32 +-- .../test/mlscript/block-staging/ShapeProp.mls | 182 +++++++++--------- 4 files changed, 114 insertions(+), 116 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 628a6dc495..66d5059905 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -2,7 +2,7 @@ import "./Block.mls" import "./Option.mls" import "./CachedHash.mls" -open Block { Literal, ClassSymbol, showSymbol, isPrimitiveType, isPrimitiveTypeOf } +open Block { Literal, ConcreteClassSymbol, showSymbol, isPrimitiveType, isPrimitiveTypeOf } open Option type Shape = Shape.Shape @@ -14,7 +14,7 @@ class Shape extends CachedHash with Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape]) - Class(val sym: ClassSymbol, val params: Array[Shape]) // TODO: track the auxParams as well + Class(val sym: ConcreteClassSymbol, val params: Array[Shape]) // TODO: track the auxParams as well fun show(s: Shape) = if s is @@ -25,11 +25,11 @@ fun show(s: Shape) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is - [Class(ClassSymbol(_, _, paramsOpt, auxParams), params), Lit(n)] and n is Str and paramsOpt is Some(paramsSymb) and + [Class(ConcreteClassSymbol(_, _, paramsOpt, auxParams), params), Lit(n)] and n is Str and paramsOpt is Some(paramsSymb) and paramsSymb.map(_.name).indexOf(n) is -1 then [] n then [params.(n)] - [Class(ClassSymbol, p), Dyn] then [Dyn()] + [Class(ConcreteClassSymbol, p), Dyn] then [Dyn()] [Dyn, Lit(n)] and n is Str then [Dyn()] n is Int then [Dyn()] diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index bf32dbeec6..2e32956553 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -5,7 +5,7 @@ import "./Predef.mls" import "./Shape.mls" import "./StrOps.mls" -open Block {ClassSymbol} +open Block {ConcreteClassSymbol} open Shape {Dyn, Lit, Arr, Class} open Predef open Option @@ -62,7 +62,7 @@ fun mkArr(shapes: Array[ShapeSet]) = .map(x => Arr(x)) |> liftMany -fun mkClass(sym: ClassSymbol, params: Array[ShapeSet]) = +fun mkClass(sym: ConcreteClassSymbol, params: Array[ShapeSet]) = params .map(_.shapeset.values().toArray()) |> prod @@ -91,7 +91,7 @@ fun valOf(s : Shape) = Dyn() then throw Error("valOf on Dyn") Lit(l) then l Arr(shapes) then shapes.map((x, _, _) => valOf(x)) - Class(ClassSymbol(name, value, paramsOpt, auxParams), params) then new! value(...params.map(valOf)) + Class(ConcreteClassSymbol(name, value, paramsOpt, auxParams), params) then new! value(...params.map(valOf)) else throw Error("Unknown shape") fun valOfSet(s : ShapeSet) = @@ -120,7 +120,7 @@ fun val2path(v, allocs) = let meta = v.constructor.(Symbols.definitionMetadata) let clsName = meta.1 let paramNames = meta.2 - let classSym = Block.ClassSymbol(clsName, undefined, None, []) // TODO: add correct Paramters to ClassSymbol + let classSym = Block.ConcreteClassSymbol(clsName, undefined, None, []) // TODO: add correct Paramters to ConcreteClassSymbol let mapped = paramNames.map((fld, _, _) => val2path(v.(fld), allocs)) let blocks = mapped.map(_.0) let paths = mapped.map(_.1) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a8e5564d45..a1f6d65747 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -23,11 +23,11 @@ fun wrapScoped(symbols, block) = else Scoped(symbols, block) fun showCtxPath(p) = if p is // FIXME - Select(qual, name) then showCtxPath(qual) + "." + name + Select(qual, Symbol(name)) then showCtxPath(qual) + "." + name DynSelect(qual, fld, _) then showCtxPath(qual) + ".(" + showCtxPath(fld) + ")" ValueRef(l) and l is - ClassSymbol(n, v, _, _) then "ClassSymbol(" + n + ")" + ConcreteClassSymbol(n, v, _, _) then "ClassSymbol(" + n + ")" ModuleSymbol(n, v) then "ModuleSymbol(" + n + ")" Symbol(n) then "Symbol(" + n + ")" ValueLit(lit) then "Lit(" + lit.toString() + ")" @@ -58,7 +58,7 @@ module Ctx with class FunCache(val cache: Map[String, [Block.FunDefn, ShapeSet]]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None fun setFun(k, v) = cache.set(k, v); v - fun toString() = cache.values().map((d, _, _) => showDefn(d.0)).toArray().join("\n") + fun toString() = cache.values().toArray().sort().map((d, _, _) => showDefn(d.0)).join("\n") module FunCache with fun empty() = FunCache(new Map()) @@ -75,7 +75,7 @@ fun sov(v): ShapeSet = // compute the shape of a value let symParams = if paramsOpt is undefined then None else Some(paramsOpt.map(p => if p is null then Symbol("") else Symbol(p))) - let classSymbol = ClassSymbol(clsName, v.constructor, symParams, []) + let classSymbol = ConcreteClassSymbol(clsName, v.constructor, symParams, []) let args = if paramsOpt is undefined then [] else paramsOpt.map(p => sov(v.(p))) @@ -86,7 +86,7 @@ fun sov(v): ShapeSet = // compute the shape of a value fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s else if p is - Select(qual, name) then + Select(qual, Symbol(name)) then if ctx.currentThis is Some(t) and qual is ValueRef(sym) and sym is t then selSet(ctx.thisShape, mkLit(name)) else @@ -115,11 +115,11 @@ fun sor(ctx, r) = if r is fun lit(l) = [End(), ValueLit(l), mkLit(l)] let argShapes = args.map((a, _, _) => sop(ctx, a.value)) if f is - Select(Select(ValueRef(Symbol("runtime")), "Tuple"), "get") // runtime.Tuple.get is generated by the compiler in the IR + Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) // runtime.Tuple.get is generated by the compiler in the IR and args is [Arg(scrut), Arg(litArg)] then let recovered = DynSelect(scrut, litArg, false) [End(), recovered, sop(ctx, recovered)] - Select(Select(ValueRef(Symbol("runtime")), "Tuple"), "slice") then + Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") // Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ClassSymbol then // FIXME ValueRef(clsSymb) and clsSymb is ClassSymbol then @@ -148,7 +148,7 @@ fun sor(ctx, r) = if r is "&&" then lit(l1 && l2) "||" then lit(l1 || l2) else [End(), r, mkDyn()] - Select(ValueRef(ModuleSymbol(name, value)), fld) and + Select(ValueRef(ModuleSymbol(name, value)), Symbol(fld)) and let mapPropName = "generatorMap$" + name let cachePropName = "cache$" + name let genMap = value.(mapPropName) @@ -156,7 +156,11 @@ fun sor(ctx, r) = if r is let f_gen = genMap.get(fld) not (f_gen is Runtime.Unit) then // staged function let res = f_gen(...argShapes) - [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), res.0), args), res.1] + if staticSet(res.1) then + let v2p = val2path(valOfSet(res.1), ctx.allocs) + [v2p.0, v2p.1, res.1] + else + [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), Symbol(res.0)), args), res.1] else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") argShapes.every(staticSet) then // non staged function and params known @@ -166,7 +170,7 @@ fun sor(ctx, r) = if r is [evaluated_path.0, evaluated_path.1, sov(evaluated)] else [End(), r, mkDyn()] // non staged function and params unknown - Select(ValueRef(symb), f) then // class method call + Select(ValueRef(symb), Symbol(f)) then // class method call fun isStaged(c) = let actualClass = getActualClass(c) let clsName = actualClass.(Symbols.definitionMetadata).1 @@ -200,7 +204,7 @@ fun sor(ctx, r) = if r is [End(), Call(ValueRef(Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), x.1] else throw Error("FIXME") None then - let recvSym = Symbol("recv") + let recvSym = Symbol("this") let argSymRefs = args.map((a, i, _) => Symbol("arg" + i)) let ps = [ [recvSym, ...argSymRefs] ] if knownMap.size == 1 and unkShape.isEmpty() then @@ -220,7 +224,7 @@ fun sor(ctx, r) = if r is let v2p = val2path(valOfSet(retShape), allocs) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) else - Return(Call(Select(ValueRef(recvSym), retSym), argSymRefs.map(s => Arg(ValueRef(s)))), false) + Return(Call(ValueRef(Symbol(retSym)), [Arg(ValueRef(recvSym)), ...argSymRefs.map(s => Arg(ValueRef(s)))]), false) ctx.cache.setFun(wrapperName, [FunDefn(Symbol(wrapperName), ps, body), retShape]) if staticSet(retShape) then let v2p = val2path(valOfSet(retShape), ctx.allocs) @@ -239,13 +243,13 @@ fun sor(ctx, r) = if r is let generated = f_gen(ss_i)(...argShapes) let retSym = generated.0 let retShape = generated.1 - let callRes = Call(Select(ValueRef(recvSym), retSym), argSymRefs.map(s => Arg(ValueRef(s)))) + let callRes = Call(ValueRef(Symbol(retSym)), [Arg(ValueRef(recvSym)), ...argSymRefs.map(s => Arg(ValueRef(s)))]) [Arm(Cls(C_i, ValueRef(recvSym)), Return(callRes, false)), retShape] ) let armsAcc = armsRet.map(x => x.0) let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else - let callRes = Call(Select(ValueRef(recvSym), f), argSymRefs.map(s => Arg(ValueRef(s)))) + let callRes = Call(Select(ValueRef(recvSym), Symbol(f)), argSymRefs.map(s => Arg(ValueRef(s)))) [Some(Return(callRes, false)), mkDyn()] let dflt = dfltRet.0 let totalRetShape = union(totalStagedRetShape, dfltRet.1) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 6d9fb6a0fa..49214dbc57 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -49,41 +49,35 @@ print(Test."cache$Test") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Test. //│ ║ l.36: print(Test."cache$Test") //│ ╙── ^^^^ -//│ > fun test() = 20 //│ > fun f_Lit2_Lit2(x, y) = 4 -//│ > fun fib_Lit4(n) = 3 -//│ > fun fib_Lit3(n) = 2 -//│ > fun fib_Lit2(n) = 1 +//│ > fun fib(n) = +//│ > let {tmp2, tmp3, tmp4, tmp5, n} +//│ > if n is +//│ > 1 then 1 +//│ > 2 then 1 +//│ > else +//│ > n = n +//│ > tmp2 = n - 1 +//│ > tmp3 = Test.fib(tmp2) +//│ > tmp4 = n - 2 +//│ > tmp5 = Test.fib(tmp4) +//│ > tmp3 + tmp5 //│ > fun fib_Lit1(n) = 1 +//│ > fun fib_Lit2(n) = 1 +//│ > fun fib_Lit3(n) = 2 +//│ > fun fib_Lit4(n) = 3 +//│ > fun pyth_Dyn_Lit2(x, y) = +//│ > let {tmp6, tmp7} +//│ > tmp6 = NonStaged.sq(x) +//│ > tmp7 = 4 +//│ > tmp6 + tmp7 //│ > fun pyth_Lit2_Lit4(x, y) = 20 +//│ > fun test() = 20 //│ > fun test2(n) = -//│ > let dyn -//│ > let tmp10 +//│ > let {dyn, tmp10} //│ > dyn = Test.pyth_Dyn_Lit2(n, 2) //│ > tmp10 = *(dyn, 2) //│ > Test.fib(tmp10) -//│ > fun pyth_Dyn_Lit2(x, y) = -//│ > let tmp6 -//│ > let tmp7 -//│ > tmp6 = NonStaged.sq(x) -//│ > tmp7 = 4 -//│ > tmp6 + tmp7 -//│ > fun fib(n) = -//│ > let tmp2 -//│ > let tmp3 -//│ > let tmp4 -//│ > let n -//│ > let tmp5 -//│ > if n is -//│ > 1 then 1 -//│ > 2 then 1 -//│ > else -//│ > n = n -//│ > tmp5 = n - 1 -//│ > tmp2 = Test.fib(tmp5) -//│ > tmp3 = n - 2 -//│ > tmp4 = Test.fib(tmp3) -//│ > tmp2 + tmp4 class C(val x) @@ -102,17 +96,17 @@ print(TestIf."cache$TestIf") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) //│ ╔══[COMPILATION ERROR] Module 'TestIf' does not contain member 'test_gen' -//│ ║ l.100: TestIf.test_gen() -//│ ╙── ^^^^^^^^^ +//│ ║ l.94: TestIf.test_gen() +//│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestIf. -//│ ║ l.101: print(TestIf."cache$TestIf") -//│ ╙── ^^^^^^ -//│ > fun test() = "else" +//│ ║ l.95: print(TestIf."cache$TestIf") +//│ ╙── ^^^^^^ //│ > fun f_C_Lit2(x) = "C(2)" //│ > fun f_C_Lit3(x) = "C" //│ > fun f_Lit2(x) = "else" +//│ > fun test() = "else" :noSanityCheck class C(val n) @@ -135,37 +129,36 @@ print(TestIf2."cache$TestIf2") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) //│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test_gen' -//│ ║ l.131: TestIf2.test_gen() +//│ ║ l.125: TestIf2.test_gen() //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) //│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test2_gen' -//│ ║ l.132: TestIf2.test2_gen(mkDyn()) +//│ ║ l.126: TestIf2.test2_gen(mkDyn()) //│ ╙── ^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) //│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test3_gen' -//│ ║ l.133: TestIf2.test3_gen() +//│ ║ l.127: TestIf2.test3_gen() //│ ╙── ^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestIf2. -//│ ║ l.134: print(TestIf2."cache$TestIf2") +//│ ║ l.128: print(TestIf2."cache$TestIf2") //│ ╙── ^^^^^^^ -//│ > fun test() = 3 +//│ > fun f_C_Dyn(x) = +//│ > let {tmp, y} +//│ > y = x.n +//│ > tmp = () +//│ > y + 1 //│ > fun f_C_Lit2(x) = 3 +//│ > fun f_Lit0(x) = 1 +//│ > fun test() = 3 //│ > fun test2(dyn) = -//│ > let tmp2 +//│ > let {tmp2} //│ > tmp2 = C(dyn) //│ > TestIf2.f_C_Dyn(tmp2) -//│ > fun f_C_Dyn(x) = -//│ > let tmp -//│ > let y -//│ > y = x.n -//│ > tmp = Runtime.Unit -//│ > y + 1 //│ > fun test3() = 1 -//│ > fun f_Lit0(x) = 1 staged module TestTuple with fun first(x) = if x is @@ -183,30 +176,26 @@ print(TestTuple."cache$TestTuple") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) //│ ╔══[COMPILATION ERROR] Module 'TestTuple' does not contain member 'test_gen' -//│ ║ l.181: TestTuple.test_gen(mkDyn()) +//│ ║ l.174: TestTuple.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestTuple. -//│ ║ l.182: print(TestTuple."cache$TestTuple") +//│ ║ l.175: print(TestTuple."cache$TestTuple") //│ ╙── ^^^^^^^^^ -//│ > fun test(y) = -//│ > let tmp -//│ > let tmp1 -//│ > let t -//│ > t = [10, y] -//│ > tmp = TestTuple.first_Arr_Lit10_Dyn_end(t) -//│ > tmp1 = TestTuple.second_Arr_Lit10_Dyn_end(t) -//│ > tmp + tmp1 //│ > fun first_Arr_Lit10_Dyn_end(x) = 10 //│ > fun second_Arr_Lit10_Dyn_end(x) = -//│ > let b -//│ > let element1_1 -//│ > let element0_1 +//│ > let {element1_1, element0_1, b} //│ > element0_1 = x.(0) //│ > element1_1 = x.(1) //│ > b = element1_1 //│ > b +//│ > fun test(y) = +//│ > let {t, tmp, tmp1} +//│ > t = [10, y] +//│ > tmp = 10 +//│ > tmp1 = TestTuple.second_Arr_Lit10_Dyn_end(t) +//│ > tmp + tmp1 staged class L1() with fun call(x) = x + 2 @@ -224,58 +213,50 @@ staged module M with twice(m, 5) + y M.foo_gen(mkDyn()) +print(M."cache$M") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'foo_gen' -//│ ║ l.226: M.foo_gen(mkDyn()) +//│ ║ l.215: M.foo_gen(mkDyn()) //│ ╙── ^^^^^^^^ -//│ = ["foo", {Dyn()}] - -print(M."cache$M") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.234: print(M."cache$M") +//│ ║ l.216: print(M."cache$M") //│ ╙── ^ +//│ > fun call_L1_Lit5(this, arg0) = 7 +//│ > fun call_L1_Lit7(this, arg0) = 9 +//│ > fun call_Union_L2_L3_end_Lit5(this, arg0) = +//│ > if this is +//│ > L2() then call_L2__Lit5(this, arg0) +//│ > L3() then call_L3__Lit5(this, arg0) +//│ > fun call_Union_L2_L3_end_Union_Lit5_Lit10_end(this, arg0) = +//│ > if this is +//│ > L2() then call_L2__Union_Lit5_Lit10_end(this, arg0) +//│ > L3() then call_L3__Union_Lit5_Lit10_end(this, arg0) //│ > fun foo(b) = -//│ > let y -//│ > let tmp1 -//│ > let tmp2 -//│ > let tmp3 -//│ > let m -//│ > let tmp4 -//│ > tmp1 = new L1() -//│ > y = M.twice_L1_Lit5(tmp1, 5) -//│ > tmp2 = new L2() -//│ > tmp3 = new L3() +//│ > let {y, tmp1, tmp2, tmp3, m, tmp4} +//│ > tmp1 = new L1 +//│ > y = 9 +//│ > tmp2 = new L2 +//│ > tmp3 = new L3 //│ > m = M.pick_L2_L3_Dyn(tmp2, tmp3, b) //│ > tmp4 = M.twice_Union_L2_L3_end_Lit5(m, 5) //│ > tmp4 + y -//│ > fun twice_L1_Lit5(f, x) = 9 -//│ > fun call_L1_Lit5(recv, arg0) = 7 -//│ > fun call_L1_Lit7(recv, arg0) = 9 //│ > fun pick_L2_L3_Dyn(x, y, b) = -//│ > let obj_1 -//│ > let obj_2 +//│ > let {obj_1, obj_2} //│ > if b is //│ > true then -//│ > obj_1 = new L2() +//│ > obj_1 = new L2 //│ > obj_1 -//│ > else -//│ > obj_2 = new L3() +//│ > else +//│ > obj_2 = new L3 //│ > obj_2 +//│ > fun twice_L1_Lit5(f, x) = 9 //│ > fun twice_Union_L2_L3_end_Lit5(f, x) = -//│ > let tmp +//│ > let {tmp} //│ > tmp = call_Union_L2_L3_end_Lit5(f, x) //│ > call_Union_L2_L3_end_Union_Lit5_Lit10_end(f, tmp) -//│ > fun call_Union_L2_L3_end_Lit5(recv, arg0) = -//│ > if recv is -//│ > L2 then recv.call_L2__Lit5(arg0) -//│ > L3 then recv.call_L3__Lit5(arg0) -//│ > fun call_Union_L2_L3_end_Union_Lit5_Lit10_end(recv, arg0) = -//│ > if recv is -//│ > L2 then recv.call_L2__Union_Lit5_Lit10_end(arg0) -//│ > L3 then recv.call_L3__Union_Lit5_Lit10_end(arg0) print(L2.class."cache$L2") print(L3.class."cache$L3") @@ -297,17 +278,30 @@ print(TestThis."cache$TestThis") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.295: TestThis.test_gen() +//│ ║ l.276: TestThis.test_gen() //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.296: print(TestThis."cache$TestThis") +//│ ║ l.277: print(TestThis."cache$TestThis") //│ ╙── ^^^^^^^^ +//│ > fun f_B_Lit2_A_Lit2(this, arg0) = 4 //│ > fun test() = 4 -//│ > fun f_B_Lit2_A_Lit2(recv, arg0) = 4 :todo staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 + +staged class C1(val n) with + fun f() = n + +staged class C2(val n) with + fun f() = n + +staged module M with + fun pick(b) = if b then C1(2) else C2(3) + fun test(b) = pick(b).f() + +C1.class."cache$C1" +//│ = From 27a41cd1c34ef6815c49e817ece93c43904047e5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 17:23:52 +0800 Subject: [PATCH 474/654] clean up --- .../codegen/ReflectionInstrumenter.scala | 40 ++++++++++--------- .../src/test/mlscript-compile/Block.mls | 16 ++------ .../test/mlscript/block-staging/Functions.mls | 10 ++--- .../test/mlscript/block-staging/Syntax.mls | 2 +- 4 files changed, 31 insertions(+), 37 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 9edfc85b66..6e2b475478 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -28,16 +28,17 @@ extension [A, B](ls: Iterable[(A => B) => B]) k => headCont: head => tailCont: tail => - k(head :: tail) + k(head :: tail), )(f) extension [A](xs: Ls[Context => ((A, Context) => Block) => Block]) - def chainContext(using ctx: Context)(k: (Ls[A], Context) => Block): Block = + def chainContext(using ctx: Context)(k: (Ls[A], Context) => Block): Block = xs.foldRight((ctx: Context) => (k: (Ls[A], Context) => Block) => k(Nil, ctx))((head, tail) => - ctx => k => - head(ctx): (head, ctx) => - tail(ctx): (tail, ctx) => - k(head :: tail, ctx) + ctx => + k => + head(ctx): (head, ctx) => + tail(ctx): (tail, ctx) => + k(head :: tail, ctx), )(ctx)(k) type ArgWrappable = Path | Symbol @@ -59,6 +60,7 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(SymbolSubst.Id): // TODO: there could be a fresh scope per function body, instead of a single one for the entire program val scope = Scope.empty(Scope.Cfg.default) + // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() val symbolMapSym: Symbol = TempSymbol(N, "symbolMap") // only create symbolMap if we create entries to avoid changing IR for unrelated tests @@ -73,7 +75,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def tuple(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = assign(Tuple(false, elems.map(asArg)), symName)(k) - + def ctor(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = assign(Instantiate(false, cls, args.map(asArg)), symName)(k) @@ -133,7 +135,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) // FIXME: hack to patch in staging for returning the object Unit. - case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil) + case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil) case _ => raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() @@ -398,8 +400,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ( Ls(staged, gen), cacheDebug, - tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))) - ) + tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))), + ), ).unzip3 // initialize cache for the module @@ -423,18 +425,18 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) // assign(options): options => - call(cachePath.selSN("toString"), Nil, false): str => - call(printFun, Ls(str), false): _ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest + call(cachePath.selSN("toString"), Nil, false): str => + call(printFun, Ls(str), false): _ => + call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => + if symbolMapUsed + then call(printFun, Ls(symbolMapSym), false)(_ => rest) + else rest // used for staging classes inside modules val newCompanion = companion.copy( methods = helperMethods.flatten, ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), - publicFields = companion.publicFields + publicFields = companion.publicFields, ) val newClsLikeDefn = defn.copy(companion = S(newCompanion))(defn.configOverride) Define(newClsLikeDefn, applyBlock(rest)) @@ -458,7 +460,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S Assign( symbolMapSym, Instantiate(false, State.globalThisSymbol.asPath.selSN("Map"), Nil), - rest - ) + rest, + ), ) else rest diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 95be006261..08a0c0a5e0 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -2,7 +2,6 @@ import "./Predef.mls" import "./Option.mls" import "./StrOps.mls" import "./Runtime.mls" -import "./CachedHash.mls" open Predef open StrOps @@ -18,7 +17,7 @@ type Literal = null | undefined | Str | Int | Num | Bool type ParamList = Array[Symbol] -class Symbol(val name: Str) extends CachedHash +class Symbol(val name: Str) class ClassSymbol(val name: Str) extends Symbol(name) class VirtualClassSymbol(val name: Str) extends ClassSymbol(name) class ConcreteClassSymbol(val name: Str, val value: Class, val paramsOpt: Opt[ParamList], val auxParams: Array[ParamList]) extends ClassSymbol(name) @@ -43,16 +42,9 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = else false // TODO: move this to somewhere appropriate -// TODO: is this the only way? we cannot assign a property to a class that is not extensible -fun checkMap(symbolMap, key, value) = - // this approach of updating the class value doesn't work if the class is not extensible - // if classValue.("stagedSymbol") is - // v and v is Symbol then v - // else set classValue.("stagedSymbol") = value; value - // console.log(symbolMap, value) - // let key = value.hash() +fun checkMap(symbolMap, key, value) = let v = symbolMap.get(key) - if v is + if v is Symbol then v else symbolMap.set(key, value); value @@ -64,7 +56,7 @@ class Case with Cls(val cls: Symbol, val path: Path) Tup(val len: Int) -class Result extends CachedHash with +class Result with constructor Call(val _fun: Path, val args: Array[Arg]) Instantiate(val cls: Path, val args: Array[Arg]) // assume immutable diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index e21d8b24d8..fa4d5f740d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -168,16 +168,16 @@ module Nonstaged with staged module Staged with fun f() = 1 staged module CallSubst with - fun call() = - Nonstaged.f() - Staged.f() + fun call() = Nonstaged.f() + Staged.f() //│ > fun ctor_() = () //│ > fun f() = 1 //│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } //│ > fun ctor_() = () //│ > fun call() = -//│ > Nonstaged.f() -//│ > Staged.f() +//│ > let {tmp, tmp1} +//│ > tmp = Nonstaged.f() +//│ > tmp1 = Staged.f() +//│ > tmp + tmp1 //│ > Map(2) { //│ > 'ctor$' => [Function: ctor$_gen], //│ > 'call' => [Function: call_gen] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index a3cbec953e..66eead0982 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -54,7 +54,7 @@ staged module A //│ let tmp, tmp1, tmp2; //│ set tmp = []; //│ set tmp1 = [tmp]; -//│ set tmp2 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp1, true); +//│ set tmp2 = SpecializeHelpers⁰.specialize﹖(A².cache$A﹖, "ctor$", A².ctor$_instr﹖, tmp1); //│ return tmp2 //│ } //│ }; From 053a56b3f3063a24adedb3c936e6791b63038456 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 17:40:18 +0800 Subject: [PATCH 475/654] formatting --- hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 2e0741804c..62ebf651b6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -1,5 +1,5 @@ -:staging :js +:staging import "../../mlscript-compile/Block.mls" import "../../mlscript-compile/Option.mls" From 559cfc82183d63c212218c586c0bd0c6db57f5dd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 18:22:46 +0800 Subject: [PATCH 476/654] fixup! clean up --- .../src/test/mlscript-compile/Block.mls | 1 - .../test/mlscript/block-staging/Functions.mls | 20 ++++--------------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 08a0c0a5e0..12dd2fba7b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -83,7 +83,6 @@ class Block with Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) - // TODO: [fyp] handle Scoped nodes Scoped(val symbols: Array[Symbol], val rest: Block) End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index fa4d5f740d..2939249337 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -412,24 +412,12 @@ staged module NestedFunDefn with :todo force enable :ftc to desugar Label and Break staged module M with fun f() = if 1 is -//│ ╔══[PARSE ERROR] Expected start of expression in this position; found end of input instead -//│ ║ l.414: fun f() = if 1 is -//│ ╙── ^ -//│ ╔══[COMPILATION ERROR] Unrecognized pattern split (‹erroneous syntax›). -//│ ║ l.414: fun f() = if 1 is -//│ ╙── ^ -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Throw(Lit(StrLit(This code cannot be run as its compilation yielded an error.))) -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'scrut' -//│ ═══[RUNTIME ERROR] ReferenceError: scrut is not defined 0 then 1 + 1 + 1 1 then 1 + 1 + 1 else 1 + 1 + 1 -//│ ╔══[COMPILATION ERROR] Unexpected infix use of keyword 'then' here -//│ ║ l.424: 0 then 1 + 1 + 1 -//│ ║ ^^^^^^^^^^^^^^^^ -//│ ║ l.425: 1 then 1 + 1 + 1 -//│ ╙── ^^^^^ -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:split_root$,false,Label(label:split_1$,false,Assign(tmp:scrut,Lit(IntLit(1)),Match(Ref(tmp:scrut,None),List((Lit(IntLit(0)),Break(label:split_1$)), (Lit(IntLit(1)),Break(label:split_1$))),Some(Break(label:split_1$)),End())),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Lit(IntLit(1))), Arg(None,Lit(IntLit(1))))),Return(Call(Ref(builtin:+,None),List(Arg(None,Ref(tmp:tmp,None)), Arg(None,Lit(IntLit(1))))),false))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). +//│ Try enabling :ftc. +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :e class C(val a) @@ -439,7 +427,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.439: fun g() = {1 : 2} +//│ ║ l.427: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From 8ced994d0adac5aea737df62e1e48f07c0eb3c42 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 7 Apr 2026 18:41:44 +0800 Subject: [PATCH 477/654] put the cache in the correct class companion --- .../mlscript-compile/SpecializeHelpers.mls | 43 +++++++++++-------- .../test/mlscript/block-staging/ShapeProp.mls | 35 +++++++-------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a1f6d65747..e0888b0e3c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -36,14 +36,13 @@ class Ctx( val ctx: Map[String, ShapeSet], val allocs: Array[Block.Symbol], val currentThis: Option[Block.ClassSymbol], - val thisShape: ShapeSet, - val cache: FunCache + val thisShape: ShapeSet ) with fun get(path) = let ps = showCtxPath(path) if ctx.has(ps) then Some(ctx.get(ps)) else None - fun clone = Ctx(new Map(ctx), allocs, currentThis, thisShape, cache) + fun clone = Ctx(new Map(ctx), allocs, currentThis, thisShape) fun add(path, ss) = let ps = showCtxPath(path) if ctx.has(ps) then @@ -52,8 +51,7 @@ class Ctx( ctx.set(ps, ss) this module Ctx with - fun empty() = Ctx(new Map(), mut [], None, mkBot(), new FunCache(new Map())) - fun withCache(cache) = Ctx(new Map(), mut [], None, mkBot(), cache) + fun empty() = Ctx(new Map(), mut [], None, mkBot()) class FunCache(val cache: Map[String, [Block.FunDefn, ShapeSet]]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None @@ -194,14 +192,19 @@ fun sor(ctx, r) = if r is [End(), r, mkDyn()] else let wrapperName = specializeName(f, [ [pss, ...argShapes] ]) - if ctx.cache.getFun(wrapperName) is + let C_0 = [...knownMap.entries()].0.0 + let actualClass0 = getActualClass(C_0.value) + let clsName0 = actualClass0.(Symbols.definitionMetadata).1 + let cacheName0 = "cache$" + clsName0 + let clsCache = actualClass0.(cacheName0) + if clsCache.getFun(wrapperName) is Some(x) and staticSet(x.1) then let v2p = val2path(valOfSet(x.1), ctx.allocs) [v2p.0, v2p.1, x.1] - else if ctx.cache.getFun(wrapperName) is + else if clsCache.getFun(wrapperName) is Some(x) then - [End(), Call(ValueRef(Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), x.1] + [End(), Call(Select(ValueRef(Symbol(clsName0)), Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), x.1] else throw Error("FIXME") None then let recvSym = Symbol("this") @@ -224,13 +227,13 @@ fun sor(ctx, r) = if r is let v2p = val2path(valOfSet(retShape), allocs) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) else - Return(Call(ValueRef(Symbol(retSym)), [Arg(ValueRef(recvSym)), ...argSymRefs.map(s => Arg(ValueRef(s)))]), false) - ctx.cache.setFun(wrapperName, [FunDefn(Symbol(wrapperName), ps, body), retShape]) + Return(Call(Select(ValueRef(Symbol(clsName)), Symbol(retSym)), [Arg(ValueRef(recvSym)), ...argSymRefs.map(s => Arg(ValueRef(s)))]), false) + clsCache.setFun(wrapperName, [FunDefn(Symbol(wrapperName), ps, body), retShape]) if staticSet(retShape) then let v2p = val2path(valOfSet(retShape), ctx.allocs) [v2p.0, v2p.1, retShape] else - [End(), Call(ValueRef(Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), retShape] + [End(), Call(Select(ValueRef(Symbol(clsName0)), Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), retShape] else let armsRet = [...knownMap.entries()].map(entry => let C_i = entry.0 @@ -243,7 +246,7 @@ fun sor(ctx, r) = if r is let generated = f_gen(ss_i)(...argShapes) let retSym = generated.0 let retShape = generated.1 - let callRes = Call(ValueRef(Symbol(retSym)), [Arg(ValueRef(recvSym)), ...argSymRefs.map(s => Arg(ValueRef(s)))]) + let callRes = Call(Select(ValueRef(Symbol(clsName)), Symbol(retSym)), [Arg(ValueRef(recvSym)), ...argSymRefs.map(s => Arg(ValueRef(s)))]) [Arm(Cls(C_i, ValueRef(recvSym)), Return(callRes, false)), retShape] ) let armsAcc = armsRet.map(x => x.0) @@ -254,12 +257,12 @@ fun sor(ctx, r) = if r is let dflt = dfltRet.0 let totalRetShape = union(totalStagedRetShape, dfltRet.1) let matchBody = Match(ValueRef(recvSym), armsAcc, dflt, End()) - ctx.cache.setFun(wrapperName, [FunDefn(Symbol(wrapperName), ps, matchBody), totalRetShape]) + clsCache.setFun(wrapperName, [FunDefn(Symbol(wrapperName), ps, matchBody), totalRetShape]) if staticSet(totalRetShape) then let v2p = val2path(valOfSet(totalRetShape), ctx.allocs) [v2p.0, v2p.1, totalRetShape] else - [End(), Call(ValueRef(Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), totalRetShape] + [End(), Call(Select(ValueRef(Symbol(clsName0)), Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), totalRetShape] else throw Error("unknown call in sor: " + r.toString()) else throw Error("unknown result in sor: " + r.toString()) @@ -270,7 +273,7 @@ fun prop(ctx, b) = if b is Scoped(symbols, rest) then symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] - let newCtx = Ctx(new Map(ctx.ctx), newAllocs, ctx.currentThis, ctx.thisShape, ctx.cache) + let newCtx = Ctx(new Map(ctx.ctx), newAllocs, ctx.currentThis, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] Assign(x, r, b) and @@ -346,12 +349,14 @@ fun specialize(cache, funName, dflt, shapes, useStub) = defn is FunDefn(Symbol(_), ps, body) then let isMethod = shapes.length > ps.length // TODO: clean up let paramShapes = if isMethod then shapes.slice(1) else shapes + let newPs = if isMethod then [ [Symbol("this"), ...ps.(0)], ...ps.slice(1) ] else ps let ctx = if isMethod then let clsSymb = shapes.(0).(0).values().0.sym - Ctx(new Map(), mut [], Some(clsSymb), shapes.(0).(0), cache) - else Ctx.withCache(cache) + Ctx(new Map(), mut [], Some(clsSymb), shapes.(0).(0)) + else Ctx.empty() + if isMethod do ctx.add(ValueRef(Symbol("this")), shapes.(0).(0)) ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) - cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) + cache.setFun(newName, [FunDefn(Symbol(newName), newPs, body), mkDyn()]) let propFun = prop let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) @@ -360,6 +365,6 @@ fun specialize(cache, funName, dflt, shapes, useStub) = let v2p = val2path(valOfSet(res.1), allocs) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) else bodyWithScoped - let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, finalBody), res.1]) + let entry = cache.setFun(newName, [FunDefn(Symbol(newName), newPs, finalBody), res.1]) [entry.0.sym.name, entry.1] else throw Error("cache error") \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 49214dbc57..bea4cca6fd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -224,16 +224,6 @@ print(M."cache$M") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. //│ ║ l.216: print(M."cache$M") //│ ╙── ^ -//│ > fun call_L1_Lit5(this, arg0) = 7 -//│ > fun call_L1_Lit7(this, arg0) = 9 -//│ > fun call_Union_L2_L3_end_Lit5(this, arg0) = -//│ > if this is -//│ > L2() then call_L2__Lit5(this, arg0) -//│ > L3() then call_L3__Lit5(this, arg0) -//│ > fun call_Union_L2_L3_end_Union_Lit5_Lit10_end(this, arg0) = -//│ > if this is -//│ > L2() then call_L2__Union_Lit5_Lit10_end(this, arg0) -//│ > L3() then call_L3__Union_Lit5_Lit10_end(this, arg0) //│ > fun foo(b) = //│ > let {y, tmp1, tmp2, tmp3, m, tmp4} //│ > tmp1 = new L1 @@ -255,15 +245,23 @@ print(M."cache$M") //│ > fun twice_L1_Lit5(f, x) = 9 //│ > fun twice_Union_L2_L3_end_Lit5(f, x) = //│ > let {tmp} -//│ > tmp = call_Union_L2_L3_end_Lit5(f, x) -//│ > call_Union_L2_L3_end_Union_Lit5_Lit10_end(f, tmp) +//│ > tmp = L2.call_Union_L2_L3_end_Lit5(f, x) +//│ > L2.call_Union_L2_L3_end_Union_Lit5_Lit10_end(f, tmp) print(L2.class."cache$L2") print(L3.class."cache$L3") -//│ > fun call_L2__Lit5(x) = 5 -//│ > fun call_L2__Union_Lit5_Lit10_end(x) = x -//│ > fun call_L3__Lit5(x) = 10 -//│ > fun call_L3__Union_Lit5_Lit10_end(x) = *(x, 2) +//│ > fun call_L2__Lit5(this, x) = 5 +//│ > fun call_L2__Union_Lit5_Lit10_end(this, x) = x +//│ > fun call_Union_L2_L3_end_Lit5(this, arg0) = +//│ > if this is +//│ > L2 then L2.call_L2__Lit5(this, arg0) +//│ > L3 then L3.call_L3__Lit5(this, arg0) +//│ > fun call_Union_L2_L3_end_Union_Lit5_Lit10_end(this, arg0) = +//│ > if this is +//│ > L2 then L2.call_L2__Union_Lit5_Lit10_end(this, arg0) +//│ > L3 then L3.call_L3__Union_Lit5_Lit10_end(this, arg0) +//│ > fun call_L3__Lit5(this, x) = 10 +//│ > fun call_L3__Union_Lit5_Lit10_end(this, x) = *(x, 2) staged class A(val x: Int) with fun f(y: Int) = this.x + y @@ -278,14 +276,13 @@ print(TestThis."cache$TestThis") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.276: TestThis.test_gen() +//│ ║ l.274: TestThis.test_gen() //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.277: print(TestThis."cache$TestThis") +//│ ║ l.275: print(TestThis."cache$TestThis") //│ ╙── ^^^^^^^^ -//│ > fun f_B_Lit2_A_Lit2(this, arg0) = 4 //│ > fun test() = 4 :todo From b5e1511d5d67504b9fadc5373ee4deb3142e7949 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 7 Apr 2026 19:59:13 +0800 Subject: [PATCH 478/654] wip: super() --- .../test/mlscript-compile/SpecializeHelpers.mls | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index e0888b0e3c..16cd34709c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -119,9 +119,12 @@ fun sor(ctx, r) = if r is [End(), recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") - // Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ClassSymbol then // FIXME - ValueRef(clsSymb) and clsSymb is ClassSymbol then + Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ClassSymbol then // class within module [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] + ValueRef(clsSymb) and clsSymb is ClassSymbol then // global class + [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] + ValueRef(Symbol("super")) then + print("superman detected!") ValueRef(symb) and // built-in or top-level let name = symb.name args is @@ -188,7 +191,7 @@ fun sor(ctx, r) = if r is let splitted = fsplit(pss) let knownMap = splitted.0 let unkShape = splitted.1 - if knownMap.size == 0 then + if knownMap.size is 0 then [End(), r, mkDyn()] else let wrapperName = specializeName(f, [ [pss, ...argShapes] ]) @@ -210,7 +213,7 @@ fun sor(ctx, r) = if r is let recvSym = Symbol("this") let argSymRefs = args.map((a, i, _) => Symbol("arg" + i)) let ps = [ [recvSym, ...argSymRefs] ] - if knownMap.size == 1 and unkShape.isEmpty() then + if knownMap.size is 1 and unkShape.isEmpty() then let entry = [...knownMap.entries()].0 let C_i = entry.0 let ss_i = entry.1 @@ -338,7 +341,7 @@ fun buildShapeSetName(ss: ShapeSet): Str = fun specializeName(funName, shapes) = if shapes.every(ps => ps.every(s => s.isDyn())) then funName - else funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("__") + else funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("_dot_") fun specialize(cache, funName, dflt, shapes, useStub) = let newName = specializeName(funName, shapes) @@ -349,12 +352,12 @@ fun specialize(cache, funName, dflt, shapes, useStub) = defn is FunDefn(Symbol(_), ps, body) then let isMethod = shapes.length > ps.length // TODO: clean up let paramShapes = if isMethod then shapes.slice(1) else shapes - let newPs = if isMethod then [ [Symbol("this"), ...ps.(0)], ...ps.slice(1) ] else ps + let newPs = if isMethod then [ [Symbol("_this"), ...ps.(0)], ...ps.slice(1) ] else ps let ctx = if isMethod then let clsSymb = shapes.(0).(0).values().0.sym Ctx(new Map(), mut [], Some(clsSymb), shapes.(0).(0)) else Ctx.empty() - if isMethod do ctx.add(ValueRef(Symbol("this")), shapes.(0).(0)) + if isMethod do ctx.add(ValueRef(Symbol("_this")), shapes.(0).(0)) ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) cache.setFun(newName, [FunDefn(Symbol(newName), newPs, body), mkDyn()]) let propFun = prop From b256e81ba2db2f43e7652eba4469b808c45200c9 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 7 Apr 2026 20:04:04 +0800 Subject: [PATCH 479/654] add a fixme: select has a renaming problem --- .../codegen/ReflectionInstrumenter.scala | 2 +- .../test/mlscript/block-staging/ShapeProp.mls | 38 ++++++++++--------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e822c06d5f..ed4665a2a2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -419,7 +419,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // used for staging classes inside modules val newCompanion = companion.copy( methods = helperMethods.flatten, - ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), + ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(End()))), publicFields = companion.publicFields, ) val newClsLikeDefn = defn.copy(companion = S(newCompanion))(defn.configOverride) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index bea4cca6fd..fc69f621f6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -250,18 +250,18 @@ print(M."cache$M") print(L2.class."cache$L2") print(L3.class."cache$L3") -//│ > fun call_L2__Lit5(this, x) = 5 -//│ > fun call_L2__Union_Lit5_Lit10_end(this, x) = x +//│ > fun call_L2_dot_Lit5(_this, x) = 5 +//│ > fun call_L2_dot_Union_Lit5_Lit10_end(_this, x) = x //│ > fun call_Union_L2_L3_end_Lit5(this, arg0) = //│ > if this is -//│ > L2 then L2.call_L2__Lit5(this, arg0) -//│ > L3 then L3.call_L3__Lit5(this, arg0) +//│ > L2() then L2.call_L2_dot_Lit5(this, arg0) +//│ > L3() then L3.call_L3_dot_Lit5(this, arg0) //│ > fun call_Union_L2_L3_end_Union_Lit5_Lit10_end(this, arg0) = //│ > if this is -//│ > L2 then L2.call_L2__Union_Lit5_Lit10_end(this, arg0) -//│ > L3 then L3.call_L3__Union_Lit5_Lit10_end(this, arg0) -//│ > fun call_L3__Lit5(this, x) = 10 -//│ > fun call_L3__Union_Lit5_Lit10_end(this, x) = *(x, 2) +//│ > L2() then L2.call_L2_dot_Union_Lit5_Lit10_end(this, arg0) +//│ > L3() then L3.call_L3_dot_Union_Lit5_Lit10_end(this, arg0) +//│ > fun call_L3_dot_Lit5(_this, x) = 10 +//│ > fun call_L3_dot_Union_Lit5_Lit10_end(_this, x) = *(x, 2) staged class A(val x: Int) with fun f(y: Int) = this.x + y @@ -269,21 +269,25 @@ staged class B(val x: Int) with fun f(y: A) = y.f(this.x) staged module TestThis with - fun test() = B(2).f(A(2)) + fun test(x) = B(x).f(A(x)) -TestThis.test_gen() +:fixme +TestThis.test_gen(mkDyn()) print(TestThis."cache$TestThis") -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +print(B.class."cache$B") //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.274: TestThis.test_gen() +//│ ║ l.275: TestThis.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.275: print(TestThis."cache$TestThis") +//│ ║ l.276: print(TestThis."cache$TestThis") //│ ╙── ^^^^^^^^ -//│ > fun test() = 4 +//│ > fun test(x) = +//│ > let {tmp, tmp1} +//│ > tmp = B(x) +//│ > tmp1 = A(x) +//│ > B.f_B_Dyn_A_Dyn(tmp, tmp1) +//│ > fun f_B_Dyn_A_Dyn(this, arg0) = B.f_B_Dyn_dot_A_Dyn(this, arg0) +//│ > fun f_B_Dyn_dot_A_Dyn(_this, y) = A.f_A_Dyn_Dyn(y, B1.x) :todo staged class D(val x) extends B(x+1) with From c3943cbccedf5892fb23bb90d5ad5a5e270f9607 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 7 Apr 2026 21:22:51 +0800 Subject: [PATCH 480/654] fix a bug in shape selection --- hkmc2/shared/src/test/mlscript-compile/Shape.mls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 66d5059905..e88d6b901f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -34,8 +34,8 @@ fun sel(s1: Shape, s2: Shape): Array[Shape] = n is Str then [Dyn()] n is Int then [Dyn()] else throw Error("Unknown selection") - [Arr(shapes), Lit(n)] and n is Int and - n < shapes.length then [shapes.(n)] + [Arr(shapes), Lit(n)] and // n can be both string or integer + n < shapes.length then [shapes.(n)] // This utilizes the string and number conversion in JS lol else throw Error("Array out of bound") [Arr(shapes), Dyn] then shapes From dd6eb8bfe22adf8d9fc36a11aaebcc951f638430 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 21:32:08 +0800 Subject: [PATCH 481/654] refresh paramlist when copying functions --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 6e2b475478..c3a119c020 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -343,6 +343,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S FunDefn.withFreshSymbol(f.dSym.owner, stageSym, Ls(PlainParamList(Nil)), newBody)(false, f.configOverride) + def refreshParamList(ps: ParamList) = + PlainParamList(ps.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme))))) + override def applyBlock(b: Block): Block = b match // TODO: assume staged classes have no companion module // find modules with staged annotation, or classes without companion module @@ -357,7 +360,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S return End() val companion = ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End()) val ctor = Begin(defn.preCtor, defn.ctor) - (defn.sym, companion, ctor, defn.paramsOpt, defn.methods) + (defn.sym, companion, ctor, defn.paramsOpt.map(refreshParamList), defn.methods) val modSym = companion.isym @@ -378,7 +381,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) // refresh parameters - val funParams = f.params.map(ps => PlainParamList(ps.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme)))))) + val funParams = f.params.map(refreshParamList) val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: funParams else funParams val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => tuple(tups): args => From 5862484010c239556216fa55becd55e1406603fb Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 21:44:32 +0800 Subject: [PATCH 482/654] remove printing for matching classes the parameter names of the class are not used at all, for `class B(x)`, a match case of `if B(1) is B(y)` never assigns to a variable `x`. --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 4 +--- hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls | 2 +- hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index cab3f6b4e5..5214ab2d53 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -139,9 +139,7 @@ fun showResult(r: Result): Str = fun showCase(c) = if c is Lit(l) then showLiteral(l) - Cls(cls, p) then showSymbol(cls) + - if isPrimitiveType(cls) then "" - else showParamsOpt(cls.paramsOpt) // it seems we only need the arity, printing the parameter names is unnecessary + Cls(cls, _) then showSymbol(cls) Tup(len) then "[" + Array(len).fill("_").join(", ") + "]" _ then "" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index ce17b2b328..50c96ce102 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -68,7 +68,7 @@ printCode(Define(ValDefn(None, Symbol("a"), ValueLit(1)), End())) printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2), false)), Arm(Cls(aSym, ValueRef(aSym)), Return(ValueLit(3), false))], Some(Return(ValueRef(Symbol("x")), false)), End())) //│ > if x is //│ > 1 then 2 -//│ > A(x) then 3 +//│ > A then 3 //│ > else x printCode(Scoped([Symbol("y")], Match( diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 68d9939cb6..caa8f490f9 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -40,7 +40,7 @@ staged module D with //│ > tmp = false //│ > scrut1 = 1 //│ > if scrut1 is -//│ > C(a, b) then true +//│ > C then true //│ > else false module A with From bc3850fd07c06a4d40936461284befaaaeab43f4 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 21:46:16 +0800 Subject: [PATCH 483/654] formatting --- hkmc2/shared/src/test/mlscript/block-staging/Classes.mls | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index a23f22c6b7..d2f8c22f4a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -41,7 +41,6 @@ staged module C with //│ > } //│ > } -// :sjs class C staged module M with fun f() = C @@ -67,7 +66,7 @@ staged class C with :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.68: staged class C(x) +//│ ║ l.67: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with From 7fe5fa6bcaf3432b6ec9256ca14c820dbdd06cfa Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 7 Apr 2026 22:08:27 +0800 Subject: [PATCH 484/654] replace ctor$ with ctor --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index ed4665a2a2..75d33cf2bb 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -386,7 +386,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S Return(res, false) FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(false, f.configOverride) - val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false, N) + val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor", Nil, false), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false, N) val (helperMethods, cacheEntries, generatorEntries) = (ctorFun :: methods).map(f => val staged = stageMethod(f) val stagedPath = modSym.asPath.selSN(staged.sym.nme) From b8a9ae449e1df48eb51c16b23a4797992d8d896c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 7 Apr 2026 21:32:08 +0800 Subject: [PATCH 485/654] refresh paramlist when copying functions --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 75d33cf2bb..4bbbd6db3b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -343,6 +343,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S FunDefn.withFreshSymbol(f.dSym.owner, stageSym, Ls(PlainParamList(Nil)), newBody)(false, f.configOverride) + def refreshParamList(ps: ParamList) = + PlainParamList(ps.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme))))) + override def applyBlock(b: Block): Block = b match // TODO: assume staged classes have no companion module // find modules with staged annotation, or classes without companion module @@ -357,7 +360,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S return End() val companion = ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End()) val ctor = Begin(defn.preCtor, defn.ctor) - (defn.sym, companion, ctor, defn.paramsOpt, defn.methods) + (defn.sym, companion, ctor, defn.paramsOpt.map(refreshParamList), defn.methods) val modSym = companion.isym @@ -378,7 +381,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(genSymName)) // refresh parameters - val funParams = f.params.map(ps => PlainParamList(ps.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme)))))) + val funParams = f.params.map(refreshParamList) val params = if defn.companion.isEmpty then PlainParamList(Param.simple(VarSymbol(Tree.Ident("cls"))) :: Nil) :: funParams else funParams val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => tuple(tups): args => From 3747be2269f1c268fdb47d24cff9dd06e7ba6ad3 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 8 Apr 2026 11:52:52 +0800 Subject: [PATCH 486/654] fixup! Merge branch 'add-cache' into shape --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 1 + 1 file changed, 1 insertion(+) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 63c0a8a48e..efbea72035 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -2,6 +2,7 @@ import "./Predef.mls" import "./Option.mls" import "./StrOps.mls" import "./Runtime.mls" +import "./CachedHash.mls" import "fs" import "process" From 842c0676d585a4c6c0dbfe4e82c1914ff0a812ab Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 8 Apr 2026 12:11:35 +0800 Subject: [PATCH 487/654] Revert CachedHash import from commit 6c0660f9d5b6c31bcf845911456bc9009857f8eb\n\nnevermind --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index efbea72035..12d178788d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -2,7 +2,6 @@ import "./Predef.mls" import "./Option.mls" import "./StrOps.mls" import "./Runtime.mls" -import "./CachedHash.mls" import "fs" import "process" @@ -62,7 +61,7 @@ class Case with Cls(val cls: Symbol, val path: Path) Tup(val len: Int) -class Result extends CachedHash with +class Result with constructor Call(val _fun: Path, val args: Array[Arg]) Instantiate(val cls: Path, val args: Array[Arg]) // assume immutable From cca02ffc70072173867349934a38e2ba1e1e05df Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 8 Apr 2026 12:46:08 +0800 Subject: [PATCH 488/654] update api changes to tests --- .../src/test/mlscript-compile/SpecializeHelpers.mls | 4 ++-- hkmc2/shared/src/test/mlscript/ShapeSetTest.mls | 8 ++++---- .../src/test/mlscript/block-staging/ShapeSetHelpers.mls | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index ed93a1698d..371184ae6f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -51,7 +51,7 @@ class Ctx( ctx.set(ps, ss) this module Ctx with - fun empty() = Ctx(new Map(), mut [], None, mkBot()) + val empty = Ctx(new Map(), mut [], None, mkBot()) class FunCache(val cache: Map[String, [Block.FunDefn, ShapeSet]]) with fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None @@ -356,7 +356,7 @@ fun specialize(cache, funName, dflt, shapes) = let ctx = if isMethod then let clsSymb = shapes.(0).(0).values().0.sym Ctx(new Map(), mut [], Some(clsSymb), shapes.(0).(0)) - else Ctx.empty() + else Ctx.empty if isMethod do ctx.add(ValueRef(Symbol("_this")), shapes.(0).(0)) ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) cache.setFun(newName, [FunDefn(Symbol(newName), newPs, body), mkDyn()]) diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 4ff27d1ed6..e9080b11ad 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -8,7 +8,7 @@ import "../mlscript-compile/Option.mls" open ShapeSet open Shape { Lit, Arr, Class, Dyn } open Option -open Block { Tup, ClassSymbol, Symbol } +open Block { Tup, ConcreteClassSymbol, Symbol } let x = mkBot() //│ x = {} @@ -31,8 +31,8 @@ mkArr([x, y]) //│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} class C(val a) -val clsSym = ClassSymbol("C", C, Some([Symbol("a")]), []) -//│ clsSym = ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []) +val clsSym = ConcreteClassSymbol("C", C, Some([Symbol("a")]), []) +//│ clsSym = ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []) let x = liftMany([Class(clsSym, [Lit(42)]), Arr([Lit(1), Lit("a")])]) let y = liftMany([Lit(1), Lit("a")]) @@ -42,7 +42,7 @@ selSet(x, y) //│ y = {Lit("a"),Lit(1)} mkClass(clsSym, [mkLit(1)]) -//│ = {Class(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(1)])} +//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(1)])} filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)])]), Tup(3)) //│ = {Arr([Lit(1), Lit(2), Lit(3)])} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 5b222b0b11..dcd55af235 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -8,7 +8,7 @@ import "../../mlscript-compile/CachedHash.mls" import "../../mlscript-compile/SpecializeHelpers.mls" import "../../mlscript-compile/Runtime.mls" open Option -open Block { Symbol, ClassSymbol, Tup, Case } +open Block { Symbol, ConcreteClassSymbol, Tup, Case } open Shape { Arr, Class, Dyn, Lit } open ShapeSet open SpecializeHelpers { sov } @@ -62,7 +62,7 @@ selSet(arrSp, mkLit(1)) selSet(mkDyn(), mkLit(5)) //│ = {Dyn()} -let a = Class(ClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]) +let a = Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]) let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) selSet(x, liftMany([Lit("a"), Lit(2)])) //│ = {Dyn(),Lit(undefined)} @@ -169,7 +169,7 @@ sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) val x = Symbol("x") -val C = ClassSymbol("C", undefined, Some(["a"]), []) +val C = ConcreteClassSymbol("C", undefined, Some(["a"]), []) val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) let ctx = Ctx.empty ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) @@ -196,7 +196,7 @@ sor(Ctx.empty, tup) //│ ] //│ tup = Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]) -let c = ClassSymbol("C", undefined, Some([Symbol("p")]), []) +let c = ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), []) let inst = Instantiate(ValueRef(c), [Arg(ValueLit(123))]) sor(Ctx.empty, inst) //│ = [ From 5111b7e032861b79d90aadfb9109a88cc7a202b7 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 8 Apr 2026 15:58:45 +0800 Subject: [PATCH 489/654] rework rename logic --- .../codegen/ReflectionInstrumenter.scala | 48 ++--- .../staging/out/SimpleStagedExample.mls | 174 +++++++----------- .../mlscript/block-staging/SpecializeTest.mls | 37 +--- .../src/test/mlscript/lifter/ClassInFun.mls | 2 +- 4 files changed, 100 insertions(+), 161 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e574904c83..5214479b50 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -110,28 +110,36 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // transformation helpers + // preserveName overrides the renaming of symbols within the function // if sym is ClassSymbol, we may need pOpt to link to the path pointing to the value of the symbol - def transformSymbol(sym: Symbol, pOpt: Option[Path] = N, symName: Str = "sym")(using stagingCtx: Context)(k: (Path, Context) => Block): Block = + def transformSymbol(sym: Symbol, preserveName: Bool = false, pOpt: Option[Path] = N, symName: Str = "sym")(using stagingCtx: Context)(k: (Path, Context) => Block): Block = def cachedK(p: Path, ctx: Context) = k(p, ctx.addCache(sym, p)) def checkMap(key: Path, p: Path, ctx: Context) = symbolMapUsed = true blockCall("checkMap", Ls(symbolMapSym, key, p))(cachedK(_, ctx)) stagingCtx.getCache(sym).map(cachedK(_, stagingCtx)).getOrElse: + // add name to scope to avoid shadowing by other symbols + val newName = scope.allocateOrGetName(sym) + val rename = sym match + case _ if preserveName => false + // avoid name collision + case _: TempSymbol | _: VarSymbol => true + // FIXME: there may be more types of symbols that need to be renamed during staging + case _: BaseTypeSymbol | _: BuiltinSymbol => false + case t: TermSymbol if t.defn.exists(_.sym.asTrm.isDefined) && (t.k is syntax.Fun) => false + case _ => false + val name = if rename then newName else sym.nme + // println(("symbol:", sym, name, stagingCtx)) sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => // no need to perform caching for redirecting call - transformSymbol(t.defn.get.sym.asClsOrMod.get, pOpt, symName)(k) - // avoid name collision - case _: TempSymbol => - val name = scope.allocateOrGetName(sym) - blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) + transformSymbol(t.defn.get.sym.asClsOrMod.get, rename, pOpt, symName)(k) case _: NoSymbol => blockCtor("NoSymbol", Nil, symName)(cachedK(_, stagingCtx)) case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => - blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap(toValue(sym.nme), _, stagingCtx)) + blockCtor("VirtualClassSymbol", Ls(toValue(name)), symName)(checkMap(toValue(name), _, stagingCtx)) case baseSym: BaseTypeSymbol => - val name = scope.allocateOrGetName(sym) val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) @@ -149,17 +157,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformParamsOpt(paramsOpt): (paramsOpt, ctx) => auxParams.map(ps => ctx => transformParamList(ps)(using ctx)).chainContext: (auxParams, ctx) => tuple(auxParams): auxParams => - blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap(path, _, stagingCtx)) + blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap(path, _, ctx)) case _: ModuleOrObjectSymbol => blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap(path, _, stagingCtx)) - // preserve names to builtin symbols - case t: TermSymbol if t.defn.exists(_.sym.asTrm.isDefined) && (t.k is syntax.Fun) => - blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(cachedK(_, stagingCtx)) - case _: BuiltinSymbol | _: VarSymbol => - blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(cachedK(_, stagingCtx)) - // FIXME: there may be more types of symbols that need to be renamed during staging case _ => - blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(cachedK(_, stagingCtx)) + blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) def transformOption[A](xOpt: Opt[A], f: A => ((Path, Context) => Block) => Block)(using Context)(k: (Path, Context) => Block): Block = xOpt match case S(x) => f(x)((p, ctx) => optionSome(p)(k(_, ctx))) @@ -203,7 +205,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case s @ Select(p, Tree.Ident(name)) => transformPath(p): (x, ctx) => s.symbol match - case S(sym) => transformSymbol(sym, S(s))(using ctx)((sym, ctx) => blockCtor("Select", Ls(x, sym), "sel")(k(_, ctx))) + case S(sym) => transformSymbol(sym, true, pOpt = S(s))(using ctx)((sym, ctx) => blockCtor("Select", Ls(x, sym), "sel")(k(_, ctx))) case N => blockCtor("Symbol", Ls(toValue(name)))(sym => blockCtor("Select", Ls(x, sym), "sel")(k(_, ctx))) case DynSelect(qual, fld, arrayIdx) => transformPath(qual): (x, ctx) => @@ -247,7 +249,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // maintain parameter names in instrumented code def transformParamList(ps: ParamList)(using ctx: Context)(k: (Path, Context) => Block) = - ps.params.map(p => ctx => transformSymbol(p.sym)(using ctx)).chainContext((ps, ctx) => tuple(ps)(k(_, ctx))) + ps.params.map(p => ctx => transformSymbol(p.sym, true)(using ctx)).chainContext((ps, ctx) => tuple(ps)(k(_, ctx))) def transformParamsOpt(pOpt: Opt[ParamList])(using ctx: Context)(k: (Path, Context) => Block) = transformOption(pOpt, transformParamList)(k) @@ -326,11 +328,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def transformFunDefn(f: FunDefn)(using Context)(k: (Path, Context) => Block): Block = // maintain parameter names in instrumented code - transformParams(f.params): (paramList, ctx) => - transformBlock(f.body)(using ctx): (body, ctx) => - if f.params.length > 1 then - raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) - transformSymbol(f.sym)(using ctx): (sym, ctx) => + transformSymbol(f.sym): (sym, ctx) => + transformParams(f.params)(using ctx): (paramList, ctx) => + transformBlock(f.body)(using ctx): (body, ctx) => + if f.params.length > 1 then + raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) blockCtor("FunDefn", Ls(sym, paramList, body))(k(_, ctx)) def stageMethod(f: FunDefn): FunDefn = diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 821853d57f..6112d67d62 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,138 +1,92 @@ module SimpleStagedExample with () - fun ctor_() = - () - fun f(x, y) = x+y - fun fib(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 - if n1 is + fun ctor_() = () + fun f(x, y) = x + y + fun fib(n) = + let {tmp, tmp1, tmp2, tmp3, n1} + if n is 1 then 1 2 then 1 else - n = n1 - tmp2 = n-1 - tmp3 = SimpleStagedExample.fib(tmp2) - tmp = n-2 + n1 = n + tmp = n1 - 1 tmp1 = SimpleStagedExample.fib(tmp) - tmp3+tmp1 + tmp2 = n1 - 2 + tmp3 = SimpleStagedExample.fib(tmp2) + tmp1 + tmp3 fun foo() = - let tmp4 - let tmp5 + let {tmp4, tmp5} tmp4 = SimpleStagedExample.f_Lit2_Lit3(2, 3) tmp5 = SimpleStagedExample.fib_Lit10(10) 60 fun f_Lit2_Lit3(x, y) = 5 - fun fib_Lit10(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 - n = 10 - tmp2 = 9 - tmp3 = SimpleStagedExample.fib_Lit9(tmp2) - tmp = 8 - tmp1 = SimpleStagedExample.fib_Lit8(tmp) - 55 - fun fib_Lit9(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 - n = 9 + fun fib_Lit10(n) = + let {tmp, tmp1, tmp2, tmp3, n1} + n1 = 10 + tmp = 9 + tmp1 = SimpleStagedExample.fib_Lit9(tmp) tmp2 = 8 tmp3 = SimpleStagedExample.fib_Lit8(tmp2) - tmp = 7 - tmp1 = SimpleStagedExample.fib_Lit7(tmp) - 34 - fun fib_Lit8(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 - n = 8 + 55 + fun fib_Lit9(n) = + let {tmp, tmp1, tmp2, tmp3, n1} + n1 = 9 + tmp = 8 + tmp1 = SimpleStagedExample.fib_Lit8(tmp) tmp2 = 7 tmp3 = SimpleStagedExample.fib_Lit7(tmp2) - tmp = 6 - tmp1 = SimpleStagedExample.fib_Lit6(tmp) - 21 - fun fib_Lit7(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 - n = 7 + 34 + fun fib_Lit8(n) = + let {tmp, tmp1, tmp2, tmp3, n1} + n1 = 8 + tmp = 7 + tmp1 = SimpleStagedExample.fib_Lit7(tmp) tmp2 = 6 tmp3 = SimpleStagedExample.fib_Lit6(tmp2) - tmp = 5 - tmp1 = SimpleStagedExample.fib_Lit5(tmp) - 13 - fun fib_Lit6(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 - n = 6 + 21 + fun fib_Lit7(n) = + let {tmp, tmp1, tmp2, tmp3, n1} + n1 = 7 + tmp = 6 + tmp1 = SimpleStagedExample.fib_Lit6(tmp) tmp2 = 5 tmp3 = SimpleStagedExample.fib_Lit5(tmp2) - tmp = 4 - tmp1 = SimpleStagedExample.fib_Lit4(tmp) - 8 - fun fib_Lit5(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 - n = 5 + 13 + fun fib_Lit6(n) = + let {tmp, tmp1, tmp2, tmp3, n1} + n1 = 6 + tmp = 5 + tmp1 = SimpleStagedExample.fib_Lit5(tmp) tmp2 = 4 tmp3 = SimpleStagedExample.fib_Lit4(tmp2) - tmp = 3 - tmp1 = SimpleStagedExample.fib_Lit3(tmp) - 5 - fun fib_Lit4(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 - n = 4 + 8 + fun fib_Lit5(n) = + let {tmp, tmp1, tmp2, tmp3, n1} + n1 = 5 + tmp = 4 + tmp1 = SimpleStagedExample.fib_Lit4(tmp) tmp2 = 3 tmp3 = SimpleStagedExample.fib_Lit3(tmp2) - tmp = 2 - tmp1 = SimpleStagedExample.fib_Lit2(tmp) - 3 - fun fib_Lit3(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 - n = 3 + 5 + fun fib_Lit4(n) = + let {tmp, tmp1, tmp2, tmp3, n1} + n1 = 4 + tmp = 3 + tmp1 = SimpleStagedExample.fib_Lit3(tmp) tmp2 = 2 tmp3 = SimpleStagedExample.fib_Lit2(tmp2) - tmp = 1 - tmp1 = SimpleStagedExample.fib_Lit1(tmp) + 3 + fun fib_Lit3(n) = + let {tmp, tmp1, tmp2, tmp3, n1} + n1 = 3 + tmp = 2 + tmp1 = SimpleStagedExample.fib_Lit2(tmp) + tmp2 = 1 + tmp3 = SimpleStagedExample.fib_Lit1(tmp2) 2 - fun fib_Lit2(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 + fun fib_Lit2(n) = + let {tmp, tmp1, tmp2, tmp3, n1} 1 - fun fib_Lit1(n1) = - let tmp - let tmp1 - let n - let tmp2 - let tmp3 + fun fib_Lit1(n) = + let {tmp, tmp1, tmp2, tmp3, n1} 1 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 2b7be28bfd..33a486cbb8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -14,34 +14,17 @@ staged module M with fun f_gen M.f_gen(mkDyn()) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:228) -//│ ═══[RUNTIME ERROR] TypeError: s.hash is not a function -//│ at ShapeSet.lift (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:91:30) -//│ at ShapeSet.mkDyn (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:187:21) -//│ at REPL23:1:49 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:600:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:935:10) -//│ at REPLServer.emit (node:events:508:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [Symbol("f"), {Dyn()}] M.f_gen(mkLit(2)) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:228) -//│ ═══[RUNTIME ERROR] TypeError: s.hash is not a function -//│ at ShapeSet.lift (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:91:30) -//│ at ShapeSet.mkLit (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mjs:192:21) -//│ at REPL26:1:51 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:600:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:935:10) -//│ at REPLServer.emit (node:events:508:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [Symbol("f_Lit2"), {Lit(4)}] print(M."cache$M") -//│ > +//│ > fun f(x) = +//│ > let {y} +//│ > y = *(x, 2) +//│ > y +//│ > fun f_Lit2(x) = +//│ > let {y} +//│ > y = 4 +//│ > 4 diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index ce7354f244..3074610cb7 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -157,8 +157,8 @@ f().foo() //│ }; //│ define Good⁰ as class Good¹ { //│ private val Good$cap⁰; -//│ private val y²; //│ private val x¹; +//│ private val y²; //│ private val scope0$cap⁰; //│ constructor Good² { //│ set scope0$cap⁰ = scope0$cap; From 34a1cc68789db253cdb185cc5a9a989add354e38 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 8 Apr 2026 17:00:30 +0800 Subject: [PATCH 490/654] clean up --- .../codegen/ReflectionInstrumenter.scala | 8 +-- .../src/test/mlscript-compile/Block.mls | 1 - .../test/mlscript/block-staging/Functions.mls | 54 ++++++++----------- 3 files changed, 25 insertions(+), 38 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 49d3d14475..d250a09d44 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -219,7 +219,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n tuple(args.map(_._1)): tup => blockCtor("Call", Ls(fun, tup), "app")(k) case _ => - raise(ErrorReport(msg"Other Results not supported in staged module: ${r.toString()}" -> r.toLoc :: Nil)) + raise(ErrorReport(msg"Other Results not supported in staged module: ${r.getClass.toString()}" -> r.toLoc :: Nil)) End() def transformArg(a: Arg)(using Context)(k: ((Path, Bool)) => Block): Block = @@ -306,13 +306,13 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n transformBlock(body): (body, ctx) => blockCtor("Scoped", Ls(tup, body))(b => Scoped(syms, k(b, ctx))) case Define(_: FunDefn, _) => - raise(ErrorReport(msg"Nested function definitions are not supported in staged modules: ${b.toString()}" -> N :: Nil)) + raise(ErrorReport(msg"Nested function definitions are not supported in staged modules. Try enabling :ftc." -> N :: Nil)) End() case _: Label | _: Break => - raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}.\n Try enabling :ftc." -> N :: Nil)) + raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.getClass.toString()}." -> N :: Nil)) End() case _ => - raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.toString()}" -> N :: Nil)) + raise(ErrorReport(msg"Other Blocks not supported in staged module: ${b.getClass.toString()}" -> N :: Nil)) End() def transformFunDefn(f: FunDefn)(using Context)(k: Path => Block): Block = diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 5214ab2d53..23e53ad6a1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -80,7 +80,6 @@ class Block with Return(val res: Result, val implct: Bool) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) - // TODO: [fyp] handle Scoped nodes Scoped(val symbols: Array[Symbol], val rest: Block) End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index a5875a3acf..d5780f1e75 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -100,14 +100,14 @@ module Nonstaged with fun f() = 1 staged module Staged with fun f() = 1 -//│ > fun ctor_() = () -//│ > fun f() = 1 staged module CallSubst with fun call() = 1 + 1 Nonstaged.f() Staged.f() //│ > fun ctor_() = () +//│ > fun f() = 1 +//│ > fun ctor_() = () //│ > fun call() = //│ > Nonstaged.f() //│ > Staged.f_gen() @@ -195,23 +195,6 @@ module A with //│ > fun ctor_() = () //│ > fun f() = 1 -:todo force enable :ftc to desugar Label and Break -staged module M with - fun f() = - let x = 1 - while x == 1 do - set x = x + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:lbl,true,Scoped(HashSet(tmp:scrut, tmp:tmp),Assign(tmp:scrut,Call(Select(Ref(member:Predef,Some(module:Predef)),Ident(equals)),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Match(Ref(tmp:scrut,None),List((Lit(BoolLit(true)),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Ref(x,None)), Arg(None,Lit(IntLit(1))))),Assign(x,Ref(tmp:tmp,None),Continue(label:lbl))))),None,End()))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). -//│ Try enabling :ftc. -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.201: let x = 1 -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.201: let x = 1 -//│ ╙── ^ -//│ > fun ctor_() = () -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. - :todo :ftc staged module NestedFunDefn with @@ -219,25 +202,30 @@ staged module NestedFunDefn with fun g() = 1 g() fun g(x, y) = x || y -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Unreachable(Rest of abortive match) +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Unreachable //│ > fun ctor_() = () //│ > fun f() = g() //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. -// TODO: force enable :ftc to desugar Label and Break -staged module M with - fun f() = if 1 is +:todo +staged module LabelBreak with + fun f() = + let x = 1 + while x == 1 do + set x = x + 1 + fun g() = if 1 is 0 then 2 1 then 2 else 2 +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ║ l.213: let x = 1 +//│ ║ ^ +//│ ╟── which references the symbol introduced here +//│ ║ l.213: let x = 1 +//│ ╙── ^ //│ > fun ctor_() = () -//│ > fun f() = -//│ > let {scrut} -//│ > scrut = 1 -//│ > if scrut is -//│ > 0 then 2 -//│ > 1 then 2 -//│ > else 2 +//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :e class C(val a) @@ -245,9 +233,9 @@ staged module A with let x = C(1) fun f() = set x.a = 0 fun g() = {1 : 2} -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) -//│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: Record(false,List(RcdArg(Some(Lit(IntLit(1))),Lit(IntLit(2))))) -//│ ║ l.247: fun g() = {1 : 2} +//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.AssignField +//│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record +//│ ║ l.235: fun g() = {1 : 2} //│ ╙── ^ //│ > fun ctor_() = //│ > x = C(1) From fdc34bd44704fdd271a787f038b3d4b343db229a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 9 Apr 2026 01:24:30 +0800 Subject: [PATCH 491/654] add todo example --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 5 ++++- .../mlscript-compile/staging/LinkingGeneratedClasses.mls | 4 ++++ .../staging/out/LinkingGeneratedClasses.mls | 7 +++++++ hkmc2/shared/src/test/mlscript/block-staging/Generate.mls | 7 +++++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 966c8d682a..74f86267d9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -119,7 +119,10 @@ fun val2path(v, allocs) = else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then let meta = v.constructor.(Symbols.definitionMetadata) let clsName = meta.1 - let paramNames = meta.2 + // class may have no parameters + let paramNames = if meta.2 is + undefined then [] + ps then ps let classSym = Block.ConcreteClassSymbol(clsName, undefined, None, []) // TODO: add correct Paramters to ConcreteClassSymbol let mapped = paramNames.map((fld, _, _) => val2path(v.(fld), allocs)) let blocks = mapped.map(_.0) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls new file mode 100644 index 0000000000..301ed25de2 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls @@ -0,0 +1,4 @@ +#config(funcToCls: true) + +staged module LinkingGeneratedClasses with + fun f() = x => x diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls new file mode 100644 index 0000000000..baf579abdd --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -0,0 +1,7 @@ +module LinkingGeneratedClasses with + () + fun ctor() = () + fun f() = + let {obj_2} + obj_2 = new Function_ + obj_2 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 5a137c3dee..0d0424f0d2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -23,3 +23,10 @@ SimpleStagedExample.f(1, 5) :expect 5 SimpleStagedExample.fib(5) //│ = 5 + + +import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" + + +:todo +LinkingGeneratedClasses."generate"("./hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls") From ff44ea11b55a8b5c64bf35c41af7c3c9b767dbaf Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 9 Apr 2026 14:49:27 +0800 Subject: [PATCH 492/654] WIP: import --- .../codegen/ReflectionInstrumenter.scala | 9 ++++---- .../src/test/mlscript-compile/Block.mls | 4 ++-- .../staging/LinkingGeneratedClasses.mls | 11 ++++++++- .../staging/out/LinkingGeneratedClasses.mls | 17 ++++++++++---- .../staging/out/SimpleStagedExample.mls | 2 ++ .../test/mlscript/block-staging/Generate.mls | 23 +++++++++++++++---- 6 files changed, 50 insertions(+), 16 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index b07362b610..93b94b5b52 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -424,7 +424,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => Define(ValDefn(generatorMapTsym, generatorMapSym, map)(N), rest) - def genOutputBody(psym: VarSymbol) = + def genOutputBody(sourceSym: VarSymbol, psym: VarSymbol) = val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) val gens = helperMethods.map(_(1)) @@ -438,13 +438,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ((args, k) => call(_, args, true, "gen_call")(k)) (genPath) ) - callGenCont(call(blockMod("codegen"), toValue(modSym.nme) :: cachePath :: psym.asPath :: Nil, true, "tmp")(_ => End())) + callGenCont(call(blockMod("codegen"), toValue(modSym.nme) :: cachePath :: sourceSym.asPath :: psym.asPath :: Nil, true, "tmp")(_ => End())) val entryFunDef = val sym = BlockMemberSymbol("generate", Nil) + val sourceSym = VarSymbol(Ident("source")) val psym = VarSymbol(Ident("path")) - val params = PlainParamList(Param.simple(psym) :: Nil) - FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, genOutputBody(psym))(false, N) + val params = PlainParamList(Param.simple(sourceSym) :: Param.simple(psym) :: Nil) + FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, genOutputBody(sourceSym, psym))(false, N) // used for staging classes inside modules val newCompanion = companion.copy( diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index f15dd2f089..6b89c8b508 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -216,11 +216,11 @@ fun printCode(x) = fun printModule(name, methods) = print("module " + name + " with" + indent("\n" + methods.map(showDefn).join("\n"))) -fun codegen(name, cache, file) = +fun codegen(name, cache, source, file) = let methods = cache.dump() let ctorBody = cache.getFun("ctor").value.0.body let fullpath = path.join of process.cwd(), file - let code = "module " + name + " with" + indent("\n" + showBlock(ctorBody) + "\n" + methods.map(showDefn).join("\n")) + let code = "import \"" + source + "\"\nmodule " + name + " with" + indent("\n" + showBlock(ctorBody) + "\n" + methods.map(showDefn).join("\n")) if not fs.existsSync(fullpath) do fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls index 301ed25de2..01191dec11 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls @@ -1,4 +1,13 @@ #config(funcToCls: true) +class C staged module LinkingGeneratedClasses with - fun f() = x => x + class D + fun test1 = new C + fun test2 = new D +// staged module LinkingGeneratedClasses with +// class Test +// val privateTest = Test +// // this lambda get desugared, but the generated class cannot be reached from here? +// fun f() = x => x + diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index baf579abdd..9c8b2a1fc3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,7 +1,14 @@ +import "../LinkingGeneratedClasses.mls" +open LinkingGeneratedClasses module LinkingGeneratedClasses with - () - fun ctor() = () - fun f() = + class D + fun test1 = + let {obj_1} + obj_1 = new C + obj_1 + fun test2 = let {obj_2} - obj_2 = new Function_ - obj_2 \ No newline at end of file + obj_2 = new D + obj_2 + fun ctor() = + class D \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 2f20fc6526..af87bde8ef 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,3 +1,5 @@ +import "../SimpleStagedExample.mls" +open SimpleStagedExample module SimpleStagedExample with () fun ctor() = () diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 0d0424f0d2..79dd6041e4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -5,8 +5,9 @@ import "../../mlscript-compile/staging/SimpleStagedExample.mls" -SimpleStagedExample."generate"("./hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls") +SimpleStagedExample."generate"("../SimpleStagedExample.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls") +// console.log(SimpleStagedExample."cache$SimpleStagedExample".toString()) import "../../mlscript-compile/staging/out/SimpleStagedExample.mls" @@ -19,14 +20,28 @@ SimpleStagedExample.foo() SimpleStagedExample.f(1, 5) //│ = 6 - :expect 5 SimpleStagedExample.fib(5) -//│ = 5 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:228) +//│ ═══[RUNTIME ERROR] TypeError: SimpleStagedExample1.fib is not a function +//│ at SimpleStagedExample.fib (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mjs:26:37) +//│ at REPL29:1:59 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:600:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:935:10) +//│ at REPLServer.emit (node:events:508:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:267) +//│ ═══[RUNTIME ERROR] Expected: '5', got: 'undefined' import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" :todo -LinkingGeneratedClasses."generate"("./hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls") +LinkingGeneratedClasses."generate"("../LinkingGeneratedClasses.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls") From 8d4a243a93d84bf8f2f7f9bf8ad23177fcac9835 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 9 Apr 2026 18:16:53 +0800 Subject: [PATCH 493/654] apply suggestions --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 3 +++ hkmc2/shared/src/test/mlscript-compile/Block.mls | 5 +---- hkmc2/shared/src/test/mlscript/block-staging/Functions.mls | 4 ++-- hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls | 2 -- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index d250a09d44..3c59539985 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -201,6 +201,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(n transformPath(cls): cls => tuple(xs.map(_._1)): codes => blockCtor("Instantiate", Ls(cls, codes), "inst")(k) + // desugar Runtime.Tuple.get into Select + case Call(fun, Ls(Arg(_, scrut), Arg(_, Value.Lit(Tree.IntLit(idx))))) if fun == State.runtimeSymbol.asPath.selSN("Tuple").selSN("get") => + transformPath(Select(scrut, Tree.Ident(idx.toString()))(N))(k) case Call(fun, args) => val stagedFunPath = fun match case s @ Select(qual, Tree.Ident(name)) => s.symbol.flatMap({ diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 23e53ad6a1..5d4db95bda 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -100,10 +100,7 @@ fun showLiteral(l: Literal) = Str then "\"" + l.toString() + "\"" else l.toString() -fun showSymbol(s: Symbol) = if s.name is - "runtime" then "Runtime" - // FIXME: this is a hack for local symbols, and will fail if global symbols contain them, like the generated classes of :ftc. - else s.name.replaceAll("$", "_") +fun showSymbol(s: Symbol) = s.name.replaceAll("$", "_") fun showPath(p: Path): Str = if p is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index d5780f1e75..a27e47f856 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -65,8 +65,8 @@ staged module Expressions with //│ > if x1 is //│ > [] then 1 //│ > [_, _] then -//│ > element0_ = Runtime.Tuple.get(x1, 0) -//│ > element1_ = Runtime.Tuple.get(x1, 1) +//│ > element0_ = x1.0 +//│ > element1_ = x1.1 //│ > if element0_ is //│ > 1 then //│ > if element1_ is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 50c96ce102..5b05ecdb59 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -22,9 +22,7 @@ printCode(ValueLit("string")) //│ > "string" printCode(Symbol("internal$")) -printCode(Symbol("runtime")) //│ > internal_ -//│ > Runtime printCode(Select(ValueRef(Symbol("p")), Symbol("x"))) printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) From 1ec85b43aee8f7af5ed218167aa18a5cb482af77 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 9 Apr 2026 19:07:43 +0800 Subject: [PATCH 494/654] udpate test --- .../shared/src/test/mlscript/block-staging/Functions.mls | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index a27e47f856..d57097a270 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -156,8 +156,6 @@ staged module ClassDefs with //│ > fun ctor_() = //│ > class A -// :lot -:todo ValDefn in class staged module ValClass with class A(val a) //│ > fun ctor_() = @@ -175,7 +173,6 @@ staged module ClassFunctions with //│ > 1 + tmp //│ > fun g() = InnerClass.f() -:todo staged module RetUnit with fun f() = () //│ > fun ctor_() = () @@ -219,10 +216,10 @@ staged module LabelBreak with else 2 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.213: let x = 1 +//│ ║ l.210: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.213: let x = 1 +//│ ║ l.210: let x = 1 //│ ╙── ^ //│ > fun ctor_() = () //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -235,7 +232,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.AssignField //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.235: fun g() = {1 : 2} +//│ ║ l.232: fun g() = {1 : 2} //│ ╙── ^ //│ > fun ctor_() = //│ > x = C(1) From fb117a772bbfc85685e0bfaab8af8bc5a6969446 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 9 Apr 2026 19:19:48 +0800 Subject: [PATCH 495/654] wip --- .../codegen/ReflectionInstrumenter.scala | 27 ++++++------------- .../test/mlscript/block-staging/Classes.mls | 3 +-- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index c3a119c020..371da11a81 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -62,10 +62,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val scope = Scope.empty(Scope.Cfg.default) // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() - val symbolMapSym: Symbol = TempSymbol(N, "symbolMap") - // only create symbolMap if we create entries to avoid changing IR for unrelated tests - var symbolMapUsed: Bool = false - + var symbolMapSym: Opt[Symbol] = N + // helpers for constructing Block def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = @@ -114,8 +112,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def cachedK(p: Path, ctx: Context) = k(p, ctx.addCache(sym, p)) def checkMap(key: Path, p: Path, ctx: Context) = - symbolMapUsed = true - blockCall("checkMap", Ls(symbolMapSym, key, p))(cachedK(_, ctx)) + if symbolMapSym is None then symbolMapSym = S(TempSymbol(N, "symbolMap")) + blockCall("checkMap", Ls(symbolMapSym.get, key, p))(cachedK(_, ctx)) stagingCtx.getCache(sym).map(cachedK(_, stagingCtx)).getOrElse: sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => @@ -431,9 +429,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S call(cachePath.selSN("toString"), Nil, false): str => call(printFun, Ls(str), false): _ => call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => - if symbolMapUsed - then call(printFun, Ls(symbolMapSym), false)(_ => rest) - else rest + symbolMapSym.map(sym => call(printFun, Ls(sym), false)(_ => rest)).getOrElse(rest) // used for staging classes inside modules val newCompanion = companion.copy( @@ -457,13 +453,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def apply(b: Block) = mkDefnMap(b) val rest = applyBlock(b) - if symbolMapUsed then - Scoped( - Set(symbolMapSym), - Assign( - symbolMapSym, - Instantiate(false, State.globalThisSymbol.asPath.selSN("Map"), Nil), - rest, - ), - ) - else rest + symbolMapSym match + case S(sym) => Scoped(Set(sym), Assign(sym, Instantiate(false, State.globalThisSymbol.asPath.selSN("Map"), Nil), rest)) + case N => rest diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index d2f8c22f4a..5def26db96 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -56,7 +56,6 @@ staged module M with //│ > } //│ > } -// :sir staged class C with fun f() = 1 //│ > fun ctor_() = () @@ -66,7 +65,7 @@ staged class C with :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.67: staged class C(x) +//│ ║ l.66: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with From 334a53bdea3d9d987e6be1c3df0d9519d2a33dcc Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 9 Apr 2026 19:31:17 +0800 Subject: [PATCH 496/654] make note on test case --- .../src/test/mlscript/block-staging/Functions.mls | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index d57097a270..94c6756f5e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -61,7 +61,7 @@ staged module Expressions with //│ > Int then 3 //│ > else 0 //│ > fun match2() = -//│ > let {element1_, element0_, a} +//│ > let {element0_, a, element1_} //│ > if x1 is //│ > [] then 1 //│ > [_, _] then @@ -192,17 +192,14 @@ module A with //│ > fun ctor_() = () //│ > fun f() = 1 -:todo +// FIXME: for g to be defined in the next stage, we need to also print the other ClsLikeDefn/FunDefn nodes when printing the next stage :ftc staged module NestedFunDefn with fun f() = fun g() = 1 g() - fun g(x, y) = x || y -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Unreachable //│ > fun ctor_() = () //│ > fun f() = g() -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :todo staged module LabelBreak with @@ -216,10 +213,10 @@ staged module LabelBreak with else 2 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.210: let x = 1 +//│ ║ l.207: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.210: let x = 1 +//│ ║ l.207: let x = 1 //│ ╙── ^ //│ > fun ctor_() = () //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -232,7 +229,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.AssignField //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.232: fun g() = {1 : 2} +//│ ║ l.229: fun g() = {1 : 2} //│ ╙── ^ //│ > fun ctor_() = //│ > x = C(1) From cca2b0a0f3c225dacfb53b5213d8b5e259521066 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 9 Apr 2026 19:54:30 +0800 Subject: [PATCH 497/654] WIP --- .../scala/hkmc2/codegen/ReflectionInstrumenter.scala | 5 ++++- .../src/test/mlscript/block-staging/PrintingTest.mls | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index eb4c022d25..bf7565a42c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -61,7 +61,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // TODO: there could be a fresh scope per function body, instead of a single one for the entire program val scope = Scope.empty(Scope.Cfg.default) // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes - val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() + val defnMap = HashMap[Symbol, ClsLikeDefn | FunDefn]() var symbolMapSym: Opt[Symbol] = N // helpers for constructing Block @@ -451,6 +451,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S defnMap.addOne(c.isym, c) super.applyDefn(defn) case _ => super.applyDefn(defn) + override def applyFunDefn(f: FunDefn) = + if f.owner.isEmpty then defnMap.addOne(f.sym, f) + super.applyFunDefn(f) transformer.applyBlock(b) def apply(b: Block) = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls new file mode 100644 index 0000000000..1e2db44bfe --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls @@ -0,0 +1,11 @@ +:js +:staging + +fun f() = 1 +class C + +staged module M with + fun g() = f() +//│ > fun ctor_() = () +//│ > fun g() = f() +//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } From d394e3e5a90538088f5caf927a79a21d7378d214 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 10 Apr 2026 00:35:53 +0800 Subject: [PATCH 498/654] WIP: implement module/class printing --- .../codegen/ReflectionInstrumenter.scala | 57 ++++++++--- .../src/test/mlscript-compile/Block.mls | 11 ++- .../mlscript-compile/SpecializeHelpers.mls | 62 +++++++++++- .../mlscript/block-staging/PrintingTest.mls | 94 +++++++++++++++++-- 4 files changed, 197 insertions(+), 27 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index a2568ba8ae..bb1424c85b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -291,10 +291,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S blockCtor("Define", Ls(cls, p))(k(_, ctx)) case Define(v: ValDefn, rest) => // TODO: only allow ValDefn inside ctors - transformBlock(rest): (p, ctx) => - transformOption(v.tsym.owner, transformSymbol(_))(using ctx): (owner, ctx) => - transformSymbol(v.sym)(using ctx): (sym, ctx) => - transformPath(v.rhs)(using ctx): (rhs, ctx) => + transformOption(v.tsym.owner, transformSymbol(_)): (owner, ctx) => + transformSymbol(v.sym)(using ctx): (sym, ctx) => + // println(v.rhs) + transformPath(v.rhs)(using ctx): (rhs, ctx) => + transformBlock(rest)(using ctx): (p, ctx) => blockCtor("ValDefn", Ls(owner, sym, rhs)): v => blockCtor("Define", Ls(v, p))(k(_, ctx)) case End(_) => ruleEnd()(k(_, ctx)) @@ -354,17 +355,30 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case Define(defn: ClsLikeDefn, rest) if defn.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) || defn.companion.isEmpty && defn.isym.defn.exists(_.hasStagedModifier.isDefined) => - val (sym, companion, ctor, ctorParams, methods) = defn.companion match - case S(companion) => (companion.isym, companion, companion.ctor, N, companion.methods) + val (sym, companion, preCtor, ctor, ctorParams, methods) = defn.companion match + case S(companion) => (companion.isym, companion, End(), companion.ctor, Ls(PlainParamList(Nil)), companion.methods) case N => + def replaceSuper(parentPath: Path) = new BlockTransformer(SymbolSubst.Id): + override def applyResult(r: Result)(k: Result => Block) = super.applyResult(r): r => + r match + case Call(Value.Ref(sym: BuiltinSymbol, _), args) if sym.nme == "super" => k(Call(parentPath, args)(true, false, false)) + case r => k(r) if !defn.privateFields.isEmpty then raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) return End() val companion = ClsLikeBody(ModuleOrObjectSymbol(Tree.TypeDef(syntax.Mod, Tree.Empty(), N), Tree.Ident(defn.sym.nme)), Nil, Nil, Nil, End()) - val ctor = Begin(defn.preCtor, defn.ctor) - (defn.sym, companion, ctor, defn.paramsOpt.map(refreshParamList), defn.methods) + val preCtor = defn.parentPath match + case S(parent) => replaceSuper(parent).applyBlock(defn.preCtor) + case N => defn.preCtor + val params = defn.paramsOpt match + case S(p) => (p :: defn.auxParams) + case N => defn.auxParams + (defn.sym, companion, preCtor, defn.ctor, params, defn.methods) val modSym = companion.isym + val ownerSym = defn.companion match + case S(defn) => defn.isym + case N => defn.isym // avoid name clash of cache and generator map for derived staged classes val suffix = "$" + scope.allocateOrGetName(sym) @@ -390,9 +404,23 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S call(helperMod("specialize"), Ls(cachePath, toValue(f.sym.nme), stagedPath, args)): res => Return(res, false) FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(false, f.configOverride) - - val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false, N) - val (helperMethods, cacheEntries, generatorEntries) = (ctorFun :: methods).map(f => + + val preCtorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("preCtor$", Nil, false), Ls(PlainParamList(Nil)), preCtor)(false, N) + val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), ctorParams, ctor)(false, N) + + // refresh VarSymbols for ctor + val paramSymMap = ctorFun.params.map(_.params.map(x => x.sym -> VarSymbol(x.sym.id))).flatten.toMap + val paramRewrite = new BlockTransformer(new SymbolSubst(): + override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l) + ): + override def applyScopedBlock(b: Block) = b match + case Scoped(s, bd) => + val nb = applySubBlock(bd) + val ns = s.map(applyLocal) + if (nb is bd) && (s is ns) then b else Scoped(ns, nb) + case _ => applySubBlock(b) + + val (helperMethods, cacheEntries, generatorEntries) = methods.map(f => val staged = stageMethod(f) val stagedPath = modSym.asPath.selSN(staged.sym.nme) val gen = genMethod(f, stagedPath) @@ -414,8 +442,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S cacheEntries.collectApply: cacheTups => tuple(cacheTups): tup => this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => - assign(Instantiate(false, helperMod("FunCache"), Ls(Arg(N, map)))): funCache => - Define(ValDefn(cacheTsym, cacheSym, funCache)(N), rest) + transformSymbol(ownerSym)(using Context(new HashMap())): (stagedSym, _) => + this.ctor(helperMod("FunCache"), Ls(stagedSym, map)): funCache => + Define(ValDefn(cacheTsym, cacheSym, funCache)(N), rest) def generatorMapDecl(rest: Block) = generatorEntries.collectApply: defs => @@ -437,7 +466,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // used for staging classes inside modules val newCompanion = companion.copy( - methods = helperMethods.flatten, + methods = stageMethod(preCtorFun) :: stageMethod(paramRewrite.applyFunDefn(ctorFun)) :: helperMethods.flatten, ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), publicFields = companion.publicFields, ) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 935e96e96c..db9733793d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -87,15 +87,16 @@ class Block with End() fun concat(b1: Block, b2: Block) = if b1 is + Return then b1 + End then b2 Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, concat(rest, b2)) - Return(res, implct) then b1 Assign(lhs, rhs, rest) then Assign(lhs, rhs, concat(rest, b2)) Define(defn, rest) then Define(defn, concat(rest, b2)) Scoped(symbols, rest) then Scoped(symbols, concat(rest, b2)) - End() then b2 fun indent(s: Str) = s.replaceAll("\n", "\n ") +// we write .map(f(_)) instead of .map(f) here because of method debinding, see https://github.com/hkust-taco/mlscript/issues/450 class Printer(val owner: Opt[Class]) with fun showLiteral(l: Literal) = if l is @@ -111,7 +112,7 @@ class Printer(val owner: Opt[Class]) with // avoids needing to import the runtime module Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" Select(qual, name) and - qual is ValueRef(sym) and owner is Some(owner) and sym == owner then showSymbol(name) + qual is ValueRef(sym) and owner is Some(owner) and sym === owner then showSymbol(name) else showPath(qual) + "." + showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" @@ -156,7 +157,7 @@ class Printer(val owner: Opt[Class]) with None then "" fun showParamList(ps: Array[ParamList]) = - ps.map(showParams).join("") + ps.map(showParams(_)).join("") fun showDefn(d: Defn): Str = if d is @@ -186,7 +187,7 @@ class Printer(val owner: Opt[Class]) with + if dflt is Some(db) then indent("\nelse" + indent((if db is Return then " " else "\n") + showBlock(db))) else "" + showRestBlock(rest) Scoped(symbols, rest) then - // initialize symbols + // but this one must use the function argument instead of a lambda... "let {" + symbols.map(showSymbol).join(", ") + "}" + showRestBlock(rest) End() then "()" _ then "" + b diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index c326bf0141..97c13a9057 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -38,8 +38,66 @@ fun specialize(cache, funName, dflt, shapes) = let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, res.0.body), res.1]) [entry.0.sym, entry.1] -class FunCache(val cache: Map[Any, [Block.Block, Shape]]) with +class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with + val printer = Printer(Some(owner)) fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions fun setFun(k, v) = cache.set(k, v); v - fun toString() = cache.values().map(p => showDefn(p.0)).toArray().join("\n") \ No newline at end of file + fun toString() = + let decl = if owner is + ConcreteClassSymbol then "class " + ModuleSymbol then "module " + let runtimeClass = if owner is + ConcreteClassSymbol(_, _, Some, _) then owner.value.class + else owner.value + + val paramList = if owner is + ConcreteClassSymbol and owner.paramsOpt is + Some(ps) then [ps, ...owner.auxParams] + else owner.auxParams + ModuleSymbol then [] + + // process preCtor: inline temp variable when printing + // console.log(Block.show(preCtor)) + class InlinePrinter(ctx: Map[Symbol, String]) extends Printer(Some(owner.value)) with + // TODO: is there some way to call the inherited functions? + fun showPath(p) = if p is + ValueRef(s) and ctx.has(s) then ctx.get(s) + Select(qual, name) then showPath(qual) + "." + printer.showSymbol(name) + DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" + DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" + ValueRef(s) then printer.showSymbol(s) + ValueLit(lit) then printer.showLiteral(lit) + + fun inlineResult(ctx: Map[Result, String])(r) = InlinePrinter(ctx).showResult(r) + + fun inlineAssigments(ctx: Map[Symbol, String])(b) = if b is + Return(res, implct) then inlineResult(ctx)(res) + Scoped(_, rest) then inlineAssigments(ctx)(rest) + Assign(lhs, rhs, rest) then inlineAssigments(ctx.set(lhs, inlineResult(ctx)(rhs)))(rest) + End then "" + else throw Error("unexpected Block type in constructor: " + b.toString()) + + let preCtor = runtimeClass."preCtor$_instr"().body + assert preCtor is Block.Block + let extendsClause = inlineAssigments(new Map())(preCtor) + + // process ctor: remove ValDefn of parameters defined in paramsOpt + fun removeExtraValDefn(params, block) = if block is + Define(ValDefn(Some, sym, ValueRef(rhs)), rest) and params.has(rhs) then removeExtraValDefn(params, rest) + Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, removeExtraValDefn(params, rest)) + Assign(lhs, rhs, rest) then Assign(lhs, rhs, removeExtraValDefn(params, rest)) + Define(defn, rest) then Define(defn, removeExtraValDefn(params, rest)) + Scoped(symbols, rest) then Scoped(symbols, removeExtraValDefn(params, rest)) + else block + + let ctor = runtimeClass."ctor$_instr"() + assert ctor is FunDefn + let params = new Set(ctor.params.flat()) + let ctorBody = removeExtraValDefn(params, ctor.body) + + decl + owner.name + printer.showParamList(paramList) + + if extendsClause == "" then "" else (" extends " + extendsClause) + + if cache.length == 0 then "" else " with" + + indent("\n" + printer.showBlock(ctorBody)) + + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().join("\n")) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls index 1e2db44bfe..3836e9685f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls @@ -1,11 +1,93 @@ :js :staging -fun f() = 1 -class C +fun f(_) = 1 +class C(val x) + +// :lot +class D(val z) extends C(z + f(z)) with + let {tmp3} + tmp3 = z + z + val b = tmp3 + +// :sjs +staged class D(val z) extends C([2, z + f(z)]."0") with + val b = z + z + fun f() = b +//│ > class D1(z) extends C([2, z + f(z)].("0")) with +//│ > let {tmp3} +//│ > tmp3 = z + z +//│ > val b = tmp3 +//│ > fun f() = b +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { +//│ > [Function: D] { +//│ > class: [class D2 extends C] { +//│ > 'cache$D': [FunCache], +//│ > 'generatorMap$D': [Map] +//│ > } +//│ > } => ConcreteClassSymbol { +//│ > name: 'D1', +//│ > value: [Function: D] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > }, +//│ > [Function: C] { +//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] +//│ > } +//│ > } + +:e +// :sir +staged class D(val x)(val y, val z)(val a) with + val b = 1 + fun g() = x +//│ ═══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. +//│ > class D1(x)(y, z)(a) with +//│ > val b = 1 +//│ > fun g() = x +//│ > Map(1) { 'g' => [Function: g_gen] } +//│ > Map(1) { +//│ > [Function: D] { +//│ > class: [class D4] { 'cache$D': [FunCache], 'generatorMap$D': [Map] } +//│ > } => ConcreteClassSymbol { +//│ > name: 'D1', +//│ > value: [Function: D] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [ [Array], [Array] ] +//│ > } +//│ > } + +import "../../mlscript-compile/Block.mls" +import "../../mlscript-compile/Option.mls" + +open Block +open Option + staged module M with - fun g() = f() -//│ > fun ctor_() = () -//│ > fun g() = f() -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } + val x = 1 + fun g() = f(undefined) +//│ > module M with +//│ > val x = 1 +//│ > fun g() = f(undefined) +//│ > Map(1) { 'g' => [Function: g_gen] } +//│ > Map(1) { +//│ > [class M] { +//│ > x: 1, +//│ > 'cache$M': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$M': Map(1) { 'g' => [Function: g_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'M', +//│ > value: [class M] { x: 1, 'cache$M': [FunCache], 'generatorMap$M': [Map] } +//│ > } +//│ > } From ef1aa895586ec6ba982200c35f0ee4faf06516e9 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 10 Apr 2026 00:46:35 +0800 Subject: [PATCH 499/654] formatting --- .../codegen/ReflectionInstrumenter.scala | 35 +++++++++---------- .../test/mlscript/block-staging/PrintCode.mls | 4 +-- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index bb1424c85b..19f8f6ee89 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -272,22 +272,21 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformResult(res): (x, ctx) => blockCtor("Return", Ls(x, toValue(implct)), "return")(k(_, ctx)) case Assign(x, r, b) => - transformResult(r): (y, ctx) => - transformSymbol(x)(using ctx): (xSym, ctx) => - blockCtor("ValueRef", Ls(xSym)): xStaged => - (Assign(x, xStaged, _)): - given Context = ctx.addCache(x.asPath, xStaged) - transformBlock(b): (z, ctx) => + transformSymbol(x): (xSym, ctx) => + blockCtor("ValueRef", Ls(xSym)): xStaged => + (Assign(x, xStaged, _)): + transformResult(r)(using ctx.addCache(x.asPath, xStaged)): (y, ctx) => + transformBlock(b)(using ctx): (z, ctx) => blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) case Define(cls: ClsLikeDefn, rest) => assert(cls.companion.isEmpty, "nested module not supported") - transformBlock(rest): (p, ctx) => - transformSymbol(cls.isym)(using ctx): (c, ctx) => - // staging the methods within the module - cls.methods.map(defn => ctx => transformFunDefn(defn)(using ctx)).chainContext(using ctx): (methods, ctx) => - tuple(methods): methods => - optionNone(): none => // TODO: handle companion object - blockCtor("ClsLikeDefn", Ls(c, methods, none)): cls => + transformSymbol(cls.isym): (c, ctx) => + // staging the methods within the module + cls.methods.map(defn => ctx => transformFunDefn(defn)(using ctx)).chainContext(using ctx): (methods, ctx) => + tuple(methods): methods => + optionNone(): none => // TODO: handle companion object + blockCtor("ClsLikeDefn", Ls(c, methods, none)): cls => + transformBlock(rest)(using ctx): (p, ctx) => blockCtor("Define", Ls(cls, p))(k(_, ctx)) case Define(v: ValDefn, rest) => // TODO: only allow ValDefn inside ctors @@ -326,11 +325,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def transformFunDefn(f: FunDefn)(using Context)(k: (Path, Context) => Block): Block = // maintain parameter names in instrumented code - transformParams(f.params): (paramList, ctx) => - transformBlock(f.body)(using ctx): (body, ctx) => - if f.params.length > 1 then - raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) - transformSymbol(f.sym)(using ctx): (sym, ctx) => + transformSymbol(f.sym): (sym, ctx) => + if f.params.length > 1 then + raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) + transformParams(f.params)(using ctx): (paramList, ctx) => + transformBlock(f.body)(using ctx): (body, ctx) => blockCtor("FunDefn", Ls(sym, paramList, body))(k(_, ctx)) def stageMethod(f: FunDefn): FunDefn = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 650a92bba4..a510f83076 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -95,7 +95,7 @@ printCode(Scoped([Symbol("y")], Match( //│ > else 1 //│ > y -printCode(Scoped([Symbol("y")], Match( +printCode(Scoped([Symbol("y")], Match( ValueLit(1), [Arm(Lit(1), Assign(Symbol("y"), ValueLit(1), Return(ValueRef(Symbol("y")), false)))], Some(Assign(Symbol("y"), ValueLit(2), Return(ValueRef(Symbol("y")), false))), @@ -133,5 +133,5 @@ printCode(Scoped([Symbol("y")], Match( //│ > y = 3 //│ > y -Printer(Some(aSym)).printCode(Select(ValueRef(aSym), Symbol("x"))) +Printer(Some(dSym)).printCode(Select(ValueRef(dSym), Symbol("x"))) //│ > x From 4d2d118425c640329d3c8229f16aa077bd229c79 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 10 Apr 2026 01:07:04 +0800 Subject: [PATCH 500/654] Revert "WIP" This reverts commit cca2b0a0f3c225dacfb53b5213d8b5e259521066. --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 19f8f6ee89..538e971ed5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -61,7 +61,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // TODO: there could be a fresh scope per function body, instead of a single one for the entire program val scope = Scope.empty(Scope.Cfg.default) // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes - val defnMap = HashMap[Symbol, ClsLikeDefn | FunDefn]() + val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() var symbolMapSym: Opt[Symbol] = N // helpers for constructing Block @@ -480,9 +480,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S defnMap.addOne(c.isym, c) super.applyDefn(defn) case _ => super.applyDefn(defn) - override def applyFunDefn(f: FunDefn) = - if f.owner.isEmpty then defnMap.addOne(f.sym, f) - super.applyFunDefn(f) transformer.applyBlock(b) def apply(b: Block) = From 131f33531832e42ec86f4c9c5f8972b3e7faa38d Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 10 Apr 2026 01:32:19 +0800 Subject: [PATCH 501/654] bump successful tests --- .../codegen/ReflectionInstrumenter.scala | 1 - .../src/test/mlscript-compile/Shape.mls | 8 +- .../test/mlscript/block-staging/Classes.mls | 117 +++-- .../test/mlscript/block-staging/Functions.mls | 448 +++++++++++------- .../mlscript/block-staging/GeneratorMap.mls | 13 +- .../mlscript/block-staging/SpecializeTest.mls | 40 +- .../mlscript/block-staging/StageSymbols.mls | 244 ++++++---- .../mlscript/block-staging/SymbolRenaming.mls | 125 +++-- 8 files changed, 621 insertions(+), 375 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 538e971ed5..c9b3edfcdd 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -292,7 +292,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // TODO: only allow ValDefn inside ctors transformOption(v.tsym.owner, transformSymbol(_)): (owner, ctx) => transformSymbol(v.sym)(using ctx): (sym, ctx) => - // println(v.rhs) transformPath(v.rhs)(using ctx): (rhs, ctx) => transformBlock(rest)(using ctx): (p, ctx) => blockCtor("ValDefn", Ls(owner, sym, rhs)): v => diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index d8a3dcca30..740b3d51f4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,13 +1,15 @@ import "./Block.mls" import "./Option.mls" -open Block { Literal, ClassSymbol, showSymbol, isPrimitiveType, isPrimitiveTypeOf } +open Block { Literal, ClassSymbol, isPrimitiveType, isPrimitiveTypeOf } open Option type Shape = Shape.Shape module Shape with... +val printer = Block.Printer(None) + class Shape with constructor Dyn() @@ -18,9 +20,9 @@ class Shape with fun show(s: Shape) = if s is Dyn then "Dyn" - Lit(lit) then "Lit(" + Block.showLiteral(lit) + ")" + Lit(lit) then "Lit(" + printer.showLiteral(lit) + ")" Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" - Class(sym, params) then "Class(" + showSymbol(sym) + ", [" + params.map(show).join(", ") + "])" + Class(sym, params) then "Class(" + printer.showSymbol(sym) + ", [" + params.map(show).join(", ") + "])" fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 5def26db96..5ccf6c067b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -8,17 +8,19 @@ class C with fun call(x) = x + 1 staged module M with fun f(x) = x.C#call(10) -//│ > fun ctor_() = () -//│ > fun f(x) = x.call(10) -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > module M with +//│ > () +//│ > fun f(x) = x.call(10) +//│ > Map(1) { 'f' => [Function: f_gen] } staged class A(val a) -//│ > fun ctor_(a) = -//│ > val a = a -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } +//│ > class A1(a) with +//│ > () +//│ > +//│ > Map(0) {} //│ > Map(1) { //│ > [Function: A] { -//│ > class: [class A] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } +//│ > class: [class A] { 'cache$A': [FunCache], 'generatorMap$A': Map(0) {} } //│ > } => ConcreteClassSymbol { //│ > name: 'A1', //│ > value: [Function: A] { class: [Function] }, @@ -29,10 +31,27 @@ staged class A(val a) staged module C with class I -//│ > fun ctor_() = +//│ > module C with //│ > class I -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(1) { +//│ > +//│ > Map(0) {} +//│ > Map(2) { +//│ > [class C2] { +//│ > I: [class I] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > 'cache$C': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: Map(0) {}, +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$C': Map(0) {} +//│ > } => ModuleSymbol { +//│ > name: 'C', +//│ > value: [class C2] { +//│ > I: [Function], +//│ > 'cache$C': [FunCache], +//│ > 'generatorMap$C': Map(0) {} +//│ > } +//│ > }, //│ > [class I] { Symbol(mlscript.definitionMetadata): [ 'class', 'I' ] } => ConcreteClassSymbol { //│ > name: 'I', //│ > value: [class I] { Symbol(mlscript.definitionMetadata): [Array] }, @@ -44,28 +63,41 @@ staged module C with class C staged module M with fun f() = C -//│ > fun ctor_() = () -//│ > fun f() = C -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(1) { +//│ > module M with +//│ > () +//│ > fun f() = C +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { //│ > [class C4] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ConcreteClassSymbol { //│ > name: 'C', //│ > value: [class C4] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > paramsOpt: None {}, //│ > auxParams: [] +//│ > }, +//│ > [class M2] { +//│ > 'cache$M': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$M': Map(1) { 'f' => [Function: f_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'M', +//│ > value: [class M2] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } //│ > } //│ > } staged class C with fun f() = 1 -//│ > fun ctor_() = () -//│ > fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > class C1 with +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.66: staged class C(x) +//│ ║ l.98: staged class C(x) //│ ╙── ^^^^^^^^^^ staged class B(val x) with @@ -73,10 +105,10 @@ staged class B(val x) with staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 -//│ > fun ctor_(x) = -//│ > val x = x -//│ > fun f(y) = B1.x + y -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > class B1(x) with +//│ > () +//│ > fun f(y) = x + y +//│ > Map(1) { 'f' => [Function: f_gen] } //│ > Map(1) { //│ > [Function: B] { //│ > class: [class B] { 'cache$B': [FunCache], 'generatorMap$B': [Map] } @@ -87,12 +119,10 @@ staged class D(val x) extends B(x+1) with //│ > auxParams: [] //│ > } //│ > } -//│ > fun ctor_(x) = -//│ > let {tmp} -//│ > tmp = x + 1 -//│ > super(tmp) -//│ > fun f() = 42 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > class D1(x) extends B1(x + 1) with +//│ > val y = 1 +//│ > fun f() = 42 +//│ > Map(1) { 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: B] { //│ > class: [class B] { @@ -126,13 +156,10 @@ staged module M with fun f() = Unstaged; Staged -//│ > fun ctor_(x) = -//│ > val x = x -//│ > fun inner() = 1 -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'inner' => [Function: inner_gen] -//│ > } +//│ > class Staged1(x) with +//│ > () +//│ > fun inner() = 1 +//│ > Map(1) { 'inner' => [Function: inner_gen] } //│ > Map(1) { //│ > [Function: Staged] { //│ > class: [class Staged] { @@ -146,10 +173,11 @@ staged module M with //│ > auxParams: [] //│ > } //│ > } -//│ > fun ctor_() = () -//│ > fun f() = ,(Unstaged, Staged1) -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(2) { +//│ > module M with +//│ > () +//│ > fun f() = ,(Unstaged, Staged1) +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(3) { //│ > [Function: Staged] { //│ > class: [class Staged] { //│ > 'cache$Staged': [FunCache], @@ -169,5 +197,16 @@ staged module M with //│ > value: [class Unstaged] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > paramsOpt: None {}, //│ > auxParams: [] +//│ > }, +//│ > [class M4] { +//│ > 'cache$M': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$M': Map(1) { 'f' => [Function: f_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'M', +//│ > value: [class M4] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } //│ > } //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 47dc1fd31b..5dc4779151 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -6,15 +6,13 @@ staged module Rebinding with fun lit() = let x = 42 x -//│ > fun ctor_() = () -//│ > fun lit() = -//│ > let {x} -//│ > x = 42 -//│ > x -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'lit' => [Function: lit_gen] -//│ > } +//│ > module Rebinding with +//│ > () +//│ > fun lit() = +//│ > let {x} +//│ > x = 42 +//│ > x +//│ > Map(1) { 'lit' => [Function: lit_gen] } val x = [1, 2, 3] staged module Expressions with @@ -39,47 +37,47 @@ staged module Expressions with [1, 2] then 2 [a, _] then 3 else 0 -//│ > fun ctor_() = () -//│ > fun lit() = 1 -//│ > fun assign() = -//│ > let {x, y} -//│ > x = 42 -//│ > y = x -//│ > y -//│ > fun tup1() = [1, 2] -//│ > fun tup2() = [1, x] -//│ > fun dynsel() = -//│ > let {tmp} -//│ > tmp = [1] -//│ > tmp.(0) -//│ > fun match1() = -//│ > let {scrut} -//│ > scrut = 9 -//│ > if scrut is -//│ > Bool then 1 -//│ > 8 then 2 -//│ > Int then 3 -//│ > else 0 -//│ > fun match2() = -//│ > let {element1_, element0_, a} -//│ > if x is -//│ > [] then 1 -//│ > [_, _] then -//│ > element0_ = x.0 -//│ > element1_ = x.1 -//│ > if element0_ is -//│ > 1 then -//│ > if element1_ is -//│ > 2 then 2 -//│ > else -//│ > a = element0_ -//│ > 3 -//│ > else -//│ > a = element0_ -//│ > 3 -//│ > else 0 -//│ > Map(8) { -//│ > 'ctor$' => [Function: ctor$_gen], +//│ > module Expressions with +//│ > () +//│ > fun lit() = 1 +//│ > fun assign() = +//│ > let {x, y} +//│ > x = 42 +//│ > y = x +//│ > y +//│ > fun tup1() = [1, 2] +//│ > fun tup2() = [1, x] +//│ > fun dynsel() = +//│ > let {tmp} +//│ > tmp = [1] +//│ > tmp.(0) +//│ > fun match1() = +//│ > let {scrut} +//│ > scrut = 9 +//│ > if scrut is +//│ > Bool then 1 +//│ > 8 then 2 +//│ > Int then 3 +//│ > else 0 +//│ > fun match2() = +//│ > let {element1_, element0_, a} +//│ > if x is +//│ > [] then 1 +//│ > [_, _] then +//│ > element0_ = x.0 +//│ > element1_ = x.1 +//│ > if element0_ is +//│ > 1 then +//│ > if element1_ is +//│ > 2 then 2 +//│ > else +//│ > a = element0_ +//│ > 3 +//│ > else +//│ > a = element0_ +//│ > 3 +//│ > else 0 +//│ > Map(7) { //│ > 'lit' => [Function: lit_gen], //│ > 'assign' => [Function: assign_gen], //│ > 'tup1' => [Function: tup1_gen], @@ -88,9 +86,31 @@ staged module Expressions with //│ > 'match1' => [Function: match1_gen], //│ > 'match2' => [Function: match2_gen] //│ > } -//│ > Map(2) { +//│ > Map(3) { //│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, -//│ > 'Int' => VirtualClassSymbol { name: 'Int' } +//│ > 'Int' => VirtualClassSymbol { name: 'Int' }, +//│ > [class Expressions] { +//│ > 'cache$Expressions': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$Expressions': Map(7) { +//│ > 'lit' => [Function: lit_gen], +//│ > 'assign' => [Function: assign_gen], +//│ > 'tup1' => [Function: tup1_gen], +//│ > 'tup2' => [Function: tup2_gen], +//│ > 'dynsel' => [Function: dynsel_gen], +//│ > 'match1' => [Function: match1_gen], +//│ > 'match2' => [Function: match2_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'Expressions', +//│ > value: [class Expressions] { +//│ > 'cache$Expressions': [FunCache], +//│ > 'generatorMap$Expressions': [Map] +//│ > } +//│ > } //│ > } //│ x = [1, 2, 3] @@ -102,37 +122,20 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ > fun ctor_() = +//│ > module ClassInstrumentation with //│ > class Inside(a, b) //│ > class NoArg -//│ > fun inst1() = new Outside(1) -//│ > fun inst2() = new ClassInstrumentation.NoArg -//│ > fun app1() = Outside(1) -//│ > fun app2() = ClassInstrumentation.Inside(1, 2) -//│ > Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], +//│ > fun inst1() = new Outside(1) +//│ > fun inst2() = new NoArg +//│ > fun app1() = Outside(1) +//│ > fun app2() = Inside(1, 2) +//│ > Map(4) { //│ > 'inst1' => [Function: inst1_gen], //│ > 'inst2' => [Function: inst2_gen], //│ > 'app1' => [Function: app1_gen], //│ > 'app2' => [Function: app2_gen] //│ > } //│ > Map(4) { -//│ > [class NoArg] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NoArg' ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'NoArg', -//│ > value: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, -//│ > [Function: Inside] { -//│ > class: [class Inside] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'Inside', -//│ > value: [Function: Inside] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, //│ > [Function: Outside] { //│ > class: [class Outside] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ConcreteClassSymbol { @@ -144,9 +147,12 @@ staged module ClassInstrumentation with //│ > [class ClassInstrumentation] { //│ > Inside: [Function: Inside] { class: [Function] }, //│ > NoArg: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$ClassInstrumentation': FunCache { cache: [Map] }, -//│ > 'generatorMap$ClassInstrumentation': Map(5) { -//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'cache$ClassInstrumentation': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$ClassInstrumentation': Map(4) { //│ > 'inst1' => [Function: inst1_gen], //│ > 'inst2' => [Function: inst2_gen], //│ > 'app1' => [Function: app1_gen], @@ -160,6 +166,22 @@ staged module ClassInstrumentation with //│ > 'cache$ClassInstrumentation': [FunCache], //│ > 'generatorMap$ClassInstrumentation': [Map] //│ > } +//│ > }, +//│ > [class NoArg] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NoArg' ] +//│ > } => ConcreteClassSymbol { +//│ > name: 'NoArg', +//│ > value: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Inside] { +//│ > class: [class Inside] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ConcreteClassSymbol { +//│ > name: 'Inside', +//│ > value: [Function: Inside] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] //│ > } //│ > } @@ -169,32 +191,26 @@ staged module Staged with fun f() = 1 staged module CallSubst with fun call() = Nonstaged.f() + Staged.f() -//│ > fun ctor_() = () -//│ > fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > fun ctor_() = () -//│ > fun call() = -//│ > let {tmp, tmp1} -//│ > tmp = Nonstaged.f() -//│ > tmp1 = Staged.f() -//│ > tmp + tmp1 -//│ > Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'call' => [Function: call_gen] -//│ > } -//│ > Map(2) { -//│ > [class Nonstaged] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Nonstaged' ] -//│ > } => ModuleSymbol { -//│ > name: 'Nonstaged', -//│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > }, +//│ > module Staged with +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > module CallSubst with +//│ > () +//│ > fun call() = +//│ > let {tmp, tmp1} +//│ > tmp = Nonstaged.f() +//│ > tmp1 = Staged.f() +//│ > tmp + tmp1 +//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > Map(3) { //│ > [class Staged] { -//│ > 'cache$Staged': FunCache { cache: [Map] }, -//│ > 'generatorMap$Staged': Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen] +//│ > 'cache$Staged': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] //│ > }, +//│ > 'generatorMap$Staged': Map(1) { 'f' => [Function: f_gen] }, //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Staged' ] //│ > } => ModuleSymbol { //│ > name: 'Staged', @@ -203,6 +219,26 @@ staged module CallSubst with //│ > 'generatorMap$Staged': [Map], //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } +//│ > }, +//│ > [class Nonstaged] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Nonstaged' ] +//│ > } => ModuleSymbol { +//│ > name: 'Nonstaged', +//│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > }, +//│ > [class CallSubst] { +//│ > 'cache$CallSubst': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$CallSubst': Map(1) { 'call' => [Function: call_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'CallSubst', +//│ > value: [class CallSubst] { +//│ > 'cache$CallSubst': [FunCache], +//│ > 'generatorMap$CallSubst': [Map] +//│ > } //│ > } //│ > } @@ -212,20 +248,17 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ > fun ctor_() = () -//│ > fun f(x) = -//│ > x = 1 -//│ > x -//│ > fun g(x) = -//│ > let {tmp} -//│ > tmp = new Function_ -//│ > tmp -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } -//│ > Map(1) { +//│ > module Arguments with +//│ > () +//│ > fun f(x) = +//│ > x = 1 +//│ > x +//│ > fun g(x) = +//│ > let {tmp} +//│ > tmp = new Function_ +//│ > tmp +//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ > Map(2) { //│ > [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] //│ > } => ConcreteClassSymbol { @@ -235,6 +268,20 @@ staged module Arguments with //│ > }, //│ > paramsOpt: None {}, //│ > auxParams: [] +//│ > }, +//│ > [class Arguments] { +//│ > 'cache$Arguments': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$Arguments': Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'Arguments', +//│ > value: [class Arguments] { +//│ > 'cache$Arguments': [FunCache], +//│ > 'generatorMap$Arguments': [Map] +//│ > } //│ > } //│ > } @@ -249,28 +296,31 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ > fun ctor_() = () -//│ > fun scope() = -//│ > let {a} -//│ > a = 1 -//│ > OtherBlocks.scope.locally(a) -//│ > fun breakAndLabel() = -//│ > let {scrut} -//│ > scrut = 1 -//│ > if scrut is -//│ > 2 then 0 -//│ > 3 then 0 -//│ > else 0 -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], +//│ > module OtherBlocks with +//│ > () +//│ > fun scope() = +//│ > let {a} +//│ > a = 1 +//│ > scope.locally(a) +//│ > fun breakAndLabel() = +//│ > let {scrut} +//│ > scrut = 1 +//│ > if scrut is +//│ > 2 then 0 +//│ > 3 then 0 +//│ > else 0 +//│ > Map(2) { //│ > 'scope' => [Function: scope_gen], //│ > 'breakAndLabel' => [Function: breakAndLabel_gen] //│ > } //│ > Map(1) { //│ > [class OtherBlocks] { -//│ > 'cache$OtherBlocks': FunCache { cache: [Map] }, -//│ > 'generatorMap$OtherBlocks': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'cache$OtherBlocks': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$OtherBlocks': Map(2) { //│ > 'scope' => [Function: scope_gen], //│ > 'breakAndLabel' => [Function: breakAndLabel_gen] //│ > } @@ -285,10 +335,27 @@ staged module OtherBlocks with staged module ClassDefs with class A -//│ > fun ctor_() = +//│ > module ClassDefs with //│ > class A -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(1) { +//│ > +//│ > Map(0) {} +//│ > Map(2) { +//│ > [class ClassDefs] { +//│ > A: [class A] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > 'cache$ClassDefs': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: Map(0) {}, +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$ClassDefs': Map(0) {} +//│ > } => ModuleSymbol { +//│ > name: 'ClassDefs', +//│ > value: [class ClassDefs] { +//│ > A: [Function], +//│ > 'cache$ClassDefs': [FunCache], +//│ > 'generatorMap$ClassDefs': Map(0) {} +//│ > } +//│ > }, //│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ConcreteClassSymbol { //│ > name: 'A', //│ > value: [class A] { Symbol(mlscript.definitionMetadata): [Array] }, @@ -299,10 +366,27 @@ staged module ClassDefs with staged module ValClass with class A(val a) -//│ > fun ctor_() = +//│ > module ValClass with //│ > class A(a) -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(1) { +//│ > +//│ > Map(0) {} +//│ > Map(2) { +//│ > [class ValClass] { +//│ > A: [Function: A] { class: [Function] }, +//│ > 'cache$ValClass': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: Map(0) {}, +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$ValClass': Map(0) {} +//│ > } => ModuleSymbol { +//│ > name: 'ValClass', +//│ > value: [class ValClass] { +//│ > A: [Function], +//│ > 'cache$ValClass': [FunCache], +//│ > 'generatorMap$ValClass': Map(0) {} +//│ > } +//│ > }, //│ > [Function: A] { //│ > class: [class A1] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ConcreteClassSymbol { @@ -317,15 +401,32 @@ staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() -//│ > fun ctor_() = +//│ > module ClassFunctions with //│ > class InnerClass() with //│ > fun f() = //│ > let {tmp} //│ > tmp = Arguments.f(1) //│ > 1 + tmp //│ > fun g() = InnerClass.f() -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(2) { +//│ > +//│ > Map(0) {} +//│ > Map(3) { +//│ > [class ClassFunctions] { +//│ > InnerClass: [Function: InnerClass] { class: [Function] }, +//│ > 'cache$ClassFunctions': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: Map(0) {}, +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$ClassFunctions': Map(0) {} +//│ > } => ModuleSymbol { +//│ > name: 'ClassFunctions', +//│ > value: [class ClassFunctions] { +//│ > InnerClass: [Function], +//│ > 'cache$ClassFunctions': [FunCache], +//│ > 'generatorMap$ClassFunctions': Map(0) {} +//│ > } +//│ > }, //│ > [Function: InnerClass] { //│ > class: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ConcreteClassSymbol { @@ -335,12 +436,12 @@ staged module ClassFunctions with //│ > auxParams: [] //│ > }, //│ > [class Arguments] { -//│ > 'cache$Arguments': FunCache { cache: [Map] }, -//│ > 'generatorMap$Arguments': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] +//│ > 'cache$Arguments': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] //│ > }, +//│ > 'generatorMap$Arguments': Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] }, //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Arguments' ] //│ > } => ModuleSymbol { //│ > name: 'Arguments', @@ -364,9 +465,10 @@ staged module A with module A with staged module B with fun f() = 1 -//│ > fun ctor_() = () -//│ > fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > module B with +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } // FIXME: for g to be defined in the next stage, we need to also print the other ClsLikeDefn/FunDefn nodes when printing the next stage :ftc @@ -374,9 +476,10 @@ staged module NestedFunDefn with fun f() = fun g() = 1 g() -//│ > fun ctor_() = () -//│ > fun f() = g() -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > module NestedFunDefn with +//│ > () +//│ > fun f() = g() +//│ > Map(1) { 'f' => [Function: f_gen] } :todo staged module LabelBreak with @@ -391,10 +494,10 @@ staged module LabelBreak with //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.384: let x = 1 +//│ ║ l.499: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.384: let x = 1 +//│ ║ l.499: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -406,7 +509,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.AssignField //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.406: fun g() = {1 : 2} +//│ ║ l.521: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -415,19 +518,20 @@ staged module Spread with fun f() = if [1, ..[1, 2]] is [1, ...x] then x else 0 //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module. //│ ═══[COMPILATION ERROR] Spread parameters are not supported in staged module: Tup(1,true) -//│ > fun ctor_() = () -//│ > fun f() = -//│ > let {element0_, tmp, scrut, x, middleElements} -//│ > tmp = [1, 2] -//│ > scrut = [1, tmp] -//│ > if scrut is -//│ > [_] then -//│ > element0_ = scrut.0 -//│ > middleElements = runtime.Tuple.slice(scrut, 1, 0) -//│ > if element0_ is -//│ > 1 then -//│ > x = middleElements -//│ > x -//│ > else 0 -//│ > else 0 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > module Spread with +//│ > () +//│ > fun f() = +//│ > let {scrut, x, middleElements, element0_, tmp} +//│ > tmp = [1, 2] +//│ > scrut = [1, tmp] +//│ > if scrut is +//│ > [_] then +//│ > element0_ = scrut.0 +//│ > middleElements = runtime.Tuple.slice(scrut, 1, 0) +//│ > if element0_ is +//│ > 1 then +//│ > x = middleElements +//│ > x +//│ > else 0 +//│ > else 0 +//│ > Map(1) { 'f' => [Function: f_gen] } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls index 346a19ae6d..68dbbdb03c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls @@ -4,11 +4,8 @@ staged module A with fun f() = 1 fun g(x) = x -//│ > fun ctor_() = () -//│ > fun f() = 1 -//│ > fun g(x) = x -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } +//│ > module A with +//│ > () +//│ > fun f() = 1 +//│ > fun g(x) = x +//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 85df52b587..9498c6e4d1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -11,12 +11,13 @@ staged module M with let y = x * 2 y fun f_gen -//│ > fun ctor_() = () -//│ > fun f(x) = -//│ > let {y} -//│ > y = *(x, 2) -//│ > y -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > module M with +//│ > () +//│ > fun f(x) = +//│ > let {y} +//│ > y = *(x, 2) +//│ > y +//│ > Map(1) { 'f' => [Function: f_gen] } M.f_gen(Dyn()) //│ = [Symbol("f_Dyn_28_29"), [[Dyn()]]] @@ -25,16 +26,17 @@ M.f_gen(Lit(2)) //│ = [Symbol("f_Lit_282_29"), [[Lit(2)]]] print(M."cache$M") -//│ > fun ctor_() = () -//│ > fun f(x) = -//│ > let {y} -//│ > y = *(x, 2) -//│ > y -//│ > fun f_Dyn_28_29(x) = -//│ > let {y} -//│ > y = *(x, 2) -//│ > y -//│ > fun f_Lit_282_29(x) = -//│ > let {y} -//│ > y = *(x, 2) -//│ > y +//│ > module M with +//│ > () +//│ > fun f(x) = +//│ > let {y} +//│ > y = *(x, 2) +//│ > y +//│ > fun f_Dyn_28_29(x) = +//│ > let {y} +//│ > y = *(x, 2) +//│ > y +//│ > fun f_Lit_282_29(x) = +//│ > let {y} +//│ > y = *(x, 2) +//│ > y diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index a636ac3123..4ea4b0a556 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -5,12 +5,29 @@ staged module M with class C with fun f() = 1 fun g() = f() -//│ > fun ctor_() = +//│ > module M with //│ > class C with //│ > fun f() = 1 //│ > fun g() = C.f() -//│ > Map(1) { 'ctor$' => [Function: ctor$_gen] } -//│ > Map(1) { +//│ > +//│ > Map(0) {} +//│ > Map(2) { +//│ > [class M] { +//│ > C: [class C] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > 'cache$M': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: Map(0) {}, +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$M': Map(0) {} +//│ > } => ModuleSymbol { +//│ > name: 'M', +//│ > value: [class M] { +//│ > C: [Function], +//│ > 'cache$M': [FunCache], +//│ > 'generatorMap$M': Map(0) {} +//│ > } +//│ > }, //│ > [class C] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ConcreteClassSymbol { //│ > name: 'C', //│ > value: [class C] { Symbol(mlscript.definitionMetadata): [Array] }, @@ -32,48 +49,43 @@ staged module D with fun matching() = 1 is Int 1 is C -//│ > fun ctor_() = () -//│ > fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > fun ctor_() = +//│ > module A with +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > module D with //│ > class E -//│ > fun f() = -//│ > let {scrut} -//│ > A.f() -//│ > scrut = B.f -//│ > if scrut is -//│ > Bool then true -//│ > else false -//│ > fun matching() = -//│ > let {tmp, scrut1, scrut2} -//│ > scrut1 = 1 -//│ > if scrut1 is -//│ > Int then -//│ > tmp = true -//│ > else -//│ > tmp = false -//│ > scrut2 = 1 -//│ > if scrut2 is -//│ > C then true -//│ > else false -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], +//│ > fun f() = +//│ > let {scrut} +//│ > A.f() +//│ > scrut = B.f +//│ > if scrut is +//│ > Bool then true +//│ > else false +//│ > fun matching() = +//│ > let {tmp, scrut1, scrut2} +//│ > scrut1 = 1 +//│ > if scrut1 is +//│ > Int then +//│ > tmp = true +//│ > else +//│ > tmp = false +//│ > scrut2 = 1 +//│ > if scrut2 is +//│ > C then true +//│ > else false +//│ > Map(2) { //│ > 'f' => [Function: f_gen], //│ > 'matching' => [Function: matching_gen] //│ > } -//│ > Map(6) { -//│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { -//│ > name: 'E', -//│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, +//│ > Map(7) { //│ > [class A] { -//│ > 'cache$A': FunCache { cache: [Map] }, -//│ > 'generatorMap$A': Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen] +//│ > 'cache$A': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] //│ > }, +//│ > 'generatorMap$A': Map(1) { 'f' => [Function: f_gen] }, //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] //│ > } => ModuleSymbol { //│ > name: 'A', @@ -96,6 +108,31 @@ staged module D with //│ > value: [Function: C] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [ [Array], [Array] ] +//│ > }, +//│ > [class D] { +//│ > E: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > 'cache$D': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$D': Map(2) { +//│ > 'f' => [Function: f_gen], +//│ > 'matching' => [Function: matching_gen] +//│ > } +//│ > } => ModuleSymbol { +//│ > name: 'D', +//│ > value: [class D] { +//│ > E: [Function], +//│ > 'cache$D': [FunCache], +//│ > 'generatorMap$D': [Map] +//│ > } +//│ > }, +//│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { +//│ > name: 'E', +//│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] //│ > } //│ > } @@ -109,27 +146,24 @@ staged module M with x = A.B.C A.B.C(2) E -//│ > fun ctor_() = -//│ > class E -//│ > fun f() = -//│ > let {x} -//│ > x = D.E1 -//│ > x = A.B.C -//│ > A.B.C(2) -//│ > M.E -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > module M with +//│ > class E1 +//│ > fun f() = +//│ > let {x} +//│ > x = D.E +//│ > x = A.B.C +//│ > A.B.C(2) +//│ > E1 +//│ > Map(1) { 'f' => [Function: f_gen] } //│ > Map(7) { -//│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { -//│ > name: 'E', -//│ > value: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, //│ > [class D] { //│ > E: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$D': FunCache { cache: [Map] }, -//│ > 'generatorMap$D': Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], +//│ > 'cache$D': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$D': Map(2) { //│ > 'f' => [Function: f_gen], //│ > 'matching' => [Function: matching_gen] //│ > }, @@ -144,7 +178,7 @@ staged module M with //│ > } //│ > }, //│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { -//│ > name: 'E1', +//│ > name: 'E', //│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > paramsOpt: None {}, //│ > auxParams: [] @@ -182,11 +216,12 @@ staged module M with //│ > }, //│ > [class M2] { //│ > E: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$M': FunCache { cache: [Map] }, -//│ > 'generatorMap$M': Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen] -//│ > } +//│ > 'cache$M': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$M': Map(1) { 'f' => [Function: f_gen] } //│ > } => ModuleSymbol { //│ > name: 'M', //│ > value: [class M2] { @@ -194,6 +229,12 @@ staged module M with //│ > 'cache$M': [FunCache], //│ > 'generatorMap$M': [Map] //│ > } +//│ > }, +//│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { +//│ > name: 'E1', +//│ > value: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: None {}, +//│ > auxParams: [] //│ > } //│ > } @@ -201,31 +242,29 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.202: fun g()() = 1 +//│ ║ l.243: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ -//│ > fun ctor_() = () -//│ > fun g()() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'g' => [Function: g_gen] } +//│ > module M with +//│ > () +//│ > fun g()() = 1 +//│ > Map(1) { 'g' => [Function: g_gen] } :ftc staged module M with fun f() = x => x fun g()() = 1 -//│ > fun ctor_() = () -//│ > fun f() = -//│ > let {tmp} -//│ > tmp = new Function_ -//│ > tmp -//│ > fun g() = -//│ > let {tmp1} -//│ > tmp1 = new Function_1 -//│ > tmp1 +//│ > module M with +//│ > () +//│ > fun f() = +//│ > let {tmp} +//│ > tmp = new Function_ +//│ > tmp +//│ > fun g() = +//│ > let {tmp1} +//│ > tmp1 = new Function_1 +//│ > tmp1 +//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } //│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen], -//│ > 'g' => [Function: g_gen] -//│ > } -//│ > Map(2) { //│ > [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] //│ > } => ConcreteClassSymbol { @@ -245,6 +284,17 @@ staged module M with //│ > }, //│ > paramsOpt: None {}, //│ > auxParams: [] +//│ > }, +//│ > [class M6] { +//│ > 'cache$M': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$M': Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'M', +//│ > value: [class M6] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } //│ > } //│ > } @@ -257,13 +307,31 @@ let y = M."g_instr"().body.rest.rhs.cls.l.value staged module Shadowing with fun f(x, x) = x -//│ > fun ctor_() = () -//│ > fun f(x, x) = x -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > module Shadowing with +//│ > () +//│ > fun f(x, x) = x +//│ > Map(1) { 'f' => [Function: f_gen] } staged module RetUnit with fun f() = () -//│ > fun ctor_() = () -//│ > fun f() = () -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } +//│ > module RetUnit with +//│ > () +//│ > fun f() = () +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { +//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} }, +//│ > [class RetUnit] { +//│ > 'cache$RetUnit': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$RetUnit': Map(1) { 'f' => [Function: f_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'RetUnit', +//│ > value: [class RetUnit] { +//│ > 'cache$RetUnit': [FunCache], +//│ > 'generatorMap$RetUnit': [Map] +//│ > } +//│ > } +//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 18e92992b4..356f093b69 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -6,17 +6,19 @@ staged module TempVariable with let x let x x -//│ > fun ctor_() = () -//│ > fun f(x, x) = -//│ > let {x, x} -//│ > x -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > module TempVariable with +//│ > () +//│ > fun f(x, x) = +//│ > let {x, x} +//│ > x +//│ > Map(1) { 'f' => [Function: f_gen] } staged module DupeFunctionName with fun f() = 1 -//│ > fun ctor_() = () -//│ > fun f() = 1 -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > module DupeFunctionName with +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } class C(val x) @@ -25,29 +27,47 @@ staged module NoSymbol with g() g() () -//│ > fun ctor_() = () -//│ > fun f(g) = -//│ > g() -//│ > g() +//│ > module NoSymbol with //│ > () -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(1) { Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} } } +//│ > fun f(g) = +//│ > g() +//│ > g() +//│ > () +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { +//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} }, +//│ > [class NoSymbol] { +//│ > 'cache$NoSymbol': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$NoSymbol': Map(1) { 'f' => [Function: f_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'NoSymbol', +//│ > value: [class NoSymbol] { +//│ > 'cache$NoSymbol': [FunCache], +//│ > 'generatorMap$NoSymbol': [Map] +//│ > } +//│ > } +//│ > } staged module Selection with fun f(x) = x.call() C(1).x is Bool -//│ > fun ctor_() = () -//│ > fun f(x) = -//│ > let {scrut, tmp} -//│ > x.call() -//│ > tmp = C(1) -//│ > scrut = tmp.x -//│ > if scrut is -//│ > Bool then true -//│ > else false -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } -//│ > Map(2) { +//│ > module Selection with +//│ > () +//│ > fun f(x) = +//│ > let {scrut, tmp} +//│ > x.call() +//│ > tmp = C(1) +//│ > scrut = tmp.x +//│ > if scrut is +//│ > Bool then true +//│ > else false +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(3) { //│ > [Function: C] { //│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ConcreteClassSymbol { @@ -56,35 +76,42 @@ staged module Selection with //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > }, -//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' } +//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, +//│ > [class Selection] { +//│ > 'cache$Selection': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$Selection': Map(1) { 'f' => [Function: f_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'Selection', +//│ > value: [class Selection] { +//│ > 'cache$Selection': [FunCache], +//│ > 'generatorMap$Selection': [Map] +//│ > } +//│ > } //│ > } staged module DupeClass with class C(val y) fun f() = C(1).y -//│ > fun ctor_() = +//│ > module DupeClass with //│ > class C(y) -//│ > fun f() = -//│ > let {tmp} -//│ > tmp = DupeClass.C(1) -//│ > tmp.y -//│ > Map(2) { 'ctor$' => [Function: ctor$_gen], 'f' => [Function: f_gen] } +//│ > fun f() = +//│ > let {tmp} +//│ > tmp = C(1) +//│ > tmp.y +//│ > Map(1) { 'f' => [Function: f_gen] } //│ > Map(2) { -//│ > [Function: C] { -//│ > class: [class C2] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, //│ > [class DupeClass] { //│ > C: [Function: C] { class: [Function] }, -//│ > 'cache$DupeClass': FunCache { cache: [Map] }, -//│ > 'generatorMap$DupeClass': Map(2) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'f' => [Function: f_gen] -//│ > } +//│ > 'cache$DupeClass': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$DupeClass': Map(1) { 'f' => [Function: f_gen] } //│ > } => ModuleSymbol { //│ > name: 'DupeClass', //│ > value: [class DupeClass] { @@ -92,5 +119,13 @@ staged module DupeClass with //│ > 'cache$DupeClass': [FunCache], //│ > 'generatorMap$DupeClass': [Map] //│ > } +//│ > }, +//│ > [Function: C] { +//│ > class: [class C2] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function: C] { class: [Function] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] //│ > } //│ > } From 03e7e87d8ff71447ac8a0f03777fbdd7e6431033 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Fri, 10 Apr 2026 17:11:50 +0800 Subject: [PATCH 502/654] Add label/break inlining --- .../codegen/FirstClassFunctionTransformer.scala | 17 ++++++++++++++++- .../test/mlscript/block-staging/Functions.mls | 7 +++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala index 6e6068f09a..bbcf3764ce 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala @@ -109,4 +109,19 @@ class FirstClassFunctionTransformer(using Elaborator.State, Elaborator.Ctx, Rais def transform(b: Block): Block = val desugared = new DesugarMultipleParamList().applyBlock(b) new CollectFunDefns().applyBlock(desugared) - applyBlock(desugared) + new LabelTransformer().applyBlock(applyBlock(desugared)) + + +class LabelTransformer(using State, Raise) extends BlockTransformer(new SymbolSubst()): + private val contMap = HashMap.empty[Symbol, Symbol] + + override def applyBlock(b: Block): Block = b match + case Label(label, false, body, rest) => + val contSym = BlockMemberSymbol("cont$", Nil, false) + val contFun = FunDefn.withFreshSymbol(N, contSym, PlainParamList(Nil) :: Nil, rest)(false, N) + contMap.addOne(label -> contSym) + super.applyBlock(Scoped(Set(contSym), Define(contFun, body))) + case Break(label) => contMap.get(label) match + case Some(sym: Symbol) => Return(Call(Value.Ref(sym, N), Nil)(true, false, false), true) + case _ => super.applyBlock(b) + case _ => super.applyBlock(b) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 77d44c871d..cf493a3cba 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -130,14 +130,13 @@ staged module NestedFunDefn with fun g(x, y) = x || y //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Unreachable(Rest of abortive match) -:todo force enable :ftc to desugar Label and Break + +:ftc staged module M with fun f() = if 1 is 0 then 1 + 1 + 1 1 then 1 + 1 + 1 else 1 + 1 + 1 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: Label(label:split_root$,false,Label(label:split_1$,false,Assign(tmp:scrut,Lit(IntLit(1)),Match(Ref(tmp:scrut,None),List((Lit(IntLit(0)),Break(label:split_1$)), (Lit(IntLit(1)),Break(label:split_1$))),Some(Break(label:split_1$)),End())),Assign(tmp:tmp,Call(Ref(builtin:+,None),List(Arg(None,Lit(IntLit(1))), Arg(None,Lit(IntLit(1))))),Return(Call(Ref(builtin:+,None),List(Arg(None,Ref(tmp:tmp,None)), Arg(None,Lit(IntLit(1))))),false))),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)). -//│ Try enabling :ftc. :e class C(val a) @@ -147,7 +146,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: AssignField(Ref(term:A/x,None),Ident(a),Lit(IntLit(0)),Return(Select(Ref(tmp:runtime,None),Ident(Unit)),false)) //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module. -//│ ║ l.147: fun g() = {1 : 2} +//│ ║ l.146: fun g() = {1 : 2} //│ ╙── ^ :todo From 88dd8b4c5c0df9aa9f92c994b5becb4557662b46 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 11 Apr 2026 00:47:16 +0800 Subject: [PATCH 503/654] fiddle with staging current module's symbol --- .../codegen/ReflectionInstrumenter.scala | 17 +- .../mlscript-compile/SpecializeHelpers.mls | 5 +- .../test/mlscript/block-staging/Functions.mls | 45 +++-- .../mlscript/block-staging/PathStaging.mls | 187 ++++++++++++++++++ .../mlscript/block-staging/SymbolRenaming.mls | 10 +- .../test/mlscript/block-staging/Syntax.mls | 4 +- 6 files changed, 234 insertions(+), 34 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 2c59d67e3e..90be68c5d3 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -140,7 +140,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S return End() val path = pOpt.getOrElse(owner match - case S(owner) => owner.asPath.selSN(sym.nme) + case S(owner) => owner.asPath.sel(Tree.Ident(baseSym.nme), baseSym) case N => bsym.asPath) baseSym match case _: ClassSymbol => @@ -353,6 +353,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case Define(defn: ClsLikeDefn, rest) if defn.companion.exists(_.isym.defn.exists(_.hasStagedModifier.isDefined)) || defn.companion.isEmpty && defn.isym.defn.exists(_.hasStagedModifier.isDefined) => + if defn.companion.isEmpty && defn.owner.isDefined then + // FIXME: find a way to instrument the symbol for non-top-level staged classes + raise(ErrorReport(msg"Only top-level staged classes are supported." -> defn.sym.toLoc :: Nil)) + return End() val (sym, companion, preCtor, ctor, ctorParams, methods) = defn.companion match case S(companion) => (companion.isym, companion, End(), companion.ctor, Ls(PlainParamList(Nil)), companion.methods) case N => @@ -374,9 +378,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S (defn.sym, companion, preCtor, defn.ctor, params, defn.methods) val modSym = companion.isym - val ownerSym = defn.companion match - case S(defn) => defn.isym - case N => defn.isym // avoid name clash of cache and generator map for derived staged classes val suffix = "$" + scope.allocateOrGetName(sym) @@ -437,10 +438,16 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // initialize cache for the module def cacheDecl(rest: Block) = + val ownerSym = defn.companion match + case S(defn) => defn.isym + case N => defn.isym + + val pOpt = defn.companion.map(_ => Value.Ref(ownerSym)) + cacheEntries.collectApply: cacheTups => tuple(cacheTups): tup => this.ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => - transformSymbol(ownerSym)(using Context(new HashMap())): (stagedSym, _) => + transformSymbol(ownerSym, pOpt)(using Context(new HashMap())): (stagedSym, _) => this.ctor(helperMod("FunCache"), Ls(stagedSym, map)): funCache => Define(ValDefn(cacheTsym, cacheSym, funCache)(N), rest) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 97c13a9057..54352a6b5a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -58,9 +58,8 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any ModuleSymbol then [] // process preCtor: inline temp variable when printing - // console.log(Block.show(preCtor)) - class InlinePrinter(ctx: Map[Symbol, String]) extends Printer(Some(owner.value)) with - // TODO: is there some way to call the inherited functions? + class InlinePrinter(ctx: Map[Symbol, String]) extends Printer(Some(owner)) with + // TODO: is there some way to call the inherited functions? currently we just default to another printer instance fun showPath(p) = if p is ValueRef(s) and ctx.has(s) then ctx.get(s) Select(qual, name) then showPath(qual) + "." + printer.showSymbol(name) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 4998d01b22..553ba0ec5d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -135,7 +135,7 @@ staged module ClassInstrumentation with //│ > 'app1' => [Function: app1_gen], //│ > 'app2' => [Function: app2_gen] //│ > } -//│ > Map(4) { +//│ > Map(5) { //│ > [Function: Outside] { //│ > class: [class Outside] { Symbol(mlscript.definitionMetadata): [Array] } //│ > } => ConcreteClassSymbol { @@ -182,6 +182,14 @@ staged module ClassInstrumentation with //│ > value: [Function: Inside] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] +//│ > }, +//│ > [class Inside] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Inside', [Array] ] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Inside', +//│ > value: [class Inside] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] //│ > } //│ > } @@ -387,11 +395,11 @@ staged module ValClass with //│ > 'generatorMap$ValClass': Map(0) {} //│ > } //│ > }, -//│ > [Function: A] { -//│ > class: [class A1] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > [class A1] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A', [Array] ] //│ > } => ConcreteClassSymbol { //│ > name: 'A', -//│ > value: [Function: A] { class: [Function] }, +//│ > value: [class A1] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] //│ > } @@ -427,11 +435,11 @@ staged module ClassFunctions with //│ > 'generatorMap$ClassFunctions': Map(0) {} //│ > } //│ > }, -//│ > [Function: InnerClass] { -//│ > class: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > [class InnerClass] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'InnerClass', [] ] //│ > } => ConcreteClassSymbol { //│ > name: 'InnerClass', -//│ > value: [Function: InnerClass] { class: [Function] }, +//│ > value: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] }, //│ > paramsOpt: Some { value: [] }, //│ > auxParams: [] //│ > }, @@ -458,19 +466,10 @@ staged module ClassFunctions with class A() staged module A with fun f() = 1 -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:239) -//│ ═══[RUNTIME ERROR] TypeError: runtimeClass.preCtor$_instr is not a function -//│ at FunCache.toString (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:198:63) -//│ at (REPL41:1:1095) -//│ at REPL41:1:2845 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:600:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:935:10) -//│ at REPLServer.emit (node:events:508:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ > module A with +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } // nested module module A with @@ -505,10 +504,10 @@ staged module LabelBreak with //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.498: let x = 1 +//│ ║ l.497: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.498: let x = 1 +//│ ║ l.497: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -520,7 +519,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.AssignField //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.520: fun g() = {1 : 2} +//│ ║ l.519: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls new file mode 100644 index 0000000000..b44ad9efae --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls @@ -0,0 +1,187 @@ +:js +:staging + +class CA() with + fun f() = 1 +staged module MA with + fun f() = 1 + class CB() with + fun f() = 1 +//│ > module MA with +//│ > class CB() with +//│ > fun f() = 1 +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(2) { +//│ > [class MA] { +//│ > CB: [Function: CB] { class: [Function] }, +//│ > 'cache$MA': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$MA': Map(1) { 'f' => [Function: f_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'MA', +//│ > value: [class MA] { +//│ > CB: [Function], +//│ > 'cache$MA': [FunCache], +//│ > 'generatorMap$MA': [Map] +//│ > } +//│ > }, +//│ > [class CB] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'CB', [] ] +//│ > } => ConcreteClassSymbol { +//│ > name: 'CB', +//│ > value: [class CB] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > } +//│ > } + +module MB with + class CC() with + fun f() = 1 + staged module MC with + fun f() = 1 +//│ > module MC with +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } + +class M() with + fun f() = 1 +staged module M with + fun f() = + CA().f() + MA.f() + MA.CB.f() + MB.CC.f() + MB.MC.f() +//│ > module M with +//│ > () +//│ > fun f() = +//│ > let {tmp} +//│ > tmp = CA() +//│ > tmp.f() +//│ > MA.f() +//│ > MA.CB.f() +//│ > MB.CC.f() +//│ > MB.MC.f() +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > Map(7) { +//│ > [Function: CA] { +//│ > class: [class CA] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ConcreteClassSymbol { +//│ > name: 'CA', +//│ > value: [Function: CA] { class: [Function] }, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > }, +//│ > [class MA] { +//│ > CB: [Function: CB] { class: [Function] }, +//│ > 'cache$MA': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$MA': Map(1) { 'f' => [Function: f_gen] }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'MA' ] +//│ > } => ModuleSymbol { +//│ > name: 'MA', +//│ > value: [class MA] { +//│ > CB: [Function], +//│ > 'cache$MA': [FunCache], +//│ > 'generatorMap$MA': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > }, +//│ > [Function: CB] { +//│ > class: [class CB] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ConcreteClassSymbol { +//│ > name: 'CB', +//│ > value: [Function: CB] { class: [Function] }, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > }, +//│ > [class MB] { +//│ > CC: [Function: CC] { class: [Function] }, +//│ > MC: [class MC] { +//│ > 'cache$MC': [FunCache], +//│ > 'generatorMap$MC': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'MB' ] +//│ > } => ModuleSymbol { +//│ > name: 'MB', +//│ > value: [class MB] { +//│ > CC: [Function], +//│ > MC: [Function], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > }, +//│ > [Function: CC] { +//│ > class: [class CC] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > } => ConcreteClassSymbol { +//│ > name: 'CC', +//│ > value: [Function: CC] { class: [Function] }, +//│ > paramsOpt: Some { value: [] }, +//│ > auxParams: [] +//│ > }, +//│ > [class MC] { +//│ > 'cache$MC': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$MC': Map(1) { 'f' => [Function: f_gen] }, +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'MC' ] +//│ > } => ModuleSymbol { +//│ > name: 'MC', +//│ > value: [class MC] { +//│ > 'cache$MC': [FunCache], +//│ > 'generatorMap$MC': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } +//│ > }, +//│ > [class M] { +//│ > 'cache$M': FunCache { +//│ > owner: [ModuleSymbol], +//│ > cache: [Map], +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$M': Map(1) { 'f' => [Function: f_gen] } +//│ > } => ModuleSymbol { +//│ > name: 'M', +//│ > value: [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } +//│ > } +//│ > } + +staged class C() with + fun f() = 1 +//│ > class C1() with +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } + +// :sjs +module N with + class NM() with + fun g() = 1 + staged module NM with + fun f() = 1 +//│ > module NM with +//│ > () +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } + +:e +module N with + staged class NC() with + fun f() = 1 +//│ ╔══[COMPILATION ERROR] Only top-level staged classes are supported. +//│ ║ l.180: staged class NC() with +//│ ║ ^^^^^^^^^^^^^^^ +//│ ║ l.181: fun f() = 1 +//│ ╙── ^^^^^^^^^^^^^^^ + diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 6f454c74f3..28056e873a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -73,7 +73,7 @@ staged module DupeClass with //│ > tmp = C(1) //│ > tmp.y //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(2) { +//│ > Map(3) { //│ > [class DupeClass] { //│ > C: [Function: C] { class: [Function] }, //│ > 'cache$DupeClass': FunCache { @@ -97,5 +97,13 @@ staged module DupeClass with //│ > value: [Function: C] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] +//│ > }, +//│ > [class C2] { +//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'C', [Array] ] +//│ > } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [class C2] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > paramsOpt: Some { value: [Array] }, +//│ > auxParams: [] //│ > } //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index c1fa5b5cca..fb705be253 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -28,8 +28,8 @@ staged module A //│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, sym, tmp7, tmp8; //│ set tmp5 = []; //│ set tmp6 = new globalThis⁰.Map﹖(tmp5); -//│ set sym = Block⁰.ModuleSymbol﹖("A", A⁰); -//│ set tmp7 = Block⁰.checkMap﹖(symbolMap, A⁰, sym); +//│ set sym = Block⁰.ModuleSymbol﹖("A", A²); +//│ set tmp7 = Block⁰.checkMap﹖(symbolMap, A², sym); //│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp7, tmp6); //│ define cache$A⁰ as val cache$A¹ = tmp8; //│ set tmp3 = []; From bf05e3c36cbae4b1ea24778646f58891b681b84e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 11 Apr 2026 01:08:49 +0800 Subject: [PATCH 504/654] allow instrumenting internal functions with multiple parameter lists since the parameters of the instrumented ctor function is only used for printing and not shape propagation, we don't need to force the ctor to only have one paramlist --- .../codegen/ReflectionInstrumenter.scala | 15 +++---- .../mlscript-compile/SpecializeHelpers.mls | 7 ++-- .../mlscript/block-staging/PrintingTest.mls | 42 +------------------ 3 files changed, 13 insertions(+), 51 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 90be68c5d3..efda6cd4e6 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -16,10 +16,11 @@ import syntax.{Literal, Tree} // it should be possible to cache some common constructions (End, Option) into the context // this avoids having to rebuild the same shapes everytime they are needed -case class Context(cache: HashMap[Path | Symbol, Path]): +// allowMultipleParamList: bypasses error from instrumenting user functions with multiple parameter lists +case class Context(cache: HashMap[Path | Symbol, Path], allowMultipleParamList: Bool = false): def getCache(p: Path | Symbol): Option[Path] = cache.get(p) - def addCache(p: Path | Symbol, v: Path): Context = Context(cache.clone() += (p -> v)) - def delCache(p: Path | Symbol): Context = Context(cache.clone() -= p) + def addCache(p: Path | Symbol, v: Path): Context = Context(cache.clone() += (p -> v), allowMultipleParamList) + def delCache(p: Path | Symbol): Context = Context(cache.clone() -= p, allowMultipleParamList) extension [A, B](ls: Iterable[(A => B) => B]) def collectApply(f: Ls[A] => B): B = @@ -325,13 +326,13 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def transformFunDefn(f: FunDefn)(using Context)(k: (Path, Context) => Block): Block = // maintain parameter names in instrumented code transformSymbol(f.sym): (sym, ctx) => - if f.params.length > 1 then + if f.params.length > 1 && !ctx.allowMultipleParamList then raise(ErrorReport(msg":ftc must be enabled to desugar functions with multiple parameter lists." -> f.sym.toLoc :: Nil)) transformParams(f.params)(using ctx): (paramList, ctx) => transformBlock(f.body)(using ctx): (body, ctx) => blockCtor("FunDefn", Ls(sym, paramList, body))(k(_, ctx)) - def stageMethod(f: FunDefn): FunDefn = + def stageMethod(f: FunDefn, ctx: Context = Context(new HashMap())): FunDefn = val stageSymName = f.sym.nme + "_instr" val stageSym = BlockMemberSymbol(stageSymName, Nil, false) @@ -339,7 +340,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(stageSymName)) val argSyms = f.params.flatMap(_.params).map(_.sym) val newBody = - val rest = transformFunDefn(f)(using Context(new HashMap()))((block, _) => Return(block, false)) + val rest = transformFunDefn(f)(using ctx)((block, _) => Return(block, false)) (Scoped(Set(argSyms*), rest)) FunDefn.withFreshSymbol(f.dSym.owner, stageSym, Ls(PlainParamList(Nil)), newBody)(false, f.configOverride) @@ -471,7 +472,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // used for staging classes inside modules val newCompanion = companion.copy( - methods = stageMethod(preCtorFun) :: stageMethod(paramRewrite.applyFunDefn(ctorFun)) :: helperMethods.flatten, + methods = stageMethod(preCtorFun) :: stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(new HashMap(), true)) :: helperMethods.flatten, ctor = Begin(companion.ctor, cacheDecl(generatorMapDecl(debugCont(End())))), publicFields = companion.publicFields, ) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 54352a6b5a..8176736777 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -59,14 +59,13 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any // process preCtor: inline temp variable when printing class InlinePrinter(ctx: Map[Symbol, String]) extends Printer(Some(owner)) with - // TODO: is there some way to call the inherited functions? currently we just default to another printer instance fun showPath(p) = if p is ValueRef(s) and ctx.has(s) then ctx.get(s) - Select(qual, name) then showPath(qual) + "." + printer.showSymbol(name) + Select(qual, name) then showPath(qual) + "." + this.showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" - ValueRef(s) then printer.showSymbol(s) - ValueLit(lit) then printer.showLiteral(lit) + ValueRef(s) then this.showSymbol(s) + ValueLit(lit) then this.showLiteral(lit) fun inlineResult(ctx: Map[Result, String])(r) = InlinePrinter(ctx).showResult(r) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls index 3836e9685f..100f03cbf7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls @@ -4,12 +4,6 @@ fun f(_) = 1 class C(val x) -// :lot -class D(val z) extends C(z + f(z)) with - let {tmp3} - tmp3 = z + z - val b = tmp3 - // :sjs staged class D(val z) extends C([2, z + f(z)]."0") with val b = z + z @@ -22,7 +16,7 @@ staged class D(val z) extends C([2, z + f(z)]."0") with //│ > Map(1) { 'f' => [Function: f_gen] } //│ > Map(2) { //│ > [Function: D] { -//│ > class: [class D2 extends C] { +//│ > class: [class D extends C] { //│ > 'cache$D': [FunCache], //│ > 'generatorMap$D': [Map] //│ > } @@ -42,19 +36,16 @@ staged class D(val z) extends C([2, z + f(z)]."0") with //│ > } //│ > } -:e -// :sir staged class D(val x)(val y, val z)(val a) with val b = 1 fun g() = x -//│ ═══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. //│ > class D1(x)(y, z)(a) with //│ > val b = 1 //│ > fun g() = x //│ > Map(1) { 'g' => [Function: g_gen] } //│ > Map(1) { //│ > [Function: D] { -//│ > class: [class D4] { 'cache$D': [FunCache], 'generatorMap$D': [Map] } +//│ > class: [class D2] { 'cache$D': [FunCache], 'generatorMap$D': [Map] } //│ > } => ConcreteClassSymbol { //│ > name: 'D1', //│ > value: [Function: D] { class: [Function] }, @@ -62,32 +53,3 @@ staged class D(val x)(val y, val z)(val a) with //│ > auxParams: [ [Array], [Array] ] //│ > } //│ > } - -import "../../mlscript-compile/Block.mls" -import "../../mlscript-compile/Option.mls" - -open Block -open Option - - -staged module M with - val x = 1 - fun g() = f(undefined) -//│ > module M with -//│ > val x = 1 -//│ > fun g() = f(undefined) -//│ > Map(1) { 'g' => [Function: g_gen] } -//│ > Map(1) { -//│ > [class M] { -//│ > x: 1, -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(1) { 'g' => [Function: g_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M] { x: 1, 'cache$M': [FunCache], 'generatorMap$M': [Map] } -//│ > } -//│ > } From fb1dcc8f984d1481d8c15fd72606dd8a0ac0ed9f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 11 Apr 2026 17:07:46 +0800 Subject: [PATCH 505/654] fixup! Merge branch 'class-and-companion' into add-cache --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e845546dc5..eaee2ecef7 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -487,7 +487,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // used for staging classes inside modules val newCompanion = companion.copy( - methods = stageMethod(preCtorFun) :: stageCtor(ctorFun) :: newMethods, + methods = stageMethod(preCtorFun) :: stageCtor(ctorFun) :: newMethods ++ companion.methods, ctor = Begin(companion.ctor, cont(End())), ) val newClsLikeDefn = defn.copy(companion = S(newCompanion))(defn.configOverride) From a9ef160f7a99c298881664a59e89fa078b2ae394 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 11 Apr 2026 17:29:40 +0800 Subject: [PATCH 506/654] clean up --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 2 -- 1 file changed, 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index eaee2ecef7..bbf82ced8c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -434,7 +434,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S override def applyObjBody(companion: ClsLikeBody) = companion.isym.defn match // staged modules case S(defn) if defn.hasStagedModifier.isDefined => - val _ = transformSymbol(companion.isym)(using Context(new HashMap()))((_, _) => End()) val (sym, ctor, methods) = (companion.isym, companion.ctor, companion.methods) // avoid name clash of cache and generator map for derived staged classes val modSym = sym @@ -453,7 +452,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S override def applyBlock(b: Block): Block = b match // staged classes case Define(defn: ClsLikeDefn, rest) if defn.isym.defn.exists(_.hasStagedModifier.isDefined) => - val _ = transformSymbol(defn.isym)(using Context(new HashMap()))((_, _) => End()) if !defn.privateFields.isEmpty then raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) return End() From 8f5843470f19b8bb2ee26ae02309ee1e29794cea Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 11 Apr 2026 17:36:21 +0800 Subject: [PATCH 507/654] fix non-top-level staged classes' ClassSymbol --- .../codegen/ReflectionInstrumenter.scala | 6 +- .../mlscript/block-staging/PathStaging.mls | 226 ++++++------------ .../mlscript/block-staging/SymbolRenaming.mls | 10 +- .../test/mlscript/block-staging/Syntax.mls | 9 - 4 files changed, 71 insertions(+), 180 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index bbf82ced8c..63e6a8011a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -141,7 +141,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S return End() val path = pOpt.getOrElse(owner match - case S(owner) => owner.asPath.sel(Tree.Ident(baseSym.nme), baseSym) + case S(owner) => owner.asPath.selSN(baseSym.nme) case N => bsym.asPath) baseSym match case _: ClassSymbol => @@ -455,10 +455,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S if !defn.privateFields.isEmpty then raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) return End() - if defn.owner.isDefined then - // FIXME: find a way to instrument the symbol for non-top-level staged classes - raise(ErrorReport(msg"Only top-level staged classes are supported." -> defn.sym.toLoc :: Nil)) - return End() // stage the companion module first, to avoid staging the new functions we add to the companion module val companion = defn.companion.map(applyObjBody).getOrElse(ClsLikeBody.empty(Tree.Ident(defn.sym.nme))) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls index b44ad9efae..093270fba8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls @@ -1,187 +1,99 @@ :js :staging -class CA() with - fun f() = 1 -staged module MA with - fun f() = 1 - class CB() with - fun f() = 1 -//│ > module MA with -//│ > class CB() with -//│ > fun f() = 1 -//│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } +staged class M() +staged module M +//│ > module M with +//│ > () +//│ > +//│ > Map(0) {} +//│ > class M1() with +//│ > () +//│ > +//│ > Map(0) {} //│ > Map(2) { -//│ > [class MA] { -//│ > CB: [Function: CB] { class: [Function] }, -//│ > 'cache$MA': FunCache { +//│ > [class M] { +//│ > 'cache$M': FunCache { //│ > owner: [ModuleSymbol], -//│ > cache: [Map], +//│ > cache: Map(0) {}, +//│ > printer: [Printer] +//│ > }, +//│ > 'generatorMap$M': Map(0) {}, +//│ > 'class$cache$M': FunCache { +//│ > owner: [ConcreteClassSymbol], +//│ > cache: Map(0) {}, //│ > printer: [Printer] //│ > }, -//│ > 'generatorMap$MA': Map(1) { 'f' => [Function: f_gen] } +//│ > 'class$generatorMap$M': Map(0) {} //│ > } => ModuleSymbol { -//│ > name: 'MA', -//│ > value: [class MA] { -//│ > CB: [Function], -//│ > 'cache$MA': [FunCache], -//│ > 'generatorMap$MA': [Map] +//│ > name: 'M', +//│ > value: [class M] { +//│ > 'cache$M': [FunCache], +//│ > 'generatorMap$M': Map(0) {}, +//│ > 'class$cache$M': [FunCache], +//│ > 'class$generatorMap$M': Map(0) {} //│ > } //│ > }, -//│ > [class CB] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'CB', [] ] +//│ > [Function: M] { +//│ > class: [class M] { +//│ > 'cache$M': [FunCache], +//│ > 'generatorMap$M': Map(0) {}, +//│ > 'class$cache$M': [FunCache], +//│ > 'class$generatorMap$M': Map(0) {} +//│ > } //│ > } => ConcreteClassSymbol { -//│ > name: 'CB', -//│ > value: [class CB] { Symbol(mlscript.definitionMetadata): [Array] }, +//│ > name: 'M1', +//│ > value: [Function: M] { class: [Function] }, //│ > paramsOpt: Some { value: [] }, //│ > auxParams: [] //│ > } //│ > } -module MB with - class CC() with - fun f() = 1 - staged module MC with - fun f() = 1 -//│ > module MC with +module N with + staged class NM() + staged module NM +//│ > module NM with //│ > () -//│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } - -class M() with - fun f() = 1 -staged module M with - fun f() = - CA().f() - MA.f() - MA.CB.f() - MB.CC.f() - MB.MC.f() -//│ > module M with +//│ > +//│ > Map(0) {} +//│ > class NM1() with //│ > () -//│ > fun f() = -//│ > let {tmp} -//│ > tmp = CA() -//│ > tmp.f() -//│ > MA.f() -//│ > MA.CB.f() -//│ > MB.CC.f() -//│ > MB.MC.f() -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(7) { -//│ > [Function: CA] { -//│ > class: [class CA] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'CA', -//│ > value: [Function: CA] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] -//│ > }, -//│ > [class MA] { -//│ > CB: [Function: CB] { class: [Function] }, -//│ > 'cache$MA': FunCache { +//│ > +//│ > Map(0) {} +//│ > Map(2) { +//│ > [class NM] { +//│ > 'cache$NM': FunCache { //│ > owner: [ModuleSymbol], -//│ > cache: [Map], +//│ > cache: Map(0) {}, //│ > printer: [Printer] //│ > }, -//│ > 'generatorMap$MA': Map(1) { 'f' => [Function: f_gen] }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'MA' ] -//│ > } => ModuleSymbol { -//│ > name: 'MA', -//│ > value: [class MA] { -//│ > CB: [Function], -//│ > 'cache$MA': [FunCache], -//│ > 'generatorMap$MA': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > }, -//│ > [Function: CB] { -//│ > class: [class CB] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'CB', -//│ > value: [Function: CB] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] -//│ > }, -//│ > [class MB] { -//│ > CC: [Function: CC] { class: [Function] }, -//│ > MC: [class MC] { -//│ > 'cache$MC': [FunCache], -//│ > 'generatorMap$MC': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > 'generatorMap$NM': Map(0) {}, +//│ > 'class$cache$NM': FunCache { +//│ > owner: [ConcreteClassSymbol], +//│ > cache: Map(0) {}, +//│ > printer: [Printer] //│ > }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'MB' ] +//│ > 'class$generatorMap$NM': Map(0) {} //│ > } => ModuleSymbol { -//│ > name: 'MB', -//│ > value: [class MB] { -//│ > CC: [Function], -//│ > MC: [Function], -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > name: 'NM', +//│ > value: [class NM] { +//│ > 'cache$NM': [FunCache], +//│ > 'generatorMap$NM': Map(0) {}, +//│ > 'class$cache$NM': [FunCache], +//│ > 'class$generatorMap$NM': Map(0) {} //│ > } //│ > }, -//│ > [Function: CC] { -//│ > class: [class CC] { Symbol(mlscript.definitionMetadata): [Array] } +//│ > [Function: NM] { +//│ > class: [class NM] { +//│ > 'cache$NM': [FunCache], +//│ > 'generatorMap$NM': Map(0) {}, +//│ > 'class$cache$NM': [FunCache], +//│ > 'class$generatorMap$NM': Map(0) {} +//│ > } //│ > } => ConcreteClassSymbol { -//│ > name: 'CC', -//│ > value: [Function: CC] { class: [Function] }, +//│ > name: 'NM1', +//│ > value: [Function: NM] { class: [Function] }, //│ > paramsOpt: Some { value: [] }, //│ > auxParams: [] -//│ > }, -//│ > [class MC] { -//│ > 'cache$MC': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$MC': Map(1) { 'f' => [Function: f_gen] }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'MC' ] -//│ > } => ModuleSymbol { -//│ > name: 'MC', -//│ > value: [class MC] { -//│ > 'cache$MC': [FunCache], -//│ > 'generatorMap$MC': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > }, -//│ > [class M] { -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } //│ > } //│ > } - -staged class C() with - fun f() = 1 -//│ > class C1() with -//│ > () -//│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } - -// :sjs -module N with - class NM() with - fun g() = 1 - staged module NM with - fun f() = 1 -//│ > module NM with -//│ > () -//│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } - -:e -module N with - staged class NC() with - fun f() = 1 -//│ ╔══[COMPILATION ERROR] Only top-level staged classes are supported. -//│ ║ l.180: staged class NC() with -//│ ║ ^^^^^^^^^^^^^^^ -//│ ║ l.181: fun f() = 1 -//│ ╙── ^^^^^^^^^^^^^^^ - diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 28056e873a..6f454c74f3 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -73,7 +73,7 @@ staged module DupeClass with //│ > tmp = C(1) //│ > tmp.y //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(3) { +//│ > Map(2) { //│ > [class DupeClass] { //│ > C: [Function: C] { class: [Function] }, //│ > 'cache$DupeClass': FunCache { @@ -97,13 +97,5 @@ staged module DupeClass with //│ > value: [Function: C] { class: [Function] }, //│ > paramsOpt: Some { value: [Array] }, //│ > auxParams: [] -//│ > }, -//│ > [class C2] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'C', [Array] ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [class C2] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] //│ > } //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index fb705be253..7589e7f6c9 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -40,15 +40,6 @@ staged module A //│ set tmp2 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); //│ end //│ } -//│ method preCtor$_instr⁰ = fun preCtor$_instr¹() { -//│ let sym, tmp, tmp1, end, tmp2; -//│ set sym = Block⁰.Symbol﹖("preCtor$"); -//│ set tmp = []; -//│ set tmp1 = [tmp]; -//│ set end = Block⁰.End﹖(); -//│ set tmp2 = Block⁰.FunDefn﹖(sym, tmp1, end); -//│ return tmp2 -//│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { //│ let sym, tmp, tmp1, end, tmp2; //│ set sym = Block⁰.Symbol﹖("ctor$"); From 42761b5f86dbdb4b1c1b599b237dff8a94041e1a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 11 Apr 2026 23:37:21 +0800 Subject: [PATCH 508/654] ctor fixes --- .../scala/hkmc2/codegen/ReflectionInstrumenter.scala | 11 ++++++++--- .../src/test/mlscript-compile/SpecializeHelpers.mls | 10 ++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 63e6a8011a..063b10fbc9 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -139,10 +139,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case _ => raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() - + val path = pOpt.getOrElse(owner match case S(owner) => owner.asPath.selSN(baseSym.nme) case N => bsym.asPath) + baseSym match case _: ClassSymbol => transformParamsOpt(paramsOpt): (paramsOpt, ctx) => @@ -467,7 +468,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case S(parent) => replaceSuper(parent).applyBlock(defn.preCtor) case N => defn.preCtor - val (sym, ctor, ctorParams, methods) = (defn.sym, defn.ctor, defn.paramsOpt, defn.methods) + val (sym, ctor, ctorParams, methods) = + val ctorParams = defn.paramsOpt match + case S(ps) => ps :: defn.auxParams + case N => defn.auxParams + (defn.sym, defn.ctor, ctorParams, defn.methods) val modSym = companion.isym val suffix = "$" + sym.nme @@ -475,7 +480,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val generatorMapNme = "class$generatorMap" + suffix val preCtorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("preCtor$", Nil, false), Ls(PlainParamList(Nil)), preCtor)(false, N) - val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("class$ctor$", Nil, false), Ls(ctorParams.getOrElse(PlainParamList(Nil))), ctor)(false, N) + val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("class$ctor$", Nil, false), ctorParams, ctor)(false, N) val (newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme)(methods) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 8176736777..1ccdb54114 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -76,9 +76,11 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any End then "" else throw Error("unexpected Block type in constructor: " + b.toString()) - let preCtor = runtimeClass."preCtor$_instr"().body - assert preCtor is Block.Block - let extendsClause = inlineAssigments(new Map())(preCtor) + let extendsClause = if owner is ConcreteClassSymbol then + let preCtor = runtimeClass."preCtor$_instr"().body + assert preCtor is Block.Block + inlineAssigments(new Map())(preCtor) + else "" // process ctor: remove ValDefn of parameters defined in paramsOpt fun removeExtraValDefn(params, block) = if block is @@ -89,7 +91,7 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any Scoped(symbols, rest) then Scoped(symbols, removeExtraValDefn(params, rest)) else block - let ctor = runtimeClass."ctor$_instr"() + let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() assert ctor is FunDefn let params = new Set(ctor.params.flat()) let ctorBody = removeExtraValDefn(params, ctor.body) From 41213189b40d982a1b3c8858133d562346fad2ba Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:39:54 +0800 Subject: [PATCH 509/654] fix symbolMap to class and module maps this avoids collision of a ConcreteClassSymbol and ModuleSymbol of a class with no paramters and its companion module, both having the same runtime value and thus the same key --- .../codegen/ReflectionInstrumenter.scala | 20 +- .../src/test/mlscript-compile/Block.mls | 14 +- .../test/mlscript/block-staging/Classes.mls | 232 ++++------ .../test/mlscript/block-staging/Functions.mls | 409 ++++++------------ .../mlscript/block-staging/PathStaging.mls | 96 ++-- .../mlscript/block-staging/PrintingTest.mls | 59 +-- .../mlscript/block-staging/StageSymbols.mls | 261 ++++------- .../block-staging/StageWtihCompanion.mls | 68 +-- .../mlscript/block-staging/SymbolRenaming.mls | 65 +-- .../test/mlscript/block-staging/Syntax.mls | 43 +- 10 files changed, 425 insertions(+), 842 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 063b10fbc9..b9d5dc7a3f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -113,9 +113,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def transformSymbol(sym: Symbol, pOpt: Option[Path] = N, symName: Str = "sym")(using stagingCtx: Context)(k: (Path, Context) => Block): Block = def cachedK(p: Path, ctx: Context) = k(p, ctx.addCache(sym, p)) - def checkMap(key: Path, p: Path, ctx: Context) = + def checkMap(mapType: Str, key: Path, p: Path, ctx: Context) = if symbolMapSym is None then symbolMapSym = S(TempSymbol(N, "symbolMap")) - blockCall("checkMap", Ls(symbolMapSym.get, key, p))(cachedK(_, ctx)) + call(symbolMapSym.get.asPath.selSN("checkMap"), Ls(toValue(mapType), key, p))(cachedK(_, ctx)) + // blockCall("checkMap", Ls(symbolMapSym.get, key, p))(cachedK(_, ctx)) stagingCtx.getCache(sym).map(cachedK(_, stagingCtx)).getOrElse: sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => @@ -128,7 +129,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case _: NoSymbol => blockCtor("NoSymbol", Nil, symName)(cachedK(_, stagingCtx)) case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => - blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap(toValue(sym.nme), _, stagingCtx)) + blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap("classMap", toValue(sym.nme), _, stagingCtx)) case baseSym: BaseTypeSymbol => val name = scope.allocateOrGetName(sym) val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match @@ -149,9 +150,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformParamsOpt(paramsOpt): (paramsOpt, ctx) => auxParams.map(ps => ctx => transformParamList(ps)(using ctx)).chainContext: (auxParams, ctx) => tuple(auxParams): auxParams => - blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap(path, _, stagingCtx)) + blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap("classMap", path, _, stagingCtx)) case _: ModuleOrObjectSymbol => - blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap(path, _, stagingCtx)) + blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap("moduleMap", path, _, stagingCtx)) // preserve names to builtin symbols case _: BuiltinSymbol | _: VarSymbol => blockCtor("Symbol", Ls(toValue(sym.nme)), symName)(cachedK(_, stagingCtx)) @@ -430,7 +431,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => symbolMapSym.map(sym => call(printFun, Ls(sym), false)(_ => rest)).getOrElse(rest) - (helperMethods.flatten, b => cacheDecl(generatorMapDecl(debugCont(b)))) + (helperMethods.flatten, b => Begin(cacheDecl(generatorMapDecl(End())), debugCont(b))) override def applyObjBody(companion: ClsLikeBody) = companion.isym.defn match // staged modules @@ -506,5 +507,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S mkDefnMap(b) val rest = applyBlock(b) symbolMapSym match - case S(sym) => Scoped(Set(sym), Assign(sym, Instantiate(false, State.globalThisSymbol.asPath.selSN("Map"), Nil), rest)) + case S(sym) => + val mapPath = State.globalThisSymbol.asPath.selSN("Map") + ctor(mapPath, Nil): map1 => + ctor(mapPath, Nil): map2 => + ctor(blockMod("SymbolMap"), Ls(map1, map2)): map => + Scoped(Set(sym), Assign(sym, map, rest)) case N => rest diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index e96f8bdb2b..b20f1cb604 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -42,11 +42,15 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = else false // TODO: move this to somewhere appropriate -fun checkMap(symbolMap, key, value) = - let v = symbolMap.get(key) - if v is - Symbol then v - else symbolMap.set(key, value); value +// A staged class with no parameters has the same runtime value as its staged companion, this causes an unwated collision when creating a symbol for both the class and the module, +// so we need to split the map into the which type of symbol used. +class SymbolMap(val classMap: Map[Class, ClassSymbol], val moduleMap: Map[Class, ModuleSymbol]) with + fun checkMap(mapType: String, key: Class, value: ClassSymbol | ModuleSymbol) = + let map = this.(mapType) + let v = map.get(key) + if v is + Symbol then v + else map.set(key, value); value class Arg(val value: Path) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index dd14d3e149..7639c21989 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -12,37 +12,22 @@ staged module M with //│ > () //│ > fun f(x) = x.call(10) //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [class M] { -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } -//│ > } -//│ > } staged class A(val a) //│ > class A(a) with //│ > () //│ > //│ > Map(0) {} -//│ > Map(1) { -//│ > [Function: A] { -//│ > class: [class A] { -//│ > 'class$cache$A': [FunCache], -//│ > 'class$generatorMap$A': Map(0) {} +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: A] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'A', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > } -//│ > } => ConcreteClassSymbol { -//│ > name: 'A', -//│ > value: [Function: A] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} //│ > } staged module C with @@ -51,28 +36,21 @@ staged module C with //│ > class I //│ > //│ > Map(0) {} -//│ > Map(2) { -//│ > [class C2] { -//│ > I: [class I] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$C': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$C': Map(0) {} -//│ > } => ModuleSymbol { -//│ > name: 'C', -//│ > value: [class C2] { +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [class I] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'I', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class C2] { //│ > I: [Function], //│ > 'cache$C': [FunCache], //│ > 'generatorMap$C': Map(0) {} -//│ > } -//│ > }, -//│ > [class I] { Symbol(mlscript.definitionMetadata): [ 'class', 'I' ] } => ConcreteClassSymbol { -//│ > name: 'I', -//│ > value: [class I] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > } => ModuleSymbol { name: 'C', value: [Function] } //│ > } //│ > } @@ -83,23 +61,17 @@ staged module M with //│ > () //│ > fun f() = C //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(2) { -//│ > [class C4] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [class C4] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [class C4] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } //│ > }, -//│ > [class M2] { -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M2] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } +//│ > moduleMap: Map(1) { +//│ > [class M2] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } //│ > } //│ > } @@ -109,30 +81,12 @@ staged class C with //│ > () //│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [class C6] { -//│ > 'class$cache$C': FunCache { -//│ > owner: [ConcreteClassSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'class$generatorMap$C': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [class C6] { -//│ > 'class$cache$C': [FunCache], -//│ > 'class$generatorMap$C': [Map] -//│ > }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > } :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.132: staged class C(x) -//│ ╙── ^^^^^^^^^^ +//│ ║ l.86: staged class C(x) +//│ ╙── ^^^^^^^^^^ staged class B(val x) with fun f(y) = this.x + y @@ -143,47 +97,37 @@ staged class D(val x) extends B(x+1) with //│ > () //│ > fun f(y) = x + y //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [Function: B] { -//│ > class: [class B] { -//│ > 'class$cache$B': [FunCache], -//│ > 'class$generatorMap$B': [Map] +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: B] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'B', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > } -//│ > } => ConcreteClassSymbol { -//│ > name: 'B', -//│ > value: [Function: B] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} //│ > } //│ > class D(x) extends B(x + 1) with //│ > val y = 1 //│ > fun f() = 42 //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(2) { -//│ > [Function: B] { -//│ > class: [class B] { -//│ > 'class$cache$B': [FunCache], -//│ > 'class$generatorMap$B': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [Function: B] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'B', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > }, +//│ > [Function: D] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'D', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > } -//│ > } => ConcreteClassSymbol { -//│ > name: 'B', -//│ > value: [Function: B] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] //│ > }, -//│ > [Function: D] { -//│ > class: [class D extends B] { -//│ > 'class$cache$D': [FunCache], -//│ > 'class$generatorMap$D': [Map] -//│ > } -//│ > } => ConcreteClassSymbol { -//│ > name: 'D', -//│ > value: [Function: D] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } +//│ > moduleMap: Map(0) {} //│ > } class Unstaged @@ -197,53 +141,37 @@ staged module M with //│ > () //│ > fun inner() = 1 //│ > Map(1) { 'inner' => [Function: inner_gen] } -//│ > Map(1) { -//│ > [Function: Staged] { -//│ > class: [class Staged] { -//│ > 'class$cache$Staged': [FunCache], -//│ > 'class$generatorMap$Staged': [Map] +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: Staged] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'Staged', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > } -//│ > } => ConcreteClassSymbol { -//│ > name: 'Staged', -//│ > value: [Function: Staged] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} //│ > } //│ > module M with //│ > () //│ > fun f() = ,(Unstaged, Staged) //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(3) { -//│ > [Function: Staged] { -//│ > class: [class Staged] { -//│ > 'class$cache$Staged': [FunCache], -//│ > 'class$generatorMap$Staged': [Map], -//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [Function: Staged] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'Staged', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > }, +//│ > [class Unstaged] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'Unstaged', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] //│ > } -//│ > } => ConcreteClassSymbol { -//│ > name: 'Staged', -//│ > value: [Function: Staged] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > [class Unstaged] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Unstaged' ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'Unstaged', -//│ > value: [class Unstaged] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] //│ > }, -//│ > [class M4] { -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M4] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } +//│ > moduleMap: Map(1) { +//│ > [class M4] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } //│ > } //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index bb080672c7..3cf505faf5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -1,7 +1,6 @@ :js :staging -:checkIR staged module Rebinding with fun lit() = let x = 42 @@ -13,20 +12,13 @@ staged module Rebinding with //│ > x = 42 //│ > x //│ > Map(1) { 'lit' => [Function: lit_gen] } -//│ > Map(1) { -//│ > [class Rebinding] { -//│ > 'cache$Rebinding': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$Rebinding': Map(1) { 'lit' => [Function: lit_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'Rebinding', -//│ > value: [class Rebinding] { +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class Rebinding] { //│ > 'cache$Rebinding': [FunCache], //│ > 'generatorMap$Rebinding': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'Rebinding', value: [Function] } //│ > } //│ > } @@ -102,30 +94,16 @@ staged module Expressions with //│ > 'match1' => [Function: match1_gen], //│ > 'match2' => [Function: match2_gen] //│ > } -//│ > Map(3) { -//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, -//│ > 'Int' => VirtualClassSymbol { name: 'Int' }, -//│ > [class Expressions] { -//│ > 'cache$Expressions': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$Expressions': Map(7) { -//│ > 'lit' => [Function: lit_gen], -//│ > 'assign' => [Function: assign_gen], -//│ > 'tup1' => [Function: tup1_gen], -//│ > 'tup2' => [Function: tup2_gen], -//│ > 'dynsel' => [Function: dynsel_gen], -//│ > 'match1' => [Function: match1_gen], -//│ > 'match2' => [Function: match2_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'Expressions', -//│ > value: [class Expressions] { +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, +//│ > 'Int' => VirtualClassSymbol { name: 'Int' } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class Expressions] { //│ > 'cache$Expressions': [FunCache], //│ > 'generatorMap$Expressions': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'Expressions', value: [Function] } //│ > } //│ > } //│ x = [1, 2, 3] @@ -151,61 +129,34 @@ staged module ClassInstrumentation with //│ > 'app1' => [Function: app1_gen], //│ > 'app2' => [Function: app2_gen] //│ > } -//│ > Map(5) { -//│ > [Function: Outside] { -//│ > class: [class Outside] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'Outside', -//│ > value: [Function: Outside] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > [class ClassInstrumentation] { -//│ > Inside: [Function: Inside] { class: [Function] }, -//│ > NoArg: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$ClassInstrumentation': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] +//│ > SymbolMap { +//│ > classMap: Map(3) { +//│ > [Function: Outside] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'Outside', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > }, -//│ > 'generatorMap$ClassInstrumentation': Map(4) { -//│ > 'inst1' => [Function: inst1_gen], -//│ > 'inst2' => [Function: inst2_gen], -//│ > 'app1' => [Function: app1_gen], -//│ > 'app2' => [Function: app2_gen] +//│ > [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'NoArg', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Inside] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'Inside', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > } -//│ > } => ModuleSymbol { -//│ > name: 'ClassInstrumentation', -//│ > value: [class ClassInstrumentation] { +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class ClassInstrumentation] { //│ > Inside: [Function], //│ > NoArg: [Function], //│ > 'cache$ClassInstrumentation': [FunCache], //│ > 'generatorMap$ClassInstrumentation': [Map] -//│ > } -//│ > }, -//│ > [class NoArg] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'NoArg' ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'NoArg', -//│ > value: [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, -//│ > [Function: Inside] { -//│ > class: [class Inside] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'Inside', -//│ > value: [Function: Inside] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > [class Inside] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Inside', [Array] ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'Inside', -//│ > value: [class Inside] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] +//│ > } => ModuleSymbol { name: 'ClassInstrumentation', value: [Function] } //│ > } //│ > } @@ -219,20 +170,13 @@ staged module CallSubst with //│ > () //│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [class Staged] { -//│ > 'cache$Staged': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$Staged': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'Staged', -//│ > value: [class Staged] { +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class Staged] { //│ > 'cache$Staged': [FunCache], //│ > 'generatorMap$Staged': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'Staged', value: [Function] } //│ > } //│ > } //│ > module CallSubst with @@ -243,42 +187,19 @@ staged module CallSubst with //│ > tmp1 = Staged.f() //│ > tmp + tmp1 //│ > Map(1) { 'call' => [Function: call_gen] } -//│ > Map(3) { -//│ > [class Staged] { -//│ > 'cache$Staged': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$Staged': Map(1) { 'f' => [Function: f_gen] }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Staged' ] -//│ > } => ModuleSymbol { -//│ > name: 'Staged', -//│ > value: [class Staged] { +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(3) { +//│ > [class Staged] { //│ > 'cache$Staged': [FunCache], //│ > 'generatorMap$Staged': [Map], //│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > }, -//│ > [class Nonstaged] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Nonstaged' ] -//│ > } => ModuleSymbol { -//│ > name: 'Nonstaged', -//│ > value: [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > }, -//│ > [class CallSubst] { -//│ > 'cache$CallSubst': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$CallSubst': Map(1) { 'call' => [Function: call_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'CallSubst', -//│ > value: [class CallSubst] { +//│ > } => ModuleSymbol { name: 'Staged', value: [Function] }, +//│ > [class Nonstaged] { Symbol(mlscript.definitionMetadata): [Array] } => ModuleSymbol { name: 'Nonstaged', value: [Function] }, +//│ > [class CallSubst] { //│ > 'cache$CallSubst': [FunCache], //│ > 'generatorMap$CallSubst': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'CallSubst', value: [Function] } //│ > } //│ > } @@ -298,30 +219,22 @@ staged module Arguments with //│ > tmp = new Function_ //│ > tmp //│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } -//│ > Map(2) { -//│ > [class Function$1 extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'Function$', -//│ > value: [class Function$1 extends Function] { +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } //│ > }, -//│ > [class Arguments] { -//│ > 'cache$Arguments': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$Arguments': Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'Arguments', -//│ > value: [class Arguments] { +//│ > moduleMap: Map(1) { +//│ > [class Arguments] { //│ > 'cache$Arguments': [FunCache], //│ > 'generatorMap$Arguments': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'Arguments', value: [Function] } //│ > } //│ > } @@ -353,23 +266,13 @@ staged module OtherBlocks with //│ > 'scope' => [Function: scope_gen], //│ > 'breakAndLabel' => [Function: breakAndLabel_gen] //│ > } -//│ > Map(1) { -//│ > [class OtherBlocks] { -//│ > 'cache$OtherBlocks': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$OtherBlocks': Map(2) { -//│ > 'scope' => [Function: scope_gen], -//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'OtherBlocks', -//│ > value: [class OtherBlocks] { +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class OtherBlocks] { //│ > 'cache$OtherBlocks': [FunCache], //│ > 'generatorMap$OtherBlocks': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'OtherBlocks', value: [Function] } //│ > } //│ > } @@ -379,28 +282,21 @@ staged module ClassDefs with //│ > class A //│ > //│ > Map(0) {} -//│ > Map(2) { -//│ > [class ClassDefs] { -//│ > A: [class A] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$ClassDefs': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$ClassDefs': Map(0) {} -//│ > } => ModuleSymbol { -//│ > name: 'ClassDefs', -//│ > value: [class ClassDefs] { +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [class A] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'A', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class ClassDefs] { //│ > A: [Function], //│ > 'cache$ClassDefs': [FunCache], //│ > 'generatorMap$ClassDefs': Map(0) {} -//│ > } -//│ > }, -//│ > [class A] { Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] } => ConcreteClassSymbol { -//│ > name: 'A', -//│ > value: [class A] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > } => ModuleSymbol { name: 'ClassDefs', value: [Function] } //│ > } //│ > } @@ -410,30 +306,21 @@ staged module ValClass with //│ > class A(a) //│ > //│ > Map(0) {} -//│ > Map(2) { -//│ > [class ValClass] { -//│ > A: [Function: A] { class: [Function] }, -//│ > 'cache$ValClass': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$ValClass': Map(0) {} -//│ > } => ModuleSymbol { -//│ > name: 'ValClass', -//│ > value: [class ValClass] { +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: A] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'A', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class ValClass] { //│ > A: [Function], //│ > 'cache$ValClass': [FunCache], //│ > 'generatorMap$ValClass': Map(0) {} -//│ > } -//│ > }, -//│ > [class A1] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A', [Array] ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'A', -//│ > value: [class A1] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] +//│ > } => ModuleSymbol { name: 'ValClass', value: [Function] } //│ > } //│ > } @@ -450,46 +337,26 @@ staged module ClassFunctions with //│ > fun g() = InnerClass.f() //│ > //│ > Map(0) {} -//│ > Map(3) { -//│ > [class ClassFunctions] { -//│ > InnerClass: [Function: InnerClass] { class: [Function] }, -//│ > 'cache$ClassFunctions': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$ClassFunctions': Map(0) {} -//│ > } => ModuleSymbol { -//│ > name: 'ClassFunctions', -//│ > value: [class ClassFunctions] { +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: InnerClass] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'InnerClass', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(2) { +//│ > [class ClassFunctions] { //│ > InnerClass: [Function], //│ > 'cache$ClassFunctions': [FunCache], //│ > 'generatorMap$ClassFunctions': Map(0) {} -//│ > } -//│ > }, -//│ > [class InnerClass] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'InnerClass', [] ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'InnerClass', -//│ > value: [class InnerClass] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] -//│ > }, -//│ > [class Arguments] { -//│ > 'cache$Arguments': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$Arguments': Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Arguments' ] -//│ > } => ModuleSymbol { -//│ > name: 'Arguments', -//│ > value: [class Arguments] { +//│ > } => ModuleSymbol { name: 'ClassFunctions', value: [Function] }, +//│ > [class Arguments] { //│ > 'cache$Arguments': [FunCache], //│ > 'generatorMap$Arguments': [Map], //│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } +//│ > } => ModuleSymbol { name: 'Arguments', value: [Function] } //│ > } //│ > } @@ -502,17 +369,10 @@ staged module A with //│ > () //│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [class A2] { -//│ > 'cache$A': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$A': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'A', -//│ > value: [class A2] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class A2] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } => ModuleSymbol { name: 'A', value: [Function] } //│ > } //│ > } @@ -524,17 +384,10 @@ module A with //│ > () //│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [class B] { -//│ > 'cache$B': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$B': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'B', -//│ > value: [class B] { 'cache$B': [FunCache], 'generatorMap$B': [Map] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class B] { 'cache$B': [FunCache], 'generatorMap$B': [Map] } => ModuleSymbol { name: 'B', value: [Function] } //│ > } //│ > } @@ -548,20 +401,13 @@ staged module NestedFunDefn with //│ > () //│ > fun f() = g() //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [class NestedFunDefn] { -//│ > 'cache$NestedFunDefn': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$NestedFunDefn': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'NestedFunDefn', -//│ > value: [class NestedFunDefn] { +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class NestedFunDefn] { //│ > 'cache$NestedFunDefn': [FunCache], //│ > 'generatorMap$NestedFunDefn': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'NestedFunDefn', value: [Function] } //│ > } //│ > } @@ -578,10 +424,10 @@ staged module LabelBreak with //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.571: let x = 1 +//│ ║ l.417: let x = 1 //│ ║ ^ //│ ╟── which references the symbol introduced here -//│ ║ l.571: let x = 1 +//│ ║ l.417: let x = 1 //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -593,7 +439,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.AssignField //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.593: fun g() = {1 : 2} +//│ ║ l.439: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. @@ -619,19 +465,12 @@ staged module Spread with //│ > else 0 //│ > else 0 //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [class Spread] { -//│ > 'cache$Spread': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$Spread': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'Spread', -//│ > value: [class Spread] { +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class Spread] { //│ > 'cache$Spread': [FunCache], //│ > 'generatorMap$Spread': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'Spread', value: [Function] } //│ > } //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls index 093270fba8..a4ddc5f077 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls @@ -1,51 +1,34 @@ :js :staging -staged class M() -staged module M +staged class M() with + fun f() = 1 +staged module M with + fun g() = 1 //│ > module M with //│ > () -//│ > -//│ > Map(0) {} +//│ > fun g() = 1 +//│ > Map(1) { 'g' => [Function: g_gen] } //│ > class M1() with //│ > () -//│ > -//│ > Map(0) {} -//│ > Map(2) { -//│ > [class M] { -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(0) {}, -//│ > 'class$cache$M': FunCache { -//│ > owner: [ConcreteClassSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'class$generatorMap$M': Map(0) {} -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M] { -//│ > 'cache$M': [FunCache], -//│ > 'generatorMap$M': Map(0) {}, -//│ > 'class$cache$M': [FunCache], -//│ > 'class$generatorMap$M': Map(0) {} +//│ > fun f() = 1 +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: M] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'M1', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > } //│ > }, -//│ > [Function: M] { -//│ > class: [class M] { +//│ > moduleMap: Map(1) { +//│ > [class M] { //│ > 'cache$M': [FunCache], -//│ > 'generatorMap$M': Map(0) {}, +//│ > 'generatorMap$M': [Map], //│ > 'class$cache$M': [FunCache], -//│ > 'class$generatorMap$M': Map(0) {} -//│ > } -//│ > } => ConcreteClassSymbol { -//│ > name: 'M1', -//│ > value: [Function: M] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] +//│ > 'class$generatorMap$M': [Map] +//│ > } => ModuleSymbol { name: 'M', value: [Function] } //│ > } //│ > } @@ -60,40 +43,21 @@ module N with //│ > () //│ > //│ > Map(0) {} -//│ > Map(2) { -//│ > [class NM] { -//│ > 'cache$NM': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$NM': Map(0) {}, -//│ > 'class$cache$NM': FunCache { -//│ > owner: [ConcreteClassSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'class$generatorMap$NM': Map(0) {} -//│ > } => ModuleSymbol { -//│ > name: 'NM', -//│ > value: [class NM] { -//│ > 'cache$NM': [FunCache], -//│ > 'generatorMap$NM': Map(0) {}, -//│ > 'class$cache$NM': [FunCache], -//│ > 'class$generatorMap$NM': Map(0) {} +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: NM] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'NM1', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > } //│ > }, -//│ > [Function: NM] { -//│ > class: [class NM] { +//│ > moduleMap: Map(1) { +//│ > [class NM] { //│ > 'cache$NM': [FunCache], //│ > 'generatorMap$NM': Map(0) {}, //│ > 'class$cache$NM': [FunCache], //│ > 'class$generatorMap$NM': Map(0) {} -//│ > } -//│ > } => ConcreteClassSymbol { -//│ > name: 'NM1', -//│ > value: [Function: NM] { class: [Function] }, -//│ > paramsOpt: Some { value: [] }, -//│ > auxParams: [] +//│ > } => ModuleSymbol { name: 'NM', value: [Function] } //│ > } //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls index 100f03cbf7..271ef96be8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls @@ -4,52 +4,29 @@ fun f(_) = 1 class C(val x) -// :sjs -staged class D(val z) extends C([2, z + f(z)]."0") with +staged class D(val x)(val y, val z)(val a) extends C([2, z + f(z)]."0") with val b = z + z - fun f() = b -//│ > class D1(z) extends C([2, z + f(z)].("0")) with + fun f() = a + x +//│ > class D(x)(y, z)(a) extends C([2, z + f(z)].("0")) with //│ > let {tmp3} //│ > tmp3 = z + z //│ > val b = tmp3 -//│ > fun f() = b +//│ > fun f() = a + x //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(2) { -//│ > [Function: D] { -//│ > class: [class D extends C] { -//│ > 'cache$D': [FunCache], -//│ > 'generatorMap$D': [Map] +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [Function: D] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'D', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [Array] +//│ > }, +//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > } -//│ > } => ConcreteClassSymbol { -//│ > name: 'D1', -//│ > value: [Function: D] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] //│ > }, -//│ > [Function: C] { -//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } -//│ > } - -staged class D(val x)(val y, val z)(val a) with - val b = 1 - fun g() = x -//│ > class D1(x)(y, z)(a) with -//│ > val b = 1 -//│ > fun g() = x -//│ > Map(1) { 'g' => [Function: g_gen] } -//│ > Map(1) { -//│ > [Function: D] { -//│ > class: [class D2] { 'cache$D': [FunCache], 'generatorMap$D': [Map] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'D1', -//│ > value: [Function: D] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [ [Array], [Array] ] -//│ > } +//│ > moduleMap: Map(0) {} //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index e818beed02..5c8bb25e26 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -11,28 +11,21 @@ staged module M with //│ > fun g() = C.f() //│ > //│ > Map(0) {} -//│ > Map(2) { -//│ > [class M] { -//│ > C: [class C] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(0) {} -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M] { +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [class C] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class M] { //│ > C: [Function], //│ > 'cache$M': [FunCache], //│ > 'generatorMap$M': Map(0) {} -//│ > } -//│ > }, -//│ > [class C] { Symbol(mlscript.definitionMetadata): [ 'class', 'C' ] } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [class C] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > } => ModuleSymbol { name: 'M', value: [Function] } //│ > } //│ > } @@ -78,61 +71,35 @@ staged module D with //│ > 'f' => [Function: f_gen], //│ > 'matching' => [Function: matching_gen] //│ > } -//│ > Map(7) { -//│ > [class A] { -//│ > 'cache$A': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] +//│ > SymbolMap { +//│ > classMap: Map(4) { +//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, +//│ > 'Int' => VirtualClassSymbol { name: 'Int' }, +//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [Array] //│ > }, -//│ > 'generatorMap$A': Map(1) { 'f' => [Function: f_gen] }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] -//│ > } => ModuleSymbol { -//│ > name: 'A', -//│ > value: [class A] { +//│ > [class E] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'E', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(3) { +//│ > [class A] { //│ > 'cache$A': [FunCache], //│ > 'generatorMap$A': [Map], //│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > }, -//│ > [class B] { Symbol(mlscript.definitionMetadata): [ 'class', 'B' ] } => ModuleSymbol { -//│ > name: 'B', -//│ > value: [class B] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > }, -//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, -//│ > 'Int' => VirtualClassSymbol { name: 'Int' }, -//│ > [Function: C] { -//│ > class: [class C1] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [ [Array], [Array] ] -//│ > }, -//│ > [class D] { -//│ > E: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$D': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$D': Map(2) { -//│ > 'f' => [Function: f_gen], -//│ > 'matching' => [Function: matching_gen] -//│ > } -//│ > } => ModuleSymbol { -//│ > name: 'D', -//│ > value: [class D] { +//│ > } => ModuleSymbol { name: 'A', value: [Function] }, +//│ > [class B] { Symbol(mlscript.definitionMetadata): [Array] } => ModuleSymbol { name: 'B', value: [Function] }, +//│ > [class D] { //│ > E: [Function], //│ > 'cache$D': [FunCache], //│ > 'generatorMap$D': [Map] -//│ > } -//│ > }, -//│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { -//│ > name: 'E', -//│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > } => ModuleSymbol { name: 'D', value: [Function] } //│ > } //│ > } @@ -155,86 +122,47 @@ staged module M with //│ > A.B.C(2) //│ > E1 //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(7) { -//│ > [class D] { -//│ > E: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$D': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] +//│ > SymbolMap { +//│ > classMap: Map(3) { +//│ > [class E] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'E', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] //│ > }, -//│ > 'generatorMap$D': Map(2) { -//│ > 'f' => [Function: f_gen], -//│ > 'matching' => [Function: matching_gen] +//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'D' ] -//│ > } => ModuleSymbol { -//│ > name: 'D', -//│ > value: [class D] { +//│ > [class E1] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'E1', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(4) { +//│ > [class D] { //│ > E: [Function], //│ > 'cache$D': [FunCache], //│ > 'generatorMap$D': [Map], //│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > }, -//│ > [class E] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { -//│ > name: 'E', -//│ > value: [class E] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, -//│ > [class A2] { -//│ > B: [class B2] { -//│ > C: [Function], -//│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'A' ] -//│ > } => ModuleSymbol { -//│ > name: 'A', -//│ > value: [class A2] { +//│ > } => ModuleSymbol { name: 'D', value: [Function] }, +//│ > [class A2] { //│ > B: [Function], //│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > }, -//│ > [class B2] { -//│ > C: [Function: C] { class: [Function] }, -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'B' ] -//│ > } => ModuleSymbol { -//│ > name: 'B', -//│ > value: [class B2] { +//│ > } => ModuleSymbol { name: 'A', value: [Function] }, +//│ > [class B2] { //│ > C: [Function], //│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > } -//│ > }, -//│ > [Function: C] { -//│ > class: [class C3] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > [class M2] { -//│ > E: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M2] { +//│ > } => ModuleSymbol { name: 'B', value: [Function] }, +//│ > [class M2] { //│ > E: [Function], //│ > 'cache$M': [FunCache], //│ > 'generatorMap$M': [Map] -//│ > } -//│ > }, -//│ > [class E1] { Symbol(mlscript.definitionMetadata): [ 'class', 'E' ] } => ConcreteClassSymbol { -//│ > name: 'E1', -//│ > value: [class E1] { Symbol(mlscript.definitionMetadata): [Array] }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > } => ModuleSymbol { name: 'M', value: [Function] } //│ > } //│ > } @@ -242,7 +170,7 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.243: fun g()() = 1 +//│ ║ l.171: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > module M with //│ > () @@ -264,37 +192,27 @@ staged module M with //│ > tmp1 = new Function_1 //│ > tmp1 //│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } -//│ > Map(3) { -//│ > [class Function$1 extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'Function$', -//│ > value: [class Function$1 extends Function] { +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [class Function$1 extends Function] { //│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] //│ > }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > }, -//│ > [class Function$ extends Function] { -//│ > Symbol(mlscript.definitionMetadata): [ 'class', 'Function$' ] -//│ > } => ConcreteClassSymbol { -//│ > name: 'Function$1', -//│ > value: [class Function$ extends Function] { +//│ > [class Function$ extends Function] { //│ > Symbol(mlscript.definitionMetadata): [Array] -//│ > }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$1', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } //│ > }, -//│ > [class M6] { -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'M', -//│ > value: [class M6] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } +//│ > moduleMap: Map(1) { +//│ > [class M6] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } //│ > } //│ > } @@ -318,21 +236,14 @@ staged module RetUnit with //│ > () //│ > fun f() = () //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(2) { -//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} }, -//│ > [class RetUnit] { -//│ > 'cache$RetUnit': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$RetUnit': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'RetUnit', -//│ > value: [class RetUnit] { +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(2) { +//│ > Unit {} => ModuleSymbol { name: 'Unit', value: Unit {} }, +//│ > [class RetUnit] { //│ > 'cache$RetUnit': [FunCache], //│ > 'generatorMap$RetUnit': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'RetUnit', value: [Function] } //│ > } //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls index b3962e50e2..81da7a1bbe 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls @@ -5,49 +5,35 @@ staged class M with fun f() = 1 staged module M with fun g() = 2 -//│ > module M1 with +//│ > module M with //│ > () //│ > fun g() = 2 //│ > Map(1) { 'g' => [Function: g_gen] } -//│ > Map(1) { -//│ > [class M] { -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(1) { 'g' => [Function: g_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'M1', -//│ > value: [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } -//│ > } -//│ > } -//│ > module M1 with +//│ > class M1 with //│ > () //│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(1) { -//│ > [class M] { -//│ > 'cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$M': Map(1) { 'g' => [Function: g_gen] }, -//│ > 'class$cache$M': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'class$generatorMap$M': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'M1', -//│ > value: [class M] { +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [class M] { //│ > 'cache$M': [FunCache], //│ > 'generatorMap$M': [Map], //│ > 'class$cache$M': [FunCache], //│ > 'class$generatorMap$M': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'M1', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] //│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class M] { +//│ > 'cache$M': [FunCache], +//│ > 'generatorMap$M': [Map], +//│ > 'class$cache$M': [FunCache], +//│ > 'class$generatorMap$M': [Map] +//│ > } => ModuleSymbol { name: 'M', value: [Function] } //│ > } //│ > } @@ -58,24 +44,6 @@ module B with //│ > () //│ > //│ > Map(0) {} -//│ > Map(1) { -//│ > [class B] { -//│ > 'class$cache$B': FunCache { -//│ > owner: [ConcreteClassSymbol], -//│ > cache: Map(0) {}, -//│ > printer: [Printer] -//│ > }, -//│ > 'class$generatorMap$B': Map(0) {} -//│ > } => ConcreteClassSymbol { -//│ > name: 'B', -//│ > value: [class B] { -//│ > 'class$cache$B': [FunCache], -//│ > 'class$generatorMap$B': Map(0) {} -//│ > }, -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > } // keep original functions of module :expect 1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 6f454c74f3..9f13cecbe0 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -37,29 +37,21 @@ staged module Selection with //│ > Bool then true //│ > else false //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(3) { -//│ > [Function: C] { -//│ > class: [class C] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > }, -//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, -//│ > [class Selection] { -//│ > 'cache$Selection': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] //│ > }, -//│ > 'generatorMap$Selection': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'Selection', -//│ > value: [class Selection] { +//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class Selection] { //│ > 'cache$Selection': [FunCache], //│ > 'generatorMap$Selection': [Map] -//│ > } +//│ > } => ModuleSymbol { name: 'Selection', value: [Function] } //│ > } //│ > } @@ -73,29 +65,20 @@ staged module DupeClass with //│ > tmp = C(1) //│ > tmp.y //│ > Map(1) { 'f' => [Function: f_gen] } -//│ > Map(2) { -//│ > [class DupeClass] { -//│ > C: [Function: C] { class: [Function] }, -//│ > 'cache$DupeClass': FunCache { -//│ > owner: [ModuleSymbol], -//│ > cache: [Map], -//│ > printer: [Printer] -//│ > }, -//│ > 'generatorMap$DupeClass': Map(1) { 'f' => [Function: f_gen] } -//│ > } => ModuleSymbol { -//│ > name: 'DupeClass', -//│ > value: [class DupeClass] { +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class DupeClass] { //│ > C: [Function], //│ > 'cache$DupeClass': [FunCache], //│ > 'generatorMap$DupeClass': [Map] -//│ > } -//│ > }, -//│ > [Function: C] { -//│ > class: [class C2] { Symbol(mlscript.definitionMetadata): [Array] } -//│ > } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] +//│ > } => ModuleSymbol { name: 'DupeClass', value: [Function] } //│ > } //│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 7589e7f6c9..dd0d6dbfeb 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -20,34 +20,37 @@ staged fun f() = 0 :staging // TODO: this is only used to import Block, the printout is undesired staged module A //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let A⁰, symbolMap; -//│ set symbolMap = new globalThis⁰.Map﹖(); +//│ let A⁰, symbolMap, tmp, tmp1, tmp2; +//│ set tmp = new globalThis⁰.Map﹖(); +//│ set tmp1 = new globalThis⁰.Map﹖(); +//│ set tmp2 = new Block⁰.SymbolMap﹖(tmp, tmp1); +//│ set symbolMap = tmp2; //│ define A⁰ as class A¹ //│ staged module A² { //│ constructor { -//│ let tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, sym, tmp7, tmp8; -//│ set tmp5 = []; -//│ set tmp6 = new globalThis⁰.Map﹖(tmp5); -//│ set sym = Block⁰.ModuleSymbol﹖("A", A²); -//│ set tmp7 = Block⁰.checkMap﹖(symbolMap, A², sym); -//│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp7, tmp6); -//│ define cache$A⁰ as val cache$A¹ = tmp8; -//│ set tmp3 = []; -//│ set tmp4 = new globalThis⁰.Map﹖(tmp3); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp4; -//│ set tmp = A².cache$A﹖.toString﹖(); -//│ set tmp1 = globalThis⁰.console﹖.log﹖(tmp); -//│ set tmp2 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ let tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, owner, tmp10, tmp11; +//│ set tmp8 = []; +//│ set tmp9 = new globalThis⁰.Map﹖(tmp8); +//│ set owner = Block⁰.ModuleSymbol﹖("A", A²); +//│ set tmp10 = symbolMap.checkMap﹖("moduleMap", A², owner); +//│ set tmp11 = new SpecializeHelpers⁰.FunCache﹖(tmp10, tmp9); +//│ define cache$A⁰ as val cache$A¹ = tmp11; +//│ set tmp6 = []; +//│ set tmp7 = new globalThis⁰.Map﹖(tmp6); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp7; +//│ set tmp3 = A².cache$A﹖.toString﹖(); +//│ set tmp4 = globalThis⁰.console﹖.log﹖(tmp3); +//│ set tmp5 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { -//│ let sym, tmp, tmp1, end, tmp2; +//│ let sym, tmp3, tmp4, end, tmp5; //│ set sym = Block⁰.Symbol﹖("ctor$"); -//│ set tmp = []; -//│ set tmp1 = [tmp]; +//│ set tmp3 = []; +//│ set tmp4 = [tmp3]; //│ set end = Block⁰.End﹖(); -//│ set tmp2 = Block⁰.FunDefn﹖(sym, tmp1, end); -//│ return tmp2 +//│ set tmp5 = Block⁰.FunDefn﹖(sym, tmp4, end); +//│ return tmp5 //│ } //│ }; //│ end From 5554027ebd43845743f1b6af7984e67d22495843 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:55:34 +0800 Subject: [PATCH 510/654] rerun tests --- .../codegen/ReflectionInstrumenter.scala | 3 +- .../test/mlscript/block-staging/Classes.mls | 24 +++++++++++-- .../mlscript/block-staging/GeneratorMap.mls | 6 ++++ .../mlscript/block-staging/PathStaging.mls | 12 +++++++ .../mlscript/block-staging/SpecializeTest.mls | 6 ++++ .../mlscript/block-staging/StageSymbols.mls | 23 +++++++++++- .../block-staging/StageWtihCompanion.mls | 20 +++++++++++ .../mlscript/block-staging/SymbolRenaming.mls | 18 ++++++++++ .../test/mlscript/block-staging/Syntax.mls | 35 ++++++++++++------- 9 files changed, 130 insertions(+), 17 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index b9d5dc7a3f..6c7cb12407 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -430,7 +430,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S call(printFun, Ls(str), false): _ => call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => symbolMapSym.map(sym => call(printFun, Ls(sym), false)(_ => rest)).getOrElse(rest) - + + // cache and generator may update symbolMapSym, so we call them first (helperMethods.flatten, b => Begin(cacheDecl(generatorMapDecl(End())), debugCont(b))) override def applyObjBody(companion: ClsLikeBody) = companion.isym.defn match diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index 7639c21989..e8e6181f8c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -12,6 +12,12 @@ staged module M with //│ > () //│ > fun f(x) = x.call(10) //│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } +//│ > } +//│ > } staged class A(val a) //│ > class A(a) with @@ -81,12 +87,26 @@ staged class C with //│ > () //│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [class C6] { +//│ > 'class$cache$C': [FunCache], +//│ > 'class$generatorMap$C': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } :e staged class C(x) //│ ╔══[COMPILATION ERROR] Staged classes with private fields are not supported. -//│ ║ l.86: staged class C(x) -//│ ╙── ^^^^^^^^^^ +//│ ║ l.106: staged class C(x) +//│ ╙── ^^^^^^^^^^ staged class B(val x) with fun f(y) = this.x + y diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls index 68dbbdb03c..0c832f6066 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GeneratorMap.mls @@ -9,3 +9,9 @@ staged module A with //│ > fun f() = 1 //│ > fun g(x) = x //│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class A] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } => ModuleSymbol { name: 'A', value: [Function] } +//│ > } +//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls index a4ddc5f077..72ffa6d42b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls @@ -9,6 +9,12 @@ staged module M with //│ > () //│ > fun g() = 1 //│ > Map(1) { 'g' => [Function: g_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } +//│ > } +//│ > } //│ > class M1() with //│ > () //│ > fun f() = 1 @@ -39,6 +45,12 @@ module N with //│ > () //│ > //│ > Map(0) {} +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class NM] { 'cache$NM': [FunCache], 'generatorMap$NM': Map(0) {} } => ModuleSymbol { name: 'NM', value: [Function] } +//│ > } +//│ > } //│ > class NM1() with //│ > () //│ > diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 9498c6e4d1..b996efd746 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -18,6 +18,12 @@ staged module M with //│ > y = *(x, 2) //│ > y //│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } +//│ > } +//│ > } M.f_gen(Dyn()) //│ = [Symbol("f_Dyn_28_29"), [[Dyn()]]] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 5c8bb25e26..186d59d539 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -46,6 +46,12 @@ staged module D with //│ > () //│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class A] { 'cache$A': [FunCache], 'generatorMap$A': [Map] } => ModuleSymbol { name: 'A', value: [Function] } +//│ > } +//│ > } //│ > module D with //│ > class E //│ > fun f() = @@ -170,12 +176,18 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.171: fun g()() = 1 +//│ ║ l.177: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > module M with //│ > () //│ > fun g()() = 1 //│ > Map(1) { 'g' => [Function: g_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class M4] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } +//│ > } +//│ > } :ftc staged module M with @@ -229,6 +241,15 @@ staged module Shadowing with //│ > () //│ > fun f(x, x) = x //│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class Shadowing] { +//│ > 'cache$Shadowing': [FunCache], +//│ > 'generatorMap$Shadowing': [Map] +//│ > } => ModuleSymbol { name: 'Shadowing', value: [Function] } +//│ > } +//│ > } staged module RetUnit with fun f() = () diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls index 81da7a1bbe..7ecba03ac4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls @@ -9,6 +9,12 @@ staged module M with //│ > () //│ > fun g() = 2 //│ > Map(1) { 'g' => [Function: g_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } +//│ > } +//│ > } //│ > class M1 with //│ > () //│ > fun f() = 1 @@ -44,6 +50,20 @@ module B with //│ > () //│ > //│ > Map(0) {} +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [class B] { +//│ > 'class$cache$B': [FunCache], +//│ > 'class$generatorMap$B': Map(0) {} +//│ > } => ConcreteClassSymbol { +//│ > name: 'B', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } // keep original functions of module :expect 1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 9f13cecbe0..c0091d2578 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -12,6 +12,15 @@ staged module TempVariable with //│ > let {x, x} //│ > x //│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class TempVariable] { +//│ > 'cache$TempVariable': [FunCache], +//│ > 'generatorMap$TempVariable': [Map] +//│ > } => ModuleSymbol { name: 'TempVariable', value: [Function] } +//│ > } +//│ > } staged module DupeFunctionName with fun f() = 1 @@ -19,6 +28,15 @@ staged module DupeFunctionName with //│ > () //│ > fun f() = 1 //│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class DupeFunctionName] { +//│ > 'cache$DupeFunctionName': [FunCache], +//│ > 'generatorMap$DupeFunctionName': [Map] +//│ > } => ModuleSymbol { name: 'DupeFunctionName', value: [Function] } +//│ > } +//│ > } class C(val x) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index dd0d6dbfeb..4fcb8f370d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -28,19 +28,22 @@ staged module A //│ define A⁰ as class A¹ //│ staged module A² { //│ constructor { -//│ let tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, owner, tmp10, tmp11; -//│ set tmp8 = []; -//│ set tmp9 = new globalThis⁰.Map﹖(tmp8); -//│ set owner = Block⁰.ModuleSymbol﹖("A", A²); -//│ set tmp10 = symbolMap.checkMap﹖("moduleMap", A², owner); -//│ set tmp11 = new SpecializeHelpers⁰.FunCache﹖(tmp10, tmp9); -//│ define cache$A⁰ as val cache$A¹ = tmp11; -//│ set tmp6 = []; -//│ set tmp7 = new globalThis⁰.Map﹖(tmp6); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp7; -//│ set tmp3 = A².cache$A﹖.toString﹖(); -//│ set tmp4 = globalThis⁰.console﹖.log﹖(tmp3); -//│ set tmp5 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ let tmp3, tmp4, tmp5, tmp6, sym, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12; +//│ begin +//│ set tmp5 = []; +//│ set tmp6 = new globalThis⁰.Map﹖(tmp5); +//│ set sym = Block⁰.ModuleSymbol﹖("A", A²); +//│ set tmp7 = symbolMap.checkMap﹖("moduleMap", A², sym); +//│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp7, tmp6); +//│ define cache$A⁰ as val cache$A¹ = tmp8; +//│ set tmp3 = []; +//│ set tmp4 = new globalThis⁰.Map﹖(tmp3); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp4; +//│ end; +//│ set tmp9 = A².cache$A﹖.toString﹖(); +//│ set tmp10 = globalThis⁰.console﹖.log﹖(tmp9); +//│ set tmp11 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); +//│ set tmp12 = globalThis⁰.console﹖.log﹖(symbolMap); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { @@ -59,3 +62,9 @@ staged module A //│ > () //│ > //│ > Map(0) {} +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class A] { 'cache$A': [FunCache], 'generatorMap$A': Map(0) {} } => ModuleSymbol { name: 'A', value: [Function] } +//│ > } +//│ > } From c894f0876dcf62600bff4770a5f502d64f3623db Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 12 Apr 2026 20:53:54 +0800 Subject: [PATCH 511/654] fix S-Method according to the new changes --- .../mlscript-compile/SpecializeHelpers.mls | 217 +++++++------- .../test/mlscript/block-staging/ShapeProp.mls | 269 ++++++++++++------ 2 files changed, 288 insertions(+), 198 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index ed93a1698d..76d9596a12 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -13,12 +13,12 @@ open ShapeSet module SpecializeHelpers with ... -fun getActualClass(c) = if c."class" !== undefined then c.class else c +fun getActualClass(c) = if not (c."class" is undefined) then c.class else c fun isSubClassOf(d, b) = getActualClass(b).isPrototypeOf(getActualClass(d)) fun wrapScoped(symbols, block) = - if symbols.length == 0 then block + if symbols.length is 0 then block else if block is Scoped(oldSymbols, rest) then Scoped([...symbols, ...oldSymbols], rest) else Scoped(symbols, block) @@ -62,11 +62,13 @@ module FunCache with fun empty() = FunCache(new Map()) fun sov(v): ShapeSet = // compute the shape of a value - if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then - mkLit(v) + if typeof(v) is + "number" then mkLit(v) + "string" then mkLit(v) + "boolean" then mkLit(v) else if Array.isArray(v) then mkArr(v.map(sov)) - else if v !== undefined and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then + else if not (v is undefined) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then let meta = v.constructor.(Symbols.definitionMetadata) let clsName = meta.1 let paramsOpt = meta.2 @@ -84,16 +86,40 @@ fun sov(v): ShapeSet = // compute the shape of a value fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s else if p is - Select(qual, Symbol(name)) then - if ctx.currentThis is Some(t) and qual is ValueRef(sym) and sym is t then + Select(qual, Symbol(name)) and + ctx.currentThis is Some(t) and qual is ValueRef(sym) and sym is t then selSet(ctx.thisShape, mkLit(name)) - else - selSet(sop(ctx, qual), mkLit(name)) - DynSelect(qual, fld, _) then + name is "length" and // special handle array .length + let qualShape = sop(ctx, qual) + let vals = qualShape.values() + vals.length > 0 and vals.every(_ is Arr) and + let firstLen = vals.0.shapes.length + vals.every(v => v.shapes.length == firstLen) then + mkLit(firstLen) + else mkDyn() + else selSet(sop(ctx, qual), mkLit(name)) // TODO: any other special function to handle? + DynSelect(qual, fld, _) then selSet(sop(ctx, qual), sop(ctx, fld)) ValueLit(lit) then mkLit(lit) ValueRef(l) then mkDyn() +fun isStaged(c) = + let actualClass = getActualClass(c) + let clsName = actualClass.(Symbols.definitionMetadata).1 + let genMapName = "generatorMap$" + clsName + not (actualClass.(genMapName) is undefined) + +fun fsplit(pss) = + let knownMap = new Map() + let unkShape = foldl((acc, s) => if s is + Class(sym, params) and isStaged(sym.value) then + if knownMap.has(sym) then knownMap.set(sym, union(knownMap.get(sym), lift(s))) + else knownMap.set(sym, lift(s)) + acc + else union(acc, mkDyn()) + )(mkBot(), ...pss.values()) + [knownMap, unkShape] + // shape of result: return [blk, res, s] // where blk is the block needed to construct the result res (End() if not needed) and s is the shape fun sor(ctx, r) = if r is @@ -170,107 +196,63 @@ fun sor(ctx, r) = if r is let evaluated_path = val2path(evaluated, ctx.allocs) [evaluated_path.0, evaluated_path.1, sov(evaluated)] else - [End(), r, mkDyn()] // non staged function and params unknown - Select(ValueRef(symb), Symbol(f)) then // class method call - fun isStaged(c) = - let actualClass = getActualClass(c) - let clsName = actualClass.(Symbols.definitionMetadata).1 - let genMapName = "generatorMap$" + clsName - actualClass.(genMapName) != undefined - fun fsplit(pss) = - let knownMap = new Map() - let unkShape = foldl((acc, s) => if s is - Class(sym, params) and isStaged(sym.value) then - if knownMap.has(sym) then knownMap.set(sym, union(knownMap.get(sym), lift(s))) - else knownMap.set(sym, lift(s)) - acc - else union(acc, mkDyn()) - )(mkBot(), ...pss.values()) - [knownMap, unkShape] - let pss = sop(ctx, ValueRef(symb)) - let splitted = fsplit(pss) - let knownMap = splitted.0 - let unkShape = splitted.1 - if knownMap.size is 0 then - [End(), r, mkDyn()] - else - let wrapperName = specializeName(f, [ [pss, ...argShapes] ]) - let C_0 = [...knownMap.entries()].0.0 - let actualClass0 = getActualClass(C_0.value) - let clsName0 = actualClass0.(Symbols.definitionMetadata).1 - let cacheName0 = "cache$" + clsName0 - let clsCache = actualClass0.(cacheName0) - if clsCache.getFun(wrapperName) is - Some(x) and - staticSet(x.1) then - let v2p = val2path(valOfSet(x.1), ctx.allocs) - [v2p.0, v2p.1, x.1] - else if clsCache.getFun(wrapperName) is - Some(x) then - [End(), Call(Select(ValueRef(Symbol(clsName0)), Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), x.1] - else throw Error("FIXME") - None then - let recvSym = Symbol("this") - let argSymRefs = args.map((a, i, _) => Symbol("arg" + i)) - let ps = [ [recvSym, ...argSymRefs] ] - if knownMap.size is 1 and unkShape.isEmpty() then - let entry = [...knownMap.entries()].0 - let C_i = entry.0 - let ss_i = entry.1 - let actualClass = getActualClass(C_i.value) - let clsName = actualClass.(Symbols.definitionMetadata).1 - let genMapName = "generatorMap$" + clsName - let genMap = actualClass.(genMapName) - let f_gen = genMap.get(f) - let generated = f_gen(ss_i)(...argShapes) - let retSym = generated.0 - let retShape = generated.1 - let body = if staticSet(retShape) then - let allocs = mut [] - let v2p = val2path(valOfSet(retShape), allocs) - wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) - else - Return(Call(Select(ValueRef(Symbol(clsName)), Symbol(retSym)), [Arg(ValueRef(recvSym)), ...argSymRefs.map(s => Arg(ValueRef(s)))]), false) - clsCache.setFun(wrapperName, [FunDefn(Symbol(wrapperName), ps, body), retShape]) - if staticSet(retShape) then - let v2p = val2path(valOfSet(retShape), ctx.allocs) - [v2p.0, v2p.1, retShape] - else - [End(), Call(Select(ValueRef(Symbol(clsName0)), Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), retShape] - else - let armsRet = [...knownMap.entries()].map(entry => - let C_i = entry.0 - let ss_i = entry.1 - let actualClass = getActualClass(C_i.value) - let clsName = actualClass.(Symbols.definitionMetadata).1 - let genMapName = "generatorMap$" + clsName - let genMap = actualClass.(genMapName) - let f_gen = genMap.get(f) - let generated = f_gen(ss_i)(...argShapes) - let retSym = generated.0 - let retShape = generated.1 - let callRes = Call(Select(ValueRef(Symbol(clsName)), Symbol(retSym)), [Arg(ValueRef(recvSym)), ...argSymRefs.map(s => Arg(ValueRef(s)))]) - [Arm(Cls(C_i, ValueRef(recvSym)), Return(callRes, false)), retShape] - ) - let armsAcc = armsRet.map(x => x.0) - let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) - let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else - let callRes = Call(Select(ValueRef(recvSym), Symbol(f)), argSymRefs.map(s => Arg(ValueRef(s)))) - [Some(Return(callRes, false)), mkDyn()] - let dflt = dfltRet.0 - let totalRetShape = union(totalStagedRetShape, dfltRet.1) - let matchBody = Match(ValueRef(recvSym), armsAcc, dflt, End()) - clsCache.setFun(wrapperName, [FunDefn(Symbol(wrapperName), ps, matchBody), totalRetShape]) - if staticSet(totalRetShape) then - let v2p = val2path(valOfSet(totalRetShape), ctx.allocs) - [v2p.0, v2p.1, totalRetShape] - else - [End(), Call(Select(ValueRef(Symbol(clsName0)), Symbol(wrapperName)), [Arg(ValueRef(symb)), ...args]), totalRetShape] + [End(), r, mkDyn()] // non staged function and some params unknown else throw Error("unknown call in sor: " + r.toString()) else throw Error("unknown result in sor: " + r.toString()) +fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = + let pss = sop(ctx, ValueRef(symb)) + let argShapes = args.map((a, _, _) => sop(ctx, a.value)) + let splitted = fsplit(pss) + let knownMap = splitted.0 + let unkShape = splitted.1 + let isRet = xOpt is None + if knownMap.size is 0 then + let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) + if isRet then + [concat(End(), Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] + else + let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") + let resBlock = prop(ctx.add(ValueRef(x), mkDyn()), restBlock) + [concat(End(), Assign(x, dfltMatch, resBlock.0)), resBlock.1] + else + let armsRet = [...knownMap.entries()].map(entry => + let C_i = entry.0 + let ss_i = entry.1 + let actualClass = getActualClass(C_i.value) + let clsName = actualClass.(Symbols.definitionMetadata).1 + let genMapName = "generatorMap$" + clsName + let genMap = actualClass.(genMapName) + let f_gen = genMap.get(f) + let generated = f_gen(ss_i)(...argShapes) + let retSym = generated.0 + let retShape = generated.1 + let callRes = Call(Select(ValueRef(symb), Symbol(retSym)), args) + if isRet then + [Arm(Cls(C_i, ValueRef(symb)), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] + else + let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") + let resBlock = prop(ctx.add(ValueRef(x), retShape), restBlock) + [Arm(Cls(C_i, ValueRef(symb)), Assign(x, callRes, resBlock.0)), resBlock.1] + ) + let armsAcc = armsRet.map(x => x.0) + let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) + let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else + let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) + if isRet then + [Some(Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] + else + let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") + let resBlock = prop(ctx.add(ValueRef(x), mkDyn()), restBlock) + [Some(Assign(x, dfltMatch, resBlock.0)), resBlock.1] + let matchBody = Match(ValueRef(symb), armsAcc, dfltRet.0, if isRet then End() else restBlock) + let totalRetShape = union(totalStagedRetShape, dfltRet.1) + [matchBody, totalRetShape] + fun prop(ctx, b) = if b is - End then [b, mkBot()] + End() then [b, mkBot()] + Return(Call(Select(ValueRef(symb), Symbol(f)), args), implct) and not (symb is ModuleSymbol) then + dispatchMethodCall(ctx, None, Some(implct), symb, f, args, End()) Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then [concat(blk, Return(r1, implct)), s1] Scoped(symbols, rest) then @@ -279,9 +261,11 @@ fun prop(ctx, b) = if b is let newCtx = Ctx(new Map(ctx.ctx), newAllocs, ctx.currentThis, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] - Assign(x, r, b) and + Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) then + dispatchMethodCall(ctx, Some(x), None, symb, f, args, restBlock) + Assign(x, r, restBlock) and sor(ctx, r) is [blk, r1, s1] then - if prop(ctx.add(ValueRef(x), s1), b) is [b2, s2] then + if prop(ctx.add(ValueRef(x), s1), restBlock) is [b2, s2] then [concat(blk, Assign(x, r1, b2)), s2] Match(p, arms, dflt, restBlock) then let s = sop(ctx, p) @@ -329,22 +313,25 @@ fun buildShapeName(s: Shape): Str = Lit(lit) and lit is Str then "Str" + lit Lit(lit) then "Lit" + lit.toString() Arr(shapes) then "Arr_" + shapes.map(buildShapeName).join("_") + "_end" - Class(sym, params) and params.length == + Class(sym, params) and params.length is 0 then sym.name else sym.name + "_" + params.map(buildShapeName).join("_") else throw Error("unknown shape when building shape name" + s.toString()) fun buildShapeSetName(ss: ShapeSet): Str = let vals = ss.values() - if vals.length == 1 then buildShapeName(vals.0) + if vals.length is 1 then buildShapeName(vals.0) else "Union_" + vals.map(buildShapeName).join("_") + "_end" -fun specializeName(funName, shapes) = - if shapes.every(ps => ps.every(s => s.isDyn())) then funName - else funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("_dot_") +fun specializeName(funName, shapes, virtualCall) = + let virtualSuffix = "'" + if shapes.every(_.every(_.isDyn())) then funName + else funName + + if virtualCall then virtualSuffix else "" + + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("_dot_") fun specialize(cache, funName, dflt, shapes) = - let newName = specializeName(funName, shapes) + let newName = specializeName(funName, shapes, false) if cache.getFun(newName) is Some(x) then [x.0.sym.name, x.1] None and diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index fc69f621f6..615e58c51b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -160,113 +160,143 @@ print(TestIf2."cache$TestIf2") //│ > TestIf2.f_C_Dyn(tmp2) //│ > fun test3() = 1 -staged module TestTuple with - fun first(x) = if x is - [a, _] then a - else 0 - fun second(x) = if x is - [_, b] then b - else 0 - fun test(y) = - let t = [10, y] - first(t) + second(t) +:noSanityCheck +staged module LinearAlgebra with + fun _dot(v1, v2, n, acc) = + if n == + v1.length then acc + else _dot(v1, v2, n + 1, v1.(n) * v2.(n) + acc) + fun dot(v1, v2) = _dot(v1, v2, 0, 0) + fun test(x) = dot([x, 1, 2], [3, 4, 1]) -TestTuple.test_gen(mkDyn()) -print(TestTuple."cache$TestTuple") +LinearAlgebra.test_gen(mkDyn()) +print(LinearAlgebra."cache$LinearAlgebra") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) -//│ ╔══[COMPILATION ERROR] Module 'TestTuple' does not contain member 'test_gen' -//│ ║ l.174: TestTuple.test_gen(mkDyn()) -//│ ╙── ^^^^^^^^^ +//│ ╔══[COMPILATION ERROR] Module 'LinearAlgebra' does not contain member 'test_gen' +//│ ║ l.172: LinearAlgebra.test_gen(mkDyn()) +//│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestTuple. -//│ ║ l.175: print(TestTuple."cache$TestTuple") -//│ ╙── ^^^^^^^^^ -//│ > fun first_Arr_Lit10_Dyn_end(x) = 10 -//│ > fun second_Arr_Lit10_Dyn_end(x) = -//│ > let {element1_1, element0_1, b} -//│ > element0_1 = x.(0) -//│ > element1_1 = x.(1) -//│ > b = element1_1 -//│ > b -//│ > fun test(y) = -//│ > let {t, tmp, tmp1} -//│ > t = [10, y] -//│ > tmp = 10 -//│ > tmp1 = TestTuple.second_Arr_Lit10_Dyn_end(t) -//│ > tmp + tmp1 +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type LinearAlgebra. +//│ ║ l.173: print(LinearAlgebra."cache$LinearAlgebra") +//│ ╙── ^^^^^^^^^^^^^ +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, n, acc) = +//│ > let {tmp, tmp1, tmp2, scrut} +//│ > scrut = false +//│ > tmp = 1 +//│ > tmp1 = *(v1.(n), v2.(n)) +//│ > tmp2 = tmp1 + acc +//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, n, acc) = +//│ > let {tmp, tmp1, tmp2, scrut} +//│ > scrut = false +//│ > tmp = 2 +//│ > tmp1 = 4 +//│ > tmp2 = tmp1 + acc +//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, n, acc) = +//│ > let {tmp, tmp1, tmp2, scrut} +//│ > scrut = false +//│ > tmp = 3 +//│ > tmp1 = 2 +//│ > tmp2 = tmp1 + acc +//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, n, acc) = +//│ > let {tmp, tmp1, tmp2, scrut} +//│ > scrut = true +//│ > acc +//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) +//│ > fun test(x) = +//│ > let {tmp3, tmp4} +//│ > tmp3 = [x, 1, 2] +//│ > tmp4 = [3, 4, 1] +//│ > LinearAlgebra.dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) -staged class L1() with - fun call(x) = x + 2 -staged class L2() with - fun call(x) = x -staged class L3() with - fun call(x) = x * 2 +staged class L1(val y) with + fun call(x) = x + 2 + y +staged class L2(val y) with + fun call(x) = x + y +staged class L3(val y) with + fun call(x) = x * 2 + y +class L4(val y) with + fun call(x) = x + y staged module M with fun twice(f, x) = f.call(f.call(x)) fun pick(x, y, b) = if b then x else y - fun foo(b) = - let y = twice(new L1(), 5) - let m = pick(new L2(), new L3(), b) + fun test(b) = + let y = twice(new L1(1), 5) + let m = pick(pick(new L2(2), new L3(3), b), new L4(4), b) twice(m, 5) + y -M.foo_gen(mkDyn()) +M.test_gen(mkDyn()) print(M."cache$M") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:371) -//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'foo_gen' -//│ ║ l.215: M.foo_gen(mkDyn()) -//│ ╙── ^^^^^^^^ +//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' +//│ ║ l.233: M.test_gen(mkDyn()) +//│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.216: print(M."cache$M") +//│ ║ l.234: print(M."cache$M") //│ ╙── ^ -//│ > fun foo(b) = -//│ > let {y, tmp1, tmp2, tmp3, m, tmp4} -//│ > tmp1 = new L1 -//│ > y = 9 -//│ > tmp2 = new L2 -//│ > tmp3 = new L3 -//│ > m = M.pick_L2_L3_Dyn(tmp2, tmp3, b) -//│ > tmp4 = M.twice_Union_L2_L3_end_Lit5(m, 5) -//│ > tmp4 + y -//│ > fun pick_L2_L3_Dyn(x, y, b) = +//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = //│ > let {obj_1, obj_2} //│ > if b is //│ > true then -//│ > obj_1 = new L2 +//│ > obj_1 = new L2(2) //│ > obj_1 //│ > else -//│ > obj_2 = new L3 +//│ > obj_2 = new L3(3) //│ > obj_2 -//│ > fun twice_L1_Lit5(f, x) = 9 -//│ > fun twice_Union_L2_L3_end_Lit5(f, x) = +//│ > fun pick_Union_L2_Lit2_L3_Lit3_end_L4_Lit4_Dyn(x, y, b) = +//│ > let {obj_3} +//│ > if b is +//│ > true then x +//│ > else +//│ > obj_3 = new L4(4) +//│ > obj_3 +//│ > fun test(b) = +//│ > let {y, tmp1, m, tmp2, tmp3, tmp4, tmp5, tmp6} +//│ > tmp1 = new L1(1) +//│ > y = 11 +//│ > tmp2 = new L2(2) +//│ > tmp3 = new L3(3) +//│ > tmp4 = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > tmp5 = new L4(4) +//│ > m = M.pick_Union_L2_Lit2_L3_Lit3_end_L4_Lit4_Dyn(tmp4, tmp5, b) +//│ > tmp6 = M.twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(m, 5) +//│ > tmp6 + y +//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 +//│ > fun twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(f, x) = //│ > let {tmp} -//│ > tmp = L2.call_Union_L2_L3_end_Lit5(f, x) -//│ > L2.call_Union_L2_L3_end_Union_Lit5_Lit10_end(f, tmp) - -print(L2.class."cache$L2") -print(L3.class."cache$L3") -//│ > fun call_L2_dot_Lit5(_this, x) = 5 -//│ > fun call_L2_dot_Union_Lit5_Lit10_end(_this, x) = x -//│ > fun call_Union_L2_L3_end_Lit5(this, arg0) = -//│ > if this is -//│ > L2() then L2.call_L2_dot_Lit5(this, arg0) -//│ > L3() then L3.call_L3_dot_Lit5(this, arg0) -//│ > fun call_Union_L2_L3_end_Union_Lit5_Lit10_end(this, arg0) = -//│ > if this is -//│ > L2() then L2.call_L2_dot_Union_Lit5_Lit10_end(this, arg0) -//│ > L3() then L3.call_L3_dot_Union_Lit5_Lit10_end(this, arg0) -//│ > fun call_L3_dot_Lit5(_this, x) = 10 -//│ > fun call_L3_dot_Union_Lit5_Lit10_end(_this, x) = *(x, 2) +//│ > if f is +//│ > L2(y) then +//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > if f is +//│ > L2(y) then f.call_L2_Lit2_dot_Lit7(tmp) +//│ > L3(y) then f.call_L3_Lit3_dot_Lit7(tmp) +//│ > else f.call(tmp) +//│ > L3(y) then +//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > if f is +//│ > L2(y) then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > L3(y) then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +//│ > else f.call(tmp) +//│ > else +//│ > tmp = f.call(x) +//│ > if f is +//│ > L2(y) then f.call_L2_Lit2_dot_Dyn(tmp) +//│ > L3(y) then f.call_L3_Lit3_dot_Dyn(tmp) +//│ > else f.call(tmp) +//│ > f.call(tmp) staged class A(val x: Int) with fun f(y: Int) = this.x + y staged class B(val x: Int) with - fun f(y: A) = y.f(this.x) + fun f(y: A) = x staged module TestThis with fun test(x) = B(x).f(A(x)) @@ -274,20 +304,24 @@ staged module TestThis with :fixme TestThis.test_gen(mkDyn()) print(TestThis."cache$TestThis") -print(B.class."cache$B") //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.275: TestThis.test_gen(mkDyn()) +//│ ║ l.305: TestThis.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.276: print(TestThis."cache$TestThis") +//│ ║ l.306: print(TestThis."cache$TestThis") //│ ╙── ^^^^^^^^ //│ > fun test(x) = //│ > let {tmp, tmp1} //│ > tmp = B(x) //│ > tmp1 = A(x) -//│ > B.f_B_Dyn_A_Dyn(tmp, tmp1) -//│ > fun f_B_Dyn_A_Dyn(this, arg0) = B.f_B_Dyn_dot_A_Dyn(this, arg0) -//│ > fun f_B_Dyn_dot_A_Dyn(_this, y) = A.f_A_Dyn_Dyn(y, B1.x) +//│ > if tmp is +//│ > B(x) then tmp.f_B_Dyn_dot_A_Dyn(tmp1) + +print(B.class."cache$B") +//│ > fun f_B_Dyn_dot_A_Dyn(_this, y) = B1.x + +print(B.class.f_instr()) +//│ > FunDefn(Symbol("f"), [[Symbol("y")]], Return(Select(ValueRef(ConcreteClassSymbol("B1", fun B { class: class B { cache$B: fun f_B_Dyn_dot_A_Dyn(_this, y) = B1.x, generatorMap$B: Map(2) {"ctor" => fun ctor_gen, "f" => fun f_gen} } }, Some([Symbol("x")]), [])), Symbol("x")), false)) :todo staged class D(val x) extends B(x+1) with @@ -306,3 +340,72 @@ staged module M with C1.class."cache$C1" //│ = + + +class D(val z) + +:lot +class C(val x, val y) extends D(x + 1) +//│ —————————————| Lowered IR Tree |———————————————————————————————————————————————————————————————————— +//│ Program: +//│ main = Scoped(syms = {member:C⁰}): +//│ body = Define: +//│ defn = ClsLikeDefn: +//│ isym = class:C¹ +//│ sym = member:C⁰ +//│ ctorSym = S of term:C¹/C² +//│ k = Cls +//│ paramsOpt = S of ParamList: +//│ params = Ls of +//│ Param: +//│ flags = (val) +//│ sym = x⁰ +//│ modulefulness = Modulefulness of N +//│ Param: +//│ flags = (val) +//│ sym = y⁰ +//│ modulefulness = Modulefulness of N +//│ parentPath = S of Ref{disamb=class:D⁰}: +//│ l = member:D¹ +//│ disamb = S of class:D⁰ +//│ publicFields = Ls of +//│ Tuple2: +//│ _1 = member:x¹ +//│ _2 = term:C¹/x² +//│ Tuple2: +//│ _1 = member:y¹ +//│ _2 = term:C¹/y² +//│ preCtor = Scoped(syms = {tmp:tmp⁰}): +//│ body = Assign: +//│ lhs = tmp:tmp⁰ +//│ rhs = Call: +//│ fun = Ref: +//│ l = builtin:+⁰ +//│ args = Ls of +//│ Arg: +//│ value = Ref: +//│ l = x⁰ +//│ Arg: +//│ value = Lit of IntLit of 1 +//│ rest = Return: \ +//│ res = Call: +//│ fun = Ref: +//│ l = builtin:super⁰ +//│ args = Ls of +//│ Arg: +//│ value = Ref: +//│ l = tmp:tmp⁰ +//│ implct = true +//│ ctor = Define: +//│ defn = ValDefn: +//│ tsym = term:C¹/x² +//│ sym = member:x¹ +//│ rhs = Ref: +//│ l = x⁰ +//│ rest = Define: \ +//│ defn = ValDefn: +//│ tsym = term:C¹/y² +//│ sym = member:y¹ +//│ rhs = Ref: +//│ l = y⁰ +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— From a3adcfad9c08c99e8e04990548f96dc5ade79309 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 12 Apr 2026 22:26:50 +0800 Subject: [PATCH 512/654] fixing a compile test --- hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala b/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala index 171e0c1738..27c73287bc 100644 --- a/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala +++ b/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala @@ -63,7 +63,11 @@ abstract class CompileTestRunnerBase( paths = new MLsCompiler.Paths: val preludeFile = mainTestDir / "mlscript" / "decls" / "Prelude.mls" val runtimeFile = mainTestDir / "mlscript-compile" / "Runtime.mjs" - val termFile = mainTestDir / "mlscript-compile" / "Term.mjs", + val termFile = mainTestDir / "mlscript-compile" / "Term.mjs" + val blockFile = mainTestDir / "mlscript-compile" / "Block.mjs" + val optionFile = mainTestDir / "mlscript-compile" / "Option.mjs" + val shapeSetFile = mainTestDir / "mlscript-compile" / "ShapeSet.mjs" + val specializeHelpersFile = mainTestDir / "mlscript-compile" / "SpecializeHelpers.mjs", mkRaise = report.mkRaise ) compiler.compileModule(file) From e57d0bea900e85e23acd61ec13dba73372f6ad6a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 12 Apr 2026 23:22:37 +0800 Subject: [PATCH 513/654] fixup merge --- hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala b/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala index 171e0c1738..08dfcae334 100644 --- a/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala +++ b/hkmc2/jvm/src/test/scala/hkmc2/CompileTestRunnerBase.scala @@ -63,7 +63,11 @@ abstract class CompileTestRunnerBase( paths = new MLsCompiler.Paths: val preludeFile = mainTestDir / "mlscript" / "decls" / "Prelude.mls" val runtimeFile = mainTestDir / "mlscript-compile" / "Runtime.mjs" - val termFile = mainTestDir / "mlscript-compile" / "Term.mjs", + val termFile = mainTestDir / "mlscript-compile" / "Term.mjs" + val blockFile = mainTestDir / "mlscript-compile" / "Block.mjs" + val optionFile = mainTestDir / "mlscript-compile" / "Option.mjs" + val shapeSetFile = mainTestDir / "mlscript-compile" / "ShapeSet.mjs" + val specializeHelpersFile = mainTestDir / "mlscript-compile" / "SpecializeHelpers.mjs" , mkRaise = report.mkRaise ) compiler.compileModule(file) From 318dd34034786fa4755da562c172128dd41dcf6f Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 12 Apr 2026 23:37:12 +0800 Subject: [PATCH 514/654] some fix to make tests work --- .../codegen/ReflectionInstrumenter.scala | 25 +- .../src/test/mlscript-compile/Shape.mls | 4 +- .../mlscript-compile/SpecializeHelpers.mls | 10 +- .../test/mlscript/block-staging/ShapeProp.mls | 380 ++++++++---------- 4 files changed, 172 insertions(+), 247 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 6c7cb12407..c632de33f5 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -409,13 +409,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // initialize cache for the module def cacheDecl(rest: Block) = val pOpt = if !forClass then S(Value.Ref(ownerSym)) else N - - cacheEntries.collectApply: cacheTups => - tuple(cacheTups): tup => - ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => - transformSymbol(ownerSym, pOpt)(using Context(new HashMap())): (stagedSym, _) => - ctor(helperMod("FunCache"), Ls(stagedSym, map)): funCache => - Define(ValDefn(cacheTsym, cacheSym, funCache)(N), rest) + // cacheEntries.collectApply: cacheTups => + // tuple(cacheTups): tup => + ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls()): map => + transformSymbol(ownerSym, pOpt)(using Context(new HashMap())): (stagedSym, _) => + ctor(helperMod("FunCache"), Ls(stagedSym, map)): funCache => + Define(ValDefn(cacheTsym, cacheSym, funCache)(N), rest) def generatorMapDecl(rest: Block) = generatorEntries.collectApply: defs => @@ -424,12 +423,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S Define(ValDefn(generatorMapTsym, generatorMapSym, map)(N), rest) // TODO: remove this. only for testing - def debugCont(rest: Block) = - val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") - call(cachePath.selSN("toString"), Nil, false): str => - call(printFun, Ls(str), false): _ => - call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => - symbolMapSym.map(sym => call(printFun, Ls(sym), false)(_ => rest)).getOrElse(rest) + def debugCont(rest: Block) = rest + // val printFun = State.globalThisSymbol.asPath.selSN("console").selSN("log") + // call(cachePath.selSN("toString"), Nil, false): str => + // call(printFun, Ls(str), false): _ => + // call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => + // symbolMapSym.map(sym => call(printFun, Ls(sym), false)(_ => rest)).getOrElse(rest) // cache and generator may update symbolMapSym, so we call them first (helperMethods.flatten, b => Begin(cacheDecl(generatorMapDecl(End())), debugCont(b))) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 2a8aa83d26..c02987ac90 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -2,7 +2,7 @@ import "./Block.mls" import "./Option.mls" import "./CachedHash.mls" -open Block { Literal, ClassSymbol, isPrimitiveType, isPrimitiveTypeOf } +open Block { Literal, ClassSymbol, ConcreteClassSymbol, isPrimitiveType, isPrimitiveTypeOf } open Option type Shape = Shape.Shape @@ -11,7 +11,7 @@ module Shape with... val printer = Block.Printer(None) -class Shape with +class Shape extends CachedHash with constructor Dyn() Lit(val l: Literal) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 299c5eebe5..c7ac93a0dc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -53,14 +53,6 @@ class Ctx( module Ctx with fun empty() = Ctx(new Map(), mut [], None, mkBot()) -class FunCache(val cache: Map[String, [Block.FunDefn, ShapeSet]]) with - fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None - fun setFun(k, v) = cache.set(k, v); v - fun toString() = cache.values().toArray().sort().map((d, _, _) => showDefn(d.0)).join("\n") - -module FunCache with - fun empty() = FunCache(new Map()) - fun sov(v): ShapeSet = // compute the shape of a value if typeof(v) is "number" then mkLit(v) @@ -330,7 +322,7 @@ fun specializeName(funName, shapes, virtualCall) = + if virtualCall then virtualSuffix else "" + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("_dot_") -fun specialize(cache, funName, dflt, shapes) = +fun specialize(cache: FunCache, funName, dflt, shapes) = let newName = specializeName(funName, shapes, false) if cache.getFun(newName) is Some(x) then [x.0.sym.name, x.1] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 615e58c51b..8013bc06ac 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -27,7 +27,7 @@ staged module Test with let three = fib(four) let two = Staged.fib(three) pyth(two, 4) - fun test2(n) = + fun test2(n) = let dyn = pyth(n, 2) fib(dyn * 2) @@ -35,12 +35,12 @@ Test.test_gen() Test.test2_gen(mkDyn()) print(Test."cache$Test") //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'Test' does not contain member 'test_gen' //│ ║ l.34: Test.test_gen() //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'Test' does not contain member 'test2_gen' //│ ║ l.35: Test.test2_gen(mkDyn()) //│ ╙── ^^^^^^^^^^ @@ -49,35 +49,37 @@ print(Test."cache$Test") //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Test. //│ ║ l.36: print(Test."cache$Test") //│ ╙── ^^^^ -//│ > fun f_Lit2_Lit2(x, y) = 4 -//│ > fun fib(n) = -//│ > let {tmp2, tmp3, tmp4, tmp5, n} -//│ > if n is -//│ > 1 then 1 -//│ > 2 then 1 -//│ > else -//│ > n = n -//│ > tmp2 = n - 1 -//│ > tmp3 = Test.fib(tmp2) -//│ > tmp4 = n - 2 -//│ > tmp5 = Test.fib(tmp4) -//│ > tmp3 + tmp5 -//│ > fun fib_Lit1(n) = 1 -//│ > fun fib_Lit2(n) = 1 -//│ > fun fib_Lit3(n) = 2 -//│ > fun fib_Lit4(n) = 3 -//│ > fun pyth_Dyn_Lit2(x, y) = -//│ > let {tmp6, tmp7} -//│ > tmp6 = NonStaged.sq(x) -//│ > tmp7 = 4 -//│ > tmp6 + tmp7 -//│ > fun pyth_Lit2_Lit4(x, y) = 20 -//│ > fun test() = 20 -//│ > fun test2(n) = -//│ > let {dyn, tmp10} -//│ > dyn = Test.pyth_Dyn_Lit2(n, 2) -//│ > tmp10 = *(dyn, 2) -//│ > Test.fib(tmp10) +//│ > module Test with +//│ > () +//│ > fun test() = 20 +//│ > fun f_Lit2_Lit2(x, y) = 4 +//│ > fun fib_Lit4(n) = 3 +//│ > fun fib_Lit3(n) = 2 +//│ > fun fib_Lit2(n) = 1 +//│ > fun fib_Lit1(n) = 1 +//│ > fun pyth_Lit2_Lit4(x, y) = 20 +//│ > fun test2(n) = +//│ > let {dyn, tmp10} +//│ > dyn = Test.pyth_Dyn_Lit2(n, 2) +//│ > tmp10 = *(dyn, 2) +//│ > Test.fib(tmp10) +//│ > fun pyth_Dyn_Lit2(x, y) = +//│ > let {tmp6, tmp7} +//│ > tmp6 = NonStaged.sq(x) +//│ > tmp7 = 4 +//│ > tmp6 + tmp7 +//│ > fun fib(n) = +//│ > let {n, tmp2, tmp3, tmp4, tmp5} +//│ > if n is +//│ > 1 then 1 +//│ > 2 then 1 +//│ > else +//│ > n = n +//│ > tmp2 = n - 1 +//│ > tmp3 = Test.fib(tmp2) +//│ > tmp4 = n - 2 +//│ > tmp5 = Test.fib(tmp4) +//│ > tmp3 + tmp5 class C(val x) @@ -94,19 +96,21 @@ staged module TestIf with TestIf.test_gen() print(TestIf."cache$TestIf") //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestIf' does not contain member 'test_gen' -//│ ║ l.94: TestIf.test_gen() +//│ ║ l.96: TestIf.test_gen() //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestIf. -//│ ║ l.95: print(TestIf."cache$TestIf") +//│ ║ l.97: print(TestIf."cache$TestIf") //│ ╙── ^^^^^^ -//│ > fun f_C_Lit2(x) = "C(2)" -//│ > fun f_C_Lit3(x) = "C" -//│ > fun f_Lit2(x) = "else" -//│ > fun test() = "else" +//│ > module TestIf with +//│ > () +//│ > fun test() = "else" +//│ > fun f_C_Lit2(x) = "C(2)" +//│ > fun f_C_Lit3(x) = "C" +//│ > fun f_Lit2(x) = "else" :noSanityCheck class C(val n) @@ -127,38 +131,40 @@ TestIf2.test2_gen(mkDyn()) TestIf2.test3_gen() print(TestIf2."cache$TestIf2") //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test_gen' -//│ ║ l.125: TestIf2.test_gen() +//│ ║ l.129: TestIf2.test_gen() //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test2_gen' -//│ ║ l.126: TestIf2.test2_gen(mkDyn()) +//│ ║ l.130: TestIf2.test2_gen(mkDyn()) //│ ╙── ^^^^^^^^^^ //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test3_gen' -//│ ║ l.127: TestIf2.test3_gen() +//│ ║ l.131: TestIf2.test3_gen() //│ ╙── ^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestIf2. -//│ ║ l.128: print(TestIf2."cache$TestIf2") +//│ ║ l.132: print(TestIf2."cache$TestIf2") //│ ╙── ^^^^^^^ -//│ > fun f_C_Dyn(x) = -//│ > let {tmp, y} -//│ > y = x.n -//│ > tmp = () -//│ > y + 1 -//│ > fun f_C_Lit2(x) = 3 -//│ > fun f_Lit0(x) = 1 -//│ > fun test() = 3 -//│ > fun test2(dyn) = -//│ > let {tmp2} -//│ > tmp2 = C(dyn) -//│ > TestIf2.f_C_Dyn(tmp2) -//│ > fun test3() = 1 +//│ > module TestIf2 with +//│ > () +//│ > fun test() = 3 +//│ > fun f_C_Lit2(x) = 3 +//│ > fun test2(dyn) = +//│ > let {tmp2} +//│ > tmp2 = C(dyn) +//│ > TestIf2.f_C_Dyn(tmp2) +//│ > fun f_C_Dyn(x) = +//│ > let {y, tmp} +//│ > y = x.n +//│ > tmp = () +//│ > y + 1 +//│ > fun test3() = 1 +//│ > fun f_Lit0(x) = 1 :noSanityCheck staged module LinearAlgebra with @@ -170,48 +176,50 @@ staged module LinearAlgebra with fun test(x) = dot([x, 1, 2], [3, 4, 1]) LinearAlgebra.test_gen(mkDyn()) -print(LinearAlgebra."cache$LinearAlgebra") +LinearAlgebra."cache$LinearAlgebra" //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'LinearAlgebra' does not contain member 'test_gen' -//│ ║ l.172: LinearAlgebra.test_gen(mkDyn()) +//│ ║ l.178: LinearAlgebra.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type LinearAlgebra. -//│ ║ l.173: print(LinearAlgebra."cache$LinearAlgebra") -//│ ╙── ^^^^^^^^^^^^^ -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, n, acc) = -//│ > let {tmp, tmp1, tmp2, scrut} -//│ > scrut = false -//│ > tmp = 1 -//│ > tmp1 = *(v1.(n), v2.(n)) -//│ > tmp2 = tmp1 + acc -//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, n, acc) = -//│ > let {tmp, tmp1, tmp2, scrut} -//│ > scrut = false -//│ > tmp = 2 -//│ > tmp1 = 4 -//│ > tmp2 = tmp1 + acc -//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, n, acc) = -//│ > let {tmp, tmp1, tmp2, scrut} -//│ > scrut = false -//│ > tmp = 3 -//│ > tmp1 = 2 -//│ > tmp2 = tmp1 + acc -//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, n, acc) = -//│ > let {tmp, tmp1, tmp2, scrut} -//│ > scrut = true -//│ > acc -//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) -//│ > fun test(x) = -//│ > let {tmp3, tmp4} -//│ > tmp3 = [x, 1, 2] -//│ > tmp4 = [3, 4, 1] -//│ > LinearAlgebra.dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) +//│ ║ l.179: LinearAlgebra."cache$LinearAlgebra" +//│ ╙── ^^^^^^^^^^^^^ +//│ = module LinearAlgebra with \ +//│ () \ +//│ fun test(x) = \ +//│ let {tmp3, tmp4} \ +//│ tmp3 = [x, 1, 2] \ +//│ tmp4 = [3, 4, 1] \ +//│ LinearAlgebra.dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) \ +//│ fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) \ +//│ fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, n, acc) = \ +//│ let {scrut, tmp, tmp1, tmp2} \ +//│ scrut = false \ +//│ tmp = 1 \ +//│ tmp1 = *(v1.(n), v2.(n)) \ +//│ tmp2 = tmp1 + acc \ +//│ LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) \ +//│ fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, n, acc) = \ +//│ let {scrut, tmp, tmp1, tmp2} \ +//│ scrut = false \ +//│ tmp = 2 \ +//│ tmp1 = 4 \ +//│ tmp2 = tmp1 + acc \ +//│ LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) \ +//│ fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, n, acc) = \ +//│ let {scrut, tmp, tmp1, tmp2} \ +//│ scrut = false \ +//│ tmp = 3 \ +//│ tmp1 = 2 \ +//│ tmp2 = tmp1 + acc \ +//│ LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) \ +//│ fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, n, acc) = \ +//│ let {scrut, tmp, tmp1, tmp2} \ +//│ scrut = true \ +//│ acc staged class L1(val y) with fun call(x) = x + 2 + y @@ -233,65 +241,52 @@ staged module M with M.test_gen(mkDyn()) print(M."cache$M") //│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:371) +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' -//│ ║ l.233: M.test_gen(mkDyn()) +//│ ║ l.241: M.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.234: print(M."cache$M") +//│ ║ l.242: print(M."cache$M") //│ ╙── ^ -//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = -//│ > let {obj_1, obj_2} -//│ > if b is -//│ > true then -//│ > obj_1 = new L2(2) -//│ > obj_1 -//│ > else -//│ > obj_2 = new L3(3) -//│ > obj_2 -//│ > fun pick_Union_L2_Lit2_L3_Lit3_end_L4_Lit4_Dyn(x, y, b) = -//│ > let {obj_3} -//│ > if b is -//│ > true then x -//│ > else -//│ > obj_3 = new L4(4) -//│ > obj_3 -//│ > fun test(b) = -//│ > let {y, tmp1, m, tmp2, tmp3, tmp4, tmp5, tmp6} -//│ > tmp1 = new L1(1) -//│ > y = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > tmp4 = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) -//│ > tmp5 = new L4(4) -//│ > m = M.pick_Union_L2_Lit2_L3_Lit3_end_L4_Lit4_Dyn(tmp4, tmp5, b) -//│ > tmp6 = M.twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(m, 5) -//│ > tmp6 + y -//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 -//│ > fun twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(f, x) = -//│ > let {tmp} -//│ > if f is -//│ > L2(y) then -//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) -//│ > if f is -//│ > L2(y) then f.call_L2_Lit2_dot_Lit7(tmp) -//│ > L3(y) then f.call_L3_Lit3_dot_Lit7(tmp) -//│ > else f.call(tmp) -//│ > L3(y) then -//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) -//│ > if f is -//│ > L2(y) then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) -//│ > L3(y) then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) -//│ > else f.call(tmp) -//│ > else -//│ > tmp = f.call(x) -//│ > if f is -//│ > L2(y) then f.call_L2_Lit2_dot_Dyn(tmp) -//│ > L3(y) then f.call_L3_Lit3_dot_Dyn(tmp) -//│ > else f.call(tmp) -//│ > f.call(tmp) +//│ > module M with +//│ > () +//│ > fun test(b) = +//│ > let {y, m, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6} +//│ > tmp1 = new L1(1) +//│ > y = M.twice_L1_Lit1_Lit5(tmp1, 5) +//│ > tmp2 = new L2(2) +//│ > tmp3 = new L3(3) +//│ > tmp4 = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > tmp5 = new L4(4) +//│ > m = M.pick_Union_L2_Lit2_L3_Lit3_end_L4_Lit4_Dyn(tmp4, tmp5, b) +//│ > tmp6 = M.twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(m, 5) +//│ > tmp6 + y +//│ > fun twice_L1_Lit1_Lit5(f, x) = +//│ > let {tmp} +//│ > tmp = f.call(x) +//│ > f.call(tmp) +//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > let {obj_1, obj_2} +//│ > if b is +//│ > true then +//│ > obj_1 = new L2(2) +//│ > obj_1 +//│ > else +//│ > obj_2 = new L3(3) +//│ > obj_2 +//│ > fun pick_Union_L2_Lit2_L3_Lit3_end_L4_Lit4_Dyn(x, y, b) = +//│ > let {obj_3} +//│ > if b is +//│ > true then x +//│ > else +//│ > obj_3 = new L4(4) +//│ > obj_3 +//│ > fun twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(f, x) = +//│ > let {tmp} +//│ > tmp = f.call(x) +//│ > f.call(tmp) staged class A(val x: Int) with fun f(y: Int) = this.x + y @@ -305,28 +300,32 @@ staged module TestThis with TestThis.test_gen(mkDyn()) print(TestThis."cache$TestThis") //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.305: TestThis.test_gen(mkDyn()) +//│ ║ l.300: TestThis.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.306: print(TestThis."cache$TestThis") +//│ ║ l.301: print(TestThis."cache$TestThis") //│ ╙── ^^^^^^^^ -//│ > fun test(x) = -//│ > let {tmp, tmp1} -//│ > tmp = B(x) -//│ > tmp1 = A(x) -//│ > if tmp is -//│ > B(x) then tmp.f_B_Dyn_dot_A_Dyn(tmp1) +//│ > module TestThis with +//│ > () +//│ > fun test(x) = +//│ > let {tmp, tmp1} +//│ > tmp = B(x) +//│ > tmp1 = A(x) +//│ > tmp.f(tmp1) print(B.class."cache$B") -//│ > fun f_B_Dyn_dot_A_Dyn(_this, y) = B1.x +//│ > undefined print(B.class.f_instr()) -//│ > FunDefn(Symbol("f"), [[Symbol("y")]], Return(Select(ValueRef(ConcreteClassSymbol("B1", fun B { class: class B { cache$B: fun f_B_Dyn_dot_A_Dyn(_this, y) = B1.x, generatorMap$B: Map(2) {"ctor" => fun ctor_gen, "f" => fun f_gen} } }, Some([Symbol("x")]), [])), Symbol("x")), false)) +//│ > FunDefn(Symbol("f"), [[Symbol("y")]], Return(Select(ValueRef(ConcreteClassSymbol("B", fun B { class: class B { class$cache$B: class B(x) with +//│ > () +//│ > , class$generatorMap$B: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), [])), Symbol("x")), false)) :todo staged class D(val x) extends B(x+1) with val y = 1 fun f() = 42 +//│ FAILURE: Unexpected lack of error to fix staged class C1(val n) with fun f() = n @@ -339,73 +338,8 @@ staged module M with fun test(b) = pick(b).f() C1.class."cache$C1" -//│ = class D(val z) -:lot class C(val x, val y) extends D(x + 1) -//│ —————————————| Lowered IR Tree |———————————————————————————————————————————————————————————————————— -//│ Program: -//│ main = Scoped(syms = {member:C⁰}): -//│ body = Define: -//│ defn = ClsLikeDefn: -//│ isym = class:C¹ -//│ sym = member:C⁰ -//│ ctorSym = S of term:C¹/C² -//│ k = Cls -//│ paramsOpt = S of ParamList: -//│ params = Ls of -//│ Param: -//│ flags = (val) -//│ sym = x⁰ -//│ modulefulness = Modulefulness of N -//│ Param: -//│ flags = (val) -//│ sym = y⁰ -//│ modulefulness = Modulefulness of N -//│ parentPath = S of Ref{disamb=class:D⁰}: -//│ l = member:D¹ -//│ disamb = S of class:D⁰ -//│ publicFields = Ls of -//│ Tuple2: -//│ _1 = member:x¹ -//│ _2 = term:C¹/x² -//│ Tuple2: -//│ _1 = member:y¹ -//│ _2 = term:C¹/y² -//│ preCtor = Scoped(syms = {tmp:tmp⁰}): -//│ body = Assign: -//│ lhs = tmp:tmp⁰ -//│ rhs = Call: -//│ fun = Ref: -//│ l = builtin:+⁰ -//│ args = Ls of -//│ Arg: -//│ value = Ref: -//│ l = x⁰ -//│ Arg: -//│ value = Lit of IntLit of 1 -//│ rest = Return: \ -//│ res = Call: -//│ fun = Ref: -//│ l = builtin:super⁰ -//│ args = Ls of -//│ Arg: -//│ value = Ref: -//│ l = tmp:tmp⁰ -//│ implct = true -//│ ctor = Define: -//│ defn = ValDefn: -//│ tsym = term:C¹/x² -//│ sym = member:x¹ -//│ rhs = Ref: -//│ l = x⁰ -//│ rest = Define: \ -//│ defn = ValDefn: -//│ tsym = term:C¹/y² -//│ sym = member:y¹ -//│ rhs = Ref: -//│ l = y⁰ -//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— From 90f3fff7a4570db881245c1234cc7bb658506b2a Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 13 Apr 2026 01:43:29 +0800 Subject: [PATCH 515/654] fix the cache name and genMap name for classes --- .../mlscript-compile/SpecializeHelpers.mls | 33 +++-- .../test/mlscript/block-staging/ShapeProp.mls | 122 +++++++++++------- 2 files changed, 98 insertions(+), 57 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index c7ac93a0dc..ebcde8b268 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -13,6 +13,17 @@ open ShapeSet module SpecializeHelpers with ... +let moduleGenMapPrefix = "generatorMap$" +let classGenMapPrefix = "class$generatorMap$" +let moduleCachePrefix = "cache$" +let classCachePrefix = "class$cache$" + +fun getGenMapName(name, isClass) = + (if isClass then classGenMapPrefix else moduleGenMapPrefix) + name + +fun getCacheName(name, isClass) = + (if isClass then classCachePrefix else moduleCachePrefix) + name + fun getActualClass(c) = if not (c."class" is undefined) then c.class else c fun isSubClassOf(d, b) = getActualClass(b).isPrototypeOf(getActualClass(d)) @@ -95,18 +106,18 @@ fun sop(ctx, p): ShapeSet = if ctx.get(p) is ValueLit(lit) then mkLit(lit) ValueRef(l) then mkDyn() -fun isStaged(c) = +fun isStagedClass(c) = let actualClass = getActualClass(c) let clsName = actualClass.(Symbols.definitionMetadata).1 - let genMapName = "generatorMap$" + clsName + let genMapName = getGenMapName(clsName, true) not (actualClass.(genMapName) is undefined) fun fsplit(pss) = let knownMap = new Map() let unkShape = foldl((acc, s) => if s is - Class(sym, params) and isStaged(sym.value) then - if knownMap.has(sym) then knownMap.set(sym, union(knownMap.get(sym), lift(s))) - else knownMap.set(sym, lift(s)) + Class(sym, params) and isStagedClass(sym.value) then + if knownMap.has(sym) then do knownMap.set(sym, union(knownMap.get(sym), lift(s))) + else do knownMap.set(sym, lift(s)) acc else union(acc, mkDyn()) )(mkBot(), ...pss.values()) @@ -168,8 +179,8 @@ fun sor(ctx, r) = if r is "||" then lit(l1 || l2) else [End(), r, mkDyn()] Select(ValueRef(ModuleSymbol(name, value)), Symbol(fld)) and - let mapPropName = "generatorMap$" + name - let cachePropName = "cache$" + name + let mapPropName = getGenMapName(name, false) + let cachePropName = getCacheName(name, false) let genMap = value.(mapPropName) not (genMap is undefined) and let f_gen = genMap.get(fld) @@ -194,14 +205,14 @@ fun sor(ctx, r) = if r is fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = let pss = sop(ctx, ValueRef(symb)) - let argShapes = args.map((a, _, _) => sop(ctx, a.value)) + let argShapes = args.map(a => sop(ctx, a.value)) let splitted = fsplit(pss) let knownMap = splitted.0 let unkShape = splitted.1 let isRet = xOpt is None - if knownMap.size is 0 then + if knownMap.size is 0 and let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) - if isRet then + isRet then [concat(End(), Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") @@ -213,7 +224,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = let ss_i = entry.1 let actualClass = getActualClass(C_i.value) let clsName = actualClass.(Symbols.definitionMetadata).1 - let genMapName = "generatorMap$" + clsName + let genMapName = getGenMapName(clsName, true) let genMap = actualClass.(genMapName) let f_gen = genMap.get(f) let generated = f_gen(ss_i)(...argShapes) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 8013bc06ac..7c0b269dc6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -176,7 +176,7 @@ staged module LinearAlgebra with fun test(x) = dot([x, 1, 2], [3, 4, 1]) LinearAlgebra.test_gen(mkDyn()) -LinearAlgebra."cache$LinearAlgebra" +print(LinearAlgebra."cache$LinearAlgebra") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'LinearAlgebra' does not contain member 'test_gen' @@ -185,41 +185,41 @@ LinearAlgebra."cache$LinearAlgebra" //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type LinearAlgebra. -//│ ║ l.179: LinearAlgebra."cache$LinearAlgebra" -//│ ╙── ^^^^^^^^^^^^^ -//│ = module LinearAlgebra with \ -//│ () \ -//│ fun test(x) = \ -//│ let {tmp3, tmp4} \ -//│ tmp3 = [x, 1, 2] \ -//│ tmp4 = [3, 4, 1] \ -//│ LinearAlgebra.dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) \ -//│ fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) \ -//│ fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, n, acc) = \ -//│ let {scrut, tmp, tmp1, tmp2} \ -//│ scrut = false \ -//│ tmp = 1 \ -//│ tmp1 = *(v1.(n), v2.(n)) \ -//│ tmp2 = tmp1 + acc \ -//│ LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) \ -//│ fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, n, acc) = \ -//│ let {scrut, tmp, tmp1, tmp2} \ -//│ scrut = false \ -//│ tmp = 2 \ -//│ tmp1 = 4 \ -//│ tmp2 = tmp1 + acc \ -//│ LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) \ -//│ fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, n, acc) = \ -//│ let {scrut, tmp, tmp1, tmp2} \ -//│ scrut = false \ -//│ tmp = 3 \ -//│ tmp1 = 2 \ -//│ tmp2 = tmp1 + acc \ -//│ LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) \ -//│ fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, n, acc) = \ -//│ let {scrut, tmp, tmp1, tmp2} \ -//│ scrut = true \ -//│ acc +//│ ║ l.179: print(LinearAlgebra."cache$LinearAlgebra") +//│ ╙── ^^^^^^^^^^^^^ +//│ > module LinearAlgebra with +//│ > () +//│ > fun test(x) = +//│ > let {tmp3, tmp4} +//│ > tmp3 = [x, 1, 2] +//│ > tmp4 = [3, 4, 1] +//│ > LinearAlgebra.dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) +//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, n, acc) = +//│ > let {scrut, tmp, tmp1, tmp2} +//│ > scrut = false +//│ > tmp = 1 +//│ > tmp1 = *(v1.(n), v2.(n)) +//│ > tmp2 = tmp1 + acc +//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, n, acc) = +//│ > let {scrut, tmp, tmp1, tmp2} +//│ > scrut = false +//│ > tmp = 2 +//│ > tmp1 = 4 +//│ > tmp2 = tmp1 + acc +//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, n, acc) = +//│ > let {scrut, tmp, tmp1, tmp2} +//│ > scrut = false +//│ > tmp = 3 +//│ > tmp1 = 2 +//│ > tmp2 = tmp1 + acc +//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, n, acc) = +//│ > let {scrut, tmp, tmp1, tmp2} +//│ > scrut = true +//│ > acc staged class L1(val y) with fun call(x) = x + 2 + y @@ -255,7 +255,7 @@ print(M."cache$M") //│ > fun test(b) = //│ > let {y, m, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6} //│ > tmp1 = new L1(1) -//│ > y = M.twice_L1_Lit1_Lit5(tmp1, 5) +//│ > y = 11 //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) //│ > tmp4 = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) @@ -263,10 +263,7 @@ print(M."cache$M") //│ > m = M.pick_Union_L2_Lit2_L3_Lit3_end_L4_Lit4_Dyn(tmp4, tmp5, b) //│ > tmp6 = M.twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(m, 5) //│ > tmp6 + y -//│ > fun twice_L1_Lit1_Lit5(f, x) = -//│ > let {tmp} -//│ > tmp = f.call(x) -//│ > f.call(tmp) +//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 //│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = //│ > let {obj_1, obj_2} //│ > if b is @@ -285,9 +282,41 @@ print(M."cache$M") //│ > obj_3 //│ > fun twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(f, x) = //│ > let {tmp} -//│ > tmp = f.call(x) +//│ > if f is +//│ > L2 then +//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Lit7(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Lit7(tmp) +//│ > else f.call(tmp) +//│ > L3 then +//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +//│ > else f.call(tmp) +//│ > else +//│ > tmp = f.call(x) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Dyn(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Dyn(tmp) +//│ > else f.call(tmp) //│ > f.call(tmp) + +print(L1.class."class$cache$L1") +print(L2.class."class$cache$L2") +//│ > class L1(y) with +//│ > () +//│ > fun call_L1_Lit1_dot_Lit5(_this, x) = 8 +//│ > fun call_L1_Lit1_dot_Lit8(_this, x) = 11 +//│ > class L2(y) with +//│ > () +//│ > fun call_L2_Lit2_dot_Lit5(_this, x) = 7 +//│ > fun call_L2_Lit2_dot_Lit7(_this, x) = 9 +//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(_this, x) = x + y +//│ > fun call_L2_Lit2_dot_Dyn(_this, x) = x + y + staged class A(val x: Int) with fun f(y: Int) = this.x + y staged class B(val x: Int) with @@ -300,10 +329,10 @@ staged module TestThis with TestThis.test_gen(mkDyn()) print(TestThis."cache$TestThis") //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.300: TestThis.test_gen(mkDyn()) +//│ ║ l.329: TestThis.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.301: print(TestThis."cache$TestThis") +//│ ║ l.330: print(TestThis."cache$TestThis") //│ ╙── ^^^^^^^^ //│ > module TestThis with //│ > () @@ -311,7 +340,8 @@ print(TestThis."cache$TestThis") //│ > let {tmp, tmp1} //│ > tmp = B(x) //│ > tmp1 = A(x) -//│ > tmp.f(tmp1) +//│ > if tmp is +//│ > B then tmp.f_B_Dyn_dot_A_Dyn(tmp1) print(B.class."cache$B") //│ > undefined @@ -319,7 +349,7 @@ print(B.class."cache$B") print(B.class.f_instr()) //│ > FunDefn(Symbol("f"), [[Symbol("y")]], Return(Select(ValueRef(ConcreteClassSymbol("B", fun B { class: class B { class$cache$B: class B(x) with //│ > () -//│ > , class$generatorMap$B: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), [])), Symbol("x")), false)) +//│ > fun f_B_Dyn_dot_A_Dyn(_this, y) = x, class$generatorMap$B: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), [])), Symbol("x")), false)) :todo staged class D(val x) extends B(x+1) with From b105d3f46eec62abaf2cb0efd08cd85ae37d138c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 13 Apr 2026 21:32:50 +0800 Subject: [PATCH 516/654] update tests --- hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls | 2 +- hkmc2/shared/src/test/mlscript/codegen/Spreads.mls | 4 ++-- hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls index 4f510fd4ff..6381edc5c8 100644 --- a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls +++ b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls @@ -233,7 +233,7 @@ id(Foo)(1) // ——— ——— ——— data class FooSpd(...args) -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:FooSpd/args) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1308': mismatched param list lengths List() vs List(term:FooSpd/args) //│ ╙── The compilation result may be incorrect. FooSpd(1, 2, 3).args diff --git a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls index e902c769f5..676a066eb1 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls @@ -58,7 +58,7 @@ foo(0, ...a) data class A(...r) let x = new A(1, 2, 3) x.r -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1308': mismatched param list lengths List() vs List(term:A/r) //│ ╙── The compilation result may be incorrect. //│ ═══[RUNTIME ERROR] Error: Access to required field 'r' yielded 'undefined' //│ ═══[RUNTIME ERROR] Expected: '[1, 2, 3]', got: 'undefined' @@ -69,7 +69,7 @@ x.r data class A(...r) with fun getR = r new A(1, 2, 3).getR -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1308': mismatched param list lengths List() vs List(term:A/r) //│ ╙── The compilation result may be incorrect. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined //│ ═══[RUNTIME ERROR] Expected: '[1, 2, 3]', got: 'undefined' diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index 878ca890d5..8691abb217 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -291,7 +291,7 @@ fun f(x) = let res = f(0) res.a res.b -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1308': mismatched param list lengths List() vs List(term:A/r) //│ ╙── The compilation result may be incorrect. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined //│ res = A(_) From 5634cf7b94a5f35eb3dc3dbd51a415114b34a102 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 13 Apr 2026 23:47:45 +0800 Subject: [PATCH 517/654] move ctor processing to instrumentation --- .../hkmc2/codegen/ReflectionInstrumenter.scala | 17 +++++++++-------- .../test/mlscript-compile/SpecializeHelpers.mls | 13 +------------ 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 890e4d802e..0620bef15a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -372,16 +372,17 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def stageCtor(ctorFun: FunDefn): FunDefn = // refresh VarSymbols for ctor val paramSymMap = ctorFun.params.map(_.params.map(x => x.sym -> VarSymbol(x.sym.id))).flatten.toMap - val paramRewrite = new BlockTransformer(new SymbolSubst(): + val transformer = new BlockTransformer(new SymbolSubst(): + // refresh symbols after copying parameter list override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l) ): - override def applyScopedBlock(b: Block) = b match - case Scoped(s, bd) => - val nb = applySubBlock(bd) - val ns = s.map(applyLocal) - if (nb is bd) && (s is ns) then b else Scoped(ns, nb) - case _ => applySubBlock(b) - stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(new HashMap(), true)) + override def applyBlock(b: Block) = b match + // process ctor: remove ValDefn of parameters already defined in the class parameters + // remove `val C.x = x` statements from the constructor + case Define(ValDefn(_, _, Value.Ref(sym: VarSymbol, _)), rest) + if paramSymMap.contains(sym) => applyBlock(rest) + case _ => super.applyBlock(b) + stageMethod(transformer.applyFunDefn(ctorFun), Context(new HashMap(), true)) def stageMethods(ownerSym: DefinitionSymbol[?], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (Ls[FunDefn], Block => Block) = diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index d796604c24..749867f0dc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -98,24 +98,13 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any inlineAssigments(new Map())(preCtor) else "" - // process ctor: remove ValDefn of parameters defined in paramsOpt - fun removeExtraValDefn(params, block) = if block is - Define(ValDefn(Some, sym, ValueRef(rhs)), rest) and params.has(rhs) then removeExtraValDefn(params, rest) - Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, removeExtraValDefn(params, rest)) - Assign(lhs, rhs, rest) then Assign(lhs, rhs, removeExtraValDefn(params, rest)) - Define(defn, rest) then Define(defn, removeExtraValDefn(params, rest)) - Scoped(symbols, rest) then Scoped(symbols, removeExtraValDefn(params, rest)) - else block - let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() assert ctor is FunDefn - let params = new Set(ctor.params.flat()) - let ctorBody = removeExtraValDefn(params, ctor.body) decl + owner.name + printer.showParamList(paramList) + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" - + indent("\n" + printer.showBlock(ctorBody)) + + indent("\n" + printer.showBlock(ctor.body)) + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().join("\n")) module FunCache with From 21ec5b17194fa98ffd5f7b2e40f3738b3cd64e91 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 14 Apr 2026 00:25:00 +0800 Subject: [PATCH 518/654] combine entry functions for class + companion --- .../codegen/ReflectionInstrumenter.scala | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 0620bef15a..6ba9ad91b2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -385,7 +385,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S stageMethod(transformer.applyFunDefn(ctorFun), Context(new HashMap(), true)) - def stageMethods(ownerSym: DefinitionSymbol[?], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (Ls[FunDefn], Block => Block) = + def stageMethods(ownerSym: DefinitionSymbol[?], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (FunDefn, Ls[FunDefn], Block => Block) = // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol(cacheNme, Nil, true) val cacheTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(cacheNme)) @@ -442,7 +442,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val params = PlainParamList(Param.simple(sourceSym) :: Param.simple(psym) :: Nil) FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, genOutputBody(sourceSym, psym))(false, N) - (entryFunDef :: stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(b))) + (entryFunDef, stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(b))) override def applyObjBody(companion: ClsLikeBody) = companion.isym.defn match // staged modules @@ -455,9 +455,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val generatorMapNme = "generatorMap" + suffix val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(PlainParamList(Nil)), ctor)(false, N) - val (newMethods, cont) = stageMethods(companion.isym, modSym, false, cacheNme, generatorMapNme)(methods) + val (entryFun, newMethods, cont) = stageMethods(companion.isym, modSym, false, cacheNme, generatorMapNme)(methods) companion.copy( - methods = stageCtor(ctorFun) :: newMethods, + methods = entryFun :: stageCtor(ctorFun) :: newMethods, ctor = Begin(companion.ctor, cont(End())), ) case b => super.applyObjBody(companion) @@ -494,12 +494,27 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val preCtorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("preCtor$", Nil, false), Ls(PlainParamList(Nil)), preCtor)(false, N) val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("class$ctor$", Nil, false), ctorParams, ctor)(false, N) - val (newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme)(methods) - + val (entryFun, newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme)(methods) + val (companionEntryFun, companionMethods) = companion.methods.partition(_.sym.nme == "generate") + val combinedEntryFun: FunDefn = companionEntryFun match + case Nil => entryFun + case companionFun :: Nil => + val symMap = entryFun.params.flatMap(_.params.map(_.sym)) + .zip(companionFun.params.flatMap(_.params.map(_.sym))) + .toMap + val transformer = new BlockTransformer(new SymbolSubst(): + override def mapVarSym(l: VarSymbol): VarSymbol = symMap.getOrElse(l, l) + ) + val combinedBody = Begin(companionFun.body, transformer.applyBlock(entryFun.body)) + companionFun.copy(body = combinedBody)(companionFun.forceTailRec, companionFun.configOverride) + case _ => + raise(ErrorReport(msg"There shouldn't be more than one entry function generated in a module." -> N :: Nil)) + entryFun + // used for staging classes inside modules val newCompanion = companion.copy( // actually, the entry function should come from stageMethods - methods = stageMethod(preCtorFun) :: stageCtor(ctorFun) :: newMethods ++ companion.methods, + methods = combinedEntryFun :: stageMethod(preCtorFun) :: stageCtor(ctorFun) :: newMethods ++ companionMethods, ctor = Begin(companion.ctor, cont(End())), publicFields = companion.publicFields, ) From 0852e19acac9682cbe61959043253c61e95cd5d6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 13 Apr 2026 23:47:45 +0800 Subject: [PATCH 519/654] move ctor processing to instrumentation --- .../hkmc2/codegen/ReflectionInstrumenter.scala | 17 +++++++++-------- .../test/mlscript-compile/SpecializeHelpers.mls | 15 ++------------- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 6c7cb12407..021408aa1c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -367,16 +367,17 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def stageCtor(ctorFun: FunDefn): FunDefn = // refresh VarSymbols for ctor val paramSymMap = ctorFun.params.map(_.params.map(x => x.sym -> VarSymbol(x.sym.id))).flatten.toMap - val paramRewrite = new BlockTransformer(new SymbolSubst(): + val transformer = new BlockTransformer(new SymbolSubst(): + // refresh symbols after copying parameter list override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l) ): - override def applyScopedBlock(b: Block) = b match - case Scoped(s, bd) => - val nb = applySubBlock(bd) - val ns = s.map(applyLocal) - if (nb is bd) && (s is ns) then b else Scoped(ns, nb) - case _ => applySubBlock(b) - stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(new HashMap(), true)) + override def applyBlock(b: Block) = b match + // process ctor: remove ValDefn of parameters already defined in the class parameters + // remove `val C.x = x` statements from the constructor + case Define(ValDefn(_, _, Value.Ref(sym: VarSymbol, _)), rest) + if paramSymMap.contains(sym) => applyBlock(rest) + case _ => super.applyBlock(b) + stageMethod(transformer.applyFunDefn(ctorFun), Context(new HashMap(), true)) def stageMethods(ownerSym: DefinitionSymbol[?], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (Ls[FunDefn], Block => Block) = diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 1ccdb54114..d3bd21c653 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -82,22 +82,11 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any inlineAssigments(new Map())(preCtor) else "" - // process ctor: remove ValDefn of parameters defined in paramsOpt - fun removeExtraValDefn(params, block) = if block is - Define(ValDefn(Some, sym, ValueRef(rhs)), rest) and params.has(rhs) then removeExtraValDefn(params, rest) - Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, removeExtraValDefn(params, rest)) - Assign(lhs, rhs, rest) then Assign(lhs, rhs, removeExtraValDefn(params, rest)) - Define(defn, rest) then Define(defn, removeExtraValDefn(params, rest)) - Scoped(symbols, rest) then Scoped(symbols, removeExtraValDefn(params, rest)) - else block - let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() assert ctor is FunDefn - let params = new Set(ctor.params.flat()) - let ctorBody = removeExtraValDefn(params, ctor.body) decl + owner.name + printer.showParamList(paramList) + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" - + indent("\n" + printer.showBlock(ctorBody)) - + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().join("\n")) \ No newline at end of file + + indent("\n" + printer.showBlock(ctor.body)) + + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().join("\n")) From f27bf5683237c1b0437884239188ff51cf25d56e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 14 Apr 2026 00:31:02 +0800 Subject: [PATCH 520/654] bump test --- hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index b541e89ef5..311e20e726 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -157,8 +157,8 @@ f().foo() //│ }; //│ define Good⁰ as class Good¹ { //│ private val Good$cap⁰; -//│ private val y²; //│ private val x¹; +//│ private val y²; //│ private val scope0$cap⁰; //│ constructor Good² { //│ set scope0$cap⁰ = scope0$cap; From 1d2d722f92af23c90c76f77510d3053f5abcea96 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 8 Apr 2026 12:46:08 +0800 Subject: [PATCH 521/654] update api changes to tests --- .../shared/src/test/mlscript/ShapeSetTest.mls | 13 +- .../block-staging/ShapeSetHelpers.mls | 141 +++++++++--------- .../mlscript/block-staging/SpecializeTest.mls | 27 +--- 3 files changed, 84 insertions(+), 97 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 4ff27d1ed6..92a03174ff 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -8,7 +8,7 @@ import "../mlscript-compile/Option.mls" open ShapeSet open Shape { Lit, Arr, Class, Dyn } open Option -open Block { Tup, ClassSymbol, Symbol } +open Block { Tup, ConcreteClassSymbol, Symbol } let x = mkBot() //│ x = {} @@ -31,18 +31,19 @@ mkArr([x, y]) //│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} class C(val a) -val clsSym = ClassSymbol("C", C, Some([Symbol("a")]), []) -//│ clsSym = ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []) +val clsSym = ConcreteClassSymbol("C", C, Some([Symbol("a")]), []) +//│ clsSym = ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []) +:fixme let x = liftMany([Class(clsSym, [Lit(42)]), Arr([Lit(1), Lit("a")])]) let y = liftMany([Lit(1), Lit("a")]) selSet(x, y) -//│ = {Lit("a"),Lit(42)} -//│ x = {Arr([Lit(1), Lit("a")]),Class(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(42)])} +//│ ═══[RUNTIME ERROR] Error: Array out of bound +//│ x = {Arr([Lit(1), Lit("a")]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(42)])} //│ y = {Lit("a"),Lit(1)} mkClass(clsSym, [mkLit(1)]) -//│ = {Class(ClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(1)])} +//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(1)])} filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)])]), Tup(3)) //│ = {Arr([Lit(1), Lit(2), Lit(3)])} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 5b222b0b11..5b8cd16dff 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -8,11 +8,13 @@ import "../../mlscript-compile/CachedHash.mls" import "../../mlscript-compile/SpecializeHelpers.mls" import "../../mlscript-compile/Runtime.mls" open Option -open Block { Symbol, ClassSymbol, Tup, Case } +open Block { Symbol, ConcreteClassSymbol, Tup, Case, Printer } open Shape { Arr, Class, Dyn, Lit } open ShapeSet open SpecializeHelpers { sov } +fun printCode(b) = Printer.default.printCode(b) + mkBot() //│ = {} @@ -62,15 +64,16 @@ selSet(arrSp, mkLit(1)) selSet(mkDyn(), mkLit(5)) //│ = {Dyn()} -let a = Class(ClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]) +:fixme +let a = Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]) let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) selSet(x, liftMany([Lit("a"), Lit(2)])) -//│ = {Dyn(),Lit(undefined)} +//│ ═══[RUNTIME ERROR] Error: Array out of bound //│ a = Class( -//│ ClassSymbol("A", undefined, Some(["a", "b"]), []), +//│ ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), //│ [Lit(42), Lit("c")] //│ ) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Dyn()} +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Dyn()} selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) //│ = {Lit(1)} @@ -93,7 +96,7 @@ filterSet(mkDyn(), Block.Tup(2)) //│ = {Arr([Dyn(), Dyn()])} let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()]), Arr([Lit(1), Lit(2), Lit(3)]), a]) -//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Lit(1),Lit(null)} +//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match @@ -103,7 +106,7 @@ filterSet(filterShapes, Block.Lit(1)) assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = {Class(ClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")])} +//│ = {Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")])} filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) //│ = {Lit(1)} @@ -121,9 +124,9 @@ open SpecializeHelpers { Ctx, sop, sor, prop } // Ctx -let ctx = Ctx.empty +let ctx = Ctx.empty() let x = ValueRef(Symbol("x")) -//│ ctx = Ctx(Map(0) {}, []) +//│ ctx = Ctx(Map(0) {}, [], None, {}) //│ x = ValueRef(Symbol("x")) ctx.add(x, mkLit(1)) @@ -144,7 +147,12 @@ let ctx2 = ctx.clone ctx2.add(y, mkLit("b")) ctx2.get(y) //│ = Some({Lit("a"),Lit("b")}) -//│ ctx2 = Ctx(Map(2) {"x" => {Lit(1),Lit(2)}, "y" => {Lit("a"),Lit("b")}}, []) +//│ ctx2 = Ctx( +//│ Map(2) {"Symbol(x)" => {Lit(1),Lit(2)}, "Symbol(y)" => {Lit("a"),Lit("b")}}, +//│ [], +//│ None, +//│ {} +//│ ) ctx.get(y) //│ = Some({Lit("a")}) @@ -158,29 +166,31 @@ ctx.get(y) // sop -sop(Ctx.empty, ValueLit(42)) +sop(Ctx.empty(), ValueLit(42)) //│ = {Lit(42)} -sop(Ctx.empty, ValueLit(false)) +sop(Ctx.empty(), ValueLit(false)) //│ = {Lit(false)} -sop(Ctx.empty.add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) +sop(Ctx.empty().add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) //│ = {} val x = Symbol("x") -val C = ClassSymbol("C", undefined, Some(["a"]), []) +val C = ConcreteClassSymbol("C", undefined, Some(["a"]), []) val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) -let ctx = Ctx.empty +let ctx = Ctx.empty() ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ = {} -//│ C = ClassSymbol("C", undefined, Some(["a"]), []) +//│ C = ConcreteClassSymbol("C", undefined, Some(["a"]), []) //│ ctx = Ctx( //│ Map(1) { -//│ "x" => {Class(ClassSymbol("C", undefined, Some(["a"]), []), [Lit("pass")])} +//│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some(["a"]), []), [Lit("pass")])} //│ }, -//│ [] +//│ [], +//│ None, +//│ {} //│ ) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -188,7 +198,7 @@ sop(ctx, selPath) // sor val tup = Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]) -sor(Ctx.empty, tup) +sor(Ctx.empty(), tup) //│ = [ //│ End(), //│ Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]), @@ -196,27 +206,27 @@ sor(Ctx.empty, tup) //│ ] //│ tup = Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]) -let c = ClassSymbol("C", undefined, Some([Symbol("p")]), []) +let c = ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), []) let inst = Instantiate(ValueRef(c), [Arg(ValueLit(123))]) -sor(Ctx.empty, inst) +sor(Ctx.empty(), inst) //│ = [ //│ End(), //│ Instantiate( -//│ ValueRef(ClassSymbol("C", undefined, Some([Symbol("p")]), [])), +//│ ValueRef(ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), [])), //│ [Arg(ValueLit(123))] //│ ), -//│ {Class(ClassSymbol("C", undefined, Some([Symbol("p")]), []), [Lit(123)])} +//│ {Class(ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), []), [Lit(123)])} //│ ] -//│ c = ClassSymbol("C", undefined, Some([Symbol("p")]), []) +//│ c = ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), []) //│ inst = Instantiate( -//│ ValueRef(ClassSymbol("C", undefined, Some([Symbol("p")]), [])), +//│ ValueRef(ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), [])), //│ [Arg(ValueLit(123))] //│ ) fun testBinOp(op, v1, v2) = let args = [Arg(ValueLit(v1)), Arg(ValueLit(v2))] let c = Call(ValueRef(Symbol(op)), args) - sor(Ctx.empty, c).1.lit + sor(Ctx.empty(), c).1.lit :expect 12 testBinOp("+", 10, 2) @@ -237,7 +247,7 @@ testBinOp("&&", true, false) fun testUnaryOp(op, v) = let args = [Arg(ValueLit(v))] let c = Call(ValueRef(Symbol(op)), args) - sor(Ctx.empty, c).1.lit + sor(Ctx.empty(), c).1.lit :expect -10 testUnaryOp("-", 10) @@ -266,7 +276,7 @@ let plus = ValueRef(Symbol("+")) // x = 1 + 1 // x + 1 let c = Scoped([x], Assign(x, Call(plus, [Arg(ValueLit(1)), Arg(ValueLit(1))]), Return(Call(plus, [Arg(ValueRef(x)), Arg(ValueLit(1))]), false))) -prop(Ctx.empty, c) +prop(Ctx.empty(), c) //│ = [ //│ Scoped( //│ [Symbol("x")], @@ -290,7 +300,7 @@ prop(Ctx.empty, c) //│ ) let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(VirtualClassSymbol("Bool"), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(VirtualClassSymbol("Int"), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) -prop(Ctx.empty, c) +prop(Ctx.empty(), c) //│ = [ //│ Scoped( //│ [Symbol("x")], @@ -331,40 +341,39 @@ prop(Ctx.empty, c) fun f_gen(args) = [mkLit(24), Symbol("f1")] // A stub for the actual f_gen +module M with + fun f(args) = 24 + +:ignore +val MSym = ValueRef(ModuleSymbol("M", M)) +//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. +//│ ║ l.348: val MSym = ValueRef(ModuleSymbol("M", M)) +//│ ║ ^ +//│ ╙── Module argument passed to a non-module parameter. +//│ MSym = ValueRef(ModuleSymbol("M", class M)) + val fSym = Symbol("f") -val M = ValueRef(Symbol("M")) -val fPath = Select(M, fSym) -//│ M = ValueRef(Symbol("M")) -//│ fPath = Select(ValueRef(Symbol("M")), Symbol("f")) +val fPath = Select(MSym, fSym) +//│ fPath = Select(ValueRef(ModuleSymbol("M", class M)), Symbol("f")) //│ fSym = Symbol("f") val callF = Call(fPath, [Arg(ValueLit(12))]) -sor(Ctx.empty, callF) -//│ = [ -//│ Match( -//│ ValueRef(Symbol("M")), -//│ [], -//│ Some( -//│ Assign( -//│ Symbol("hi"), -//│ Call( -//│ Select(ValueRef(Symbol("M")), Symbol("f")), -//│ [Arg(ValueLit(12))] -//│ ), -//│ End() -//│ ) -//│ ), -//│ End() -//│ ), -//│ ValueRef(Symbol("hi")), -//│ {Dyn()} -//│ ] -//│ callF = Call(Select(ValueRef(Symbol("M")), Symbol("f")), [Arg(ValueLit(12))]) +sor(Ctx.empty(), callF) +//│ = [End(), ValueLit(24), {Lit(24)}] +//│ callF = Call( +//│ Select(ValueRef(ModuleSymbol("M", class M)), Symbol("f")), +//│ [Arg(ValueLit(12))] +//│ ) -val ctxXY = Ctx.empty +val ctxXY = Ctx.empty() .add(ValueRef(x), mkLit(10)) .add(ValueRef(y), mkLit(32)) -//│ ctxXY = Ctx(Map(2) {"x" => {Lit(10)}, "y" => {Lit(32)}}, []) +//│ ctxXY = Ctx( +//│ Map(2) {"Symbol(x)" => {Lit(10)}, "Symbol(y)" => {Lit(32)}}, +//│ [], +//│ None, +//│ {} +//│ ) // x + y val blockAdd = Return(Call(plus, [Arg(ValueRef(x)), Arg(ValueRef(y))]), false) @@ -382,14 +391,14 @@ prop(ctxXY, blockAdd) val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit(1), End())), Arm(Lit(2), Assign(z, ValueLit(2), End()))], Some(Assign(z, ValueLit(3), End())), Return(ValueRef(z), false))) printCode(blockBranch) -prop(Ctx.empty, blockBranch) -//│ > let z +prop(Ctx.empty(), blockBranch) +//│ > let {z} //│ > if 1 is //│ > 1 then //│ > z = 1 //│ > 2 then //│ > z = 2 -//│ > else +//│ > else //│ > z = 3 //│ > z //│ = [ @@ -414,9 +423,8 @@ prop(Ctx.empty, blockBranch) val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Return(ValueLit(10), false)), Arm(Lit(false), Assign(y, ValueLit(20), End()))], End(), Return(ValueRef(y), false)))) printCode(earlyRetBlock) -prop(Ctx.empty, earlyRetBlock) -//│ > let x -//│ > let y +prop(Ctx.empty(), earlyRetBlock) +//│ > let {x, y} //│ > x = false //│ > if x is //│ > true then 10 @@ -453,9 +461,8 @@ prop(Ctx.empty, earlyRetBlock) val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Match(ValueRef(y), [Arm(Lit(true), Return(ValueLit(1), false))], Some(Return(ValueLit(2), false)), End()))], Some(Return(ValueLit(3), false)), Return(ValueLit(4), false))))) printCode(nestedBlock) -val res = prop(Ctx.empty, nestedBlock) -//│ > let x -//│ > let y +val res = prop(Ctx.empty(), nestedBlock) +//│ > let {x, y} //│ > x = true //│ > y = false //│ > if x is @@ -523,7 +530,7 @@ val2path(TestClass(1, 2), mut []) //│ Assign( //│ Symbol("obj_2"), //│ Instantiate( -//│ ValueRef(ClassSymbol("TestClass", undefined, None, [])), +//│ ValueRef(ConcreteClassSymbol("TestClass", undefined, None, [])), //│ [Arg(ValueLit(1)), Arg(ValueLit(2))] //│ ), //│ End() @@ -539,7 +546,7 @@ val2path(TestClass(1, [1,2]), mut []) //│ Assign( //│ Symbol("obj_4"), //│ Instantiate( -//│ ValueRef(ClassSymbol("TestClass", undefined, None, [])), +//│ ValueRef(ConcreteClassSymbol("TestClass", undefined, None, [])), //│ [Arg(ValueLit(1)), Arg(ValueRef(Symbol("tup_3")))] //│ ), //│ End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 65edc61a53..f3839012bd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -1,7 +1,6 @@ :js :staging :noModuleCheck -:shapeProp import "../../mlscript-compile/ShapeSet.mls" @@ -13,25 +12,12 @@ staged module M with let y = x * 2 y fun f_gen -//│ > module M with -//│ > () -//│ > fun f(x) = -//│ > let {y} -//│ > y = *(x, 2) -//│ > y -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > SymbolMap { -//│ > classMap: Map(0) {}, -//│ > moduleMap: Map(1) { -//│ > [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } -//│ > } -//│ > } M.f_gen(mkDyn()) -//│ = [Symbol("f"), {Dyn()}] +//│ = ["f", {Dyn()}] M.f_gen(mkLit(2)) -//│ = [Symbol("f_Lit2"), {Lit(4)}] +//│ = ["f_Lit2", {Lit(4)}] print(M."cache$M") //│ > module M with @@ -40,11 +26,4 @@ print(M."cache$M") //│ > let {y} //│ > y = *(x, 2) //│ > y -//│ > fun f_Dyn_28_29(x) = -//│ > let {y} -//│ > y = *(x, 2) -//│ > y -//│ > fun f_Lit_282_29(x) = -//│ > let {y} -//│ > y = *(x, 2) -//│ > y +//│ > fun f_Lit2(x) = 4 From 2bf9571499d76f36762ef6ec3d92061180394c0a Mon Sep 17 00:00:00 2001 From: Lionel Parreaux Date: Mon, 13 Apr 2026 15:36:05 +0800 Subject: [PATCH 522/654] Fix inconsistency in class val parameter selection symbol A distinct TermSymbol was previously generated and used instead of the correct one. Also fix the IR printer and expose a lifter issue. --- .../hkmc2/codegen/BufferableTransform.scala | 2 +- .../scala/hkmc2/codegen/HandlerLowering.scala | 2 +- .../main/scala/hkmc2/codegen/Lowering.scala | 2 +- .../main/scala/hkmc2/codegen/Printer.scala | 15 +- .../hkmc2/codegen/deforest/Analyze.scala | 8 +- .../hkmc2/codegen/deforest/Deforest.scala | 8 +- .../hkmc2/codegen/deforest/Rewrite.scala | 4 +- .../hkmc2/codegen/wasm/text/WatBuilder.scala | 3 - .../shared/src/main/scala/hkmc2/package.scala | 14 ++ .../scala/hkmc2/semantics/Elaborator.scala | 11 +- .../main/scala/hkmc2/semantics/Symbol.scala | 1 + .../hkmc2/semantics/ucs/Normalization.scala | 4 +- .../src/main/scala/hkmc2/syntax/Tree.scala | 15 +- .../src/test/mlscript/backlog/ToTriage.mls | 60 +++---- .../test/mlscript/basics/ValMemberSymbols.mls | 157 ++++++++++++++++++ .../codegen/FirstClassFunctionTransform.mls | 4 +- .../src/test/mlscript/codegen/OptMatch.mls | 1 - .../src/test/mlscript/codegen/Spreads.mls | 4 + .../src/test/mlscript/lifter/ClassInFun.mls | 12 +- .../src/test/mlscript/lifter/DefnsInClass.mls | 2 +- .../src/test/mlscript/lifter/FunInFun.mls | 6 +- .../shared/src/test/mlscript/lifter/Loops.mls | 2 +- .../test/mlscript/lifter/ModulesObjects.mls | 4 +- .../src/test/mlscript/lifter/Mutation.mls | 2 +- .../{optim => opt}/AbortivePrefix.mls | 0 25 files changed, 265 insertions(+), 78 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/basics/ValMemberSymbols.mls rename hkmc2/shared/src/test/mlscript/{optim => opt}/AbortivePrefix.mls (100%) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/BufferableTransform.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/BufferableTransform.scala index 9012797d75..5e0b7b32c6 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/BufferableTransform.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/BufferableTransform.scala @@ -7,7 +7,7 @@ import mlscript.utils.*, shorthands.* import hkmc2.utils.* import hkmc2.utils.SymbolSubst -import syntax.{Literal, Tree, ParamBind} +import syntax.{Literal, Tree} import semantics.* import semantics.Elaborator.{Ctx, ctx} import semantics.Elaborator.State diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/HandlerLowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/HandlerLowering.scala index fd406b1fa6..4e2920096e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/HandlerLowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/HandlerLowering.scala @@ -11,7 +11,7 @@ import hkmc2.utils.* import hkmc2.utils.SymbolSubst import hkmc2.Message.MessageContext -import syntax.{Literal, Tree, ParamBind} +import syntax.{Literal, Tree} import semantics.* import semantics.Elaborator.ctx import semantics.Elaborator.State diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index ef93f13e4a..35b351a7e8 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -258,7 +258,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx): subTerm(bod)(r => Define(ValDefn(td.tsym, td.sym, r)(cfgOverride), blockImpl(stats, res))) - case syntax.LetBind | syntax.ParamBind | syntax.HandlerBind => fail: + case syntax.LetBind | syntax.HandlerBind => fail: ErrorReport( msg"Unexpected declaration kind '${td.k.str}' in lowering" -> td.toLoc :: Nil, source = Diagnostic.Source.Compilation) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index b7e59c214c..ede303b35c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -106,11 +106,13 @@ class Printer(using Raise, ShowCfg, SymbolPrinter, Config): then doc"" else doc" " :: braced(doc"${docPrivFlds}${docPubFlds}${docCtor}${docMethods}") + def printParamLists(paramss: Ls[ParamList])(using Scope): Document = + doc"${paramss.map(_.params.map(x => scope.allocateName(x.sym)).mkDocument("(", ", ", ")")).mkDocument("")}" + def print(defn: Defn)(using Scope): Document = defn match - case FunDefn(own, sym, dSym, params, body) => + case FunDefn(own, sym, dSym, paramss, body) => scope.nest.givenIn: - val docParams = doc"${ - params.map(_.params.map(x => scope.allocateName(x.sym)).mkDocument("(", ", ", ")")).mkDocument("")}" + val docParams = printParamLists(paramss) val docBody = print(body) doc"fun ${print(dSym)}${docParams} ${bracedbk(docBody)}" case ValDefn(tsym, sym, rhs) => @@ -118,14 +120,11 @@ class Printer(using Raise, ShowCfg, SymbolPrinter, Config): case ClsLikeDefn(own, isym, sym, ctorSym, k, paramsOpt, auxParams, parentSym, methods, privateFields, publicFields, preCtor, ctor, mod, bufferable) => scope.nest.givenIn: - val clsParams = paramsOpt.fold(Nil)(_.paramSyms) - val auxClsParams = auxParams.flatMap(_.paramSyms) - val ctorParams = (clsParams ++ auxClsParams).map(p => scope.allocateName(p)) - val docCtorParams = if clsParams.isEmpty then doc"" else doc"(${ctorParams.mkDocument(", ")})" + val ctorParams = printParamLists(paramsOpt.toList ::: auxParams) val docStaged = if isym.defn.forall(_.hasStagedModifier.isEmpty) then doc"" else doc"staged " val docBody = print(privateFields, publicFields, methods, S(preCtor), ctor, ctorSym) val clsType = k.str - val docCls = doc"${docStaged}${clsType} ${print(isym)}${docCtorParams}${docBody}" + val docCls = doc"${docStaged}${clsType} ${print(isym)}${ctorParams}${docBody}" val docModule = mod match case Some(mod) => val docStaged = if mod.isym.defn.forall(_.hasStagedModifier.isEmpty) then doc"" else doc"staged " diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Analyze.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Analyze.scala index c257f94ace..ec723cde9b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Analyze.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Analyze.scala @@ -7,7 +7,7 @@ import mlscript.utils.*, shorthands.* import semantics.* import syntax.Tree import scala.collection.mutable.{Set as MutSet, Map as MutMap, LinkedHashMap, LinkedHashSet} -import hkmc2.syntax.{ImmutVal, MutVal, LetBind, HandlerBind, ParamBind, Fun, Ins} +import hkmc2.syntax.{ImmutVal, MutVal, LetBind, HandlerBind, Fun, Ins} type StratVarId = Uid[StratVar] @@ -621,7 +621,9 @@ class DeforestConstraintsCollector(val preAnalyzer: DeforestPreAnalyzer): val argsStrat = args.map: case Arg(_, a) => processResult(a) ctor match - case cls: ClassSymbol => new Ctor(c.uid, instId)(ctor, cls.tree.clsParams.zip(argsStrat)) + case cls: ClassSymbol => new Ctor(c.uid, instId)(ctor, + cls.tree.clsParams.headOption.getOrElse(Nil)//FIXME? case when there are only aux parameter lists + .zip(argsStrat)) case _: ModuleOrObjectSymbol => new Ctor(c.uid, instId)(ctor, Nil) case tupSize: Int => new Ctor(c.uid, instId)(tupSize, (0 until tupSize).zip(argsStrat).toList) case Call(fun, args) => handleCallLike(fun, args) @@ -643,7 +645,7 @@ class DeforestConstraintsCollector(val preAnalyzer: DeforestPreAnalyzer): case s: TermSymbol => // only parambind and let/vals in modules are handled here s.k match - case ParamBind => + case _ if s.decl.exists(_.isInstanceOf[Param]) => val obj = processResult(sel.qual) val selRes = freshVar("sel_res", cc.forFunGroup) cc.constrain( diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Deforest.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Deforest.scala index dc26204ea7..cbbc7509d7 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Deforest.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Deforest.scala @@ -8,7 +8,7 @@ import syntax.Tree import utils.* import mlscript.utils.*, shorthands.* import scala.collection.mutable -import hkmc2.syntax.{ImmutVal, MutVal, LetBind, HandlerBind, ParamBind, Fun, Ins} +import hkmc2.syntax.{ImmutVal, MutVal, LetBind, HandlerBind, Fun, Ins} case class ImportedInfo(seeThroughMods: Ls[ClsLikeBody]) @@ -35,7 +35,7 @@ object DeforestableSelect: val tSym = sSym.asTrm.get tSym.k match case (Ins | HandlerBind | MutVal) => None - case ParamBind => Some(tSym) + case _ if tSym.decl.exists(_.isInstanceOf[Param]) => Some(tSym) case ImmutVal => // this can be a selection from module or a class tSym.owner.flatMap: @@ -43,7 +43,9 @@ object DeforestableSelect: // handleable if the selected field is // one of the cls params, because in deforestation // the known field information of a ctor is only its args - case cls: ClassSymbol => cls.tree.clsParams.find(_.id == tSym.id) + case cls: ClassSymbol => cls.tree.clsParams.headOption + .getOrElse(Nil)//FIXME? case when there are only aux parameter lists + .find(_.id == tSym.id) case mod: ModuleOrObjectSymbol => Some(tSym) case _ => None case LetBind => diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Rewrite.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Rewrite.scala index 93c7c8ce54..720a506933 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Rewrite.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Rewrite.scala @@ -7,7 +7,7 @@ import mlscript.utils.*, shorthands.* import semantics.* import syntax.Tree import scala.collection.mutable.{Set as MutSet, Map as MutMap, LinkedHashMap, Buffer} -import hkmc2.syntax.{ImmutVal, MutVal, LetBind, HandlerBind, ParamBind, Fun, Ins} +import hkmc2.syntax.{ImmutVal, MutVal, LetBind, HandlerBind, Val, Fun, Ins} @@ -398,7 +398,7 @@ class DeforestRewriter(val solver: DeforestConstrainSolver)(using Raise): ) case s@DeforestableSelect(sym: TermSymbol) => if branchSelSyms.isDefinedAt(s.uid.toCtorDtorId) then - assert(sym.k is ParamBind) + assert(sym.k.isInstanceOf[Val]) k(Value.Ref(branchSelSyms(s.uid.toCtorDtorId))) else if solver.finalDtorSrcs.contains(s.uid.toCtorDtorId) then applyPath(s.qual)(k) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/wasm/text/WatBuilder.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/wasm/text/WatBuilder.scala index 328719464a..f6c5653852 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/wasm/text/WatBuilder.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/wasm/text/WatBuilder.scala @@ -921,10 +921,7 @@ class WatBuilder(using TraceLogger, State) extends CodeBuilder: case _ => lastWords(s"Cannot select field from non-struct type: ${structInfo.compType.toWat}") val fieldIdx = symToField.get(sym) .orElse: - // Workaround: TermSymbols are not correctly resolved, so match the fields by name instead sym match - case trmSym: TermSymbol if trmSym.owner.flatMap(_.asBlkMember).exists(_ == thisSym) => - symToField.find((fieldSym, _) => fieldSym.nme == sym.nme).map((_, v) => v) case memSym: MemberSymbol if fieldOwner(memSym).contains(thisSym) => symToField.find((fieldSym, _) => fieldSym.nme == sym.nme).map((_, v) => v) case _ => N diff --git a/hkmc2/shared/src/main/scala/hkmc2/package.scala b/hkmc2/shared/src/main/scala/hkmc2/package.scala index 7f68214b68..b4768a10b8 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/package.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/package.scala @@ -1,5 +1,11 @@ package hkmc2 +import sourcecode.{Line, FileName} + +import mlscript.utils.*, shorthands.* +import hkmc2.utils.* +import hkmc2.Message.MessageContext + extension [A](a: A) infix inline def givenIn[R](inline k: A ?=> R) = k(using a) @@ -11,3 +17,11 @@ extension [A](a: A) val identifierPattern: scala.util.matching.Regex = "^[A-Za-z_$][A-Za-z0-9_$]*$".r +def softAssert(cond: Boolean, msg: => Str = "")(using Line, FileName, Raise): Unit = + if !cond then + raise: + InternalError( + msg"Compiler reached an unexpected state at '${summon[FileName].value}:${summon[Line].value}'${if msg == "" then "" else s": $msg"}" -> N + :: msg"The compilation result may be incorrect." -> N + :: Nil) + diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 693b5532d2..486b8aa511 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -1301,8 +1301,12 @@ extends Importer with ucs.SplitElaborator: res def withFields(using Ctx)(fn: (Ctx) ?=> (Term.Blk, Ctx)): (Term.Blk, Ctx) = - val fields: Ls[Statement] = pss.flatMap: ps => - ps.params.flatMap: p => + softAssert(pss.sizeCompare(td.clsParams) === 0, + s"mismatched parameter list numbers ${pss} vs ${td.clsParams}") + val fields: Ls[Statement] = pss.zip(td.clsParams).flatMap: (ps, cps) => + softAssert(ps.params.sizeCompare(cps) === 0, + s"mismatched param list lengths ${ps.params} vs ${cps}") + ps.params.zip(cps).flatMap: (p, cp) => // For class-like types, "desugar" the parameters into additional class fields. val owner = td.symbol match @@ -1315,7 +1319,8 @@ extends Importer with ucs.SplitElaborator: then val k = if p.flags.mut then MutVal else ImmutVal val fsym = BlockMemberSymbol(p.sym.nme, Nil) - val tsym = TermSymbol(k, owner, p.sym.id) // TODO? + val tsym = cp + cp.decl = S(p) val fdef = TermDefinition( k, fsym, diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Symbol.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Symbol.scala index f9a021a875..e31fc854fb 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Symbol.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Symbol.scala @@ -382,6 +382,7 @@ sealed trait DefinitionSymbol[Defn <: Definition] extends Symbol: this: MemberSymbol => var defn: Opt[Defn] = N + var decl: Opt[Declaration] = N // NOTE: currently only assigned for class params and only used by deforestation; may want to just remove it once deforestation is improved def bms: Opt[BlockMemberSymbol] = defn.map(_.bsym) /** Whether we know it's pure when selected (eg getters are not always pure). */ diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scala index 0c77c69890..7f6bf67f1f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scala @@ -279,7 +279,9 @@ class Normalization(lowering: Lowering)(using tl: TL)(using Raise, Ctx, State) e // and use it `Predef.unreachable` here. k(cls, Nil)(unreachableFn) case cls: ClassSymbol => - subTerm_nonTail(ctor)(k(cls, cls.tree.clsParams)) + subTerm_nonTail(ctor)(k(cls, + cls.tree.clsParams.headOption.getOrElse(Nil) // FIXME? case when there are only aux parameter lists + )) case mod: ModuleOrObjectSymbol => subTerm_nonTail(ctor)(k(mod, Nil)) case FlatPattern.Tuple(len, inf) => mkMatch(Case.Tup(len, inf) -> lowerSplit(tail, cont)) diff --git a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala index 995ddb94fa..7f9d1b29d9 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala @@ -436,7 +436,6 @@ case object ImmutVal extends Val("val", "value") case object MutVal extends Val("mut val", "mutable value") case object LetBind extends ValLike("let", "let binding") case object HandlerBind extends TermDefKind("handler", "handler binding") -case object ParamBind extends ValLike("", "parameter") case object Fun extends TermDefKind("fun", "function") case object Ins extends TermDefKind("using", "implicit instance") sealed abstract class TypeDefKind(str: Str, desc: Str)(using Line) extends DeclKind(str, desc) @@ -572,14 +571,16 @@ trait TypeDefImpl(using State) extends TypeOrTermDef: case _ => Map.empty - lazy val clsParams: Ls[TermSymbol] = - this.paramLists.headOption.fold(Nil): tup => + lazy val clsParams: Ls[Ls[TermSymbol]] = + this.paramLists.map: tup => val pts = tup.fields val inUsing = pts.headOption.exists(_.isModified(Ins)) - pts.flatMap(_.asParam(inUsing = inUsing).toOption).map: - case ParamTree(spd = S(_)) => lastWords("spreads are not allowed in class parameters") - case ParamTree(ident = id) => TermSymbol(ParamBind, symbol.asClsLike, id) + pts.flatMap(_.desugared.asParam(inUsing = inUsing).toOption).map: + // case ParamTree(spd = S(_)) => lastWords("spreads are not allowed in class parameters") // TODO: properly report this in Elaborator + case pt @ ParamTree(ident = id) => + val k = if pt.flags.mut then MutVal else ImmutVal + TermSymbol(k, symbol.asClsLike, id) .toList - lazy val allSymbols = definedSymbols ++ clsParams.map(s => s.nme -> s).toMap + lazy val allSymbols = definedSymbols ++ clsParams.flatten.map(s => s.nme -> s).toMap diff --git a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls index e73aa76686..4f510fd4ff 100644 --- a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls +++ b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls @@ -232,34 +232,36 @@ id(Foo)(1) // ——— ——— ——— -data class Foo(...args) +data class FooSpd(...args) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:FooSpd/args) +//│ ╙── The compilation result may be incorrect. -Foo(1, 2, 3).args +FooSpd(1, 2, 3).args //│ ═══[RUNTIME ERROR] Error: Access to required field 'args' yielded 'undefined' :todo -if Foo(1, 2, 3) is Foo(...args) then args +if FooSpd(1, 2, 3) is FooSpd(...args) then args //│ ╔══[COMPILATION ERROR] Unrecognized pattern (spread). -//│ ║ l.241: if Foo(1, 2, 3) is Foo(...args) then args -//│ ╙── ^^^^^^^ +//│ ║ l.243: if FooSpd(1, 2, 3) is FooSpd(...args) then args +//│ ╙── ^^^^^^^ //│ ╔══[COMPILATION ERROR] Name not found: args -//│ ║ l.241: if Foo(1, 2, 3) is Foo(...args) then args -//│ ╙── ^^^^ +//│ ║ l.243: if FooSpd(1, 2, 3) is FooSpd(...args) then args +//│ ╙── ^^^^ //│ ╔══[COMPILATION ERROR] The constructor does not take any arguments but found one argument. -//│ ║ l.241: if Foo(1, 2, 3) is Foo(...args) then args -//│ ╙── ^^^ +//│ ║ l.243: if FooSpd(1, 2, 3) is FooSpd(...args) then args +//│ ╙── ^^^^^^ //│ ═══[RUNTIME ERROR] Error: match error -if Foo(1, 2, 3) is Foo(a, b, c) then [a, b, c] +if FooSpd(1, 2, 3) is FooSpd(a, b, c) then [a, b, c] //│ ╔══[COMPILATION ERROR] The constructor does not take any arguments but found three arguments. -//│ ║ l.253: if Foo(1, 2, 3) is Foo(a, b, c) then [a, b, c] -//│ ╙── ^^^^^^^ +//│ ║ l.255: if FooSpd(1, 2, 3) is FooSpd(a, b, c) then [a, b, c] +//│ ╙── ^^^^^^^ //│ ═══[RUNTIME ERROR] Error: match error -if Foo(1, 2, 3) is Foo(arg) then arg +if FooSpd(1, 2, 3) is FooSpd(arg) then arg //│ ╔══[COMPILATION ERROR] The constructor does not take any arguments but found one argument. -//│ ║ l.259: if Foo(1, 2, 3) is Foo(arg) then arg -//│ ╙── ^^^ +//│ ║ l.261: if FooSpd(1, 2, 3) is FooSpd(arg) then arg +//│ ╙── ^^^ //│ ═══[RUNTIME ERROR] Error: match error // ——— ——— ——— @@ -286,10 +288,10 @@ fun foo() = let bar(x: Str): Str = x + x bar("test") //│ ╔══[COMPILATION ERROR] Unsupported let binding shape -//│ ║ l.286: let bar(x: Str): Str = x + x +//│ ║ l.288: let bar(x: Str): Str = x + x //│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Name not found: bar -//│ ║ l.287: bar("test") +//│ ║ l.289: bar("test") //│ ╙── ^^^ // ——— ——— ——— @@ -303,18 +305,18 @@ module Foo(x) with print(x) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ╟── which references the symbol introduced here -//│ ║ l.302: module Foo(x) with +//│ ║ l.304: module Foo(x) with //│ ╙── ^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let Foo7; -//│ (class Foo6 { +//│ let Foo5; +//│ (class Foo4 { //│ static { -//│ Foo7 = this +//│ Foo5 = this //│ } //│ static #x; //│ static { -//│ Foo6.#x = x; -//│ Predef.print(Foo6.#x); +//│ Foo4.#x = x; +//│ Predef.print(Foo4.#x); //│ } //│ toString() { return runtime.render(this); } //│ static [definitionMetadata] = ["class", "Foo"]; @@ -327,13 +329,13 @@ module Foo(x) with module Foo(val x) //│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ╟── which references the symbol introduced here -//│ ║ l.327: module Foo(val x) +//│ ║ l.329: module Foo(val x) //│ ╙── ^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let Foo9; -//│ (class Foo8 { +//│ let Foo7; +//│ (class Foo6 { //│ static { -//│ Foo9 = this +//│ Foo7 = this //│ } //│ static { //│ this.x = x; @@ -348,7 +350,7 @@ module Foo(val x) // TODO support syntax? data class Foo(mut x) //│ ╔══[COMPILATION ERROR] Expected a valid parameter, found 'mut'-modified identifier -//│ ║ l.349: data class Foo(mut x) +//│ ║ l.351: data class Foo(mut x) //│ ╙── ^ // ——— ——— ——— @@ -363,7 +365,7 @@ class Foo :e class Id(name: UnboundName) //│ ╔══[COMPILATION ERROR] Name not found: UnboundName -//│ ║ l.364: class Id(name: UnboundName) +//│ ║ l.366: class Id(name: UnboundName) //│ ╙── ^^^^^^^^^^^ //│ ═══[COMPILATION ERROR] Expected a type, got a non-type ‹error› //│ ═══[COMPILATION ERROR] Expected a type, got ‹error› diff --git a/hkmc2/shared/src/test/mlscript/basics/ValMemberSymbols.mls b/hkmc2/shared/src/test/mlscript/basics/ValMemberSymbols.mls new file mode 100644 index 0000000000..8128150591 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/basics/ValMemberSymbols.mls @@ -0,0 +1,157 @@ +:js +:noSanityCheck + + + +:sir +class A(val x) +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ let A⁰; define A⁰ as class A²(x) { val x⁰; constructor A¹ { define x⁰ as val x¹ = x; end } }; end +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— + +let a = A(1) +//│ a = A(1) + +// * Currently, we don't get a symbol here, yet +:sir +a.x +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ a⁰.x﹖ +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ = 1 + +// * Check that the symbol here is the one we expect: `x¹`, from `define x⁰ as val x¹` above +:sir +a.A#x +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ a⁰.x¹ +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ = 1 + +// * Idem +:sir +A::x +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ let lambda⁰; define lambda⁰ as fun lambda¹(self) { return self.x¹(...args⁰) }; lambda¹ +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ = fun + +// * Idem +:sir +case A(x) then x +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ let lambda²; +//│ define lambda² as fun lambda³(caseScrut) { +//│ let x, arg$A$0$; +//│ match caseScrut +//│ A² => +//│ set arg$A$0$ = caseScrut.x¹; +//│ set x = arg$A$0$; +//│ return x +//│ else +//│ throw new globalThis⁰.Error⁰("match error") +//│ end +//│ }; +//│ lambda³ +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ = fun + + +:sir +class A()(val x) +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ let A³; define A³ as class A⁵()(x) { val x²; constructor A⁴ { define x² as val x³ = x; end } }; end +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— + +let a = A()(1) +//│ a = A() + +:sir +a.x +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ a¹.x﹖ +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ = 1 + +:sir +a.A#x +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ a¹.x³ +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ = 1 + +:sir +A::x +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ let lambda⁴; define lambda⁴ as fun lambda⁵(self) { return self.x³(...args¹) }; lambda⁵ +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ = fun + +// * Note: no symbol info here, yet +:sir +case A as a then a.x +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ let lambda⁶; +//│ define lambda⁶ as fun lambda⁷(caseScrut) { +//│ let a; +//│ match caseScrut +//│ A⁵ => +//│ set a = caseScrut; +//│ return a.x﹖ +//│ else +//│ throw new globalThis⁰.Error⁰("match error") +//│ end +//│ }; +//│ lambda⁷ +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ = fun + + +// :ssjs +:sir +:lift +fun foo(x, y) = + class A(val u) with { val v = y } + let a = new A(x) + [a, a.A#u, a.A#v] +//│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— +//│ let A⁶, foo⁰, A$⁰; +//│ define A$⁰ as fun A$¹(isMut, y, u) { +//│ let tmp; +//│ match isMut +//│ true => +//│ set tmp = new mut A⁷(u); +//│ return tmp(y) +//│ else +//│ set tmp = new A⁷(u); +//│ return tmp(y) +//│ end +//│ }; +//│ define A⁶ as class A⁷(u)(y) { +//│ private val A$cap⁰; +//│ private val y⁰; +//│ val u⁰; +//│ val v⁰; +//│ constructor A⁸ { +//│ set y⁰ = y; +//│ define u⁰ as val u¹ = u; +//│ define v⁰ as val v¹ = y⁰; +//│ end +//│ } +//│ }; +//│ define foo⁰ as fun foo¹(x, y) { let a; set a = A$¹(false, y, x); return [a, a.u¹, a.v¹] }; +//│ end +//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— + +:expect [A(1), 1, 2] +foo(1, 2) +//│ = [A(1), 1, 2] + + +// TODO: when it's supported in the surface language, also test classes with only aux param lists, as in +// class A with +// constructor(val x) +// if new A(1) is +// A { x } then ... + + diff --git a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls index 91f95c87b4..8459e99b58 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls @@ -243,7 +243,7 @@ module Foo with //│ set tmp = +⁰(x, y); //│ return +⁰(tmp, z) //│ }; -//│ define Function$⁸ as class Function$⁹ { +//│ define Function$⁸ as class Function$⁹(y, z) { //│ private val Function$$cap⁴; //│ private val y⁰; //│ private val z⁰; @@ -500,7 +500,7 @@ fun foo(x)(y) = x + y //│ define lambda$⁰ as fun lambda$¹(x, y) { //│ return +⁰(x, y) //│ }; -//│ define Function$¹² as class Function$¹³ { +//│ define Function$¹² as class Function$¹³(x) { //│ private val Function$$cap⁶; //│ private val x¹; //│ constructor { diff --git a/hkmc2/shared/src/test/mlscript/codegen/OptMatch.mls b/hkmc2/shared/src/test/mlscript/codegen/OptMatch.mls index e1d03028c1..46318322d6 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/OptMatch.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/OptMatch.mls @@ -36,7 +36,6 @@ val isDefined = case //│ let isDefined1, lambda; //│ lambda = (undefined, function (caseScrut) { //│ if (caseScrut instanceof Some1.class) { -//│ caseScrut.value; //│ return true //│ } else if (caseScrut instanceof None1.class) { //│ return false diff --git a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls index 32ce2085a3..e902c769f5 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls @@ -58,6 +58,8 @@ foo(0, ...a) data class A(...r) let x = new A(1, 2, 3) x.r +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:A/r) +//│ ╙── The compilation result may be incorrect. //│ ═══[RUNTIME ERROR] Error: Access to required field 'r' yielded 'undefined' //│ ═══[RUNTIME ERROR] Expected: '[1, 2, 3]', got: 'undefined' //│ x = A(undefined) @@ -67,5 +69,7 @@ x.r data class A(...r) with fun getR = r new A(1, 2, 3).getR +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:A/r) +//│ ╙── The compilation result may be incorrect. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined //│ ═══[RUNTIME ERROR] Expected: '[1, 2, 3]', got: 'undefined' diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index b541e89ef5..878ca890d5 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -92,7 +92,7 @@ fun f(x) = //│ return tmp //│ end //│ }; -//│ define C⁰ as class C¹ { +//│ define C⁰ as class C¹(x) { //│ private val C$cap⁰; //│ private val x⁰; //│ constructor { @@ -126,7 +126,7 @@ fun f() = f().foo() //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let Bad⁰, Good⁰, f², tmp, Capture$scope0⁰, Bad$⁰, Good$⁰; -//│ define Capture$scope0⁰ as class Capture$scope0² { +//│ define Capture$scope0⁰ as class Capture$scope0²(z$0, w$1) { //│ constructor Capture$scope0¹ { //│ define w$1⁰ as val w$1¹ = w$1; //│ define z$0⁰ as val z$0¹ = z$0; @@ -155,10 +155,10 @@ f().foo() //│ return tmp1(scope0$cap) //│ end //│ }; -//│ define Good⁰ as class Good¹ { +//│ define Good⁰ as class Good¹()(scope0$cap, x, y) { //│ private val Good$cap⁰; -//│ private val y²; //│ private val x¹; +//│ private val y²; //│ private val scope0$cap⁰; //│ constructor Good² { //│ set scope0$cap⁰ = scope0$cap; @@ -174,7 +174,7 @@ f().foo() //│ return +⁰(tmp2, scope0$cap⁰.w$1¹) //│ } //│ }; -//│ define Bad⁰ as class Bad¹ { +//│ define Bad⁰ as class Bad¹()(scope0$cap) { //│ private val Bad$cap⁰; //│ private val scope0$cap¹; //│ constructor Bad² { @@ -291,5 +291,7 @@ fun f(x) = let res = f(0) res.a res.b +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:A/r) +//│ ╙── The compilation result may be incorrect. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined //│ res = A(_) diff --git a/hkmc2/shared/src/test/mlscript/lifter/DefnsInClass.mls b/hkmc2/shared/src/test/mlscript/lifter/DefnsInClass.mls index 35de8cfaf7..74156027b9 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/DefnsInClass.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/DefnsInClass.mls @@ -19,7 +19,7 @@ data class A(x) with //│ return tmp(A) //│ end //│ }; -//│ define B⁰ as class B¹(y, A) { +//│ define B⁰ as class B¹(y)(A) { //│ private val B$cap⁰; //│ private val A¹; //│ val y⁰; diff --git a/hkmc2/shared/src/test/mlscript/lifter/FunInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/FunInFun.mls index 6075236d78..89782a9094 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/FunInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/FunInFun.mls @@ -183,7 +183,7 @@ f(1, 2, 1000) //│ define h⁰ as fun h¹(f$cap) { //│ return f$cap.mutated$0⁰ //│ }; -//│ define Capture$f⁰ as class Capture$f² { +//│ define Capture$f⁰ as class Capture$f²(mutated$0) { //│ constructor Capture$f¹ { //│ define mutated$0¹ as val mutated$0⁰ = mutated$0; //│ end @@ -262,7 +262,7 @@ fun g() = g()(1) //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let h², f⁶, g⁶, tmp, Capture$scope0⁰, f$⁰; -//│ define Capture$scope0⁰ as class Capture$scope0² { +//│ define Capture$scope0⁰ as class Capture$scope0²(y$0) { //│ constructor Capture$scope0¹ { //│ define y$0⁰ as val y$0¹ = y$0; //│ end @@ -448,7 +448,7 @@ fun f(x) = //│ define g¹² as fun g¹³(f$cap) { //│ return f$cap.x$0⁰ //│ }; -//│ define Capture$f³ as class Capture$f⁵ { +//│ define Capture$f³ as class Capture$f⁵(x$0) { //│ constructor Capture$f⁴ { //│ define x$0¹ as val x$0⁰ = x$0; //│ end diff --git a/hkmc2/shared/src/test/mlscript/lifter/Loops.mls b/hkmc2/shared/src/test/mlscript/lifter/Loops.mls index 4401312a82..5b49ca9783 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/Loops.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/Loops.mls @@ -50,7 +50,7 @@ fun foo() = //│ define lambda⁰ as fun lambda¹(scope0$cap) { //│ return scope0$cap.x$0⁰ //│ }; -//│ define Capture$scope0⁰ as class Capture$scope0² { +//│ define Capture$scope0⁰ as class Capture$scope0²(x$0) { //│ constructor Capture$scope0¹ { //│ define x$0¹ as val x$0⁰ = x$0; //│ end diff --git a/hkmc2/shared/src/test/mlscript/lifter/ModulesObjects.mls b/hkmc2/shared/src/test/mlscript/lifter/ModulesObjects.mls index 863bf6176c..7a2382e571 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ModulesObjects.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ModulesObjects.mls @@ -44,7 +44,7 @@ foo(10) //│ return tmp //│ end //│ }; -//│ define M⁰ as class M¹ { +//│ define M⁰ as class M¹(y) { //│ private val M$cap⁰; //│ private val y⁰; //│ constructor { @@ -227,7 +227,7 @@ M.A().get //│ val x⁰; //│ constructor { //│ let scrut, tmp1; -//│ define A⁰ as class A¹ { +//│ define A⁰ as class A¹() { //│ private val A$cap⁰; //│ method get⁰ = fun get¹ { //│ return +⁰(M⁵.x¹, M⁵.x¹) diff --git a/hkmc2/shared/src/test/mlscript/lifter/Mutation.mls b/hkmc2/shared/src/test/mlscript/lifter/Mutation.mls index 468a71007b..8f4f63bc2b 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/Mutation.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/Mutation.mls @@ -13,7 +13,7 @@ fun foo() = set x = 2 //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let bar⁰, foo⁰, Capture$scope0⁰, bar$⁰; -//│ define Capture$scope0⁰ as class Capture$scope0² { +//│ define Capture$scope0⁰ as class Capture$scope0²(x$0) { //│ constructor Capture$scope0¹ { //│ define x$0⁰ as val x$0¹ = x$0; //│ end diff --git a/hkmc2/shared/src/test/mlscript/optim/AbortivePrefix.mls b/hkmc2/shared/src/test/mlscript/opt/AbortivePrefix.mls similarity index 100% rename from hkmc2/shared/src/test/mlscript/optim/AbortivePrefix.mls rename to hkmc2/shared/src/test/mlscript/opt/AbortivePrefix.mls From d822a5439e69f53c12d294abc08b6db41bc29bde Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 14 Apr 2026 00:51:04 +0800 Subject: [PATCH 523/654] update tests --- hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls | 2 +- hkmc2/shared/src/test/mlscript/codegen/Spreads.mls | 4 ++-- hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls index 4f510fd4ff..6381edc5c8 100644 --- a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls +++ b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls @@ -233,7 +233,7 @@ id(Foo)(1) // ——— ——— ——— data class FooSpd(...args) -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:FooSpd/args) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1308': mismatched param list lengths List() vs List(term:FooSpd/args) //│ ╙── The compilation result may be incorrect. FooSpd(1, 2, 3).args diff --git a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls index e902c769f5..676a066eb1 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls @@ -58,7 +58,7 @@ foo(0, ...a) data class A(...r) let x = new A(1, 2, 3) x.r -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1308': mismatched param list lengths List() vs List(term:A/r) //│ ╙── The compilation result may be incorrect. //│ ═══[RUNTIME ERROR] Error: Access to required field 'r' yielded 'undefined' //│ ═══[RUNTIME ERROR] Expected: '[1, 2, 3]', got: 'undefined' @@ -69,7 +69,7 @@ x.r data class A(...r) with fun getR = r new A(1, 2, 3).getR -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1308': mismatched param list lengths List() vs List(term:A/r) //│ ╙── The compilation result may be incorrect. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined //│ ═══[RUNTIME ERROR] Expected: '[1, 2, 3]', got: 'undefined' diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index 878ca890d5..8691abb217 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -291,7 +291,7 @@ fun f(x) = let res = f(0) res.a res.b -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1306': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1308': mismatched param list lengths List() vs List(term:A/r) //│ ╙── The compilation result may be incorrect. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined //│ res = A(_) From 8bc8c8619bd8467eaaf077f8543359e3279296e6 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 14 Apr 2026 14:52:23 +0800 Subject: [PATCH 524/654] wip: logic for constructor shape propagation --- .../src/test/mlscript-compile/Shape.mls | 4 +- .../src/test/mlscript-compile/ShapeSet.mls | 14 +- .../mlscript-compile/SpecializeHelpers.mls | 161 ++++++++++---- .../test/mlscript/block-staging/ShapeProp.mls | 206 +++++++++++------- 4 files changed, 264 insertions(+), 121 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index c02987ac90..ab463352f9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -16,14 +16,14 @@ class Shape extends CachedHash with Dyn() Lit(val l: Literal) Arr(val shapes: Array[Shape]) - Class(val sym: ConcreteClassSymbol, val params: Array[Shape]) // TODO: track the auxParams as well + Class(val sym: ConcreteClassSymbol, val fields: Array[Shape]) // TODO: track the auxParams as well fun show(s: Shape) = if s is Dyn then "Dyn" Lit(lit) then "Lit(" + printer.showLiteral(lit) + ")" Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" - Class(sym, params) then "Class(" + printer.showSymbol(sym) + ", [" + params.map(show).join(", ") + "])" + Class(sym, fields) then "Class(" + printer.showSymbol(sym) + ", {" + [...fields.entries()].map(e => e.0 + ": " + show(e.1)).join(", ") + "})" fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 2e32956553..715cae91ef 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -5,7 +5,7 @@ import "./Predef.mls" import "./Shape.mls" import "./StrOps.mls" -open Block {ConcreteClassSymbol} +open Block {ConcreteClassSymbol, Path, Symbol} open Shape {Dyn, Lit, Arr, Class} open Predef open Option @@ -69,6 +69,18 @@ fun mkClass(sym: ConcreteClassSymbol, params: Array[ShapeSet]) = .map(Class(sym, _)) |> liftMany +fun mkClassFromMap(sym: ConcreteClassSymbol, paramsMap: Map[String, ShapeSet]) = + if sym is ConcreteClassSymbol(name, value, paramsOpt, auxParams) then + let entries = [...paramsMap.entries()] + let keys = entries.map(a => Symbol(a.0)) + let params = entries.map(_.1) + let newSym = ConcreteClassSymbol(name, value, Some(keys), auxParams) + params + .map(_.shapeset.values().toArray()) + |> prod + .map(Class(newSym, _)) + |> liftMany + // helper functions fun filterSet(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index ebcde8b268..08f66dec4b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -45,15 +45,16 @@ fun showCtxPath(p) = if p is // FIXME class Ctx( val ctx: Map[String, ShapeSet], + val ctorCtx: Map[String, ShapeSet] val allocs: Array[Block.Symbol], val currentThis: Option[Block.ClassSymbol], - val thisShape: ShapeSet + val thisShape: ShapeSet, ) with fun get(path) = let ps = showCtxPath(path) if ctx.has(ps) then Some(ctx.get(ps)) else None - fun clone = Ctx(new Map(ctx), allocs, currentThis, thisShape) + fun clone = Ctx(new Map(ctx), new Map(ctorCtx), allocs, currentThis, thisShape) fun add(path, ss) = let ps = showCtxPath(path) if ctx.has(ps) then @@ -61,10 +62,17 @@ class Ctx( else ctx.set(ps, ss) this + fun addCtor(ps, ss) = + if ctorCtx.has(ps) then + ctorCtx.set(ps, union(ctorCtx.get(ps), ss)) + else + ctorCtx.set(ps, ss) + this module Ctx with - fun empty() = Ctx(new Map(), mut [], None, mkBot()) + fun empty() = Ctx(new Map(), new Map(), mut [], None, mkBot()) -fun sov(v): ShapeSet = // compute the shape of a value +// shape of value +fun sov(v): ShapeSet = if typeof(v) is "number" then mkLit(v) "string" then mkLit(v) @@ -74,16 +82,16 @@ fun sov(v): ShapeSet = // compute the shape of a value else if not (v is undefined) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then let meta = v.constructor.(Symbols.definitionMetadata) let clsName = meta.1 - let paramsOpt = meta.2 - let symParams = if paramsOpt is - undefined then None - else Some(paramsOpt.map(p => if p is null then Symbol("") else Symbol(p))) - let classSymbol = ConcreteClassSymbol(clsName, v.constructor, symParams, []) - let args = if paramsOpt is - undefined then [] - else paramsOpt.map(p => sov(v.(p))) - mkClass(classSymbol, args) - else throw Error("sov on unknown value" + v.toString()) + // if class field is not public, then definitionMetadata in the corresponding field is null + let paramsOpt = if meta.length < 3 + then None + else Some(meta.2.map(p => if p is null then Symbol("") else Symbol(p))) + let classSymbol = ConcreteClassSymbol(clsName, v.constructor, paramsOpt, []) + let argsMap = new Map() + if not (paramsOpt is None) do + meta.2.forEach((n, _, _) => argsMap.set(n, sov(v.(n)))) + mkClassFromMap(classSymbol, argsMap) + else throw Error("unknown value from sov", v.toString()) // shape of path fun sop(ctx, p): ShapeSet = if ctx.get(p) is @@ -112,6 +120,7 @@ fun isStagedClass(c) = let genMapName = getGenMapName(clsName, true) not (actualClass.(genMapName) is undefined) +// split a shapeset of class symbols into known ones and unknown ones fun fsplit(pss) = let knownMap = new Map() let unkShape = foldl((acc, s) => if s is @@ -127,16 +136,27 @@ fun fsplit(pss) = // where blk is the block needed to construct the result res (End() if not needed) and s is the shape fun sor(ctx, r) = if r is Path and - let s = sop(ctx, r) + let s = sop(ctx, r) // If a path has a statically known shape, then just replace it with the known value staticSet(s) and val2path(valOfSet(s), ctx.allocs) is [blk, res] then [blk, res, s] else [End(), r, s] - Instantiate(cls, args) then // FIXME: propagate through the constructor as well + Instantiate(cls, args) and let clsSymb = if cls is ValueRef(symb) and symb is ClassSymbol then symb // class defined globally Select(_, symb) and symb is ClassSymbol then symb // class defined in a module else throw Error("Instantiate with non-ClassSymbol in shape propagation: " + cls.toString()) - [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] + let argsShape = args.map(a => sop(ctx, a.value)) + isStagedClass(clsSymb.value) and + let actualClass = getActualClass(clsSymb.value) + let clsName = clsSymb.name + let cacheName = getCacheName(clsName, true) + let cache = actualClass.(cacheName) + not (cache is undefined) then + let res = SpecializeHelpers.specializeCtor(cache, clsSymb, argsShape, ctx) + [End(), r, res] + else [End(), r, mkDyn()] + else + [End(), r, mkClass(clsSymb, argsShape)] Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] Call(f, args) then fun lit(l) = [End(), ValueLit(l), mkLit(l)] @@ -149,11 +169,18 @@ fun sor(ctx, r) = if r is Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ClassSymbol then // class within module - [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] + [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] // FIXME ValueRef(clsSymb) and clsSymb is ClassSymbol then // global class - [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] - ValueRef(Symbol("super")) then - print("superman detected!") + if isStagedClass(clsSymb.value) then + let actualClass = getActualClass(clsSymb.value) + let clsName = actualClass.(Symbols.definitionMetadata).1 + let cacheName = getCacheName(clsName, true) + + if not (actualClass.(cacheName) is undefined) then + let res = SpecializeHelpers.specializeCtor(actualClass.(cacheName), clsSymb, argShapes, ctx) + [End(), r, res] + else [End(), r, mkDyn()] // TODO make unstaged object shape + else [End(), r, mkDyn()] // TODO make unstaged object shape ValueRef(symb) and // built-in or top-level let name = symb.name args is @@ -210,7 +237,28 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = let knownMap = splitted.0 let unkShape = splitted.1 let isRet = xOpt is None - if knownMap.size is 0 and + + if knownMap.size is 1 and unkShape.isEmpty() and + // If it's certainly a known class, generate the generated method call directly without matching + let entry = [...knownMap.entries()].0 + let C_i = entry.0 + let ss_i = entry.1 + let actualClass = getActualClass(C_i.value) + let clsName = actualClass.(Symbols.definitionMetadata).1 + let genMapName = getGenMapName(clsName, true) + let genMap = actualClass.(genMapName) + let f_gen = genMap.get(f) + let generated = f_gen(ss_i)(...argShapes) + let retSym = generated.0 + let retShape = generated.1 + let callRes = Call(Select(ValueRef(symb), Symbol(retSym)), args) + isRet then + [concat(End(), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] + else + let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") + let resBlock = prop(ctx.add(ValueRef(x), retShape, false), restBlock) + [concat(End(), Assign(x, callRes, resBlock.0)), resBlock.1] + else if knownMap.size is 0 and let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) isRet then [concat(End(), Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] @@ -238,7 +286,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = let resBlock = prop(ctx.add(ValueRef(x), retShape), restBlock) [Arm(Cls(C_i, ValueRef(symb)), Assign(x, callRes, resBlock.0)), resBlock.1] ) - let armsAcc = armsRet.map(x => x.0) + let armsAcc = armsRet.map(_.0) let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) @@ -248,7 +296,10 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") let resBlock = prop(ctx.add(ValueRef(x), mkDyn()), restBlock) [Some(Assign(x, dfltMatch, resBlock.0)), resBlock.1] - let matchBody = Match(ValueRef(symb), armsAcc, dfltRet.0, if isRet then End() else restBlock) + let matchBody = if knownMap.size == 1 and unkShape.isEmpty() then + armsAcc.0.body + else + Match(ValueRef(symb), armsAcc, dfltRet.0, if isRet then End() else restBlock) let totalRetShape = union(totalStagedRetShape, dfltRet.1) [matchBody, totalRetShape] @@ -261,11 +312,18 @@ fun prop(ctx, b) = if b is Scoped(symbols, rest) then symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] - let newCtx = Ctx(new Map(ctx.ctx), newAllocs, ctx.currentThis, ctx.thisShape) + let newCtx = Ctx(new Map(ctx.ctx), ctx.ctorCtx, newAllocs, ctx.currentThis, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) then dispatchMethodCall(ctx, Some(x), None, symb, f, args, restBlock) + Define(ValDefn(opt, sym, rhs), restBlock) and + sor(ctx, rhs) is [blk, r1, s1] then + let newCtx = ctx.add(ValueRef(sym), s1) + if opt is Some(c) do + newCtx.addCtor(sym.name, s1) + if prop(newCtx, restBlock) is [b2, s2] then + [concat(blk, Define(ValDefn(opt, sym, r1), b2)), s2] Assign(x, r, restBlock) and sor(ctx, r) is [blk, r1, s1] then if prop(ctx.add(ValueRef(x), s1), restBlock) is [b2, s2] then @@ -326,41 +384,62 @@ fun buildShapeSetName(ss: ShapeSet): Str = if vals.length is 1 then buildShapeName(vals.0) else "Union_" + vals.map(buildShapeName).join("_") + "_end" -fun specializeName(funName, shapes, virtualCall) = - let virtualSuffix = "'" +fun specializeName(funName, shapes) = if shapes.every(_.every(_.isDyn())) then funName - else funName - + if virtualCall then virtualSuffix else "" - + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("_dot_") + else funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("_dot_") fun specialize(cache: FunCache, funName, dflt, shapes) = - let newName = specializeName(funName, shapes, false) + let newName = specializeName(funName, shapes) if cache.getFun(newName) is Some(x) then [x.0.sym.name, x.1] None and let defn = dflt() defn is FunDefn(Symbol(_), ps, body) then - let isMethod = shapes.length > ps.length // TODO: clean up + let isMethod = cache.owner is ConcreteClassSymbol let paramShapes = if isMethod then shapes.slice(1) else shapes - let newPs = if isMethod then [ [Symbol("_this"), ...ps.(0)], ...ps.slice(1) ] else ps let ctx = if isMethod then - let clsSymb = shapes.(0).(0).values().0.sym - Ctx(new Map(), mut [], Some(clsSymb), shapes.(0).(0)) + let clsSymb = cache.owner + Ctx(new Map(), new Map(), mut [], Some(clsSymb), shapes.(0).(0)) else Ctx.empty() if isMethod do ctx.add(ValueRef(Symbol("_this")), shapes.(0).(0)) + ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) - cache.setFun(newName, [FunDefn(Symbol(newName), newPs, body), mkDyn()]) - let propFun = prop - let res = propFun(ctx, body) + + cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) + let res = prop(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) - let finalBody = if staticSet(res.1) then + + let actualRetShape = res.1 + + let finalBody = if staticSet(actualRetShape) then let allocs = mut [] - let v2p = val2path(valOfSet(res.1), allocs) + let v2p = val2path(valOfSet(actualRetShape), allocs) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) else bodyWithScoped - let entry = cache.setFun(newName, [FunDefn(Symbol(newName), newPs, finalBody), res.1]) + let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, finalBody), actualRetShape]) [entry.0.sym.name, entry.1] else throw Error("cache error") + +fun specializeCtor(cache: FunCache, classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], ctx: Ctx) = + let newName = specializeName("class$ctor$", [argShapes]) + if cache.getFun(newName) is + Some(x) then [x.0.sym.name, x.1] + None and + let actualClass = getActualClass(classSymb.value) + let defn = actualClass."class$ctor$_instr"() + defn is FunDefn(Symbol(_), ps, body) then + ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), argShapes.(j)))) + + if not (actualClass."preCtor$_instr" is undefined) and actualClass."preCtor$_instr"() is FunDefn(_, _, preCtorBody) do + prop(ctx, preCtorBody) + if not (actualClass."class$ctor$_instr" is undefined) and actualClass."class$ctor$_instr"() is FunDefn(_, _, ctorBody) do + prop(ctx, ctorBody) + + mkClassFromMap(cache.owner, ctx.ctorCtx) + + else throw Error("cache error") + + class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with val printer = Printer(Some(owner)) fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 7c0b269dc6..4576ddd418 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -108,8 +108,15 @@ print(TestIf."cache$TestIf") //│ > module TestIf with //│ > () //│ > fun test() = "else" -//│ > fun f_C_Lit2(x) = "C(2)" -//│ > fun f_C_Lit3(x) = "C" +//│ > fun f(x) = +//│ > let {arg_C_0_} +//│ > if x is +//│ > C then +//│ > arg_C_0_ = x.x +//│ > if arg_C_0_ is +//│ > 2 then "C(2)" +//│ > else "C" +//│ > else "else" //│ > fun f_Lit2(x) = "else" :noSanityCheck @@ -133,36 +140,44 @@ print(TestIf2."cache$TestIf2") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test_gen' -//│ ║ l.129: TestIf2.test_gen() +//│ ║ l.136: TestIf2.test_gen() //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test2_gen' -//│ ║ l.130: TestIf2.test2_gen(mkDyn()) +//│ ║ l.137: TestIf2.test2_gen(mkDyn()) //│ ╙── ^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test3_gen' -//│ ║ l.131: TestIf2.test3_gen() +//│ ║ l.138: TestIf2.test3_gen() //│ ╙── ^^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestIf2. -//│ ║ l.132: print(TestIf2."cache$TestIf2") +//│ ║ l.139: print(TestIf2."cache$TestIf2") //│ ╙── ^^^^^^^ //│ > module TestIf2 with //│ > () -//│ > fun test() = 3 -//│ > fun f_C_Lit2(x) = 3 +//│ > fun test() = +//│ > let {tmp1} +//│ > tmp1 = C(2) +//│ > TestIf2.f(tmp1) +//│ > fun f(x) = +//│ > let {y, tmp} +//│ > if x is +//│ > C then +//│ > y = x.n +//│ > tmp = () +//│ > y + 1 +//│ > else +//│ > y = 0 +//│ > tmp = () +//│ > 1 //│ > fun test2(dyn) = //│ > let {tmp2} //│ > tmp2 = C(dyn) -//│ > TestIf2.f_C_Dyn(tmp2) -//│ > fun f_C_Dyn(x) = -//│ > let {y, tmp} -//│ > y = x.n -//│ > tmp = () -//│ > y + 1 +//│ > TestIf2.f(tmp2) //│ > fun test3() = 1 //│ > fun f_Lit0(x) = 1 @@ -180,12 +195,12 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'LinearAlgebra' does not contain member 'test_gen' -//│ ║ l.178: LinearAlgebra.test_gen(mkDyn()) +//│ ║ l.193: LinearAlgebra.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type LinearAlgebra. -//│ ║ l.179: print(LinearAlgebra."cache$LinearAlgebra") +//│ ║ l.194: print(LinearAlgebra."cache$LinearAlgebra") //│ ╙── ^^^^^^^^^^^^^ //│ > module LinearAlgebra with //│ > () @@ -230,6 +245,9 @@ staged class L3(val y) with class L4(val y) with fun call(x) = x + y +staged module Test with + fun test() = (new L1(1)).y + staged module M with fun twice(f, x) = f.call(f.call(x)) fun pick(x, y, b) = if b then x else y @@ -243,12 +261,12 @@ print(M."cache$M") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' -//│ ║ l.241: M.test_gen(mkDyn()) +//│ ║ l.259: M.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.242: print(M."cache$M") +//│ ║ l.260: print(M."cache$M") //│ ╙── ^ //│ > module M with //│ > () @@ -258,48 +276,43 @@ print(M."cache$M") //│ > y = 11 //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) -//│ > tmp4 = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > tmp4 = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Dyn(tmp2, tmp3, b) //│ > tmp5 = new L4(4) -//│ > m = M.pick_Union_L2_Lit2_L3_Lit3_end_L4_Lit4_Dyn(tmp4, tmp5, b) -//│ > tmp6 = M.twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(m, 5) +//│ > m = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_L4_Lit4_Dyn(tmp4, tmp5, b) +//│ > tmp6 = M.twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_L4_Lit4_end_Lit5(m, 5) //│ > tmp6 + y //│ > fun twice_L1_Lit1_Lit5(f, x) = 11 -//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = -//│ > let {obj_1, obj_2} +//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Dyn(x, y, b) = //│ > if b is -//│ > true then -//│ > obj_1 = new L2(2) -//│ > obj_1 -//│ > else -//│ > obj_2 = new L3(3) -//│ > obj_2 -//│ > fun pick_Union_L2_Lit2_L3_Lit3_end_L4_Lit4_Dyn(x, y, b) = -//│ > let {obj_3} +//│ > true then x +//│ > else y +//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_L4_Lit4_Dyn(x, y, b) = +//│ > let {obj_1} //│ > if b is //│ > true then x //│ > else -//│ > obj_3 = new L4(4) -//│ > obj_3 -//│ > fun twice_Union_L2_Lit2_L3_Lit3_L4_Lit4_end_Lit5(f, x) = +//│ > obj_1 = new L4(4) +//│ > obj_1 +//│ > fun twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_L4_Lit4_end_Lit5(f, x) = //│ > let {tmp} //│ > if f is //│ > L2 then -//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > tmp = f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) //│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Lit7(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Lit7(tmp) +//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) +//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) //│ > else f.call(tmp) //│ > L3 then -//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > tmp = f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Lit5(x) //│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) +//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) //│ > else f.call(tmp) //│ > else //│ > tmp = f.call(x) //│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Dyn(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Dyn(tmp) +//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) +//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) //│ > else f.call(tmp) //│ > f.call(tmp) @@ -308,68 +321,107 @@ print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") //│ > class L1(y) with //│ > () -//│ > fun call_L1_Lit1_dot_Lit5(_this, x) = 8 -//│ > fun call_L1_Lit1_dot_Lit8(_this, x) = 11 +//│ > fun call_L1_Lit1_dot_Lit5(x) = 8 +//│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () -//│ > fun call_L2_Lit2_dot_Lit5(_this, x) = 7 -//│ > fun call_L2_Lit2_dot_Lit7(_this, x) = 9 -//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(_this, x) = x + y -//│ > fun call_L2_Lit2_dot_Dyn(_this, x) = x + y +//│ > fun call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) = x + y +//│ > fun call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(x) = x + y staged class A(val x: Int) with - fun f(y: Int) = this.x + y + fun f(y: Int) = x + y staged class B(val x: Int) with - fun f(y: A) = x + fun f(y: A) = x + y.f(x) staged module TestThis with - fun test(x) = B(x).f(A(x)) + fun test(x) = B(x).f(A(1)) -:fixme -TestThis.test_gen(mkDyn()) +TestThis.test_gen(mkDyn(1)) print(TestThis."cache$TestThis") +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.329: TestThis.test_gen(mkDyn()) +//│ ║ l.339: TestThis.test_gen(mkDyn(1)) //│ ╙── ^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: newDefn (Resolver.scala:662) +//│ ╔══[COMPILATION ERROR] Expected 0 arguments, got 1 +//│ ║ l.339: TestThis.test_gen(mkDyn(1)) +//│ ╙── ^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.330: print(TestThis."cache$TestThis") +//│ ║ l.340: print(TestThis."cache$TestThis") //│ ╙── ^^^^^^^^ //│ > module TestThis with //│ > () //│ > fun test(x) = //│ > let {tmp, tmp1} //│ > tmp = B(x) -//│ > tmp1 = A(x) -//│ > if tmp is -//│ > B then tmp.f_B_Dyn_dot_A_Dyn(tmp1) +//│ > tmp1 = A(1) +//│ > tmp.f_B_Dyn_dot_A_Dyn(tmp1) -print(B.class."cache$B") -//│ > undefined - -print(B.class.f_instr()) -//│ > FunDefn(Symbol("f"), [[Symbol("y")]], Return(Select(ValueRef(ConcreteClassSymbol("B", fun B { class: class B { class$cache$B: class B(x) with +print(A.class."class$cache$A") +print(B.class."class$cache$B") +//│ > class A(x) with +//│ > () +//│ > fun f_A_Dyn_dot_Dyn(y) = x + y +//│ > class B(x) with //│ > () -//│ > fun f_B_Dyn_dot_A_Dyn(_this, y) = x, class$generatorMap$B: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), [])), Symbol("x")), false)) +//│ > fun f_B_Dyn_dot_A_Dyn(y) = +//│ > let {tmp} +//│ > tmp = y.f_A_Dyn_dot_Dyn(x) +//│ > x + tmp + +staged class B(val y) -:todo staged class D(val x) extends B(x+1) with - val y = 1 fun f() = 42 -//│ FAILURE: Unexpected lack of error to fix -staged class C1(val n) with - fun f() = n +staged module M with + fun f() = new D(2) -staged class C2(val n) with - fun f() = n +M.f_gen() +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) +//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' +//│ ║ l.384: M.f_gen() +//│ ╙── ^^^^^^ +//│ = [ +//│ "f", +//│ {Class(ConcreteClassSymbol("D", fun D { class: class D { class$cache$D: class D(x) extends B(x + 1) with \ +//│ () \ +//│ , class$generatorMap$D: Map(1) {"f" => fun f_gen} } }, Some([Symbol("y"), Symbol("x")]), []), [Lit(3), Lit(2)])} +//│ ] -staged module M with - fun pick(b) = if b then C1(2) else C2(3) - fun test(b) = pick(b).f() -C1.class."cache$C1" +staged class D(val z) +staged class C(val x, val y) extends D(x + 2) -class D(val z) +:noSanityCheck +staged module M with + fun f() = new C(1, 2) + fun test() = f().z -class C(val x, val y) extends D(x + 1) +M.f_gen() +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) +//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' +//│ ║ l.407: M.f_gen() +//│ ╙── ^^^^^^ +//│ = [ +//│ "f", +//│ {Class(ConcreteClassSymbol("C", fun C { class: class C { class$cache$C: class C(x, y) extends D(x + 2) with \ +//│ () \ +//│ , class$generatorMap$C: Map(0) {} } }, Some([Symbol("z"), Symbol("x"), Symbol("y")]), []), [Lit(3), Lit(1), Lit(2)])} +//│ ] + +// FIXME +M.test_gen() +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) +//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' +//│ ║ l.421: M.test_gen() +//│ ╙── ^^^^^^^^^ +//│ = ["test", {Lit(3)}] From 7cca05c82051b3a2de8acca228ee4d83a65c6227 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 14 Apr 2026 15:11:20 +0800 Subject: [PATCH 525/654] clear the ctx during ctor specialize --- .../mlscript-compile/SpecializeHelpers.mls | 4 +- .../test/mlscript/block-staging/ShapeProp.mls | 112 +++++++----------- 2 files changed, 49 insertions(+), 67 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 08f66dec4b..25ac600815 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -55,6 +55,7 @@ class Ctx( if ctx.has(ps) then Some(ctx.get(ps)) else None fun clone = Ctx(new Map(ctx), new Map(ctorCtx), allocs, currentThis, thisShape) + fun clearCtx = Ctx(new Map(), new Map(ctorCtx), allocs, currentThis, thisShape) fun add(path, ss) = let ps = showCtxPath(path) if ctx.has(ps) then @@ -420,7 +421,8 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = [entry.0.sym.name, entry.1] else throw Error("cache error") -fun specializeCtor(cache: FunCache, classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], ctx: Ctx) = +fun specializeCtor(cache: FunCache, classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], oldCtx: Ctx) = + let ctx = oldCtx.clearCtx let newName = specializeName("class$ctor$", [argShapes]) if cache.getFun(newName) is Some(x) then [x.0.sym.name, x.1] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 4576ddd418..894310f810 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -246,87 +246,68 @@ class L4(val y) with fun call(x) = x + y staged module Test with - fun test() = (new L1(1)).y + fun test() = L2(1) + +Test.test_gen() +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) +//│ ╔══[COMPILATION ERROR] Module 'Test' does not contain member 'test_gen' +//│ ║ l.251: Test.test_gen() +//│ ╙── ^^^^^^^^^ +//│ = [ +//│ "test", +//│ {Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ +//│ () \ +//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)])} +//│ ] staged module M with fun twice(f, x) = f.call(f.call(x)) fun pick(x, y, b) = if b then x else y fun test(b) = - let y = twice(new L1(1), 5) - let m = pick(pick(new L2(2), new L3(3), b), new L4(4), b) - twice(m, 5) + y + pick(new L2(2), new L3(3), b) + // let y = twice(new L1(1), 5) + // let m = pick(pick(new L2(2), new L3(3), b), new L4(4), b) + // twice(m, 5) + y M.test_gen(mkDyn()) print(M."cache$M") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' -//│ ║ l.259: M.test_gen(mkDyn()) +//│ ║ l.273: M.test_gen(mkDyn()) //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.260: print(M."cache$M") +//│ ║ l.274: print(M."cache$M") //│ ╙── ^ //│ > module M with //│ > () //│ > fun test(b) = -//│ > let {y, m, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6} -//│ > tmp1 = new L1(1) -//│ > y = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > tmp4 = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Dyn(tmp2, tmp3, b) -//│ > tmp5 = new L4(4) -//│ > m = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_L4_Lit4_Dyn(tmp4, tmp5, b) -//│ > tmp6 = M.twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_L4_Lit4_end_Lit5(m, 5) -//│ > tmp6 + y -//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 -//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Dyn(x, y, b) = -//│ > if b is -//│ > true then x -//│ > else y -//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_L4_Lit4_Dyn(x, y, b) = -//│ > let {obj_1} +//│ > let {tmp1, tmp2} +//│ > tmp1 = new L2(2) +//│ > tmp2 = new L3(3) +//│ > M.pick_L2_Lit2_L3_Lit3_Dyn(tmp1, tmp2, b) +//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > let {obj_2, obj_3} //│ > if b is -//│ > true then x -//│ > else -//│ > obj_1 = new L4(4) -//│ > obj_1 -//│ > fun twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_L4_Lit4_end_Lit5(f, x) = -//│ > let {tmp} -//│ > if f is -//│ > L2 then -//│ > tmp = f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) -//│ > if f is -//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) -//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) -//│ > else f.call(tmp) -//│ > L3 then -//│ > tmp = f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Lit5(x) -//│ > if f is -//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) -//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) -//│ > else f.call(tmp) +//│ > true then +//│ > obj_2 = new L2(2) +//│ > obj_2 //│ > else -//│ > tmp = f.call(x) -//│ > if f is -//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) -//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) -//│ > else f.call(tmp) -//│ > f.call(tmp) +//│ > obj_3 = new L3(3) +//│ > obj_3 print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") //│ > class L1(y) with //│ > () -//│ > fun call_L1_Lit1_dot_Lit5(x) = 8 -//│ > fun call_L1_Lit1_dot_Lit8(x) = 11 +//│ > //│ > class L2(y) with //│ > () -//│ > fun call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) = x + y -//│ > fun call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(x) = x + y +//│ > staged class A(val x: Int) with fun f(y: Int) = x + y @@ -341,17 +322,17 @@ print(TestThis."cache$TestThis") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.339: TestThis.test_gen(mkDyn(1)) +//│ ║ l.320: TestThis.test_gen(mkDyn(1)) //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 0 arguments, got 1 -//│ ║ l.339: TestThis.test_gen(mkDyn(1)) +//│ ║ l.320: TestThis.test_gen(mkDyn(1)) //│ ╙── ^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.340: print(TestThis."cache$TestThis") +//│ ║ l.321: print(TestThis."cache$TestThis") //│ ╙── ^^^^^^^^ //│ > module TestThis with //│ > () @@ -359,18 +340,18 @@ print(TestThis."cache$TestThis") //│ > let {tmp, tmp1} //│ > tmp = B(x) //│ > tmp1 = A(1) -//│ > tmp.f_B_Dyn_dot_A_Dyn(tmp1) +//│ > tmp.f_B_Dyn_dot_A_Lit1(tmp1) print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with //│ > () -//│ > fun f_A_Dyn_dot_Dyn(y) = x + y +//│ > fun f_A_Lit1_dot_Dyn(y) = x + y //│ > class B(x) with //│ > () -//│ > fun f_B_Dyn_dot_A_Dyn(y) = +//│ > fun f_B_Dyn_dot_A_Lit1(y) = //│ > let {tmp} -//│ > tmp = y.f_A_Dyn_dot_Dyn(x) +//│ > tmp = y.f_A_Lit1_dot_Dyn(x) //│ > x + tmp staged class B(val y) @@ -385,13 +366,13 @@ M.f_gen() //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' -//│ ║ l.384: M.f_gen() +//│ ║ l.365: M.f_gen() //│ ╙── ^^^^^^ //│ = [ //│ "f", //│ {Class(ConcreteClassSymbol("D", fun D { class: class D { class$cache$D: class D(x) extends B(x + 1) with \ //│ () \ -//│ , class$generatorMap$D: Map(1) {"f" => fun f_gen} } }, Some([Symbol("y"), Symbol("x")]), []), [Lit(3), Lit(2)])} +//│ , class$generatorMap$D: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), []), [Lit(2)])} //│ ] @@ -408,20 +389,19 @@ M.f_gen() //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' -//│ ║ l.407: M.f_gen() +//│ ║ l.388: M.f_gen() //│ ╙── ^^^^^^ //│ = [ //│ "f", //│ {Class(ConcreteClassSymbol("C", fun C { class: class C { class$cache$C: class C(x, y) extends D(x + 2) with \ //│ () \ -//│ , class$generatorMap$C: Map(0) {} } }, Some([Symbol("z"), Symbol("x"), Symbol("y")]), []), [Lit(3), Lit(1), Lit(2)])} +//│ , class$generatorMap$C: Map(0) {} } }, Some([Symbol("x"), Symbol("y")]), []), [Lit(1), Lit(2)])} //│ ] -// FIXME M.test_gen() //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' -//│ ║ l.421: M.test_gen() +//│ ║ l.401: M.test_gen() //│ ╙── ^^^^^^^^^ -//│ = ["test", {Lit(3)}] +//│ = ["test", {}] From 5681d5948538c6cc2fe2d1ba27363099716f45d0 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 14 Apr 2026 15:34:15 +0800 Subject: [PATCH 526/654] use mutable ctx instead --- .../mlscript-compile/SpecializeHelpers.mls | 7 +-- .../test/mlscript/block-staging/ShapeProp.mls | 49 ++++++------------- 2 files changed, 18 insertions(+), 38 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 25ac600815..220c9f9e05 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -55,7 +55,6 @@ class Ctx( if ctx.has(ps) then Some(ctx.get(ps)) else None fun clone = Ctx(new Map(ctx), new Map(ctorCtx), allocs, currentThis, thisShape) - fun clearCtx = Ctx(new Map(), new Map(ctorCtx), allocs, currentThis, thisShape) fun add(path, ss) = let ps = showCtxPath(path) if ctx.has(ps) then @@ -421,8 +420,8 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = [entry.0.sym.name, entry.1] else throw Error("cache error") -fun specializeCtor(cache: FunCache, classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], oldCtx: Ctx) = - let ctx = oldCtx.clearCtx +fun specializeCtor(cache: FunCache, classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], ctx: Ctx) = + ctx.ctx.clear() let newName = specializeName("class$ctor$", [argShapes]) if cache.getFun(newName) is Some(x) then [x.0.sym.name, x.1] @@ -434,8 +433,10 @@ fun specializeCtor(cache: FunCache, classSymb: ConcreteClassSymbol, argShapes: A if not (actualClass."preCtor$_instr" is undefined) and actualClass."preCtor$_instr"() is FunDefn(_, _, preCtorBody) do prop(ctx, preCtorBody) + // print(classSymb.name, ctx.ctorCtx) if not (actualClass."class$ctor$_instr" is undefined) and actualClass."class$ctor$_instr"() is FunDefn(_, _, ctorBody) do prop(ctx, ctorBody) + // print(classSymb.name, ctx.ctorCtx) mkClassFromMap(cache.owner, ctx.ctorCtx) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 894310f810..791ae7c4ca 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -288,16 +288,11 @@ print(M."cache$M") //│ > let {tmp1, tmp2} //│ > tmp1 = new L2(2) //│ > tmp2 = new L3(3) -//│ > M.pick_L2_Lit2_L3_Lit3_Dyn(tmp1, tmp2, b) -//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = -//│ > let {obj_2, obj_3} +//│ > M.pick_Dyn_Union_L3_Lit2_L3_Lit3_end_Dyn(tmp1, tmp2, b) +//│ > fun pick_Dyn_Union_L3_Lit2_L3_Lit3_end_Dyn(x, y, b) = //│ > if b is -//│ > true then -//│ > obj_2 = new L2(2) -//│ > obj_2 -//│ > else -//│ > obj_3 = new L3(3) -//│ > obj_3 +//│ > true then x +//│ > else y print(L1.class."class$cache$L1") @@ -322,17 +317,17 @@ print(TestThis."cache$TestThis") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.320: TestThis.test_gen(mkDyn(1)) +//│ ║ l.315: TestThis.test_gen(mkDyn(1)) //│ ╙── ^^^^^^^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: newDefn (Resolver.scala:662) //│ ╔══[COMPILATION ERROR] Expected 0 arguments, got 1 -//│ ║ l.320: TestThis.test_gen(mkDyn(1)) +//│ ║ l.315: TestThis.test_gen(mkDyn(1)) //│ ╙── ^^^ //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: traverse (Resolver.scala:349) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.321: print(TestThis."cache$TestThis") +//│ ║ l.316: print(TestThis."cache$TestThis") //│ ╙── ^^^^^^^^ //│ > module TestThis with //│ > () @@ -340,19 +335,16 @@ print(TestThis."cache$TestThis") //│ > let {tmp, tmp1} //│ > tmp = B(x) //│ > tmp1 = A(1) -//│ > tmp.f_B_Dyn_dot_A_Lit1(tmp1) +//│ > tmp.f(tmp1) print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with //│ > () -//│ > fun f_A_Lit1_dot_Dyn(y) = x + y +//│ > //│ > class B(x) with //│ > () -//│ > fun f_B_Dyn_dot_A_Lit1(y) = -//│ > let {tmp} -//│ > tmp = y.f_A_Lit1_dot_Dyn(x) -//│ > x + tmp +//│ > staged class B(val y) @@ -366,13 +358,13 @@ M.f_gen() //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' -//│ ║ l.365: M.f_gen() +//│ ║ l.357: M.f_gen() //│ ╙── ^^^^^^ //│ = [ //│ "f", //│ {Class(ConcreteClassSymbol("D", fun D { class: class D { class$cache$D: class D(x) extends B(x + 1) with \ //│ () \ -//│ , class$generatorMap$D: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), []), [Lit(2)])} +//│ , class$generatorMap$D: Map(1) {"f" => fun f_gen} } }, Some([Symbol("y"), Symbol("x")]), []), [Lit(3), Lit(2)])} //│ ] @@ -385,23 +377,10 @@ staged module M with fun f() = new C(1, 2) fun test() = f().z -M.f_gen() -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' -//│ ║ l.388: M.f_gen() -//│ ╙── ^^^^^^ -//│ = [ -//│ "f", -//│ {Class(ConcreteClassSymbol("C", fun C { class: class C { class$cache$C: class C(x, y) extends D(x + 2) with \ -//│ () \ -//│ , class$generatorMap$C: Map(0) {} } }, Some([Symbol("x"), Symbol("y")]), []), [Lit(1), Lit(2)])} -//│ ] - M.test_gen() //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' -//│ ║ l.401: M.test_gen() +//│ ║ l.380: M.test_gen() //│ ╙── ^^^^^^^^^ -//│ = ["test", {}] +//│ = ["test", {Lit(3)}] From 4acc0552dcf9c60c97e6a42608a6eb532a6dddcb Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 14 Apr 2026 16:44:32 +0800 Subject: [PATCH 527/654] add a ctx clone to avoid polluting the cache during constructor propagation --- .../mlscript-compile/SpecializeHelpers.mls | 15 +- .../test/mlscript/block-staging/ShapeProp.mls | 224 ++++++++---------- 2 files changed, 104 insertions(+), 135 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 220c9f9e05..cbf10c61ec 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -152,11 +152,10 @@ fun sor(ctx, r) = if r is let cacheName = getCacheName(clsName, true) let cache = actualClass.(cacheName) not (cache is undefined) then - let res = SpecializeHelpers.specializeCtor(cache, clsSymb, argsShape, ctx) + let res = SpecializeHelpers.specializeCtor(cache, clsSymb, argsShape, ctx.clone) [End(), r, res] - else [End(), r, mkDyn()] - else - [End(), r, mkClass(clsSymb, argsShape)] + else throw Error("cache not found in staged class") + else [End(), r, mkClass(clsSymb, argsShape)] Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] Call(f, args) then fun lit(l) = [End(), ValueLit(l), mkLit(l)] @@ -177,7 +176,7 @@ fun sor(ctx, r) = if r is let cacheName = getCacheName(clsName, true) if not (actualClass.(cacheName) is undefined) then - let res = SpecializeHelpers.specializeCtor(actualClass.(cacheName), clsSymb, argShapes, ctx) + let res = SpecializeHelpers.specializeCtor(actualClass.(cacheName), clsSymb, argShapes, ctx.clone) [End(), r, res] else [End(), r, mkDyn()] // TODO make unstaged object shape else [End(), r, mkDyn()] // TODO make unstaged object shape @@ -239,7 +238,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = let isRet = xOpt is None if knownMap.size is 1 and unkShape.isEmpty() and - // If it's certainly a known class, generate the generated method call directly without matching + // If the object is certainly a known class, generate the generated method call directly without pattern matching let entry = [...knownMap.entries()].0 let C_i = entry.0 let ss_i = entry.1 @@ -325,8 +324,8 @@ fun prop(ctx, b) = if b is if prop(newCtx, restBlock) is [b2, s2] then [concat(blk, Define(ValDefn(opt, sym, r1), b2)), s2] Assign(x, r, restBlock) and - sor(ctx, r) is [blk, r1, s1] then - if prop(ctx.add(ValueRef(x), s1), restBlock) is [b2, s2] then + sor(ctx, r) is [blk, r1, s1] and + prop(ctx.add(ValueRef(x), s1), restBlock) is [b2, s2] then [concat(blk, Assign(x, r1, b2)), s2] Match(p, arms, dflt, restBlock) then let s = sop(ctx, p) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 791ae7c4ca..ea97aa118b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -1,6 +1,8 @@ :js :staging :noFreeze +:noModuleCheck +:noSanityCheck import "../../mlscript-compile/ShapeSet.mls" open ShapeSet @@ -31,24 +33,9 @@ staged module Test with let dyn = pyth(n, 2) fib(dyn * 2) -Test.test_gen() -Test.test2_gen(mkDyn()) +Test."test_gen"() +Test."test2_gen"(mkDyn()) print(Test."cache$Test") -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'Test' does not contain member 'test_gen' -//│ ║ l.34: Test.test_gen() -//│ ╙── ^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'Test' does not contain member 'test2_gen' -//│ ║ l.35: Test.test2_gen(mkDyn()) -//│ ╙── ^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: traverse (Resolver.scala:349) -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type Test. -//│ ║ l.36: print(Test."cache$Test") -//│ ╙── ^^^^ //│ > module Test with //│ > () //│ > fun test() = 20 @@ -93,18 +80,8 @@ staged module TestIf with f(C(3)) f(2) -TestIf.test_gen() +TestIf."test_gen"() print(TestIf."cache$TestIf") -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'TestIf' does not contain member 'test_gen' -//│ ║ l.96: TestIf.test_gen() -//│ ╙── ^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: traverse (Resolver.scala:349) -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestIf. -//│ ║ l.97: print(TestIf."cache$TestIf") -//│ ╙── ^^^^^^ //│ > module TestIf with //│ > () //│ > fun test() = "else" @@ -133,30 +110,10 @@ staged module TestIf2 with fun test2(dyn) = f(C(dyn)) fun test3() = f(0) -TestIf2.test_gen() -TestIf2.test2_gen(mkDyn()) -TestIf2.test3_gen() +TestIf2."test_gen"() +TestIf2."test2_gen"(mkDyn()) +TestIf2."test3_gen"() print(TestIf2."cache$TestIf2") -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test_gen' -//│ ║ l.136: TestIf2.test_gen() -//│ ╙── ^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test2_gen' -//│ ║ l.137: TestIf2.test2_gen(mkDyn()) -//│ ╙── ^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'TestIf2' does not contain member 'test3_gen' -//│ ║ l.138: TestIf2.test3_gen() -//│ ╙── ^^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: traverse (Resolver.scala:349) -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestIf2. -//│ ║ l.139: print(TestIf2."cache$TestIf2") -//│ ╙── ^^^^^^^ //│ > module TestIf2 with //│ > () //│ > fun test() = @@ -181,7 +138,6 @@ print(TestIf2."cache$TestIf2") //│ > fun test3() = 1 //│ > fun f_Lit0(x) = 1 -:noSanityCheck staged module LinearAlgebra with fun _dot(v1, v2, n, acc) = if n == @@ -190,18 +146,8 @@ staged module LinearAlgebra with fun dot(v1, v2) = _dot(v1, v2, 0, 0) fun test(x) = dot([x, 1, 2], [3, 4, 1]) -LinearAlgebra.test_gen(mkDyn()) +LinearAlgebra."test_gen"(mkDyn()) print(LinearAlgebra."cache$LinearAlgebra") -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'LinearAlgebra' does not contain member 'test_gen' -//│ ║ l.193: LinearAlgebra.test_gen(mkDyn()) -//│ ╙── ^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: traverse (Resolver.scala:349) -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type LinearAlgebra. -//│ ║ l.194: print(LinearAlgebra."cache$LinearAlgebra") -//│ ╙── ^^^^^^^^^^^^^ //│ > module LinearAlgebra with //│ > () //│ > fun test(x) = @@ -245,64 +191,92 @@ staged class L3(val y) with class L4(val y) with fun call(x) = x + y -staged module Test with - fun test() = L2(1) - -Test.test_gen() -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'Test' does not contain member 'test_gen' -//│ ║ l.251: Test.test_gen() -//│ ╙── ^^^^^^^^^ -//│ = [ -//│ "test", -//│ {Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ -//│ () \ -//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)])} -//│ ] - staged module M with fun twice(f, x) = f.call(f.call(x)) fun pick(x, y, b) = if b then x else y fun test(b) = - pick(new L2(2), new L3(3), b) - // let y = twice(new L1(1), 5) - // let m = pick(pick(new L2(2), new L3(3), b), new L4(4), b) - // twice(m, 5) + y + let y = twice(new L1(1), 5) + let m = pick(new L2(2), new L3(3), b) + twice(m, 5) + +M."test_gen"(mkLit(true)) +//│ = ["test_Littrue", {Lit(9)}] + +M."test_gen"(mkLit(false)) +//│ = ["test_Litfalse", {Lit(29)}] + +M."test_gen"(mkDyn()) +//│ = ["test", {Dyn()}] -M.test_gen(mkDyn()) print(M."cache$M") -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' -//│ ║ l.273: M.test_gen(mkDyn()) -//│ ╙── ^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: traverse (Resolver.scala:349) -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.274: print(M."cache$M") -//│ ╙── ^ //│ > module M with //│ > () +//│ > fun test_Littrue(b) = 9 +//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 +//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y, b) = +//│ > let {obj_2} +//│ > obj_2 = new L2(2) +//│ > obj_2 +//│ > fun twice_L2_Lit2_Lit5(f, x) = 9 +//│ > fun test_Litfalse(b) = 29 +//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y, b) = +//│ > let {obj_5} +//│ > obj_5 = new L3(3) +//│ > obj_5 +//│ > fun twice_L3_Lit3_Lit5(f, x) = 29 //│ > fun test(b) = -//│ > let {tmp1, tmp2} -//│ > tmp1 = new L2(2) -//│ > tmp2 = new L3(3) -//│ > M.pick_Dyn_Union_L3_Lit2_L3_Lit3_end_Dyn(tmp1, tmp2, b) -//│ > fun pick_Dyn_Union_L3_Lit2_L3_Lit3_end_Dyn(x, y, b) = +//│ > let {y, m, tmp1, tmp2, tmp3} +//│ > tmp1 = new L1(1) +//│ > y = 11 +//│ > tmp2 = new L2(2) +//│ > tmp3 = new L3(3) +//│ > m = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > M.twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) +//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > let {obj_7, obj_8} //│ > if b is -//│ > true then x -//│ > else y - +//│ > true then +//│ > obj_7 = new L2(2) +//│ > obj_7 +//│ > else +//│ > obj_8 = new L3(3) +//│ > obj_8 +//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = +//│ > let {tmp} +//│ > if f is +//│ > L2 then +//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Lit7(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Lit7(tmp) +//│ > L3 then +//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +//│ > f.call(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") +print(L3.class."class$cache$L3") //│ > class L1(y) with //│ > () -//│ > +//│ > fun call_L1_Lit1_dot_Lit5(x) = 8 +//│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () -//│ > +//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 +//│ > fun call_L2_Lit2_dot_Lit7(x) = 9 +//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y +//│ > class L3(y) with +//│ > () +//│ > fun call_L3_Lit3_dot_Lit5(x) = 13 +//│ > fun call_L3_Lit3_dot_Lit13(x) = 29 +//│ > fun call_L3_Lit3_dot_Lit7(x) = 17 +//│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = +//│ > let {tmp1} +//│ > tmp1 = *(x, 2) +//│ > tmp1 + y staged class A(val x: Int) with fun f(y: Int) = x + y @@ -310,41 +284,37 @@ staged class B(val x: Int) with fun f(y: A) = x + y.f(x) staged module TestThis with + fun test2(y) = B(1).x + y // FIXME fun test(x) = B(x).f(A(1)) -TestThis.test_gen(mkDyn(1)) +TestThis.test2_gen(mkLit(1)) +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) +//│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test2_gen' +//│ ║ l.290: TestThis.test2_gen(mkLit(1)) +//│ ╙── ^^^^^^^^^^ +//│ = ["test2_Lit1", {Lit(2)}] + +TestThis.test_gen(mkLit(1)) print(TestThis."cache$TestThis") //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.315: TestThis.test_gen(mkDyn(1)) +//│ ║ l.298: TestThis.test_gen(mkLit(1)) //│ ╙── ^^^^^^^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: newDefn (Resolver.scala:662) -//│ ╔══[COMPILATION ERROR] Expected 0 arguments, got 1 -//│ ║ l.315: TestThis.test_gen(mkDyn(1)) -//│ ╙── ^^^ -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: traverse (Resolver.scala:349) -//│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type TestThis. -//│ ║ l.316: print(TestThis."cache$TestThis") -//│ ╙── ^^^^^^^^ //│ > module TestThis with //│ > () -//│ > fun test(x) = -//│ > let {tmp, tmp1} -//│ > tmp = B(x) -//│ > tmp1 = A(1) -//│ > tmp.f(tmp1) +//│ > fun test2_Lit1(y) = 2 +//│ > fun test_Lit1(x) = 3 print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with //│ > () -//│ > +//│ > fun f_A_Lit1_dot_Lit1(y) = 2 //│ > class B(x) with //│ > () -//│ > +//│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 staged class B(val y) @@ -358,13 +328,13 @@ M.f_gen() //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' -//│ ║ l.357: M.f_gen() +//│ ║ l.327: M.f_gen() //│ ╙── ^^^^^^ //│ = [ //│ "f", //│ {Class(ConcreteClassSymbol("D", fun D { class: class D { class$cache$D: class D(x) extends B(x + 1) with \ //│ () \ -//│ , class$generatorMap$D: Map(1) {"f" => fun f_gen} } }, Some([Symbol("y"), Symbol("x")]), []), [Lit(3), Lit(2)])} +//│ , class$generatorMap$D: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), []), [Lit(2)])} //│ ] @@ -381,6 +351,6 @@ M.test_gen() //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' -//│ ║ l.380: M.test_gen() +//│ ║ l.350: M.test_gen() //│ ╙── ^^^^^^^^^ -//│ = ["test", {Lit(3)}] +//│ = ["test", {}] From 91d3aea951a6651ef73804ab3da9994dd911fe66 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 14 Apr 2026 17:01:12 +0800 Subject: [PATCH 528/654] add a fixme --- hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index ea97aa118b..fea81df3a6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -347,10 +347,11 @@ staged module M with fun f() = new C(1, 2) fun test() = f().z +// FIXME M.test_gen() //│ FAILURE: Unexpected compilation error //│ FAILURE LOCATION: resolveField (Elaborator.scala:373) //│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' -//│ ║ l.350: M.test_gen() +//│ ║ l.351: M.test_gen() //│ ╙── ^^^^^^^^^ //│ = ["test", {}] From 0ce2951af64709ca1bf0e50f1a5923053402b4f6 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 14 Apr 2026 17:24:05 +0800 Subject: [PATCH 529/654] add a fixme of shadowing during inheritance --- .../mlscript-compile/SpecializeHelpers.mls | 25 ++-- .../test/mlscript/block-staging/ShapeProp.mls | 140 +++++++----------- 2 files changed, 71 insertions(+), 94 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index cbf10c61ec..77ff80ae2d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -55,6 +55,10 @@ class Ctx( if ctx.has(ps) then Some(ctx.get(ps)) else None fun clone = Ctx(new Map(ctx), new Map(ctorCtx), allocs, currentThis, thisShape) + // For propagation of instantiation of derived class, + // we need to keep track of fields defined in parent class, + // which is stored in ctorCtx + fun cloneCtx = Ctx(new Map(ctx), ctorCtx, allocs, currentThis, thisShape) fun add(path, ss) = let ps = showCtxPath(path) if ctx.has(ps) then @@ -132,6 +136,8 @@ fun fsplit(pss) = )(mkBot(), ...pss.values()) [knownMap, unkShape] +fun lit(l) = [End(), ValueLit(l), mkLit(l)] + // shape of result: return [blk, res, s] // where blk is the block needed to construct the result res (End() if not needed) and s is the shape fun sor(ctx, r) = if r is @@ -152,15 +158,14 @@ fun sor(ctx, r) = if r is let cacheName = getCacheName(clsName, true) let cache = actualClass.(cacheName) not (cache is undefined) then - let res = SpecializeHelpers.specializeCtor(cache, clsSymb, argsShape, ctx.clone) + let res = SpecializeHelpers.specializeCtor(cache, clsSymb, argsShape, ctx.cloneCtx) [End(), r, res] else throw Error("cache not found in staged class") else [End(), r, mkClass(clsSymb, argsShape)] Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] - Call(f, args) then - fun lit(l) = [End(), ValueLit(l), mkLit(l)] + Call(f, args) and let argShapes = args.map((a, _, _) => sop(ctx, a.value)) - if f is + f is Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) // runtime.Tuple.get is generated by the compiler in the IR and args is [Arg(scrut), Arg(litArg)] then let recovered = DynSelect(scrut, litArg, false) @@ -174,9 +179,8 @@ fun sor(ctx, r) = if r is let actualClass = getActualClass(clsSymb.value) let clsName = actualClass.(Symbols.definitionMetadata).1 let cacheName = getCacheName(clsName, true) - if not (actualClass.(cacheName) is undefined) then - let res = SpecializeHelpers.specializeCtor(actualClass.(cacheName), clsSymb, argShapes, ctx.clone) + let res = SpecializeHelpers.specializeCtor(actualClass.(cacheName), clsSymb, argShapes, ctx.cloneCtx) [End(), r, res] else [End(), r, mkDyn()] // TODO make unstaged object shape else [End(), r, mkDyn()] // TODO make unstaged object shape @@ -420,7 +424,6 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = else throw Error("cache error") fun specializeCtor(cache: FunCache, classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], ctx: Ctx) = - ctx.ctx.clear() let newName = specializeName("class$ctor$", [argShapes]) if cache.getFun(newName) is Some(x) then [x.0.sym.name, x.1] @@ -430,12 +433,12 @@ fun specializeCtor(cache: FunCache, classSymb: ConcreteClassSymbol, argShapes: A defn is FunDefn(Symbol(_), ps, body) then ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), argShapes.(j)))) - if not (actualClass."preCtor$_instr" is undefined) and actualClass."preCtor$_instr"() is FunDefn(_, _, preCtorBody) do + if not (actualClass."preCtor$_instr" is undefined) and actualClass."preCtor$_instr"() is FunDefn(_, _, preCtorBody) then do prop(ctx, preCtorBody) - // print(classSymb.name, ctx.ctorCtx) - if not (actualClass."class$ctor$_instr" is undefined) and actualClass."class$ctor$_instr"() is FunDefn(_, _, ctorBody) do + else throw Error("preCtor not found in staged class") + if not (actualClass."class$ctor$_instr" is undefined) and actualClass."class$ctor$_instr"() is FunDefn(_, _, ctorBody) then do prop(ctx, ctorBody) - // print(classSymb.name, ctx.ctorCtx) + else throw Error("ctor not found in staged class") mkClassFromMap(cache.owner, ctx.ctorCtx) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index fea81df3a6..1107217e46 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -200,10 +200,10 @@ staged module M with twice(m, 5) M."test_gen"(mkLit(true)) -//│ = ["test_Littrue", {Lit(9)}] +//│ = ["test_Littrue", {Dyn()}] M."test_gen"(mkLit(false)) -//│ = ["test_Litfalse", {Lit(29)}] +//│ = ["test_Litfalse", {Dyn()}] M."test_gen"(mkDyn()) //│ = ["test", {Dyn()}] @@ -211,49 +211,58 @@ M."test_gen"(mkDyn()) print(M."cache$M") //│ > module M with //│ > () -//│ > fun test_Littrue(b) = 9 +//│ > fun test_Littrue(b) = +//│ > let {y, m, tmp1, tmp2, tmp3} +//│ > tmp1 = new L1(1) +//│ > y = 11 +//│ > tmp2 = new L2(2) +//│ > tmp3 = new L3(3) +//│ > m = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Littrue(tmp2, tmp3, b) +//│ > M.twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Lit5(m, 5) //│ > fun twice_L1_Lit1_Lit5(f, x) = 11 -//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y, b) = -//│ > let {obj_2} -//│ > obj_2 = new L2(2) -//│ > obj_2 -//│ > fun twice_L2_Lit2_Lit5(f, x) = 9 -//│ > fun test_Litfalse(b) = 29 -//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y, b) = -//│ > let {obj_5} -//│ > obj_5 = new L3(3) -//│ > obj_5 -//│ > fun twice_L3_Lit3_Lit5(f, x) = 29 +//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Littrue(x, y, b) = x +//│ > fun twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Lit5(f, x) = +//│ > let {tmp} +//│ > tmp = f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) +//│ > f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) +//│ > fun test_Litfalse(b) = +//│ > let {y, m, tmp1, tmp2, tmp3} +//│ > tmp1 = new L1(1) +//│ > y = 11 +//│ > tmp2 = new L2(2) +//│ > tmp3 = new L3(3) +//│ > m = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Litfalse(tmp2, tmp3, b) +//│ > M.twice_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Lit5(m, 5) +//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Litfalse(x, y, b) = y +//│ > fun twice_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Lit5(f, x) = +//│ > let {tmp} +//│ > tmp = f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Lit5(x) +//│ > f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) //│ > fun test(b) = //│ > let {y, m, tmp1, tmp2, tmp3} //│ > tmp1 = new L1(1) //│ > y = 11 //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) -//│ > m = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) -//│ > M.twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) -//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = -//│ > let {obj_7, obj_8} +//│ > m = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Dyn(tmp2, tmp3, b) +//│ > M.twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Lit5(m, 5) +//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Dyn(x, y, b) = //│ > if b is -//│ > true then -//│ > obj_7 = new L2(2) -//│ > obj_7 -//│ > else -//│ > obj_8 = new L3(3) -//│ > obj_8 -//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = +//│ > true then x +//│ > else y +//│ > fun twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Lit5(f, x) = //│ > let {tmp} //│ > if f is //│ > L2 then -//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > tmp = f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) //│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Lit7(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Lit7(tmp) +//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) +//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) //│ > L3 then -//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > tmp = f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Lit5(x) //│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) +//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) //│ > f.call(tmp) print(L1.class."class$cache$L1") @@ -265,15 +274,15 @@ print(L3.class."class$cache$L3") //│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () -//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 -//│ > fun call_L2_Lit2_dot_Lit7(x) = 9 -//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y +//│ > fun call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) = x + y +//│ > fun call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(x) = x + y //│ > class L3(y) with //│ > () -//│ > fun call_L3_Lit3_dot_Lit5(x) = 13 -//│ > fun call_L3_Lit3_dot_Lit13(x) = 29 -//│ > fun call_L3_Lit3_dot_Lit7(x) = 17 -//│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = +//│ > fun call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Lit5(x) = +//│ > let {tmp1} +//│ > tmp1 = 10 +//│ > tmp1 + y +//│ > fun call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(x) = //│ > let {tmp1} //│ > tmp1 = *(x, 2) //│ > tmp1 + y @@ -287,21 +296,11 @@ staged module TestThis with fun test2(y) = B(1).x + y // FIXME fun test(x) = B(x).f(A(1)) -TestThis.test2_gen(mkLit(1)) -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test2_gen' -//│ ║ l.290: TestThis.test2_gen(mkLit(1)) -//│ ╙── ^^^^^^^^^^ +TestThis."test2_gen"(mkLit(1)) //│ = ["test2_Lit1", {Lit(2)}] -TestThis.test_gen(mkLit(1)) +TestThis."test_gen"(mkLit(1)) print(TestThis."cache$TestThis") -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'TestThis' does not contain member 'test_gen' -//│ ║ l.298: TestThis.test_gen(mkLit(1)) -//│ ╙── ^^^^^^^^^ //│ > module TestThis with //│ > () //│ > fun test2_Lit1(y) = 2 @@ -316,42 +315,17 @@ print(B.class."class$cache$B") //│ > () //│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 -staged class B(val y) +staged class B(val x, val y) -staged class D(val x) extends B(x+1) with - fun f() = 42 +staged class D(val x) extends B(x + 1, x + 2) staged module M with - fun f() = new D(2) - -M.f_gen() -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'f_gen' -//│ ║ l.327: M.f_gen() -//│ ╙── ^^^^^^ -//│ = [ -//│ "f", -//│ {Class(ConcreteClassSymbol("D", fun D { class: class D { class$cache$D: class D(x) extends B(x + 1) with \ -//│ () \ -//│ , class$generatorMap$D: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), []), [Lit(2)])} -//│ ] + fun test() = new D(1, 2).y + fun test2() = new D(1, 2).x - -staged class D(val z) - -staged class C(val x, val y) extends D(x + 2) - -:noSanityCheck -staged module M with - fun f() = new C(1, 2) - fun test() = f().z +M."test_gen"() +//│ = ["test", {Lit(3)}] // FIXME -M.test_gen() -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: resolveField (Elaborator.scala:373) -//│ ╔══[COMPILATION ERROR] Module 'M' does not contain member 'test_gen' -//│ ║ l.351: M.test_gen() -//│ ╙── ^^^^^^^^^ -//│ = ["test", {}] +M."test2_gen"() +//│ = ["test2", {Lit(1),Lit(2)}] From 2a7afab4d018f6c3fe17f50000a9541e3c411e08 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 14 Apr 2026 17:24:44 +0800 Subject: [PATCH 530/654] add a fixme for change in S-METHOD --- hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls | 1 + 1 file changed, 1 insertion(+) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 1107217e46..7862b95228 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -208,6 +208,7 @@ M."test_gen"(mkLit(false)) M."test_gen"(mkDyn()) //│ = ["test", {Dyn()}] +// FIXME print(M."cache$M") //│ > module M with //│ > () From dfd5e64c5c366143d6c39393df161be60f65541c Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 14 Apr 2026 17:52:27 +0800 Subject: [PATCH 531/654] remove currentThis which --- .../mlscript-compile/SpecializeHelpers.mls | 27 +++--- .../test/mlscript/block-staging/ShapeProp.mls | 91 +++++++++---------- 2 files changed, 60 insertions(+), 58 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 77ff80ae2d..ef52a16f36 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -44,21 +44,24 @@ fun showCtxPath(p) = if p is // FIXME ValueLit(lit) then "Lit(" + lit.toString() + ")" class Ctx( + // ctx tracks shapes of variables during shape prop val ctx: Map[String, ShapeSet], + // ctorCtx tracks fields defined by ValDefn during shape prop val ctorCtx: Map[String, ShapeSet] + // allocs tracks the new variables allocated during shape prop val allocs: Array[Block.Symbol], - val currentThis: Option[Block.ClassSymbol], - val thisShape: ShapeSet, + // thisShape stores the shapeset of this, e.g., C1(1) U C1(2) + val thisShape: Option[ShapeSet], ) with fun get(path) = let ps = showCtxPath(path) if ctx.has(ps) then Some(ctx.get(ps)) else None - fun clone = Ctx(new Map(ctx), new Map(ctorCtx), allocs, currentThis, thisShape) + fun clone = Ctx(new Map(ctx), new Map(ctorCtx), allocs, thisShape) // For propagation of instantiation of derived class, // we need to keep track of fields defined in parent class, // which is stored in ctorCtx - fun cloneCtx = Ctx(new Map(ctx), ctorCtx, allocs, currentThis, thisShape) + fun clearCtx = Ctx(new Map(), ctorCtx, allocs, thisShape) fun add(path, ss) = let ps = showCtxPath(path) if ctx.has(ps) then @@ -73,7 +76,7 @@ class Ctx( ctorCtx.set(ps, ss) this module Ctx with - fun empty() = Ctx(new Map(), new Map(), mut [], None, mkBot()) + fun empty() = Ctx(new Map(), new Map(), mut [], None) // shape of value fun sov(v): ShapeSet = @@ -102,8 +105,8 @@ fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s else if p is Select(qual, Symbol(name)) and - ctx.currentThis is Some(t) and qual is ValueRef(sym) and sym is t then - selSet(ctx.thisShape, mkLit(name)) + ctx.thisShape is Some(thisShape) and qual is ValueRef(sym) and sym is t then + selSet(thisShape, mkLit(name)) name is "length" and // special handle array .length let qualShape = sop(ctx, qual) let vals = qualShape.values() @@ -158,7 +161,7 @@ fun sor(ctx, r) = if r is let cacheName = getCacheName(clsName, true) let cache = actualClass.(cacheName) not (cache is undefined) then - let res = SpecializeHelpers.specializeCtor(cache, clsSymb, argsShape, ctx.cloneCtx) + let res = SpecializeHelpers.specializeCtor(cache, clsSymb, argsShape, ctx.clearCtx) [End(), r, res] else throw Error("cache not found in staged class") else [End(), r, mkClass(clsSymb, argsShape)] @@ -180,7 +183,7 @@ fun sor(ctx, r) = if r is let clsName = actualClass.(Symbols.definitionMetadata).1 let cacheName = getCacheName(clsName, true) if not (actualClass.(cacheName) is undefined) then - let res = SpecializeHelpers.specializeCtor(actualClass.(cacheName), clsSymb, argShapes, ctx.cloneCtx) + let res = SpecializeHelpers.specializeCtor(actualClass.(cacheName), clsSymb, argShapes, ctx.clearCtx) [End(), r, res] else [End(), r, mkDyn()] // TODO make unstaged object shape else [End(), r, mkDyn()] // TODO make unstaged object shape @@ -315,7 +318,7 @@ fun prop(ctx, b) = if b is Scoped(symbols, rest) then symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] - let newCtx = Ctx(new Map(ctx.ctx), ctx.ctorCtx, newAllocs, ctx.currentThis, ctx.thisShape) + let newCtx = Ctx(new Map(ctx.ctx), ctx.ctorCtx, newAllocs, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) then @@ -402,9 +405,9 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let paramShapes = if isMethod then shapes.slice(1) else shapes let ctx = if isMethod then let clsSymb = cache.owner - Ctx(new Map(), new Map(), mut [], Some(clsSymb), shapes.(0).(0)) + Ctx(new Map(), new Map(), mut [], Some(shapes.(0).(0))) else Ctx.empty() - if isMethod do ctx.add(ValueRef(Symbol("_this")), shapes.(0).(0)) + if isMethod do ctx.add(ValueRef(Symbol("_this")), Some(shapes.(0).(0))) ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 7862b95228..bf2af82540 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -197,18 +197,47 @@ staged module M with fun test(b) = let y = twice(new L1(1), 5) let m = pick(new L2(2), new L3(3), b) - twice(m, 5) + m + // twice(m, 5) M."test_gen"(mkLit(true)) -//│ = ["test_Littrue", {Dyn()}] +//│ = [ +//│ "test_Littrue", +//│ {Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ +//│ () \ +//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)]),Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ +//│ () \ +//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(2)])} +//│ ] M."test_gen"(mkLit(false)) -//│ = ["test_Litfalse", {Dyn()}] +//│ = [ +//│ "test_Litfalse", +//│ {Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ +//│ () \ +//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ +//│ () \ +//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(2)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ +//│ () \ +//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(3)])} +//│ ] M."test_gen"(mkDyn()) -//│ = ["test", {Dyn()}] +//│ = [ +//│ "test", +//│ {Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ +//│ () \ +//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)]),Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ +//│ () \ +//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(2)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ +//│ () \ +//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ +//│ () \ +//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(2)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ +//│ () \ +//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(3)])} +//│ ] -// FIXME print(M."cache$M") //│ > module M with //│ > () @@ -218,53 +247,31 @@ print(M."cache$M") //│ > y = 11 //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) -//│ > m = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Littrue(tmp2, tmp3, b) -//│ > M.twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Lit5(m, 5) +//│ > m = M.pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Littrue(tmp2, tmp3, b) +//│ > m //│ > fun twice_L1_Lit1_Lit5(f, x) = 11 -//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Littrue(x, y, b) = x -//│ > fun twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Lit5(f, x) = -//│ > let {tmp} -//│ > tmp = f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) -//│ > f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) +//│ > fun pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Littrue(x, y, b) = x //│ > fun test_Litfalse(b) = //│ > let {y, m, tmp1, tmp2, tmp3} //│ > tmp1 = new L1(1) //│ > y = 11 //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) -//│ > m = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Litfalse(tmp2, tmp3, b) -//│ > M.twice_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Lit5(m, 5) -//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Litfalse(x, y, b) = y -//│ > fun twice_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Lit5(f, x) = -//│ > let {tmp} -//│ > tmp = f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Lit5(x) -//│ > f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) +//│ > m = M.pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Litfalse(tmp2, tmp3, b) +//│ > m +//│ > fun pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Litfalse(x, y, b) = y //│ > fun test(b) = //│ > let {y, m, tmp1, tmp2, tmp3} //│ > tmp1 = new L1(1) //│ > y = 11 //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) -//│ > m = M.pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Dyn(tmp2, tmp3, b) -//│ > M.twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Lit5(m, 5) -//│ > fun pick_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Dyn(x, y, b) = +//│ > m = M.pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Dyn(tmp2, tmp3, b) +//│ > m +//│ > fun pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Dyn(x, y, b) = //│ > if b is //│ > true then x //│ > else y -//│ > fun twice_Union_L2_Lit1_L2_Lit11_L2_Lit2_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_Lit5(f, x) = -//│ > let {tmp} -//│ > if f is -//│ > L2 then -//│ > tmp = f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) -//│ > if f is -//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) -//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) -//│ > L3 then -//│ > tmp = f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Lit5(x) -//│ > if f is -//│ > L2 then f.call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(tmp) -//│ > L3 then f.call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(tmp) -//│ > f.call(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") @@ -275,18 +282,10 @@ print(L3.class."class$cache$L3") //│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () -//│ > fun call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Lit5(x) = x + y -//│ > fun call_Union_L2_Lit1_L2_Lit11_L2_Lit2_end_dot_Dyn(x) = x + y +//│ > //│ > class L3(y) with //│ > () -//│ > fun call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Lit5(x) = -//│ > let {tmp1} -//│ > tmp1 = 10 -//│ > tmp1 + y -//│ > fun call_Union_L3_Lit1_L3_Lit11_L3_Lit2_L3_Lit3_end_dot_Dyn(x) = -//│ > let {tmp1} -//│ > tmp1 = *(x, 2) -//│ > tmp1 + y +//│ > staged class A(val x: Int) with fun f(y: Int) = x + y From b20813e930ad55dd20967cf3944c847bc2aaa6fe Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 14 Apr 2026 23:51:45 +0800 Subject: [PATCH 532/654] add constraint annotation for staging --- .../codegen/ReflectionInstrumenter.scala | 9 ++++++- .../scala/hkmc2/semantics/Elaborator.scala | 4 +-- .../src/main/scala/hkmc2/semantics/Term.scala | 10 +++++-- .../src/main/scala/hkmc2/syntax/Tree.scala | 16 ++++++++++- .../src/main/scala/hkmc2/utils/utils.scala | 3 ++- .../src/test/mlscript-compile/Block.mls | 14 +++++++--- .../src/test/mlscript-compile/Shape.mls | 2 +- .../mlscript-compile/SpecializeHelpers.mls | 7 +++-- .../shared/src/test/mlscript/ShapeSetTest.mls | 15 +++++++---- .../test/mlscript/block-staging/PrintCode.mls | 12 ++++++--- .../test/mlscript/block-staging/ShapeProp.mls | 16 +++++------ .../block-staging/ShapeSetHelpers.mls | 27 +++++++++++-------- .../test/mlscript/block-staging/Syntax.mls | 15 +++++++++++ 13 files changed, 107 insertions(+), 43 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index b9e2107379..193292eaed 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -254,7 +254,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // maintain parameter names in instrumented code def transformParamList(ps: ParamList)(using ctx: Context)(k: (Path, Context) => Block) = - ps.params.map(p => ctx => transformSymbol(p.sym, true)(using ctx)).chainContext((ps, ctx) => tuple(ps)(k(_, ctx))) + ps.params.map(p => (ctx: Context) => (k: (Path, Context) => Block) => + transformOption(p.flags.reflConstraint, { + case ReflectionConstraint.Dynamic => k => blockCtor("Dynamic", Nil)(k(_, ctx)) + case ReflectionConstraint.Static => k => blockCtor("Static", Nil)(k(_, ctx)) + })(using ctx): (constraint, ctx) => + transformSymbol(p.sym, true)(using ctx): (sym, ctx) => + blockCtor("Param", Ls(constraint, sym))(k(_, ctx)) + ).chainContext((ps, ctx) => tuple(ps)(k(_, ctx))) def transformParamsOpt(pOpt: Opt[ParamList])(using ctx: Context)(k: (Path, Context) => Block) = transformOption(pOpt, transformParamList)(k) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 486b8aa511..a2a0cde668 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -1396,9 +1396,9 @@ extends Importer with ucs.SplitElaborator: val allParams = ps.fold(Nil): _.params.flatMap: // Only `pat` flag is `true`. - case p @ Param(flags = FldFlags(false, false, true, false)) => S(p) + case p @ Param(flags = FldFlags(N, false, false, true, false)) => S(p) // All flags are `false`. - case p @ Param(flags = FldFlags(false, false, false, false)) => S(p) + case p @ Param(flags = FldFlags(N, false, false, false, false)) => S(p) case Param(flags, sym, _, _) => raise(ErrorReport(msg"Unexpected pattern parameter ${sym.name} with modifiers: ${flags.show}" -> sym.toLoc :: Nil)) N diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala index 96177f1926..99b7b130b8 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala @@ -1220,11 +1220,17 @@ case class TypeDef( annotations: Ls[Annot], ) extends TypeLikeDef +enum ReflectionConstraint: + case Dynamic, Static + def str: Str = this match + case Dynamic => "@dynamic" + case Static => "@static" // TODO Store optional source locations for the flags instead of booleans -final case class FldFlags(mut: Bool, spec: Bool, pat: Bool, isVal: Bool): +final case class FldFlags(reflConstraint: Opt[ReflectionConstraint], mut: Bool, spec: Bool, pat: Bool, isVal: Bool): def show: Str = val flags = Buffer.empty[String] + reflConstraint.map(flags += _.str) if mut then flags += "mut" if spec then flags += "spec" if pat then flags += "pattern" @@ -1233,7 +1239,7 @@ final case class FldFlags(mut: Bool, spec: Bool, pat: Bool, isVal: Bool): override def toString: String = "‹" + show + "›" object FldFlags: - val empty: FldFlags = FldFlags(false, false, false, false) + val empty: FldFlags = FldFlags(N, false, false, false, false) object benign: // * Some flags like `mut` and `module` are "benign" in the sense that they don't affect code-gen def unapply(flags: FldFlags): Bool = diff --git a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala index 7f9d1b29d9..5e2b2b5536 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala @@ -9,7 +9,7 @@ import mlscript.utils.*, shorthands.* import hkmc2.utils.* import hkmc2.Message.MessageContext -import semantics.{FldFlags, TermDefFlags, Modulefulness} +import semantics.{FldFlags, TermDefFlags, Modulefulness, ReflectionConstraint} import semantics.Elaborator.State import Tree._ @@ -318,6 +318,20 @@ enum Tree extends AutoLocated: // fun f(using <...>) case TermDef(Ins, inner, N) => go(inner, flags, modifiers + Ins) + // fun f(@dynamic <...>) + case Annotated(Ident("dynamic"), inner) => + println(flags) + if flags.reflConstraint.isDefined then L: + ErrorReport: + msg"At most one reflection constraint can be added for each parameter." -> t.toLoc :: Nil + else go(inner, flags.copy(reflConstraint = S(ReflectionConstraint.Dynamic)), modifiers) + // fun f(@static <...>) + case Annotated(Ident("static"), inner) => + println(flags) + if flags.reflConstraint.isDefined then L: + ErrorReport: + msg"At most one reflection constraint can be added for each parameter." -> t.toLoc :: Nil + else go(inner, flags.copy(reflConstraint = S(ReflectionConstraint.Static)), modifiers) // * Base Case (for `using` clause) // fun f(using A) diff --git a/hkmc2/shared/src/main/scala/hkmc2/utils/utils.scala b/hkmc2/shared/src/main/scala/hkmc2/utils/utils.scala index 3cc1052cb8..b0b8bc347f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/utils/utils.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/utils/utils.scala @@ -74,8 +74,9 @@ class DebugPrinter: val flags = Buffer.empty[Str] if isMethod then flags += "method" flags.mkString("(", ", ", ")") - case FldFlags(mut, spec, pat, value) => + case FldFlags(reflConstraint, mut, spec, pat, value) => val flags = Buffer.empty[Str] + reflConstraint.map(flags += _.str) if mut then flags += "mut" if spec then flags += "spec" if pat then flags += "pat" diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 89ace5f568..fdb1f23f39 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -20,7 +20,7 @@ type Opt[A] = Option[A] type Literal = null | undefined | Str | Int | Num | Bool -type ParamList = Array[Symbol] +type ParamList = Array[Param] class Symbol(val name: Str) class ClassSymbol(val name: Str) extends Symbol(name) @@ -28,6 +28,13 @@ class VirtualClassSymbol(val name: Str) extends ClassSymbol(name) class ConcreteClassSymbol(val name: Str, val value: Class, val paramsOpt: Opt[ParamList], val auxParams: Array[ParamList]) extends ClassSymbol(name) class ModuleSymbol(val name: Str, val value: Class) extends Symbol(name) class NoSymbol() extends Symbol("$no_symbol$") + +class Constraint with + constructor + Dynamic() + Static() + +class Param(val constraint: Opt[Constraint], val sym: Symbol) class Arm(val cse: Case, val body: Block) fun isPrimitiveType(sym: Symbol) = @@ -158,8 +165,9 @@ class Printer(val owner: Opt[Class]) with fun showArm(a) = showCase(a.cse) + " then" + (if a.body is Return then " " else "\n ") + indent(showBlock(a.body)) - fun showParams(p: ParamList) = - "(" + p.map(showSymbol(_)).join(", ") + ")" + fun showParams(pl: ParamList) = + // do not print constraints to next stage + "(" + pl.map(p => showSymbol(p.sym)).join(", ") + ")" fun showParamsOpt(p) = if p is diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index b60f8cfb6e..fd706185f7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -28,7 +28,7 @@ fun show(s: Shape) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is [Class(ConcreteClassSymbol(_, _, paramsOpt, auxParams), params), Lit(n)] and n is Str and paramsOpt is Some(paramsSymb) and - paramsSymb.map(_.name).indexOf(n) is + paramsSymb.map(_.sym.name).indexOf(n) is -1 then [] n then [params.(n)] [Class(ConcreteClassSymbol, p), Dyn] then [Dyn()] diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 80a6416375..512e0c2fd6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -398,14 +398,13 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = defn is FunDefn(Symbol(_), ps, body) then let isMethod = shapes.length > ps.length // TODO: clean up let paramShapes = if isMethod then shapes.slice(1) else shapes - let newPs = if isMethod then [ [Symbol("_this"), ...ps.(0)], ...ps.slice(1) ] else ps let ctx = if isMethod then let clsSymb = shapes.(0).(0).values().0.sym Ctx(new Map(), mut [], Some(clsSymb), shapes.(0).(0)) else Ctx.empty() if isMethod do ctx.add(ValueRef(Symbol("_this")), shapes.(0).(0)) - ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) - cache.setFun(newName, [FunDefn(Symbol(newName), newPs, body), mkDyn()]) + ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2.sym), paramShapes.(i).(j)))) + cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) let propFun = prop let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) @@ -414,7 +413,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let v2p = val2path(valOfSet(res.1), allocs) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) else bodyWithScoped - let entry = cache.setFun(newName, [FunDefn(Symbol(newName), newPs, finalBody), res.1]) + let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, finalBody), res.1]) [entry.0.sym.name, entry.1] else throw Error("cache error") diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 92a03174ff..60949b680c 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -8,7 +8,7 @@ import "../mlscript-compile/Option.mls" open ShapeSet open Shape { Lit, Arr, Class, Dyn } open Option -open Block { Tup, ConcreteClassSymbol, Symbol } +open Block { Tup, ConcreteClassSymbol, Param, Symbol } let x = mkBot() //│ x = {} @@ -31,19 +31,24 @@ mkArr([x, y]) //│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} class C(val a) -val clsSym = ConcreteClassSymbol("C", C, Some([Symbol("a")]), []) -//│ clsSym = ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []) +val clsSym = ConcreteClassSymbol("C", C, Some([Param(None, Symbol("a"))]), []) +//│ clsSym = ConcreteClassSymbol( +//│ "C", +//│ fun C { class: class C }, +//│ Some([Param(None, Symbol("a"))]), +//│ [] +//│ ) :fixme let x = liftMany([Class(clsSym, [Lit(42)]), Arr([Lit(1), Lit("a")])]) let y = liftMany([Lit(1), Lit("a")]) selSet(x, y) //│ ═══[RUNTIME ERROR] Error: Array out of bound -//│ x = {Arr([Lit(1), Lit("a")]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(42)])} +//│ x = {Arr([Lit(1), Lit("a")]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), []), [Lit(42)])} //│ y = {Lit("a"),Lit(1)} mkClass(clsSym, [mkLit(1)]) -//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(1)])} +//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), []), [Lit(1)])} filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)])]), Tup(3)) //│ = {Arr([Lit(1), Lit(2), Lit(3)])} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 51715a0b11..e818ff00b3 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -9,7 +9,7 @@ open Option fun printCode(x) = Printer.default.printCode(x) -printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false))) +printCode(FunDefn(Symbol("f"), [[Param(None, Symbol("x"))]], Return(ValueLit(1), false))) //│ > fun f(x) = 1 printCode(ValueLit(true)) @@ -35,7 +35,7 @@ printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) class B class D(val x)(y) extends B let bSym = ConcreteClassSymbol("B", B, None, []) -let dSym = ConcreteClassSymbol("D", D, Some([Symbol("x")]), [[Symbol("y")]]) +let dSym = ConcreteClassSymbol("D", D, Some([Param(None, Symbol("x"))]), [[Param(None, Symbol("y"))]]) printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) printCode(Instantiate(ValueRef(dSym), [Arg(ValueLit(0))])) @@ -44,8 +44,12 @@ printCode(Tuple([Arg(ValueRef(Symbol("x"))), Arg(ValueRef(Symbol("y")))])) //│ > new D(0) //│ > [x, y] -let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) -//│ f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) +let f = FunDefn(Symbol("f"), [[Param(None, Symbol("x"))]], Return(ValueLit(1), false)) +//│ f = FunDefn( +//│ Symbol("f"), +//│ [[Param(None, Symbol("x"))]], +//│ Return(ValueLit(1), false) +//│ ) printCode(f) printCode(ClsLikeDefn(dSym, [f], [])) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 6fac5cbd9d..d6f5393e8f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -244,14 +244,14 @@ print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") //│ > class L1(y) with //│ > () -//│ > fun call_L1_Lit1_dot_Lit5(_this, x) = 8 -//│ > fun call_L1_Lit1_dot_Lit8(_this, x) = 11 +//│ > fun call_L1_Lit1_dot_Lit5(x) = 8 +//│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () -//│ > fun call_L2_Lit2_dot_Lit5(_this, x) = 7 -//│ > fun call_L2_Lit2_dot_Lit7(_this, x) = 9 -//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(_this, x) = x + y -//│ > fun call_L2_Lit2_dot_Dyn(_this, x) = x + y +//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 +//│ > fun call_L2_Lit2_dot_Lit7(x) = 9 +//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y +//│ > fun call_L2_Lit2_dot_Dyn(x) = x + y staged class A(val x: Int) with fun f(y: Int) = this.x + y @@ -278,9 +278,9 @@ print(B.class."cache$B") //│ > undefined print(B.class.f_instr()) -//│ > FunDefn(Symbol("f"), [[Symbol("y")]], Return(Select(ValueRef(ConcreteClassSymbol("B", fun B { class: class B { class$cache$B: class B(x) with +//│ > FunDefn(Symbol("f"), [[Param(None, Symbol("y"))]], Return(Select(ValueRef(ConcreteClassSymbol("B", fun B { class: class B { class$cache$B: class B(x) with //│ > () -//│ > fun f_B_Dyn_dot_A_Dyn(_this, y) = x, class$generatorMap$B: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), [])), Symbol("x")), false)) +//│ > fun f_B_Dyn_dot_A_Dyn(y) = x, class$generatorMap$B: Map(1) {"f" => fun f_gen} } }, Some([Param(None, Symbol("x"))]), [])), Symbol("x")), false)) :todo staged class D(val x) extends B(x+1) with diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 5b8cd16dff..9bc0f222a9 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -8,7 +8,7 @@ import "../../mlscript-compile/CachedHash.mls" import "../../mlscript-compile/SpecializeHelpers.mls" import "../../mlscript-compile/Runtime.mls" open Option -open Block { Symbol, ConcreteClassSymbol, Tup, Case, Printer } +open Block { Param, Symbol, ConcreteClassSymbol, Tup, Case, Printer } open Shape { Arr, Class, Dyn, Lit } open ShapeSet open SpecializeHelpers { sov } @@ -45,7 +45,7 @@ valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)])])) :re valOf(mkDyn()) -//│ ═══[RUNTIME ERROR] Error: Unknown shape +//│ ═══[RUNTIME ERROR] Error: Unknown shape: {Dyn()} valOfSet(mkLit(0)) //│ = 0 @@ -65,15 +65,20 @@ selSet(mkDyn(), mkLit(5)) //│ = {Dyn()} :fixme -let a = Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]) +let a = Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")]) let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) selSet(x, liftMany([Lit("a"), Lit(2)])) //│ ═══[RUNTIME ERROR] Error: Array out of bound //│ a = Class( -//│ ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), +//│ ConcreteClassSymbol( +//│ "A", +//│ undefined, +//│ Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), +//│ [] +//│ ), //│ [Lit(42), Lit("c")] //│ ) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Dyn()} +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")]),Dyn()} selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) //│ = {Lit(1)} @@ -96,7 +101,7 @@ filterSet(mkDyn(), Block.Tup(2)) //│ = {Arr([Dyn(), Dyn()])} let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()]), Arr([Lit(1), Lit(2), Lit(3)]), a]) -//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Lit(1),Lit(null)} +//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match @@ -106,7 +111,7 @@ filterSet(filterShapes, Block.Lit(1)) assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = {Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")])} +//│ = {Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")])} filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) //│ = {Lit(1)} @@ -177,16 +182,16 @@ sop(Ctx.empty().add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) val x = Symbol("x") -val C = ConcreteClassSymbol("C", undefined, Some(["a"]), []) +val C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []) val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) let ctx = Ctx.empty() ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ = {} -//│ C = ConcreteClassSymbol("C", undefined, Some(["a"]), []) +//│ C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []) //│ ctx = Ctx( //│ Map(1) { -//│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some(["a"]), []), [Lit("pass")])} +//│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []), [Lit("pass")])} //│ }, //│ [], //│ None, @@ -347,7 +352,7 @@ module M with :ignore val MSym = ValueRef(ModuleSymbol("M", M)) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.348: val MSym = ValueRef(ModuleSymbol("M", M)) +//│ ║ l.353: val MSym = ValueRef(ModuleSymbol("M", M)) //│ ║ ^ //│ ╙── Module argument passed to a non-module parameter. //│ MSym = ValueRef(ModuleSymbol("M", class M)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 36379fdd95..d5f73ab9c5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -57,3 +57,18 @@ staged module A //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— + +:el +fun f(@dynamic x) = x +//│ Elab: { fun member:f(@dynamicx) = x⁰; } + +fun g(@static x) = x + +:e +fun h(@dynamic @static x) = x +//│ ╔══[COMPILATION ERROR] At most one reflection constraint can be added for each parameter. +//│ ║ l.68: fun h(@dynamic @static x) = x +//│ ╙── ^^^^^^^^^ +//│ ╔══[COMPILATION ERROR] Name not found: x +//│ ║ l.68: fun h(@dynamic @static x) = x +//│ ╙── ^ From 286f444211959e1583189bc3d33868ae2439bd8b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 14 Apr 2026 23:52:31 +0800 Subject: [PATCH 533/654] improve error message --- hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 512e0c2fd6..62b6494942 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -209,7 +209,7 @@ fun sor(ctx, r) = if r is ValueRef(clsSymb) and clsSymb is ClassSymbol then // global class [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] ValueRef(Symbol("super")) then - print("superman detected!") + throw Error("Builtin super call should be desugared during instrumentation.") ValueRef(symb) and // built-in or top-level let name = symb.name args is From ebaf4f3bc421d7d975206db46b03ba397951d5e3 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 14 Apr 2026 23:57:40 +0800 Subject: [PATCH 534/654] lift codegen function --- .../src/test/mlscript-compile/Block.mls | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index fdb1f23f39..53b820953d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -230,18 +230,16 @@ class Printer(val owner: Opt[Class]) with fun printModule(name, methods) = print("module " + name + " with" + indent("\n" + methods.map(showDefn(_)).join("\n"))) - fun codegen(name, cache, source, file) = - let methods = cache.dump() - let ctorBody = cache.getFun("ctor").value.0.body - let fullpath = path.join of process.cwd(), file - let code = "import \"" + source + "\"\nmodule " + name + " with" + indent("\n" + showBlock(ctorBody) + "\n" + methods.map(showDefn(_)).join("\n")) - if not fs.existsSync(fullpath) do - fs.mkdirSync(path.dirname(fullpath), recursive: true) - fs.writeFileSync(fullpath, "", "utf8") - let originData = fs.readFileSync(fullpath, "utf8") - let newData = code - if newData != originData do - fs.writeFileSync(fullpath, newData, "utf8") - module Printer with val default = Printer(None) + +fun codegen(name, cache, source, file) = + let fullpath = path.join of process.cwd(), file + let code = "import \"" + source + "\"\n" + cache.toString() // + name + " with" + indent("\n" + showBlock(ctorBody) + "\n" + methods.map(showDefn(_)).join("\n")) + if not fs.existsSync(fullpath) do + fs.mkdirSync(path.dirname(fullpath), recursive: true) + fs.writeFileSync(fullpath, "", "utf8") + let originData = fs.readFileSync(fullpath, "utf8") + let newData = code + if newData != originData do + fs.writeFileSync(fullpath, newData, "utf8") \ No newline at end of file From 53354892084b809b55bb09a13d1f8b4ab6517519 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 15 Apr 2026 00:03:31 +0800 Subject: [PATCH 535/654] update test output --- .../mlscript/block-staging/PathStaging.mls | 64 --------------- .../mlscript/block-staging/PrintingTest.mls | 23 ------ .../mlscript/block-staging/ShapeProp2.mls | 3 - .../block-staging/StageWtihCompanion.mls | 55 ------------- .../test/mlscript/block-staging/SymbolMap.mls | 19 ----- .../mlscript/block-staging/SymbolRenaming.mls | 80 ------------------- 6 files changed, 244 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls index 72ffa6d42b..939eb7a43b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PathStaging.mls @@ -5,71 +5,7 @@ staged class M() with fun f() = 1 staged module M with fun g() = 1 -//│ > module M with -//│ > () -//│ > fun g() = 1 -//│ > Map(1) { 'g' => [Function: g_gen] } -//│ > SymbolMap { -//│ > classMap: Map(0) {}, -//│ > moduleMap: Map(1) { -//│ > [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } -//│ > } -//│ > } -//│ > class M1() with -//│ > () -//│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > SymbolMap { -//│ > classMap: Map(1) { -//│ > [Function: M] { class: [Function] } => ConcreteClassSymbol { -//│ > name: 'M1', -//│ > value: [Function], -//│ > paramsOpt: [Some], -//│ > auxParams: [] -//│ > } -//│ > }, -//│ > moduleMap: Map(1) { -//│ > [class M] { -//│ > 'cache$M': [FunCache], -//│ > 'generatorMap$M': [Map], -//│ > 'class$cache$M': [FunCache], -//│ > 'class$generatorMap$M': [Map] -//│ > } => ModuleSymbol { name: 'M', value: [Function] } -//│ > } -//│ > } module N with staged class NM() staged module NM -//│ > module NM with -//│ > () -//│ > -//│ > Map(0) {} -//│ > SymbolMap { -//│ > classMap: Map(0) {}, -//│ > moduleMap: Map(1) { -//│ > [class NM] { 'cache$NM': [FunCache], 'generatorMap$NM': Map(0) {} } => ModuleSymbol { name: 'NM', value: [Function] } -//│ > } -//│ > } -//│ > class NM1() with -//│ > () -//│ > -//│ > Map(0) {} -//│ > SymbolMap { -//│ > classMap: Map(1) { -//│ > [Function: NM] { class: [Function] } => ConcreteClassSymbol { -//│ > name: 'NM1', -//│ > value: [Function], -//│ > paramsOpt: [Some], -//│ > auxParams: [] -//│ > } -//│ > }, -//│ > moduleMap: Map(1) { -//│ > [class NM] { -//│ > 'cache$NM': [FunCache], -//│ > 'generatorMap$NM': Map(0) {}, -//│ > 'class$cache$NM': [FunCache], -//│ > 'class$generatorMap$NM': Map(0) {} -//│ > } => ModuleSymbol { name: 'NM', value: [Function] } -//│ > } -//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls index 271ef96be8..b2a8c125c1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls @@ -7,26 +7,3 @@ class C(val x) staged class D(val x)(val y, val z)(val a) extends C([2, z + f(z)]."0") with val b = z + z fun f() = a + x -//│ > class D(x)(y, z)(a) extends C([2, z + f(z)].("0")) with -//│ > let {tmp3} -//│ > tmp3 = z + z -//│ > val b = tmp3 -//│ > fun f() = a + x -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > SymbolMap { -//│ > classMap: Map(2) { -//│ > [Function: D] { class: [Function] } => ConcreteClassSymbol { -//│ > name: 'D', -//│ > value: [Function], -//│ > paramsOpt: [Some], -//│ > auxParams: [Array] -//│ > }, -//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [Function], -//│ > paramsOpt: [Some], -//│ > auxParams: [] -//│ > } -//│ > }, -//│ > moduleMap: Map(0) {} -//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls index 466548b46b..f30930496b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls @@ -11,9 +11,6 @@ module NonStaged with //│ static { //│ NonStaged1 = this //│ } -//│ constructor() { -//│ runtime.Unit; -//│ } //│ static sq(x) { //│ return x * x //│ } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls index 7ecba03ac4..d391fc981e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageWtihCompanion.mls @@ -5,65 +5,10 @@ staged class M with fun f() = 1 staged module M with fun g() = 2 -//│ > module M with -//│ > () -//│ > fun g() = 2 -//│ > Map(1) { 'g' => [Function: g_gen] } -//│ > SymbolMap { -//│ > classMap: Map(0) {}, -//│ > moduleMap: Map(1) { -//│ > [class M] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } -//│ > } -//│ > } -//│ > class M1 with -//│ > () -//│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > SymbolMap { -//│ > classMap: Map(1) { -//│ > [class M] { -//│ > 'cache$M': [FunCache], -//│ > 'generatorMap$M': [Map], -//│ > 'class$cache$M': [FunCache], -//│ > 'class$generatorMap$M': [Map] -//│ > } => ConcreteClassSymbol { -//│ > name: 'M1', -//│ > value: [Function], -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > }, -//│ > moduleMap: Map(1) { -//│ > [class M] { -//│ > 'cache$M': [FunCache], -//│ > 'generatorMap$M': [Map], -//│ > 'class$cache$M': [FunCache], -//│ > 'class$generatorMap$M': [Map] -//│ > } => ModuleSymbol { name: 'M', value: [Function] } -//│ > } -//│ > } staged class B module B with fun f() = 1 -//│ > class B with -//│ > () -//│ > -//│ > Map(0) {} -//│ > SymbolMap { -//│ > classMap: Map(1) { -//│ > [class B] { -//│ > 'class$cache$B': [FunCache], -//│ > 'class$generatorMap$B': Map(0) {} -//│ > } => ConcreteClassSymbol { -//│ > name: 'B', -//│ > value: [Function], -//│ > paramsOpt: None {}, -//│ > auxParams: [] -//│ > } -//│ > }, -//│ > moduleMap: Map(0) {} -//│ > } // keep original functions of module :expect 1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls index ca158f9b3a..adfb8135e5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolMap.mls @@ -6,23 +6,4 @@ class C(val x) staged module A with fun g() = C(1) fun h() = C(2) -//│ > fun ctor_() = -//│ > () -//│ > fun g() = C(1) -//│ > fun h() = C(2) -//│ > Map(3) { -//│ > 'ctor$' => [Function: ctor$_gen], -//│ > 'g' => [Function: g_gen], -//│ > 'h' => [Function: h_gen] -//│ > } -//│ > Map(1) { -//│ > [Function: C] { -//│ > class: [class C] { [Symbol(mlscript.definitionMetadata)]: [Array] } -//│ > } => ClassSymbol { -//│ > name: 'C', -//│ > value: [Function: C] { class: [Function] }, -//│ > paramsOpt: Some { value: [Array] }, -//│ > auxParams: [] -//│ > } -//│ > } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index c0091d2578..720531ee6f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -6,37 +6,9 @@ staged module TempVariable with let x let x x -//│ > module TempVariable with -//│ > () -//│ > fun f(x, x) = -//│ > let {x, x} -//│ > x -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > SymbolMap { -//│ > classMap: Map(0) {}, -//│ > moduleMap: Map(1) { -//│ > [class TempVariable] { -//│ > 'cache$TempVariable': [FunCache], -//│ > 'generatorMap$TempVariable': [Map] -//│ > } => ModuleSymbol { name: 'TempVariable', value: [Function] } -//│ > } -//│ > } staged module DupeFunctionName with fun f() = 1 -//│ > module DupeFunctionName with -//│ > () -//│ > fun f() = 1 -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > SymbolMap { -//│ > classMap: Map(0) {}, -//│ > moduleMap: Map(1) { -//│ > [class DupeFunctionName] { -//│ > 'cache$DupeFunctionName': [FunCache], -//│ > 'generatorMap$DupeFunctionName': [Map] -//│ > } => ModuleSymbol { name: 'DupeFunctionName', value: [Function] } -//│ > } -//│ > } class C(val x) @@ -44,59 +16,7 @@ staged module Selection with fun f(x) = x.call() C(1).x is Bool -//│ > module Selection with -//│ > () -//│ > fun f(x) = -//│ > let {scrut, tmp} -//│ > x.call() -//│ > tmp = C(1) -//│ > scrut = tmp.x -//│ > if scrut is -//│ > Bool then true -//│ > else false -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > SymbolMap { -//│ > classMap: Map(2) { -//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [Function], -//│ > paramsOpt: [Some], -//│ > auxParams: [] -//│ > }, -//│ > 'Bool' => VirtualClassSymbol { name: 'Bool' } -//│ > }, -//│ > moduleMap: Map(1) { -//│ > [class Selection] { -//│ > 'cache$Selection': [FunCache], -//│ > 'generatorMap$Selection': [Map] -//│ > } => ModuleSymbol { name: 'Selection', value: [Function] } -//│ > } -//│ > } staged module DupeClass with class C(val y) fun f() = C(1).y -//│ > module DupeClass with -//│ > class C(y) -//│ > fun f() = -//│ > let {tmp} -//│ > tmp = C(1) -//│ > tmp.y -//│ > Map(1) { 'f' => [Function: f_gen] } -//│ > SymbolMap { -//│ > classMap: Map(1) { -//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { -//│ > name: 'C', -//│ > value: [Function], -//│ > paramsOpt: [Some], -//│ > auxParams: [] -//│ > } -//│ > }, -//│ > moduleMap: Map(1) { -//│ > [class DupeClass] { -//│ > C: [Function], -//│ > 'cache$DupeClass': [FunCache], -//│ > 'generatorMap$DupeClass': [Map] -//│ > } => ModuleSymbol { name: 'DupeClass', value: [Function] } -//│ > } -//│ > } From 009248c45d14737272e8821a636a5f4565e8fd20 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 15 Apr 2026 00:16:15 +0800 Subject: [PATCH 536/654] update tests --- hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls | 2 +- hkmc2/shared/src/test/mlscript/codegen/Spreads.mls | 4 ++-- hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls index 842513b476..9a3c4ad9e8 100644 --- a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls +++ b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls @@ -233,7 +233,7 @@ id(Foo)(1) // ——— ——— ——— data class FooSpd(...args) -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1313': mismatched param list lengths List() vs List(term:FooSpd/args) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1314': mismatched param list lengths List() vs List(term:FooSpd/args) //│ ╟── The compilation result may be incorrect. //│ ╙── This is a compiler bug; please report it to the maintainers. diff --git a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls index 7dc98b09e6..65023217f6 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls @@ -58,7 +58,7 @@ foo(0, ...a) data class A(...r) let x = new A(1, 2, 3) x.r -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1313': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1314': mismatched param list lengths List() vs List(term:A/r) //│ ╟── The compilation result may be incorrect. //│ ╙── This is a compiler bug; please report it to the maintainers. //│ ═══[RUNTIME ERROR] Error: Access to required field 'r' yielded 'undefined' @@ -70,7 +70,7 @@ x.r data class A(...r) with fun getR = r new A(1, 2, 3).getR -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1313': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1314': mismatched param list lengths List() vs List(term:A/r) //│ ╟── The compilation result may be incorrect. //│ ╙── This is a compiler bug; please report it to the maintainers. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index 846b3679f8..be35b1c121 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -291,7 +291,7 @@ fun f(x) = let res = f(0) res.a res.b -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1313': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1314': mismatched param list lengths List() vs List(term:A/r) //│ ╟── The compilation result may be incorrect. //│ ╙── This is a compiler bug; please report it to the maintainers. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined From 303e362304841835dcb6b8442a59ceb052e0b8b6 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Wed, 15 Apr 2026 11:52:57 +0800 Subject: [PATCH 537/654] Minor fix --- .../codegen/ReflectionInstrumenter.scala | 2 +- .../src/test/mlscript-compile/Block.mls | 7 ++- .../staging/out/LinkingGeneratedClasses.mls | 20 ++++--- .../staging/out/SimpleStagedExample.mls | 53 +++++++++---------- .../test/mlscript/block-staging/Generate.mls | 28 ++++------ 5 files changed, 50 insertions(+), 60 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index b9e2107379..713b65e7ae 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -433,7 +433,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ((args, k) => call(_, args, true, "gen_call")(k)) (genPath) ) - callGenCont(call(blockMod("codegen"), toValue(modSym.nme) :: cachePath :: sourceSym.asPath :: psym.asPath :: Nil, true, "tmp")(_ => End())) + callGenCont(call(blockMod("Printer").selSN("class").selSN("default").selSN("codegen"), toValue(modSym.nme) :: cachePath :: sourceSym.asPath :: psym.asPath :: Nil, true, "tmp")(_ => End())) val entryFunDef = val sym = BlockMemberSymbol("generate", Nil) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 89ace5f568..d563b9c2d7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -122,7 +122,7 @@ class Printer(val owner: Opt[Class]) with Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" Select(qual, name) and // remove selection to owner for values defined within the owner - qual is ValueRef(sym) and owner is Some(owner) and sym === owner then showSymbol(name) + qual is ValueRef(sym) and owner is Some(owner) and sym == owner then showSymbol(name) // TODO: check if we should use `==` here else showPath(qual) + "." + showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" @@ -223,10 +223,9 @@ class Printer(val owner: Opt[Class]) with fun printModule(name, methods) = print("module " + name + " with" + indent("\n" + methods.map(showDefn(_)).join("\n"))) fun codegen(name, cache, source, file) = - let methods = cache.dump() - let ctorBody = cache.getFun("ctor").value.0.body + // let ctorBody = cache.getFun("ctor").value.0.body let fullpath = path.join of process.cwd(), file - let code = "import \"" + source + "\"\nmodule " + name + " with" + indent("\n" + showBlock(ctorBody) + "\n" + methods.map(showDefn(_)).join("\n")) + let code = "import \"" + source + "\"\nopen " + name + "\n" + indent(cache.toString()) if not fs.existsSync(fullpath) do fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 9c8b2a1fc3..0a03ff6ffe 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,14 +1,12 @@ import "../LinkingGeneratedClasses.mls" open LinkingGeneratedClasses module LinkingGeneratedClasses with - class D - fun test1 = - let {obj_1} - obj_1 = new C - obj_1 - fun test2 = - let {obj_2} - obj_2 = new D - obj_2 - fun ctor() = - class D \ No newline at end of file + class D + fun test1 = + let {obj_1} + obj_1 = new C + obj_1 + fun test2 = + let {obj_2} + obj_2 = new D + obj_2 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index af87bde8ef..18f53d561c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,30 +1,29 @@ import "../SimpleStagedExample.mls" open SimpleStagedExample module SimpleStagedExample with - () - fun ctor() = () - fun f(x, y) = x + y - fun fib(n) = - let {tmp, tmp1, tmp2, tmp3, n1} - if n is - 1 then 1 - 2 then 1 - else - n1 = n - tmp = n1 - 1 - tmp1 = SimpleStagedExample.fib(tmp) - tmp2 = n1 - 2 - tmp3 = SimpleStagedExample.fib(tmp2) - tmp1 + tmp3 - fun foo() = 60 - fun f_Lit2_Lit3(x, y) = 5 - fun fib_Lit10(n) = 55 - fun fib_Lit9(n) = 34 - fun fib_Lit8(n) = 21 - fun fib_Lit7(n) = 13 - fun fib_Lit6(n) = 8 - fun fib_Lit5(n) = 5 - fun fib_Lit4(n) = 3 - fun fib_Lit3(n) = 2 - fun fib_Lit2(n) = 1 - fun fib_Lit1(n) = 1 \ No newline at end of file + () + fun f(x, y) = x + y + fun fib(n) = + let {n1, tmp, tmp1, tmp2, tmp3} + if n is + 1 then 1 + 2 then 1 + else + n1 = n + tmp = n1 - 1 + tmp1 = fib(tmp) + tmp2 = n1 - 2 + tmp3 = fib(tmp2) + tmp1 + tmp3 + fun foo() = 60 + fun f_Lit2_Lit3(x, y) = 5 + fun fib_Lit10(n) = 55 + fun fib_Lit9(n) = 34 + fun fib_Lit8(n) = 21 + fun fib_Lit7(n) = 13 + fun fib_Lit6(n) = 8 + fun fib_Lit5(n) = 5 + fun fib_Lit4(n) = 3 + fun fib_Lit3(n) = 2 + fun fib_Lit2(n) = 1 + fun fib_Lit1(n) = 1 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 79dd6041e4..7345a21cf4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -22,26 +22,20 @@ SimpleStagedExample.f(1, 5) :expect 5 SimpleStagedExample.fib(5) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:228) -//│ ═══[RUNTIME ERROR] TypeError: SimpleStagedExample1.fib is not a function -//│ at SimpleStagedExample.fib (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mjs:26:37) -//│ at REPL29:1:59 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:600:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:935:10) -//│ at REPLServer.emit (node:events:508:28) -//│ at REPLServer.emit (node:domain:489:12) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: processTerm (JSBackendDiffMaker.scala:267) -//│ ═══[RUNTIME ERROR] Expected: '5', got: 'undefined' +//│ = 5 import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" -:todo LinkingGeneratedClasses."generate"("../LinkingGeneratedClasses.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls") + +import "../../mlscript-compile/staging/out/LinkingGeneratedClasses.mls" + +:fixme +LinkingGeneratedClasses.test1 +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. + +LinkingGeneratedClasses.test2 +//│ = D + From a7207ce365e21298eeec9f6b2a40a3849f906cc4 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Wed, 15 Apr 2026 15:54:09 +0800 Subject: [PATCH 538/654] WIP: Add linear algebra benchmark --- .../mlscript-compile/NaiveTransform3D.mls | 155 ++++++++++++++++++ .../mlscript-compile/staging/Transform3D.mls | 12 ++ .../staging/out/Transform3D.mls | 8 + .../block-staging/Transform3DTest.mls | 66 ++++++++ 4 files changed, 241 insertions(+) create mode 100644 hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls new file mode 100644 index 0000000000..ebfa347176 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls @@ -0,0 +1,155 @@ +import "./Predef.mls" +open Predef + +fun sin(x) = Math.sin(x) +fun cos(x) = Math.cos(x) + +module NaiveTransform3D with + fun iter(sum, x, y, colX, i, j, k) = + if k < colX then iter(sum + x.(i).(k) * y.(k).(j), x, y, colX, i, j, k + 1) + else sum + + fun iterCol(vec, x, y, colX, colY, i, j) = + if j === colY then vec + else iterCol(vec.concat(iter of 0.0, x, y, colX, i, j, 0), x, y, colX, colY, i, j + 1) + + fun iterRow(m, x, y, rowX, colX, colY, i) = + if i === rowX then m + else iterRow(m.concat([iterCol of [], x, y, colX, colY, i, 0]), x, y, rowX, colX, colY, i + 1) + + fun genID(v, w, i, j) = + if j === w then v + else genID(v.concat(if i === j then 1.0 else 0.0), w, i, j + 1) + + fun iterID(m, w, i) = + if i === w then m + else iterID(m.concat([genID([], w, i, 0)]), w, i + 1) + + fun updateVec(vec, m, col, j, v, i', j') = + if j' === col then vec + else if j' === j then updateVec(vec.concat(v), m, col, j, v, i', j' + 1) + else updateVec(vec.concat(m.(i').(j')), m, col, j, v, i', j' + 1) + + fun iterUpdate(res, m, row, col, i, j, v, i') = + if i' === row then res + else if i === i' then iterUpdate(res.concat([updateVec([], m, col, j, v, i', 0)]), m, row, col, i, j, v, i' + 1) + else iterUpdate(res.concat([m.(i')]), m, row, col, i, j, v, i' + 1) + + // TODO: remove manual lifting above after we can stage them correctly + + fun multiply(x, y) = + let rowX = x.length + let colX = x.0.length + let rowY = y.length + let colY = y.0.length + check(colX === rowY) + iterRow([], x, y, rowX, colX, colY, 0) + // fun multiply(x, y) = + // let rowX = x.length + // let colX = x.0.length + // let rowY = y.length + // let colY = y.0.length + // check(colX === rowY) + // fun iterRow(m, i) = + // if i === rowX then m + // else + // fun iterCol(vec, j) = + // if j === colY then vec + // else + // fun iter(sum, k) = + // if k < rowY then iter(sum + x.(i).(k) * y.(k).(j), k + 1) + // else sum + // iterCol(vec.concat(iter of 0.0, 0), j + 1) + // iterRow(m.concat([iterCol of [], 0]), i + 1) + // iterRow([], 0) + + fun ident(w) = iterID([], w, 0) + // fun ident(w) = + // fun iter(m, i) = + // if i === w then m + // else + // fun gen(v, j) = + // if j === w then v + // else gen(v.concat(if i === j then 1.0 else 0.0), j + 1) + // iter(m.concat([gen([], 0)]), i + 1) + // iter([], 0) + + fun update(m, i, j, v) = + let row = m.length + let col = m.0.length + iterUpdate([], m, row, col, i, j, v, 0) + // fun update(m, i, j, v) = + // let row = m.length + // let col = m.0.length + // fun iter(res, i') = + // if i' === row then res + // else if i === i' then + // fun iterVec(vec, j') = + // if j' === col then vec + // else if j' === j then iterVec(vec.concat(v), j' + 1) + // else iterVec(vec.concat(m.(i').(j')), j' + 1) + // iter(res.concat([iterVec([], 0)]), i' + 1) + // else iter(res.concat([m.(i')]), i' + 1) + // iter([], 0) + + fun transform(dx, dy, dz) = + update( + update( + update(ident(4), 0, 3, dx), 1, 3, dy + ), 2, 3, dz + ) + + fun scale(sx, sy, sz) = + update( + update( + update(ident(4), 0, 0, sx), 1, 1, sy + ), 2, 2, sz + ) + + fun rotateX(angle) = + let s = sin(angle) + let c = cos(angle) + update( + update( + update( + update(ident(4), 1, 1, c), 1, 2, -s + ), 2, 1, s + ), 2, 2, c + ) + + fun rotateY(angle) = + let s = sin(angle) + let c = cos(angle) + update( + update( + update( + update(ident(4), 0, 0, c), 0, 2, s + ), 2, 0, -s + ), 2, 2, c + ) + + fun rotateZ(angle) = + let s = sin(angle) + let c = cos(angle) + update( + update( + update( + update(ident(4), 0, 0, c), 0, 1, -s + ), 1, 0, s + ), 1, 1, c + ) + + fun model(local, position, scaling, rotation) = + if position is [dx, dy, dz] and scaling is [sx, sy, sz] and rotation is [rx, ry, rz] and local is [x, y, z] then + let rot = multiply( + rotateZ(rz), multiply( + rotateY(ry), multiply( + rotateX(rx), ident(4) + ) + ) + ) + if multiply( + transform(dx, dy, dz), multiply( + rot, multiply(scale(sx, sy, sz), [[x], [y], [z], [1]]) + ) + ) is [x', y', z', w] then [x', y', z'] diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls new file mode 100644 index 0000000000..3ee01d14a2 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls @@ -0,0 +1,12 @@ +#config(liftDefns: true) + +import "./../Predef.mls" +open Predef + +fun sin(x) = Math.sin(x) +fun cos(x) = Math.cos(x) + +staged module Transform3D with + fun foo(x) = + fun bar(y) = x + y + bar(x + 1) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls new file mode 100644 index 0000000000..e37eac3bc2 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -0,0 +1,8 @@ +import "../Transform3D.mls" +open Transform3D +module Transform3D with + () + fun foo(x) = + let {tmp} + tmp = x + 1 + bar(x, tmp) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls new file mode 100644 index 0000000000..2178a16aee --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls @@ -0,0 +1,66 @@ +:js +:staging +:noModuleCheck + + +import "../../mlscript-compile/NaiveTransform3D.mls" + +let x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] +let y = [[9, 8, 7], [6, 5, 4], [3, 2, 1]] +//│ x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] +//│ y = [[9, 8, 7], [6, 5, 4], [3, 2, 1]] + +NaiveTransform3D.multiply of x, y +//│ = [[30, 24, 18], [84, 69, 54], [138, 114, 90]] + + +NaiveTransform3D.ident(4) +//│ = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] + + +NaiveTransform3D.update(NaiveTransform3D.ident(3), 1, 2, 5) +//│ = [[1, 0, 0], [0, 1, 5], [0, 0, 1]] + +NaiveTransform3D.transform(1, 2, 3) +//│ = [[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 3], [0, 0, 0, 1]] + + +NaiveTransform3D.scale(2, 2, 2) +//│ = [[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 1]] + + +NaiveTransform3D.rotateX(3.1415 / 2) +//│ = [ +//│ [1, 0, 0, 0], +//│ [0, 0.00004632679487995776, -0.999999998926914, 0], +//│ [0, 0.999999998926914, 0.00004632679487995776, 0], +//│ [0, 0, 0, 1] +//│ ] + + +NaiveTransform3D.rotateY(3.1415 / 2) +//│ = [ +//│ [0.00004632679487995776, 0, 0.999999998926914, 0], +//│ [0, 1, 0, 0], +//│ [-0.999999998926914, 0, 0.00004632679487995776, 0], +//│ [0, 0, 0, 1] +//│ ] + + +NaiveTransform3D.rotateZ(3.1415 / 2) +//│ = [ +//│ [0.00004632679487995776, -0.999999998926914, 0, 0], +//│ [0.999999998926914, 0.00004632679487995776, 0, 0], +//│ [0, 0, 1, 0], +//│ [0, 0, 0, 1] +//│ ] + + +NaiveTransform3D.model([[10], [0], [0]], [5, 0, 0], [0.5, 0.5, 0.5], [0, 0, 3.1415926535 / 2.0]) +//│ = [[5.000000000224483], [5], [0]] + + +import "../../mlscript-compile/staging/Transform3D.mls" + +Transform3D."generate"("../Transform3D.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls") + From 6fa973a8530b16518367fa2429bd0962276d7e5c Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Wed, 15 Apr 2026 17:55:05 +0800 Subject: [PATCH 539/654] Staged --- .../mlscript-compile/NaiveTransform3D.mls | 78 +- .../mlscript-compile/SpecializeHelpers.mls | 13 +- .../mlscript-compile/staging/Transform3D.mls | 113 +- .../staging/out/Transform3D.mls | 1437 ++++++++++++++++- .../block-staging/Transform3DTest.mls | 49 + 5 files changed, 1632 insertions(+), 58 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls index ebfa347176..e1775ee943 100644 --- a/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls @@ -1,39 +1,33 @@ -import "./Predef.mls" -open Predef - -fun sin(x) = Math.sin(x) -fun cos(x) = Math.cos(x) - module NaiveTransform3D with fun iter(sum, x, y, colX, i, j, k) = - if k < colX then iter(sum + x.(i).(k) * y.(k).(j), x, y, colX, i, j, k + 1) + if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) else sum fun iterCol(vec, x, y, colX, colY, i, j) = - if j === colY then vec - else iterCol(vec.concat(iter of 0.0, x, y, colX, i, j, 0), x, y, colX, colY, i, j + 1) + if j === 0 then vec + else iterCol(vec.concat([iter of 0.0, x, y, colX, i, colY - j, colX]), x, y, colX, colY, i, j - 1) fun iterRow(m, x, y, rowX, colX, colY, i) = - if i === rowX then m - else iterRow(m.concat([iterCol of [], x, y, colX, colY, i, 0]), x, y, rowX, colX, colY, i + 1) + if i === 0 then m + else iterRow(m.concat([iterCol of [], x, y, colX, colY, rowX - i, colY]), x, y, rowX, colX, colY, i - 1) fun genID(v, w, i, j) = - if j === w then v - else genID(v.concat(if i === j then 1.0 else 0.0), w, i, j + 1) + if j === 0 then v + else genID(v.concat([if i === w - j then 1.0 else 0.0]), w, i, j - 1) fun iterID(m, w, i) = - if i === w then m - else iterID(m.concat([genID([], w, i, 0)]), w, i + 1) + if i === 0 then m + else iterID(m.concat([genID([], w, w - i, w)]), w, i - 1) fun updateVec(vec, m, col, j, v, i', j') = - if j' === col then vec - else if j' === j then updateVec(vec.concat(v), m, col, j, v, i', j' + 1) - else updateVec(vec.concat(m.(i').(j')), m, col, j, v, i', j' + 1) + if j' === 0 then vec + else if col - j' === j then updateVec(vec.concat([v]), m, col, j, v, i', j' - 1) + else updateVec(vec.concat([m.(i').(col - j')]), m, col, j, v, i', j' - 1) fun iterUpdate(res, m, row, col, i, j, v, i') = - if i' === row then res - else if i === i' then iterUpdate(res.concat([updateVec([], m, col, j, v, i', 0)]), m, row, col, i, j, v, i' + 1) - else iterUpdate(res.concat([m.(i')]), m, row, col, i, j, v, i' + 1) + if i' === 0 then res + else if i === row - i' then iterUpdate(res.concat([updateVec([], m, col, j, v, row - i', col)]), m, row, col, i, j, v, i' - 1) + else iterUpdate(res.concat([m.(row - i')]), m, row, col, i, j, v, i' - 1) // TODO: remove manual lifting above after we can stage them correctly @@ -42,14 +36,12 @@ module NaiveTransform3D with let colX = x.0.length let rowY = y.length let colY = y.0.length - check(colX === rowY) - iterRow([], x, y, rowX, colX, colY, 0) + iterRow([], x, y, rowX, colX, colY, rowX) // fun multiply(x, y) = // let rowX = x.length // let colX = x.0.length // let rowY = y.length // let colY = y.0.length - // check(colX === rowY) // fun iterRow(m, i) = // if i === rowX then m // else @@ -63,7 +55,7 @@ module NaiveTransform3D with // iterRow(m.concat([iterCol of [], 0]), i + 1) // iterRow([], 0) - fun ident(w) = iterID([], w, 0) + fun ident(w) = iterID([], w, w) // fun ident(w) = // fun iter(m, i) = // if i === w then m @@ -77,7 +69,7 @@ module NaiveTransform3D with fun update(m, i, j, v) = let row = m.length let col = m.0.length - iterUpdate([], m, row, col, i, j, v, 0) + iterUpdate([], m, row, col, i, j, v, row) // fun update(m, i, j, v) = // let row = m.length // let col = m.0.length @@ -107,8 +99,8 @@ module NaiveTransform3D with ) fun rotateX(angle) = - let s = sin(angle) - let c = cos(angle) + let s = Math.sin(angle) + let c = Math.cos(angle) update( update( update( @@ -118,8 +110,8 @@ module NaiveTransform3D with ) fun rotateY(angle) = - let s = sin(angle) - let c = cos(angle) + let s = Math.sin(angle) + let c = Math.cos(angle) update( update( update( @@ -129,8 +121,8 @@ module NaiveTransform3D with ) fun rotateZ(angle) = - let s = sin(angle) - let c = cos(angle) + let s = Math.sin(angle) + let c = Math.cos(angle) update( update( update( @@ -140,16 +132,16 @@ module NaiveTransform3D with ) fun model(local, position, scaling, rotation) = - if position is [dx, dy, dz] and scaling is [sx, sy, sz] and rotation is [rx, ry, rz] and local is [x, y, z] then - let rot = multiply( - rotateZ(rz), multiply( - rotateY(ry), multiply( - rotateX(rx), ident(4) - ) + let rot = multiply( + rotateZ(rotation.2), multiply( + rotateY(rotation.1), multiply( + rotateX(rotation.0), ident(4) ) ) - if multiply( - transform(dx, dy, dz), multiply( - rot, multiply(scale(sx, sy, sz), [[x], [y], [z], [1]]) - ) - ) is [x', y', z', w] then [x', y', z'] + ) + let res = multiply( + transform(position.0, position.1, position.2), multiply( + rot, multiply(scale(scaling.0, scaling.1, scaling.2), [[local.0], [local.1], [local.2], [1]]) + ) + ) + [res.0, res.1, res.2] diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 80a6416375..475dd76fcb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -206,6 +206,15 @@ fun sor(ctx, r) = if r is throw Error("runtime.Tuple.slice not handled in shape propagation") Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ClassSymbol then // class within module [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] + Select(p, Symbol("concat")) then + if sop(ctx, p).values() is [Shape.Arr(arr)] and args is [e] and sop(ctx, e.value) is [Shape.Arr(arr2)] then + [End(), r, mkArr(arr.concat(arr2))] + else + [End(), r, mkDyn()] + Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _)), Symbol("sin")) then + [End(), r, mkDyn()] // TODO: evaluate if the parameter is static + Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _)), Symbol("cos")) then + [End(), r, mkDyn()] // TODO: evaluate if the parameter is static ValueRef(clsSymb) and clsSymb is ClassSymbol then // global class [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] ValueRef(Symbol("super")) then @@ -310,7 +319,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = fun prop(ctx, b) = if b is End() then [b, mkBot()] - Return(Call(Select(ValueRef(symb), Symbol(f)), args), implct) and not (symb is ModuleSymbol) then + Return(Call(Select(ValueRef(symb), Symbol(f)), args), implct) and not (symb is ModuleSymbol) and not (f is "concat") then // TODO[later]: Ref -> Path, remove special checks dispatchMethodCall(ctx, None, Some(implct), symb, f, args, End()) Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then [concat(blk, Return(r1, implct)), s1] @@ -320,7 +329,7 @@ fun prop(ctx, b) = if b is let newCtx = Ctx(new Map(ctx.ctx), newAllocs, ctx.currentThis, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] - Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) then + Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) and not (f is "concat") then // TODO[later]: Ref -> Path, remove special checks dispatchMethodCall(ctx, Some(x), None, symb, f, args, restBlock) Assign(x, r, restBlock) and sor(ctx, r) is [blk, r1, s1] then diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls index 3ee01d14a2..9d3a3c3ec4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls @@ -1,12 +1,107 @@ -#config(liftDefns: true) +staged module Transform3D with + fun iter(sum, x, y, colX, i, j, k) = + if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) + else sum -import "./../Predef.mls" -open Predef + fun iterCol(vec, x, y, colX, colY, i, j) = + if j === 0 then vec + else iterCol(vec.concat([iter of 0.0, x, y, colX, i, colY - j, colX]), x, y, colX, colY, i, j - 1) -fun sin(x) = Math.sin(x) -fun cos(x) = Math.cos(x) + fun iterRow(m, x, y, rowX, colX, colY, i) = + if i === 0 then m + else iterRow(m.concat([iterCol of [], x, y, colX, colY, rowX - i, colY]), x, y, rowX, colX, colY, i - 1) -staged module Transform3D with - fun foo(x) = - fun bar(y) = x + y - bar(x + 1) \ No newline at end of file + fun genID(v, w, i, j) = + if j === 0 then v + else genID(v.concat([if i === w - j then 1.0 else 0.0]), w, i, j - 1) + + fun iterID(m, w, i) = + if i === 0 then m + else iterID(m.concat([genID([], w, w - i, w)]), w, i - 1) + + fun updateVec(vec, m, col, j, v, i', j') = + if j' === 0 then vec + else if col - j' === j then updateVec(vec.concat([v]), m, col, j, v, i', j' - 1) + else updateVec(vec.concat([m.(i').(col - j')]), m, col, j, v, i', j' - 1) + + fun iterUpdate(res, m, row, col, i, j, v, i') = + if i' === 0 then res + else if i === row - i' then iterUpdate(res.concat([updateVec([], m, col, j, v, row - i', col)]), m, row, col, i, j, v, i' - 1) + else iterUpdate(res.concat([m.(row - i')]), m, row, col, i, j, v, i' - 1) + + fun multiply(x, y) = + let rowX = x.length + let colX = x.0.length + let rowY = y.length + let colY = y.0.length + iterRow([], x, y, rowX, colX, colY, rowX) + + fun ident(w) = iterID([], w, w) + + fun update(m, i, j, v) = + let row = m.length + let col = m.0.length + iterUpdate([], m, row, col, i, j, v, row) + + fun transform(dx, dy, dz) = + update( + update( + update(ident(4), 0, 3, dx), 1, 3, dy + ), 2, 3, dz + ) + + fun scale(sx, sy, sz) = + update( + update( + update(ident(4), 0, 0, sx), 1, 1, sy + ), 2, 2, sz + ) + + fun rotateX(angle) = + let s = Math.sin(angle) + let c = Math.cos(angle) + update( + update( + update( + update(ident(4), 1, 1, c), 1, 2, -s + ), 2, 1, s + ), 2, 2, c + ) + + fun rotateY(angle) = + let s = Math.sin(angle) + let c = Math.cos(angle) + update( + update( + update( + update(ident(4), 0, 0, c), 0, 2, s + ), 2, 0, -s + ), 2, 2, c + ) + + fun rotateZ(angle) = + let s = Math.sin(angle) + let c = Math.cos(angle) + update( + update( + update( + update(ident(4), 0, 0, c), 0, 1, -s + ), 1, 0, s + ), 1, 1, c + ) + + + fun model(local, position, scaling, rotation) = + let rot = multiply( + rotateZ(rotation.2), multiply( + rotateY(rotation.1), multiply( + rotateX(rotation.0), ident(4) + ) + ) + ) + let res = multiply( + transform(position.0, position.1, position.2), multiply( + rot, multiply(scale(scaling.0, scaling.1, scaling.2), [[local.0], [local.1], [local.2], [1]]) + ) + ) + [res.0, res.1, res.2] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index e37eac3bc2..d81dc72bd1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -2,7 +2,1436 @@ import "../Transform3D.mls" open Transform3D module Transform3D with () - fun foo(x) = - let {tmp} - tmp = x + 1 - bar(x, tmp) \ No newline at end of file + fun iter(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iterCol(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = ===(j, 0) + if scrut1 is + true then vec + else + tmp5 = colY - j + tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) + tmp7 = [tmp6] + tmp8 = vec.concat(tmp7) + tmp9 = j - 1 + iterCol(tmp8, x, y, colX, colY, i, tmp9) + fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter(tmp3, x, y, colX, i, j, tmp4) + else 0 + fun iterRow(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_1} + scrut1 = ===(j, 0) + if scrut1 is + true then + tup_1 = [] + tup_1 + else + tmp5 = colY - j + tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) + tmp7 = [tmp6] + tmp8 = vec.concat(tmp7) + tmp9 = j - 1 + iterCol(tmp8, x, y, colX, colY, i, tmp9) + fun genID(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = ===(j, 0) + if scrut3 is + true then v + else + tmp16 = w - j + scrut4 = ===(i, tmp16) + if scrut4 is + true then + tmp17 = 1 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = j - 1 + genID(tmp19, w, i, tmp20) + else + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = j - 1 + genID(tmp19, w, i, tmp20) + fun iterID(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = ===(i, 0) + if scrut5 is + true then m + else + tmp21 = [] + tmp22 = w - i + tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = i - 1 + iterID(tmp25, w, tmp26) + fun genID_Arr__end_Dyn_Dyn_Dyn(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20, tup_2} + scrut3 = ===(j, 0) + if scrut3 is + true then + tup_2 = [] + tup_2 + else + tmp16 = w - j + scrut4 = ===(i, tmp16) + if scrut4 is + true then + tmp17 = 1 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = j - 1 + genID(tmp19, w, i, tmp20) + else + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = j - 1 + genID(tmp19, w, i, tmp20) + fun updateVec(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec(tmp33, m, col, j, v, i', tmp34) + fun iterUpdate(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate(tmp44, m, row, col, i, j, v, tmp45) + fun updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_3} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_3 = [] + tup_3 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec(tmp33, m, col, j, v, i', tmp34) + fun multiply(x, y) = + let {rowX1, colX3, rowY, colY2, tmp46} + rowX1 = x.length + colX3 = x.0.length + rowY = y.length + colY2 = y.0.length + tmp46 = [] + iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) + fun iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_4} + scrut2 = ===(i, 0) + if scrut2 is + true then + tup_4 = [] + tup_4 + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow(tmp14, x, y, rowX, colX, colY, tmp15) + fun ident(w) = + let {tmp47} + tmp47 = [] + iterID_Arr__end_Dyn_Dyn(tmp47, w, w) + fun iterID_Arr__end_Dyn_Dyn(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tup_5} + scrut5 = ===(i, 0) + if scrut5 is + true then + tup_5 = [] + tup_5 + else + tmp21 = [] + tmp22 = w - i + tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = i - 1 + iterID(tmp25, w, tmp26) + fun update(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_6} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_6 = [] + tup_6 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate(tmp44, m, row, col, i, j, v, tmp45) + fun transform(dx, dy, dz) = + let {tmp49, tmp50, tmp51} + tmp49 = ident_Lit4(4) + tmp50 = update_Dyn_Lit0_Lit3_Dyn(tmp49, 0, 3, dx) + tmp51 = update_Dyn_Lit1_Lit3_Dyn(tmp50, 1, 3, dy) + update_Dyn_Lit2_Lit3_Dyn(tmp51, 2, 3, dz) + fun ident_Lit4(w) = + let {tmp47} + tmp47 = [] + iterID_Arr__end_Lit4_Lit4(tmp47, w, w) + fun iterID_Arr__end_Lit4_Lit4(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 0 + tmp23 = genID_Arr__end_Lit4_Lit0_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 3 + iterID_Dyn_Lit4_Lit3(tmp25, w, tmp26) + fun genID_Arr__end_Lit4_Lit0_Lit4(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 0 + scrut4 = true + tmp17 = 1 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 3 + genID_Dyn_Lit4_Lit0_Lit3(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit0_Lit3(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 1 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 2 + genID_Dyn_Lit4_Lit0_Lit2(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit0_Lit2(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 2 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 1 + genID_Dyn_Lit4_Lit0_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit0_Lit1(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 3 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 0 + genID_Dyn_Lit4_Lit0_Lit0(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit0_Lit0(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + v + fun iterID_Dyn_Lit4_Lit3(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 1 + tmp23 = genID_Arr__end_Lit4_Lit1_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 2 + iterID_Dyn_Lit4_Lit2(tmp25, w, tmp26) + fun genID_Arr__end_Lit4_Lit1_Lit4(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 0 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 3 + genID_Dyn_Lit4_Lit1_Lit3(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit1_Lit3(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 1 + scrut4 = true + tmp17 = 1 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 2 + genID_Dyn_Lit4_Lit1_Lit2(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit1_Lit2(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 2 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 1 + genID_Dyn_Lit4_Lit1_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit1_Lit1(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 3 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 0 + genID_Dyn_Lit4_Lit1_Lit0(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit1_Lit0(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + v + fun iterID_Dyn_Lit4_Lit2(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 2 + tmp23 = genID_Arr__end_Lit4_Lit2_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 1 + iterID_Dyn_Lit4_Lit1(tmp25, w, tmp26) + fun genID_Arr__end_Lit4_Lit2_Lit4(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 0 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 3 + genID_Dyn_Lit4_Lit2_Lit3(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit2_Lit3(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 1 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 2 + genID_Dyn_Lit4_Lit2_Lit2(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit2_Lit2(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 2 + scrut4 = true + tmp17 = 1 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 1 + genID_Dyn_Lit4_Lit2_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit2_Lit1(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 3 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 0 + genID_Dyn_Lit4_Lit2_Lit0(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit2_Lit0(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + v + fun iterID_Dyn_Lit4_Lit1(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 3 + tmp23 = genID_Arr__end_Lit4_Lit3_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 0 + iterID_Dyn_Lit4_Lit0(tmp25, w, tmp26) + fun genID_Arr__end_Lit4_Lit3_Lit4(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 0 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 3 + genID_Dyn_Lit4_Lit3_Lit3(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit3_Lit3(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 1 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 2 + genID_Dyn_Lit4_Lit3_Lit2(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit3_Lit2(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 2 + scrut4 = false + tmp17 = 0 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 1 + genID_Dyn_Lit4_Lit3_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit3_Lit1(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 3 + scrut4 = true + tmp17 = 1 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 0 + genID_Dyn_Lit4_Lit3_Lit0(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit3_Lit0(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + v + fun iterID_Dyn_Lit4_Lit0(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = true + m + fun update_Dyn_Lit0_Lit3_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_7} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_7 = [] + tup_7 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_8} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_8 = [] + tup_8 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun update_Dyn_Lit1_Lit3_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_9} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_9 = [] + tup_9 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun update_Dyn_Lit2_Lit3_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_10} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_10 = [] + tup_10 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun scale(sx, sy, sz) = + let {tmp52, tmp53, tmp54} + tmp52 = ident_Lit4(4) + tmp53 = update_Dyn_Lit0_Lit0_Dyn(tmp52, 0, 0, sx) + tmp54 = update_Dyn_Lit1_Lit1_Dyn(tmp53, 1, 1, sy) + update_Dyn_Lit2_Lit2_Dyn(tmp54, 2, 2, sz) + fun update_Dyn_Lit0_Lit0_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_11} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_11 = [] + tup_11 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_12} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_12 = [] + tup_12 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun update_Dyn_Lit1_Lit1_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_13} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_13 = [] + tup_13 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_14} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_14 = [] + tup_14 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun update_Dyn_Lit2_Lit2_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_15} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_15 = [] + tup_15 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_16} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_16 = [] + tup_16 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun rotateX(angle) = + let {s, c, tmp55, tmp56, tmp57, tmp58, tmp59} + s = globalThis.Math.sin(angle) + c = globalThis.Math.cos(angle) + tmp55 = ident_Lit4(4) + tmp56 = update_Dyn_Lit1_Lit1_Dyn(tmp55, 1, 1, c) + tmp57 = -(s) + tmp58 = update_Dyn_Lit1_Lit2_Dyn(tmp56, 1, 2, tmp57) + tmp59 = update_Dyn_Lit2_Lit1_Dyn(tmp58, 2, 1, s) + update_Dyn_Lit2_Lit2_Dyn(tmp59, 2, 2, c) + fun update_Dyn_Lit1_Lit2_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_17} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_17 = [] + tup_17 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun update_Dyn_Lit2_Lit1_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_18} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_18 = [] + tup_18 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun rotateY(angle) = + let {s1, c1, tmp60, tmp61, tmp62, tmp63, tmp64} + s1 = globalThis.Math.sin(angle) + c1 = globalThis.Math.cos(angle) + tmp60 = ident_Lit4(4) + tmp61 = update_Dyn_Lit0_Lit0_Dyn(tmp60, 0, 0, c1) + tmp62 = update_Dyn_Lit0_Lit2_Dyn(tmp61, 0, 2, s1) + tmp63 = -(s1) + tmp64 = update_Dyn_Lit2_Lit0_Dyn(tmp62, 2, 0, tmp63) + update_Dyn_Lit2_Lit2_Dyn(tmp64, 2, 2, c1) + fun update_Dyn_Lit0_Lit2_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_19} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_19 = [] + tup_19 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun update_Dyn_Lit2_Lit0_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_20} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_20 = [] + tup_20 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun rotateZ(angle) = + let {s2, c2, tmp65, tmp66, tmp67, tmp68, tmp69} + s2 = globalThis.Math.sin(angle) + c2 = globalThis.Math.cos(angle) + tmp65 = ident_Lit4(4) + tmp66 = update_Dyn_Lit0_Lit0_Dyn(tmp65, 0, 0, c2) + tmp67 = -(s2) + tmp68 = update_Dyn_Lit0_Lit1_Dyn(tmp66, 0, 1, tmp67) + tmp69 = update_Dyn_Lit1_Lit0_Dyn(tmp68, 1, 0, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp69, 1, 1, c2) + fun update_Dyn_Lit0_Lit1_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_21} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_21 = [] + tup_21 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun update_Dyn_Lit1_Lit0_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_22} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_22 = [] + tup_22 + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun model(local, position, scaling, rotation) = + let {rot, res1, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84} + tmp70 = rotateZ(rotation.2) + tmp71 = rotateY(rotation.1) + tmp72 = rotateX(rotation.0) + tmp73 = ident_Lit4(4) + tmp74 = multiply(tmp72, tmp73) + tmp75 = multiply(tmp71, tmp74) + rot = multiply(tmp70, tmp75) + tmp76 = transform(position.0, position.1, position.2) + tmp77 = scale(scaling.0, scaling.1, scaling.2) + tmp78 = [local.0] + tmp79 = [local.1] + tmp80 = [local.2] + tmp81 = [1] + tmp82 = [tmp78, tmp79, tmp80, tmp81] + tmp83 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp77, tmp82) + tmp84 = multiply(rot, tmp83) + res1 = multiply(tmp76, tmp84) + [res1.0, res1.1, res1.2] + fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = + let {rowX1, colX3, rowY, colY2, tmp46} + rowX1 = x.length + colX3 = x.0.length + rowY = 4 + colY2 = 1 + tmp46 = [] + iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) + fun iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_23} + scrut2 = ===(i, 0) + if scrut2 is + true then + tup_23 = [] + tup_23 + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 0 + tmp6 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp5, colX) + tmp7 = [tmp6] + tmp8 = vec.concat(tmp7) + tmp9 = 0 + iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) + fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + else 0 + fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = true + vec + fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls index 2178a16aee..f5d628445d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls @@ -64,3 +64,52 @@ import "../../mlscript-compile/staging/Transform3D.mls" Transform3D."generate"("../Transform3D.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls") +import "../../mlscript-compile/staging/out/Transform3D.mls" + + +Transform3D.multiply of x, y +//│ = [[30, 24, 18], [84, 69, 54], [138, 114, 90]] + + +Transform3D.ident(4) +//│ = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] + + +Transform3D.update(Transform3D.ident(3), 1, 2, 5) +//│ = [[1, 0, 0], [0, 1, 5], [0, 0, 1]] + + +Transform3D.transform(1, 2, 3) +//│ = [[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 3], [0, 0, 0, 1]] + + +Transform3D.scale(2, 2, 2) +//│ = [[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 1]] + + +Transform3D.rotateX(3.1415 / 2) +//│ = [ +//│ [1, 0, 0, 0], +//│ [0, 0.00004632679487995776, -0.999999998926914, 0], +//│ [0, 0.999999998926914, 0.00004632679487995776, 0], +//│ [0, 0, 0, 1] +//│ ] + +Transform3D.rotateY(3.1415 / 2) +//│ = [ +//│ [0.00004632679487995776, 0, 0.999999998926914, 0], +//│ [0, 1, 0, 0], +//│ [-0.999999998926914, 0, 0.00004632679487995776, 0], +//│ [0, 0, 0, 1] +//│ ] + +Transform3D.rotateZ(3.1415 / 2) +//│ = [ +//│ [0.00004632679487995776, -0.999999998926914, 0, 0], +//│ [0.999999998926914, 0.00004632679487995776, 0, 0], +//│ [0, 0, 1, 0], +//│ [0, 0, 0, 1] +//│ ] + +Transform3D.model([[10], [0], [0]], [5, 0, 0], [0.5, 0.5, 0.5], [0, 0, 3.1415926535 / 2.0]) +//│ = [[5.000000000224483], [5], [0]] From ba8d96ed4823081737e9402708675f8b4c9d1696 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Wed, 15 Apr 2026 20:18:10 +0800 Subject: [PATCH 540/654] Add simple benchmarking --- .../staging/benchmark/NaiveTest.mls | 21 + .../staging/benchmark/StagedTest.mls | 19 + .../staging/benchmark/random_coordinates.csv | 160000 +++++++++++++++ 3 files changed, 160040 insertions(+) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/benchmark/random_coordinates.csv diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls new file mode 100644 index 0000000000..68c69abfd7 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls @@ -0,0 +1,21 @@ +import "fs" + +// import "./NaiveTransform3D.mjs" +import "./../../NaiveTransform3D.mls" + +let inputFile = "./random_coordinates.csv" + +let text = fs.readFileSync(inputFile, "utf-8") +let coords = text.trim().split("\n").map(line => + let t = line.split(",").map(Number) + [[t.0], [t.1], [t.2]] +) + + +let begin = globalThis.process.hrtime() +coords.map(coord => NaiveTransform3D.model(coord, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0])) +let diff = globalThis.process.hrtime(begin) +let diffTime = diff.0 * 1000000000 + diff.1 +console.log("time: " + diffTime) + + diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls new file mode 100644 index 0000000000..c64c251e2a --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls @@ -0,0 +1,19 @@ +import "fs" + +// import "./Transform3D.mjs" +import "./../out/Transform3D.mls" + +let inputFile = "./random_coordinates.csv" + +let text = fs.readFileSync(inputFile, "utf-8") +let coords = text.trim().split("\n").map(line => + let t = line.split(",").map(Number) + [[t.0], [t.1], [t.2]] +) + + +let begin = globalThis.process.hrtime() +coords.map(coord => Transform3D.model(coord, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0])) +let diff = globalThis.process.hrtime(begin) +let diffTime = diff.0 * 1000000000 + diff.1 +console.log("time: " + diffTime) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/random_coordinates.csv b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/random_coordinates.csv new file mode 100644 index 0000000000..5c53c0ce90 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/random_coordinates.csv @@ -0,0 +1,160000 @@ +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 +-250.91976230527507,901.4286128198323,463.98788362281016 +197.31696839407323,-687.9627191151269,-688.0109593275947 +-883.8327756636011,732.3522915498704,202.23002348641762 +416.145155592091,-958.831011408395,939.8197043239886 +664.8852816008434,-575.3217786434477,-636.3500655857988 +-633.1909802931324,-391.5155140809245,49.512863264475754 +-136.10996271576846,-417.54171960391614,223.70578944475892 +-721.0122786959164,-415.7107029295637,-267.27631341261656 +-87.86003156592813,570.3519227860272,-600.6524356832806 +28.468876827223312,184.82913772408483,-907.0991745600046 +215.08970380287678,-658.9517526254169,-869.896814029441 +897.7710745066665,931.2640661491187,616.7946962329222 +-390.7724616532586,-804.6557719872322,368.46605302431385 +-119.69501252079738,-755.9235303104424,-9.646179777459679 +-931.2229577695632,818.6408041575642,-482.44003679996615 +325.0445687079639,-376.5778478211781,40.13604235562161 +93.42055868655939,-630.2910889489459,939.1692555291172 +550.2656467222291,878.9978831283781,789.6547008552977 +195.79995762217027,843.7484700462337,-823.014995896161 +-608.0342751617096,-909.5454221789239,-349.33933847347134 +-222.645420621036,-457.3019364522082,657.4750183038586 +-286.4933466128215,-438.1309806252385,85.39216631649697 +-718.1515500504747,604.3939615080794,-850.8987126404584 +973.7738732010346,544.4895385933148,-602.5686369316552 +-988.9557657527952,630.9228569096683,413.71468769523426 +458.01433608197453,542.5406933718914,-851.9106965318192 +-283.06854291145476,-768.2618809497405,726.2068517511871 +246.5962536551158,-338.2039502947016,-872.8832994279527 +-378.03535656867564,-349.63335594650596,459.21235667612814 +275.11494271042625,774.425485152653,-55.57014967610144 +-760.8115081233966,426.48957444599,521.570097233795 +122.5543951389925,541.9343599091219,-12.408807271218507 +45.46565876398813,-144.9179632829007,-949.1617465118096 +-784.2171460133911,-937.1416286265315,272.8208225275607 +-371.2880378473467,17.141382329405587,815.1329478521861 +-501.4155417022501,-179.2341539287405,511.1022770860973 +-542.4036690167551,-846.040180342414,-420.4970941724639 +-677.5574254919911,859.3953046851461,616.2407591288338 +266.80751302084695,742.9211803754354,607.344153798229 +-626.8598822279283,785.1179969799555,78.68448383130135 +614.880310328125,792.1825998469865,-363.9930500562723 +-779.8961509446465,-544.1296749161166,-145.78442274748738 +636.0295318449862,721.461166512687,-986.0957389376186 +21.494605155131467,-165.177993702442,-555.7843790585396 +-760.2692653326344,-324.76965719274403,885.8194078250383 +-353.5941359584896,37.58124348673209,406.0379177903558 +-272.740795241412,943.5641654419214,924.8945898842226 +-496.4354083492717,-5.502988215229152,-398.24338036646066 +-430.31901124506476,-926.2261052909344,219.1286679597938 +5.358046457722935,-897.0424975000213,-442.7070715267771 +816.5317719333075,-520.8762186660551,-710.2102558175538 +-21.09447944487397,971.3009082212013,-515.8894569769991 +344.27109481175717,523.2392306574352,-524.7249120152007 +456.43269722371906,-264.43373456149357,264.6116611871589 +267.0594215217893,71.54936814951702,-819.4204598911833 +670.604991178476,-358.4398700565283,-626.9629792002916 +-918.4497168904721,181.78588637648363,355.1287236845649 +-966.8243421442877,24.186116598561966,-547.008449604124 +290.34558081889963,-651.2671419900171,381.87547620493183 +-226.5293073989252,873.459977473469,-724.9581117080136 +-317.867297899483,-773.0529575188218,849.3872365571256 +754.6787067619621,-484.11674456968876,319.96809206835815 +634.4444004024317,110.40162319892465,59.301156712012926 +-516.2954181990966,-813.7944643882016,794.4315159066534 +800.8361143266609,266.2029145465358,-321.9404179025986 +-301.5808507746782,451.9113577404787,794.2205199051541 +774.1728485302347,559.7510917152476,284.06329230857546 +-831.7200700099023,-676.7425718107725,797.1083770541584 +212.85811931917988,-981.6058967667407,-797.0569142679358 +327.00353821611156,-989.8768323075626,-678.3838971650027 +97.46757873317233,383.79039538538655,303.92251900520114 +-551.4613810788804,424.35844269507174,-525.5018250063999 +-349.2006036814646,492.9828102360482,299.26579809442933 +698.446820988356,315.22578460068667,136.61720667094323 +-812.6504643438151,-264.5683938811329,-469.59526463654913 +-512.0207132418328,946.0211095048912,-213.80455066647914 +784.0931103542266,262.27725199452584,589.6226070832968 +5.274186210384187,153.80776925271812,-14.964612362272192 +-609.514024403911,444.9042305230107,-438.45527511828845 +-951.3680671370923,290.9445918143356,-645.7786411859022 +880.9171687058285,907.8571540051748,829.728780440897 +-259.6825994891112,-969.0867669422652,856.6371251754508 +-143.63170336537132,933.3096380873392,927.2399541785057 +706.0189109347202,-411.10221586082866,-229.80454279614946 +702.2733430337139,-366.1559896874446,-661.0145066278151 +113.6025249167003,872.309548321562,392.059593349946 +140.12234017872993,-805.647012458463,230.01445339833958 +980.1077002085265,-719.831969526952,36.659304727473454 +754.746143855911,481.5372355084089,394.0314819905359 +404.96816797421843,-281.01769756048964,-412.81631147101325 +618.7223109570273,620.2267893583614,734.1446371602074 +826.4811051129425,22.68479772187561,3.0325893743992083 +596.5903579335504,299.9278615555304,403.9337545154067 +591.5853388722021,780.0106836351326,-324.0096862969284 +-248.83409472011192,-812.036120318262,156.56028199234788 +-928.1154524065158,-68.80396373507972,85.28926941515329 +-426.91749574343123,181.6665211380216,-938.9995001219012 +-925.3036225015712,645.2011213193166,-279.6187171774742 +-745.8789746962304,44.48652010960882,539.9871061972217 +-568.3579450063137,245.7809516380005,-829.3050700124641 +-896.6365576627846,62.70926313629593,81.27024322021293 +274.859802996413,452.1826674453232,951.7041589250691 +32.6006966023906,-354.08705411750805,590.3723895374073 +-458.3354974758515,-122.05715858872782,-843.0872373154681 +-949.298513169085,925.2968293558502,671.9602410244117 +391.9484121873959,-182.0941111714602,-653.4113598583085 +-687.1259146578279,-499.51420367080937,98.45332941224092 +429.19184540012475,320.39475343546246,-440.13220610811436 +909.7305613263882,475.79383339153696,108.70810502280142 +223.44149246870438,-160.79987514442018,-504.53802099768507 +-288.0546426974769,515.6922209287382,-971.2130227404882 +-767.8547189861675,-907.9947159564945,-918.5423953620598 +710.9211680220144,407.3157187600473,-51.652341825349595 +-804.3316786979971,-16.768249766335316,-53.05645843886862 +-653.5962601799697,-132.2967015240539,-202.9905312052531 +231.70019610443296,270.1873017352875,-909.3919804559109 +-250.77477074705757,251.71983142847284,6.2725171601754255 +712.9796823766446,317.38726323789,-674.1311458371406 +-858.8625051991403,284.8385564126313,-946.9773789167564 +171.55116254692666,880.4604828499153,150.94835575175784 +-223.6601475869562,286.57643688470625,-83.49421901696678 +91.23357863186993,882.9296175530503,-227.79472439845154 +922.3811276478284,810.7012839121276,-608.4177304214071 +-861.2773982496691,-798.4439972451466,-963.5563486969005 +-811.1140784881432,366.0135468327137,-857.622703079542 +-362.0487394124774,689.750621938909,-953.4561285283482 +628.9369651778716,-436.29045045320015,-763.6703447566874 +393.4743307283013,257.885693559768,754.9440270541058 +470.1420876077716,606.9618607696971,-435.930854857387 +-645.1209124405543,501.2295032817167,613.669478534528 +981.0102840013467,-174.76464617714703,-255.9638284144337 +552.8259214839936,-318.3929194939643,861.5146512071294 +716.8255036860237,-142.01194524996333,501.7421355829947 +509.0857481693647,-793.7522623281347,805.1058133591334 +10.504744895714339,652.9149322154833,-359.90079793877646 +791.0464569924009,-221.59664253167375,-978.3246970394033 +810.7639528385273,-817.4266464277329,-361.37272481917023 +900.1239341016098,901.2142938751122,146.8757762465723 +263.67442433959854,-103.10895604336042,-413.5784566038709 +-342.67090926016806,345.03691215407684,504.7490588753601 +583.1580874516972,579.2362855891079,-817.5877939026193 +-11.159390594837078,-884.8824799667115,99.057764647471 +-116.93899725324593,775.4083655165996,-298.16997489584264 +-765.8659671447883,-714.0166358943283,523.0212634349446 +236.43612663252202,-797.7546477544195,-831.7863877700051 +401.93826291824007,-854.4739872716129,643.7201185807123 +412.4844543129925,-837.3024387162004,-830.3245718296162 +973.279157002351,-251.45840848775936,-258.7157058662182 +625.5991345150051,894.4971547677173,972.0021276457419 +506.75637051788317,-247.48082893816843,-832.9985666026624 +554.2938318548736,116.80849947161005,-151.5559815060475 +812.708770189472,-777.6050353876973,-14.749791418281688 +-977.2927104651619,-62.6787160117475,-887.3934486363253 +-762.3641674638561,-764.9475064457902,298.42060423212706 +492.08975853084667,166.73753019431933,924.3450969490839 +-250.25884095259187,-428.5758274362786,737.1982563789206 +-552.8083229610947,926.4450788812226,-975.6910506203673 +939.7576534152781,-913.6801760988478,782.2862273961421 +55.40221817259976,985.9295922386007,-852.4068705292023 +107.7085688026416,938.605071238198,46.19568834029769 +258.7972762705251,391.4973779692343,-90.91787046445359 +255.11616016812695,168.62862384620053,802.316020981978 +-909.1072393170842,-438.07362081553936,900.8229681531175 +780.5275677818327,-88.68649442857418,240.26519560307338 +-445.23763403773467,-623.7576805524774,-72.60319012003572 +-293.2955439478943,167.3122237017442,-844.5307260700304 +948.7896153323329,972.4214889592058,396.3234280394902 +72.19273268824077,-380.94476742734446,627.5900394138973 +369.46234510775844,-674.7661213102174,821.8543689876849 +645.0744858463379,899.599826583848,451.4390167767199 +226.83039187157965,-163.51392741876225,865.4569667080266 +732.1277790008166,-909.5626597876212,-947.266051005496 +-247.07326624390078,621.1066615636657,974.5522586298889 +-699.1662177929436,188.2614307042702,-238.218286737957 +939.8287956292063,684.2378462714173,676.6574094222758 +-62.61368041005949,-170.3609953246696,-453.1858561385875 +-887.2490066981458,729.4447525101064,625.8020182601551 +999.4353465722611,993.2736741478107,110.8634112052548 +537.9748303610211,889.531459764856,699.2947813548228 +-505.3037965136047,-98.91172937981298,-741.6811696970101 +908.1020545174447,212.34926890176007,-542.7143889930746 +343.4013688117134,236.2564809157916,-283.67456393431905 +-772.884815600742,343.1463911855992,40.61540180758652 +544.6367834712787,40.32700222398671,704.3630006370802 +103.8136775489711,121.87594307077256,753.30720531669 +-193.03426757520594,-731.9695430987185,-942.434647373322 +510.2745113472381,240.61910270692943,408.1595361984471 +-574.0716769821786,-727.2570488264605,-970.9106686642361 +-298.82488238680605,179.83537370926615,-215.51190980053536 +-125.0501559525419,808.3173889874968,-303.4890659533993 +27.978978319621547,567.3060254822863,-206.91443535745964 +244.17340045574701,724.7274174934903,899.0412473152842 +-705.8530381419241,853.1752503229889,-15.76741384092361 +-483.51122340208326,-81.72848752347738,960.0651505709541 +-14.763812014260793,-342.49677942498363,266.80170863345165 +-519.7087624436139,-848.2733437826721,-742.2405561787016 +-743.9083220844551,-696.1946129754112,-722.3456547011797 +281.7494896064293,-636.2398312017103,-308.66543335227357 +793.5768198120236,-52.07671947425524,335.1154770420544 +-655.3602575967403,-615.4219623826584,-918.2627674670423 +-662.1298738556709,-442.8193219360827,-645.9790314465064 +-822.5949324858888,-758.7282577987984,-78.44246393454841 +-587.332563188415,-271.46027790384903,6.83454170971379 +380.7896572587306,-921.3757203178021,598.8207978180853 +255.80077898181548,-836.4819361022562,747.1572482135543 +841.7448010636263,-877.8440802902725,-446.24470370559254 +612.4025595861226,496.51938076731676,-630.9579612872453 +-581.3013533265794,-259.05579441723603,-30.954029617957303 +236.50954306059202,-262.17272086045523,-74.93056773370427 +494.9418762675132,-926.6335942188042,-495.1261113119585 +426.69917176910485,790.4136753743987,23.35488423133222 +64.2269705306312,-785.6559773204478,-105.1752663530907 +65.23453291004625,-515.0589927305407,-461.51353810123805 +-245.43167379075476,-959.8576044445473,-355.84166883364344 +-577.1039860069106,-345.0052956441707,-760.4757363614976 +781.05456147979,187.18490710809738,358.20463828897914 +578.3424772146766,-3.1156021418854607,-826.1594238251527 +74.21308363709545,173.6822360417582,490.8789483686601 +-136.68090754064121,-744.8393944088725,-432.44818840255107 +-273.8354072027298,291.8344826632024,141.55660933782383 +-287.80654820430755,973.0304975859594,211.54963871377436 +-525.546416528011,-796.4350547591926,-694.2817216313359 +-508.08454323098374,-678.6372534808886,-626.8659518973884 +-429.80966261230583,-653.2528094104903,793.5308492528504 +-839.5325086767156,49.02277914050933,-179.20634602067696 +964.7572338172129,-775.9221956638953,-204.2888019085167 +938.9408665507376,731.0142517879606,634.1441418985598 +-484.1943459101203,-658.2248252198683,337.2864398488621 +858.7519782551715,113.52578602785957,143.2253789397996 +-440.0418126794317,538.9858663838738,-625.9125028849533 +-352.64152719151264,-149.1271227671665,15.220757368910085 +-515.1805351698395,-770.326350521593,221.24008488326513 +-422.73889351948844,162.47644284522448,-691.2745694515954 +-37.719796290365025,65.1788651031718,-896.3529263551462 +-326.7914436121588,-731.1706461220515,-873.2500590544645 +979.9204647798904,-355.2923100505541,619.7488917092696 +-490.7186904724723,363.0054444478585,520.4557197793731 +191.27748121568857,-56.8476228996833,-176.318171705463 +-302.2634669140094,859.0582884956516,661.2388155754584 +930.0538213330251,-751.4055530289105,461.7349504072886 +876.6809136420757,-637.5338676686797,-867.007465266445 +482.24129858011815,148.94622635982387,683.6575535165441 +-720.455246747421,590.5346237197805,-596.7453599045109 +-672.688114268591,-671.4684041380142,629.1494404627642 +330.39444139240027,46.130849538238635,-282.33903175299497 +754.4010816262166,-215.10978515472925,633.1988789431541 +-121.73018285956312,-246.11114115018484,-74.64042866078717 +-397.2442516717158,495.21876035250216,5.440780184958271 +-535.5746097063654,799.149146549137,-232.21755725357718 +87.10572222797714,812.9442219290938,248.47599182798422 +-766.2039185832718,879.6642472269502,255.41610614283582 +-330.18877068582776,-721.4558546732255,588.050378540592 +240.14551185702703,66.92218395264308,787.7851661019154 +577.1944224490614,-696.6502405344977,-376.5558644089035 +-503.0217203710685,487.8925851453539,-932.9351305284413 +139.77936974263298,524.917371481381,753.5312735234988 +-315.8365025681851,642.5146093440258,-778.7365260895856 +692.9045834690364,-745.0226753360351,-205.4254188792654 +594.5907315591073,-700.1651453024524,-541.4972095347171 +444.50513678613265,440.07307309214866,282.2952657705946 +387.8968889342,85.44888669519241,-496.4018821860945 +-308.6080129921611,-636.8045663971486,816.9011226672567 +166.78358953224097,-198.29716647272016,-75.9883927117346 +894.5666792236307,-693.2971937678396,172.45966403359444 +11.777357768932006,222.90847086929557,-963.779632358319 +744.247817888303,864.2365649672247,130.2663671784178 +393.30164775378444,844.9987623545915,414.47726862679724 +-694.9219141714773,152.57672033362633,213.43009276571183 +-151.73865739522796,472.88847124944573,868.7340295380297 +851.1370258135526,-98.32125719173575,-773.5239083184895 +969.6823979246692,677.7961728918683,-750.6746375934663 +841.6837652347447,739.7927241242567,37.676114252144316 +182.55087148985854,-201.99459225973953,-890.4767223559373 +-329.60551670819814,605.706897196023,-990.7359539907943 +-333.00165661771166,-203.66261281811342,74.79120587584566 +839.7112328255209,-307.3080112680775,-306.0935962075446 +475.00249621949683,-95.5641182203857,-550.790354120036 +-95.12096773461326,-718.2859592404003,-647.2260269875534 +-3.264454521040534,-162.14910099090423,829.6918021362001 +-275.21220176673376,161.17670055608687,264.52857583906075 +-973.8110868233327,327.0747440334212,-643.9280662604972 +922.1406349389104,-702.6745444937741,-170.7517525459525 +-829.3006638427123,993.7485036918947,4.390020662485199 +190.7700346400875,-865.8470452231451,499.92094079835556 +-580.1888138088284,796.1085788814275,-589.7207190359857 +-618.6245586726668,-926.9006643038102,-55.866109780001466 +129.68226652523276,-868.5827211432952,551.0552333900212 +-93.42233050394475,48.78053865516017,-118.47450612354373 +-198.473878249348,119.28066261643585,-689.519508138575 +-636.1437390094577,723.5712420270347,892.2309242672654 +-253.38136744049416,-458.51065371289246,287.9990864780316 +-182.5316578038072,-949.2272886793103,-687.6948052676194 +431.9444576947951,317.84788382030274,-945.808014993033 +-556.0556761341011,-537.8504068238572,343.78548719745686 +-960.5789244912717,-791.7828360308523,599.8321707463788 +-642.9106758913327,305.4922157037495,-523.634437906547 +-801.1172144813097,-513.6556180010919,444.5338637113184 +711.3929362125714,660.4397291339833,-205.63294076309035 +336.1702731412922,-590.0314091683581,-413.7045394779735 +792.6716370422396,-973.9961529785279,-828.9829382910639 +-584.2274897079453,-946.9355922523606,-637.1291298204053 +166.08312193938445,-157.1508988150041,785.3434221539496 +634.8871234768817,-316.3652966042481,-481.153133137415 +-240.61518366546625,180.58988502961552,-463.87271835424747 +248.2978156982681,-181.17669561751916,104.09436170396043 +-127.74694172936665,-411.0684809161646,896.9066139243134 +527.2115883195218,-719.773648467095,736.9359517958255 +-25.137603500972773,789.1044537881828,599.7105118946304 +-149.57299106153312,-955.0613833597652,-462.6452812301078 +83.26842932173395,266.95643965229465,-484.2246291335954 +-721.2878518543517,669.8604735985982,968.8043614071044 +51.3803646053716,-656.641428303393,-455.38534696126214 +-963.2186469050665,828.597613120998,-764.4978342197178 +153.0329510285071,-451.88955862558805,108.35600503158685 +302.84077670372835,659.4836074144032,-587.1574564787936 +-978.008342683039,-726.2287398623855,800.0372836962101 +747.7801551250304,194.82620434061664,201.03372086730678 +330.07334909251085,-649.2574427531008,828.8238918499196 +-162.45895021585375,-233.72294350100503,37.83541056567515 +-906.0680664498899,-667.4332624878411,476.067232852741 +-834.4026641497471,206.3042189327764,-509.3017806373581 +-221.40877191604693,-422.6125264586003,-288.65456707010173 +438.091810368491,-405.75656875364996,132.80928059379448 +-47.89919560180067,327.3423307252963,873.6594786495159 +465.1441944205005,-570.1192428184866,-937.6337298774306 +-475.4719114003499,190.1558614005096,-897.1483730314993 +-7.267505597527361,193.68569783377848,-331.5122183660784 +541.8244074916438,-786.8034937324564,-849.7244365283825 +456.3775124072067,-9.017367587603076,376.804792855472 +-130.34532279250755,-507.1959335217864,638.2046353483995 +598.8317579379584,389.3929417088534,-455.7097255400746 +180.4613337381743,-278.0522061199464,-816.8358533467317 +834.6271509244855,-726.3627381620772,900.4747076416049 +-107.98845408408852,-629.7341423227607,83.80189475671637 +745.8916717528166,464.4497728191225,613.1222957228995 +317.5667334214347,384.55312903570484,698.3913031306386 +-500.66398228162814,-21.150072713719055,-557.5811163607955 +975.336015993294,888.1186793732265,-921.1463772629882 +411.1503450313769,850.4966348313317,-638.8493097453329 +135.89046110525896,830.9765951760837,-932.1080428284023 +394.8405344936798,-405.30198525489845,848.7923907530608 +942.1164903307356,888.5329782268677,-51.57156668507241 +724.0853019786268,689.0987970701408,-361.79905351348873 +657.8309483013547,-925.9847305690148,192.53975696410612 +-539.9823254245939,-758.8662284454424,-846.0935967415817 +392.5775517562795,-320.2500724638677,449.5335430575228 +-869.2873184021153,-369.41932433877935,78.9825847506745 +581.446329677927,-362.4949941358602,251.78275287401812 +771.9554964723743,231.72637636460922,-534.0810504927324 +-951.1984368869239,740.1977478018598,-957.4611782992257 +749.4033453683987,57.874268054423965,878.1353970257924 +597.5664715473308,995.868221066675,-298.5763690965797 +534.3765778622537,-196.13817278151566,-40.248759392182365 +255.0109264367402,747.3542283726774,968.1669383985902 +536.5468277290363,-164.46643566533248,-157.2859954458596 +475.16460317778296,-522.4457084633952,-779.0517737372106 +-290.7556847184469,-425.5220166918365,-407.3837590880198 +-532.7844979001801,-915.8136207272762,-964.2521305331724 +975.4447794720631,-144.45373252827528,-231.34670568063666 +359.29456538613977,-563.4922242698717,899.9223679004506 +572.6900288311042,-821.177995375481,-164.83844843014333 +758.2366151243293,889.4640445828206,-65.19697750026057 +226.82277842141548,-665.9321078158496,982.337252273953 +-536.6565972331132,885.4635482702513,299.2932979847369 +215.47358975771817,25.377022033017283,-538.6603765644827 +-646.9439359889834,-559.0275818596492,-627.123475711491 +559.1689471335067,-299.74948166653985,-884.3146468732073 +938.2052602816227,767.5717699268514,855.5045663904259 +989.8156452928706,-652.2095015610255,-207.51596219468252 +516.4769514081827,392.0412361075844,-692.2081873202899 +631.6662499812355,-551.1188563266787,-552.3647703547538 +73.94884578682718,185.87986968340624,160.17241567562246 +-817.0263252044903,754.9217252607607,-468.7999148225879 +-740.9701574343917,777.4961597379545,911.3029964595066 +724.2552345309011,619.0321494497562,310.48396127804335 +101.7147412182785,-826.0264801771798,-183.09357385860255 +-254.62296597537204,-480.4924324793476,446.84022737716987 +-8.248529842458424,-837.9075681847041,-559.6335961003773 +366.5175273191919,-847.7382810193997,702.4138280975374 +-9.706945972051358,-38.826845346703976,184.81556931903515 +649.3619318502983,-304.38158419561387,356.03230511812717 +131.46392799158207,-465.94345966115736,757.2599727103159 +594.8520432138562,316.90366931685094,701.1634581884839 +734.5884019196046,416.72595343006947,674.0266567273441 +394.9429233385672,360.28154352060074,237.2227564303687 +505.4332791152824,-682.7897894138525,761.7415183978569 +743.687055490464,-941.5054339308817,651.6335011295253 +-742.2602650531096,-329.76229148171626,487.01651258321544 +-678.4802079033836,635.9340482381244,664.2683559154839 +14.935467521672422,-987.2282565663328,-425.9237336501744 +233.85383675148432,962.3723560548469,263.62705403333666 +-480.3928378716804,268.0114061992226,79.97075943171103 +559.6907903022873,-786.0387223460832,522.0558050040561 +82.53315735222054,925.9840077179892,-316.2556679226278 +265.2437862678962,864.0562110200349,-794.9805440186415 +874.4569744729022,375.7714446016266,-864.3258817896563 +-398.07286610636754,416.34417729056327,-865.2987970624566 +164.34092035254662,-308.23388609408653,241.83103553495425 +-908.5159323749743,743.0736123047525,946.9779383547939 +937.7557105713829,499.3036634858495,-739.8275197387361 +516.5263918580451,-950.826167082397,-955.7528969420055 +-352.7795617009175,-22.71361919066851,540.8148356155864 +366.59075321301043,-108.19458724650337,-452.7466674366683 +994.2490003154223,-147.63739552805407,-97.22595134064909 +-672.7523576166616,589.6190974998588,387.36445156297737 +-558.4607744224793,-835.2379087683146,360.9986041494262 +309.02242856227053,-453.4809460035814,901.7271245008208 +-697.8842164381995,-135.3303979147962,887.2318403351978 +-160.54536614775543,277.051895328171,-204.81120407441142 +-451.56959530266,967.9552959196565,-181.33198736991392 +788.1984073582689,-540.0907882178276,-573.7905919498335 +-937.7318342309773,303.33365075177016,-262.9473125524777 +728.7164996792742,-53.580186616885726,936.3868558294434 +-628.9489685937576,737.2463359112216,553.1937055834835 +541.8436892881041,689.5664562337754,522.0479818859978 +252.4406432628307,-737.5102446352248,-934.9476410174962 +841.6956956313736,233.300629041476,593.0745819523527 +-36.95529697489985,-765.3836220752111,-749.6284155948991 +371.13057445794266,-139.38821020107457,-598.9505465993266 +-16.810906517126227,-871.5821258497318,163.94280382879765 +-462.0131911298047,595.1182012743764,-379.2760821528525 +-89.55970183639761,-976.7589201837988,-855.1062244108823 +-215.01288718663034,-40.12233056575303,200.04109623860745 +-416.6748425813935,389.96377225308515,720.2447943784091 +559.7019777866997,-920.7623493032856,-38.98610548434215 +-790.1396431636502,-515.9099682749451,973.3251865342929 +-715.0089141969736,-2.223693097287878,236.31146863623826 +404.9299410882079,119.29736697382828,-980.4583051616327 +-347.07738351201624,35.42328676942293,-824.2670017103333 +-298.74613758163844,-933.5937824172669,-842.8430056899585 +-206.15344759680784,-734.5684919138794,135.0816965231163 +378.9299382745314,601.1733982181656,-599.6995115103798 +-665.0348354818605,-790.8643193311995,272.8604990872734 +412.95145297380236,-936.827710348716,872.4244924873797 +-896.0574326970552,82.59267060214097,418.1210389018329 +741.9382474921713,428.17386426485564,603.4561661395837 +-321.09961491438787,629.6502274930244,-839.7703072306497 +789.6333121210553,95.18475230747254,634.5955399249874 +-95.36343096339976,287.15539039304986,52.805321872226386 +463.17904351066363,-836.7400359388208,-879.2958320188724 +-505.7935319797071,-680.9106397736233,743.5671331844035 +-561.5720252839114,951.7305116382627,-326.20841645778626 +-635.7641686226015,579.3970142849582,317.4155510017522 +-3.6085670937220584,110.7271018752624,438.40355654452765 +-543.0905173374026,992.6678321134839,949.5863242935663 +300.6513726938738,-600.9150981417097,360.45648486258256 +-855.6031820416483,-938.6949955883879,-484.6342229775727 +-74.75408652136741,736.5450108167611,454.33813953261597 +485.413042399962,-149.01333110384928,-308.13001490607417 +-257.92247403079455,975.2991274721157,-919.7816171750351 +734.062992244897,157.3508171447868,-122.76916162081909 +450.5153208302729,-26.662117150594327,746.8464761633211 +801.403728022517,-156.55814625308915,-446.3444055298969 +184.70065718672436,824.7266912333819,-578.6756219886668 +245.9331671269656,263.12044018504116,466.22604483056193 +-736.8646297454804,431.64992936417707,818.0650413312819 +-640.633782259516,-524.9133501522447,942.7901880832792 +-638.0460945810205,708.7701867391584,-15.444287103930378 +-505.5378511936459,741.4998025450227,-109.38948999466902 +29.63470785938034,-281.5332612004686,185.90170286985494 +-672.9522548299544,-217.8369266964786,938.824644670575 +-483.7331345977449,313.4733290825843,-349.61987155061024 +546.9462513732012,-738.2526785633004,939.6420901570893 +-92.42091723272154,-527.8990733070721,-853.0065053399746 +-660.4841898249185,39.54789711203534,-325.9936471374274 +657.766731765219,-138.22495267638817,-502.5714548247402 +234.28997320806002,413.5544337708916,-665.9161841981003 +-664.7615674233647,-926.657146132914,472.804030131281 +327.6090552436101,-50.738248500372265,688.3408979383942 +611.3403059001064,170.7087287935044,736.5425610265172 +-588.3175799264635,-776.1607612045443,-460.5007769660208 +-885.8262878213703,62.339056002064126,873.211384589923 +-921.3129186629807,-755.7801719799464,-95.60194343312946 +867.7500350558098,-367.687790046499,14.469617376784868 +-916.8542818992158,-703.3135980758223,973.2602459176937 +930.237392872091,-990.1200381311808,903.6235708464778 +278.2398756310008,735.8365890400441,-90.52028873228176 +31.192057158500575,-22.306839486159674,333.7285150922087 +-720.6974904873741,-940.0528202546441,-384.14011681761815 +409.36152547329334,-596.2930957541032,346.86486664983454 +939.824092214541,-812.1985684211633,345.20423645025267 +-112.4995613908577,736.2845087550106,-645.7004211052282 +385.251904452329,676.2305792962204,889.2284389480465 +366.4960565792917,-5.650471983145394,235.69448040242764 +737.8099689574365,141.21949327765947,-939.2258806063263 +861.8973910139555,379.0535020631223,353.02677155449305 +-568.6496952045657,317.7709404653144,-212.27118869168305 +302.4659540829841,-786.8139393840186,315.69060920607217 +998.8274515413332,-903.5759222788879,954.3483684426346 +-186.1840785542588,741.5069006745182,564.770968116547 +134.03252197333563,476.89841850265293,757.0311226026959 +-191.71935669793402,-345.9336768735226,335.1867711271693 +615.6918838825172,524.5702695532316,595.6272977172689 +-128.833370374134,635.6684323500433,-759.5818892587831 +88.97819592169913,-988.4826790037569,-350.8283401994594 +-267.07693025720425,-207.65461678148927,390.93441337972445 +-222.88379745930854,-102.61275475493869,-524.911738251345 +-253.49641674131988,-545.460745473697,-853.6081524631127 +206.89718676275584,336.4255971100324,238.98069201922908 +-73.01191239885532,-240.42843964154042,726.6672991436506 +38.16357027243612,-41.63624474053802,-948.7158683871286 +-317.50434474768724,-239.6087624282859,-202.354438206199 +160.3447384546646,67.20509345375694,215.81018558688925 +529.7665230842565,625.9714774321869,436.2461524529888 +911.0473919098695,-963.5348346472767,-608.4440286329078 +-984.8742500437157,294.94942830920604,796.0610978999739 +-513.0354068474014,854.0690895926132,-879.4652194208783 +868.8720536110286,-296.7546255207312,-797.158343101567 +-28.256481627348762,-486.4468645589841,-430.25419607615436 +-385.4200701474268,606.0517956653268,78.322553350509 +-377.3846016879927,220.66756662183684,432.30134844638724 +-454.7519985329325,-172.90179694929702,-756.2278133261049 +-637.7013009306394,362.23570792996566,-637.1233046087461 +50.326767334120404,418.09252344486526,-786.2461538105124 +134.62443925780713,-486.8744325972725,925.8537504751596 +-32.90870656015056,611.9850995503161,100.45308431252352 +-913.1749342903616,266.3027511880448,902.8066844133141 +203.22364029266237,638.3777188535805,768.4129266968157 +-543.840456102135,-575.9103201835467,221.96197770198341 +-177.94306038659056,679.7226057334408,800.0462467960224 +-293.1572413945638,-526.2588820510359,561.0510304877237 +-450.3879289037278,645.2286370273569,-152.5234927024743 +335.0997985829408,-808.9293723306637,247.71864935314602 +-96.46464252554176,173.21692635094814,-663.9715845102731 +473.74748988836427,725.594155086457,-566.5203998184487 +-808.5708889596765,-952.7228279073272,283.943000886532 +214.18807217756148,93.39482542813994,-536.1058077680491 +-218.18800818897068,188.95267037234612,-6.466282281661279 +975.5710404297747,-727.1204948865337,390.28910809518766 +-191.36246379141573,-143.6007701487705,435.1955313163526 +384.8723026487394,982.5119874043767,-743.2114210917496 +-791.7807012316673,448.6776342574824,156.77383401281827 +-451.6786668803883,-841.1612620220268,-828.6835008071389 +788.3817493282365,-616.2653505625142,-353.2568757689585 +-546.687195546024,-290.00738833612536,-861.1523145078132 +38.11958181654063,-864.7748728155702,600.7130156447231 +-532.575836179134,80.02382920902119,760.1581751229164 +301.75473809438836,65.91557310267058,-351.3324937692488 +-333.9961738836041,338.97391039638023,988.278722442335 +323.6783796987572,115.5668347400499,461.3010204784921 +-69.5887754325637,-879.7153147984295,124.59363175581962 +915.2505690107605,-649.3941152846808,380.00978164133153 +-598.132622681887,71.65536894616253,-806.6471007065608 +-99.25812748362978,512.3266577904922,-304.85695152203584 +329.82344897443613,590.8999215794584,854.3556389589053 +-530.715836289093,-201.36816838138373,-695.1679733391652 +984.9670043167505,854.0019358485906,79.91426056111914 +684.0665887528426,41.91595454408434,247.1713760055195 +-821.7511357679667,510.5408409936158,-744.5730327295304 +652.1352605050567,564.0561753407717,417.48939548595285 +-927.6792389504758,-393.74328810934276,-473.77486017831427 +-279.72718505696184,-824.7145064723229,873.9156460621255 +107.60448142475252,-388.95137868395295,-206.03696585143314 +-105.59491899032867,201.18866672123454,31.358855392995565 +838.7839464288347,-6.073034188339534,984.3160296466253 +702.8499154901915,-582.9789712853284,861.1904292878326 +-767.2672042290478,634.8994169823832,-238.7534130468398 +755.9486408901391,736.1133802149006,611.8508002352423 +580.0608726141227,-390.6417218039185,-838.1614338974956 +-194.03964246967712,-652.9509700269826,389.90217780492344 +-307.8005469244289,951.2204017198299,281.94415469066394 +644.9611272687218,-734.9506545163031,724.0289645452451 +845.5143810267887,-25.876162362128184,212.50587550195496 +529.6196018059909,-650.322745479175,5.132152926884828 +-202.67394445537377,-707.2520156755018,-264.93115541693714 +-863.6553812290128,-948.3761861010261,-729.6674216903546 +926.2302231783476,99.05907179003384,931.6443223064398 +-135.00424333973604,-376.3677338294808,12.283725680488146 +-120.97662273417973,-788.6706314765122,281.65262938041246 +-567.9236349808008,239.1759097956592,300.40218479630676 +-695.9502937427037,-877.3007457786637,561.5231721368796 +-80.39915246135968,-883.6724089890484,989.7326343395343 +-884.4388780072667,390.07045771710636,967.3578505268272 +-521.6397915681488,-715.5012626256076,-757.2301211551422 +-393.44970486480895,-797.9083779787067,384.32268338826384 +-875.4164037398746,18.844256299579456,993.3937077059536 +627.9405390120376,230.43887646202188,-387.4927584267766 +247.79167258327698,54.08292782330318,-147.83323221925707 +-738.579246519601,773.2084304809334,-100.43070235735502 +-610.7549763584699,-264.4812982454208,-171.74049494214592 +655.0757911337487,467.22876112280414,538.6097872826797 +-977.9374711427056,-167.69200364047697,-37.311696729352775 +-961.6154463538867,-480.37358250993157,520.57964624427 +-725.7805885420019,70.62026290518338,-569.596255965525 +-975.7584507122134,-517.5970848009171,951.7475098201076 +603.0742237659792,919.1532886420669,-24.29191214727507 +-780.527602644993,95.91897794738588,-91.2453308800782 +688.714165479232,-803.8348384315109,-23.517725956443655 +-699.9026706120314,-350.64814621988,474.71415477559935 +-47.9637412624669,-248.22342970846137,-211.04744285992933 +-81.10646318802674,570.0330876741139,784.1693778804688 +910.6693730078566,573.8067725105902,-369.1862085039745 +376.2694121730842,-124.7937518892162,-490.65875590789767 +681.7431588518452,-923.14730207535,803.523984270847 +-77.04507075053164,274.4029536165608,318.7078444115655 +790.2354814130726,273.33936433441454,227.86716952012353 +-866.6959188786201,36.81604389040808,-699.6619983659167 +474.86753744297107,24.443841625349023,360.4555584167067 +-916.6541987952314,-830.4159679083936,432.64677612536457 +-855.8313280026532,-857.4865444694829,-975.7830495302251 +913.0027965989602,475.0167189180138,-293.49718299587164 +-406.9288374246895,-300.59354050830086,549.3070623623637 +322.74122214082877,-629.6088642650641,-651.7813293318313 +-803.2087005732053,320.6054394026762,528.7453244434719 +-469.907143349992,-958.1100779381744,-835.6566650471453 +935.7200696900609,-409.1104450451595,538.4462956762673 +249.32713770852752,-236.12072069420822,-588.6254756088897 +-757.2271636811871,230.02593607773315,549.2675612755759 +287.80850708226126,60.60426649831652,-916.0975531367275 +936.9775551887676,597.4283833091492,-414.3559265980705 +959.9406587177014,203.76317927264427,164.84531641449303 +496.1463588590643,623.5395761802752,312.9572146630053 +-743.8085072675999,-323.46498801100324,856.1672806520994 +-550.7687763122962,-255.66595232497332,-135.84623411160806 +-121.19002061109563,225.8791649890511,886.1516754894153 +-518.61457633499,-756.9972473981638,-605.0590202801254 +773.849800418539,291.6216253104121,-428.1864215216798 +631.8938779372345,722.7399927268721,693.028677380556 +837.8530672791089,-495.5179596532768,510.0838574925565 +-78.92100545172002,683.9971057801231,456.98135432322647 +552.8948929994492,312.3236753621429,-645.1424610605862 +90.05383779387671,969.3394790490165,874.7761329942377 +-913.6525284059767,-670.3703685411258,-736.5424530908762 +451.95981997059107,635.5706597138901,-572.9772673786562 +11.705385903657998,681.4060560224,465.60308953250114 +84.47441098369654,180.6953809175459,16.721093832559973 +-404.90309736235884,130.04398571803222,377.77060410018134 +746.6458317216154,272.58270795849626,522.243074086316 +-679.856730090854,-76.88505116042018,-981.3367603458134 +-506.642270956754,452.9234302260097,983.619902698727 +-801.6438008255682,-197.01136827742346,600.141937398319 +-591.9287307422023,110.16989860457238,466.1425920593497 +231.9709005203581,-623.9505307691677,-289.2308626285212 +567.5835689707944,108.45302826403326,-989.5407729141746 +521.9815200561877,-929.3772901195218,491.46756546246434 +-595.0388796695252,916.1469602387604,-264.118497395831 +-346.1367673238418,-702.2238993351107,-388.79156901957026 +753.3015236564011,992.6686752544947,-263.38093898630336 +-102.77873809091489,444.141876405474,772.3915609301491 +186.08866837356823,-216.94860364434135,-174.75631830275256 +391.2362929936137,-993.5634727914427,239.17867491968127 +-289.0139791172852,588.3946625541685,-814.0187203537357 +176.404533896781,-38.05422022775247,284.6510518104549 +-870.2928110340633,159.96757485626267,122.96917591904753 +121.32018883234196,206.9753331929096,352.9358744527244 +609.9779993615396,-460.3585597435713,650.0988203601241 +-3.4886354730926996,-845.8834417313377,-882.8981415120415 +-331.5233626078784,569.7939542229351,415.3618694818315 +577.229929344813,34.53811288321867,-119.60200408901892 +-705.0949465874321,-343.61449278137695,-131.9612676522495 +-822.7991406407655,-558.7760945775775,196.45058812747766 +471.3262284783798,996.6950227858993,866.2266626871153 +285.13039907038296,-157.50389341185598,272.3547294164655 +571.3032361604639,-763.3276181532253,-180.1902206074235 +679.6045712712344,-232.334096133912,143.744542454373 +175.5387217243965,-631.0474937327213,-275.5291166954232 +-330.9774225161357,-947.6065829358704,-951.6164722172895 +663.3940873515469,-453.8583800543752,36.157532477630866 +-402.5488528224539,881.3584902306811,-481.40648226845246 +-140.68637452212988,745.4605009692036,683.8671335836173 +-627.7971643074454,605.2866195914207,-83.62622652421464 +-34.0622558292896,-733.0400551681124,-838.7969724857508 +455.8786139475303,-7.077695289400481,-126.29859476964089 +459.01645730479345,531.0257979822195,-682.1836646612928 +220.4502989552825,-729.291835444629,502.75017205809127 +313.910312534279,913.2292421669158,-862.0839672871576 +-885.8905576974913,-435.6258506135997,-476.5886325281881 +-506.04240185600037,812.5091610420734,-500.9076003009878 +-456.10054774273806,518.7965248359274,-100.52031509892004 +553.4211139103625,-869.2676848712294,-24.8576126532314 +-932.7727996334347,-874.693593089291,812.874906688822 +-721.5092577648097,64.84136455043426,-177.80879479858686 +-305.3133474823146,799.6666913745448,-956.353206449021 +327.5793723511781,926.7888684271009,120.33636692368395 +873.6449240661836,-895.4842414279525,-162.41336185167722 +-479.6844180758977,461.6419299614595,962.5941809944934 +-486.9398751115044,308.349202948149,-603.8047344805198 +130.66050914321977,-72.13502662332758,944.0106592630741 +217.05454539293305,-300.98725582636246,-771.8084302241332 +-697.506342530131,-549.3661400975298,-498.066677319404 +701.2321156822757,122.4455765650498,46.78182274873279 +-770.462256261565,720.27938669887,445.6286064169674 +-864.6632761999969,415.67019445953724,87.07643468529204 +-836.5493085064435,-83.39871694268709,-30.607425739906034 +-668.4509196734484,891.3962940005647,699.9507429613238 +338.04467465821654,-75.40887799878556,-176.46891683098295 +301.9469343019084,90.86373881381087,-875.4537882362288 +25.005297540663378,612.8072344656789,-81.52024480608384 +-896.0868448914632,572.5563987680662,-597.2724357280513 +-482.7583302239225,-670.5872931354082,-339.56987025700494 +513.50301137727,38.77171900787471,-590.2374516985749 +755.6601563040817,759.1637099030584,741.1568500920139 +-522.4075772369215,-97.5213116380238,969.9793122817503 +544.0249526199807,-945.6651575488804,-869.5908174790159 +-72.13724637533448,818.4404117231204,77.40359590542835 +-4.374983931419592,-789.0526000867388,313.560209448588 +644.2063212004509,-239.15998498487534,551.2237018506548 +928.9533078016232,-592.4670817446217,46.65926238948259 +-425.72408383084894,585.7088380676787,155.18673176231505 +269.16483510060743,595.8283192317881,-208.05905467509024 +830.1801368140864,66.0577344922799,-684.090354329304 +391.798236337605,586.5227008765089,-366.4766458649467 +714.358513997506,812.2865095315328,-446.1910252443821 +967.0429454304442,-718.5769439024832,-595.9686631950201 +-631.5503215239478,787.9794200157407,308.5851046499238 +-695.7914335554542,-119.35316326330201,230.59605013960413 +-833.0718300212334,764.8327368146774,607.2070708830704 +10.413547153276454,934.2532305183408,-164.47804144980057 +968.2206380729956,335.8399976072542,269.34254650788284 +-668.0902094084299,763.8555166092879,-145.0206241587697 +-675.5331884350412,-974.7849600484819,119.51136727676521 +54.79924424535261,438.70724473831706,780.5161060356043 +-841.1868307139409,462.9929806807247,-625.1761118048355 +716.354106314328,638.1270277233123,81.58750997108882 +420.485597246623,-371.29977363250316,-57.664202134370726 +643.2737954209433,-81.46960565357222,-284.40346934911645 +-11.575105499400252,656.4985048744368,-329.5839052582545 +-652.4768137285124,424.0280406615616,651.9564254161637 +-798.7250429529333,-520.2517744881105,-716.0560204780122 +-304.1171768356668,-99.29804218917468,497.65267392661303 +302.2951697633482,241.8571349568624,-295.2501067806912 +682.89510616952,-57.42566520367086,958.209876030309 +268.2842765914736,-747.4705168709945,352.35512415086805 +-349.791969136602,372.6543933721948,-860.7177036751885 +-650.2371256480812,711.4745178115727,-545.6408859529702 +674.0822504858802,-441.4478230911791,285.7638201174152 +388.30114701966204,25.3095062901059,-389.3786466065375 +-574.7112472578078,-933.6212908751476,-392.1071975185524 +306.325581062566,876.6096368969654,742.408964526104 +532.1295530706052,576.8946865065973,329.96980695199045 +-479.426284867994,814.3900614116596,341.46462381166816 +120.88126196087978,-778.0210615730379,-105.88891238714916 +-79.2834575961474,729.1272190453399,93.29644037557705 +-239.19890205918068,953.6006570213187,-778.5588133473686 +-154.90314337611073,-915.9506496571894,479.8082415338606 +836.1531043983014,-439.9253408990211,716.6833535982419 +-415.5635390762045,821.5403232878305,507.9238071935679 +609.8135536828772,-963.986888799091,925.620714148052 +453.34198414064645,-390.49780922773334,658.7893297176938 +-436.95760317014015,745.5076791322558,-774.839219176126 +407.3719549215914,81.39695328982066,-806.9310596091184 +-516.212343482322,-975.1919274453704,-62.46406907098833 +-397.4694784799992,196.71496859551758,-405.5243845827656 +-400.16177698603065,486.3863974632068,-903.7143280432931 +805.7899903839746,704.527748782363,335.609366452813 +186.44314021476862,784.6049962793045,-629.3396409425711 +-842.0616756183427,-520.9796601809238,589.1565574003805 +-930.6594665470334,165.61367016697932,990.8750323826198 +711.3921876750787,42.891378087178964,-872.7181814267153 +662.7470287714198,197.95701635442106,-770.1340058808663 +-812.2854303532877,819.2536388731849,338.40052587615696 +658.573598633511,757.9578005645346,143.5447040966444 +34.89270351008258,-139.14517935801962,-366.10682441776146 +-130.8080782825765,547.7593114603128,203.84686203026308 +785.0465799096921,-113.23997124162452,214.17915743750814 +262.61510618397733,183.39432461265096,405.26754617103256 +-525.1330632503875,24.72755509158128,-791.5503943833046 +-230.97734471037495,-24.66586275747113,304.44851909094496 +901.062105172407,201.3021330967117,487.1878323531196 +12.532118990405479,268.2080627526627,-858.1355677324532 +-491.21683831630605,-276.2938135897226,-55.013289986972836 +-908.7025089952325,-719.9518048933646,-446.3713844173884 +943.0653818021012,-337.30598579389846,-35.91788377583498 +-607.8045745232141,221.5601421515364,-438.63356896805135 +-586.0148431231464,33.14525689195807,-988.9884016791584 +-984.6719347015494,-561.8623817962845,-926.5572749983577 +-783.9484917386172,-322.2787013224968,605.1713591596258 +144.09728673860172,25.335451912832923,-413.02235358375674 +863.5074388656328,-205.96991752561667,-825.8144664084571 +234.1330322356025,-772.3232130467972,-309.5537143966159 +14.82387743561776,748.4450493703516,-12.90683931976264 +404.5175320633284,985.6336779981407,-737.0217602040368 +-450.536948960961,-210.84784880470716,-156.34364292233727 +-177.95784946890842,815.2220051131098,428.06528893371296 +215.8104281814076,-381.2545642744358,647.5807684425895 +910.121022969978,642.396565100453,-996.8697896170542 +272.8027403668141,-897.7292371157986,-484.7855593325563 +-880.9505993044567,207.59090589877542,373.1798269852136 +-771.0247238681898,-232.32223391004106,-87.52698208891593 +-261.89395647816684,-757.9499990296139,-162.10441962504922 +502.3560956168362,-857.984670933489,-839.6399718361931 +-290.4574163280315,883.4514232378501,337.1452934458282 +357.3399133451296,-276.16001832427,187.3215824170768 +-979.7376319445133,272.19209281908434,826.5738951524734 +225.14693668963832,747.3971869326901,447.9461109321876 +-758.8831671926196,804.9066145716833,-867.1123112884502 +67.93494509552761,-715.7257524130846,-976.5867785381919 +-155.93147974472197,-409.91858469168756,-27.999012404793916 +154.39977346910155,-912.5218553821053,-753.9934097525088 +117.28479290085079,-313.6652936546835,458.3469750988959 +304.58329718387927,691.2087259798136,384.9856533384507 +-140.13784521970376,345.93324478886484,-449.237651489163 +-387.3730024435746,577.9703198415866,-107.1609671968356 +596.7606810367049,644.8447473365568,715.1246753225676 +833.2704716824146,-138.02955897340757,-362.2663633577223 +164.39749318822783,-257.65515312474486,202.148333600466 +411.1717252876492,376.81003698427367,-250.89422595975725 +-666.2795966024944,-138.94132307558493,-714.8117118361826 +780.1940703676166,-308.2450785242852,-691.0805055533524 +-949.1044801884982,291.6447725729686,273.80463490948637 +-318.79166683741664,-856.5762223046979,-180.74221020953598 +-377.56500987321283,354.24127947001875,211.5584989053807 +-270.81254360492005,-564.2148914900198,976.0719323111837 +-91.99675760777029,376.5484715604741,-718.8940648432784 +-28.820600681204382,-944.926560261069,10.910235820899857 +928.0348142354046,-231.58657402839958,-922.0079748501769 +-938.0884181613129,-224.02648010626103,-679.9501270736118 +-953.2958073436282,512.4272279003537,-82.95398223621862 +-421.51045605469096,800.1663660329614,-767.7220795989488 +911.8376579106384,-372.0665652452943,776.8073446173626 +205.88575295892315,653.414719482975,968.0263264209286 +-423.18912436250855,922.270970815186,-221.03621019515924 +-228.9761905261554,-319.2257914909886,82.81521469517043 +-691.7099136430259,107.42297071602229,83.40962482000805 +523.80362520974,667.2999238751711,-119.1172993751519 +-395.3335012970125,-481.330205365811,-610.7523265902562 +-884.7048356019502,-315.1040423305733,-459.5046157384335 +932.8347717328147,115.4176525000878,-305.44592193898495 +160.93520198739202,-721.606597308609,-111.91250159559422 +252.46864284212757,-22.20433641509726,-196.4423986913515 +987.6967777993964,760.629524297854,246.81191631888032 +138.75472236456562,241.32095964916812,-597.3757843551334 +-209.7245134713628,-921.0809342182014,-48.907925026346675 +86.04916791532628,-544.5005277935809,928.0576943310275 +818.909221874484,444.28647091181165,66.77325753072523 +739.9383192953699,-738.6953123530742,581.0195885497699 +-750.3583720663034,588.4213250988109,-448.46486349728605 +754.1811620363778,888.0841876507957,-702.4080611897687 +-74.64878986921292,961.9747563253702,-33.18512805370676 +727.0950450290902,177.46304426263964,-249.3401841607963 +-428.4328889482596,-593.5538178278255,523.5963827553944 +-226.9189863539442,22.550924401502357,-15.349039997636169 +154.55805846626254,731.1542912491045,961.4786871668589 +-184.83158285236607,655.0378442126062,529.0555893094354 +147.05790291114658,912.0942872238661,-599.0509689431944 +-781.4715793807571,707.9239339108442,-121.70036673250343 +693.9377084141208,786.1804103908298,-875.0848127618572 +766.9295259721214,-103.36188926115562,20.86497800846439 +253.18502218642038,852.7652134601735,-961.767811140472 +-46.3130633643658,375.4440848611214,445.413915396457 +385.06486307421596,-731.1297411837563,-401.2088232566375 +-282.5689491659731,608.8744153590101,-442.480255170894 +-578.5900722655937,914.8960380761923,-982.2734297730622 +995.6417113639563,353.64259771479124,656.9385988982342 +-410.76120730761363,-971.36944466588,475.73903712306014 +668.2891940013515,480.9522639070383,-714.2994253983228 +506.8558445139381,537.8455642152819,317.0810313401098 +532.2318655911724,691.8428793554642,227.20822847491695 +-822.7905720606418,-24.74438066557832,-844.7013306567899 +-184.91393793513828,-185.78702174874468,-867.9803117195169 +-302.3589320610414,-778.0038024173704,616.4704200184444 +895.3760519289415,-855.3670494841228,910.2304145834028 +45.15319867349035,-400.8686440922522,-846.275849447673 +1.248536140835654,589.0310889814973,414.17295453339625 +-899.5479770720525,-854.196329264193,-194.25343473472583 +-409.4190119041134,-535.2313538879043,-437.99100218257286 +606.9654865937694,858.4561072637077,-189.79461094486715 +812.2220042649942,-357.00859750423604,-47.126027312416795 +-547.9420043680005,280.952084351688,957.9622303496178 +206.98619208675723,-284.3718317729023,295.63489198105685 +-754.1586430692248,777.3181605307973,6.167901559672714 +-101.30051592071584,171.72957690703834,249.5677255788048 +-856.4483875469739,365.2344424468049,-516.1366393689409 +427.9052650131796,645.0695887683935,607.9170151050405 +105.00193481577821,40.339784621502304,-714.2480773211765 +550.6923008062711,-457.1812391065713,-6.609154364106871 +-431.45181414496653,-732.3432740006137,259.1153937834731 +-891.3359303541923,497.29046825239993,-364.8264094777667 +-999.7306139910294,22.258278474459644,-906.2961829447937 +-447.6608843582011,413.9529749114324,-874.6207567562683 +678.6769847120047,-992.3601546828338,-506.3522615961955 +481.8081123041429,-367.4597005413864,-796.215223867973 +-279.5321623991442,-459.2134272309489,685.4238043211099 +-373.3041648297137,577.8649435520144,783.7442896214695 +-132.36516084694097,819.886287708784,-245.36389207361435 +928.1568329802164,-821.4209509488542,374.0385330064855 +-12.371919086142611,-224.7023890887059,265.4237574972019 +407.7141832686623,-991.2734606993819,-666.0938225056026 +426.0921012686374,332.7708271564129,932.0950102573545 +522.075580501566,901.5454154626761,405.08100306961387 +-403.89558272111367,-789.2701554982871,563.6477266898712 +288.29844295183193,-903.6279752134076,-279.8990681980433 +913.5996309685722,0.8022914204024119,-134.54172796059072 +-84.60078968141204,-582.2345519896726,-262.58565827040957 +-260.3734880256468,-895.2899596250552,535.1352570358365 +-166.99113619224204,644.3597736328466,700.6960022397907 +-576.0118906026839,314.7069643402572,-55.4363916740366 +760.3134758429701,-568.5186416470917,355.62640062008836 +215.50424450544506,-409.39704485633445,-726.7981926976547 +303.27952095455316,477.1949162646613,-368.74531247330003 +289.66520804462766,-209.73818477699342,426.4137665652354 +-601.5694502118938,780.4300052723488,-425.1808070688405 +-264.4280244876942,-883.8160958393005,-776.9755753574473 +31.723805424656348,-464.81464654405704,670.9604514843888 +-970.6132226900924,-241.8119026561276,-325.3089064618147 +-961.344738164798,-751.2632019989795,-172.7146501627294 +-14.270831105106708,-191.4205054902618,61.87535682418775 +190.263349811363,-980.1523577443287,-71.80968109299226 +926.9984817751767,38.064560259097334,355.08453491790647 +-376.2722841662336,547.9827563055251,545.8429637522302 +42.592095308277976,952.0276465584273,-748.8995704746933 +-966.104670220838,540.3164235141919,614.3110747297651 +-759.5855417588475,-468.8343340827879,-964.8952732667422 +-413.38277843887056,546.2837478373431,35.921055425157874 +-303.80881366342385,-256.52141018733937,-997.2927485690637 +-400.39894486952824,292.91748327586106,948.3888876327142 +694.1216539677989,-952.8100707089418,797.1212093496786 +566.3968265972519,560.7522471419609,-84.00848199285701 +-203.9894140909944,-394.1685423336147,-868.6102820912685 +-543.5292730126018,-506.79273004395077,-31.845860579596774 +494.88881319338793,-52.380343204106794,-884.3111011056787 +915.5796019764077,885.4486381882245,570.3790862968167 +982.6558031284412,88.9646656005259,925.5367005064122 +-848.7899187664984,-268.63850347725736,-549.2374639864684 +-608.3338317314599,-718.3941022146478,244.82728313199323 +562.6437114946102,156.59679884072125,-706.0745808235806 +622.2475398669419,271.90941432745694,-223.66858774600894 +348.26059107212586,-480.1900415143343,-309.615583011579 +834.9716862639805,-418.9909886571593,-60.023463684126796 +780.2822747920293,415.4427005350549,-875.5935476705945 +-705.3939114420593,-984.3168184561664,261.84358045832687 +-104.65314917916339,-731.4502981954489,915.8682421135409 +59.31944789123986,-516.2134117742216,1.207142309415076 +359.2406654702156,-847.5215640528711,-450.59236990421607 +613.9309817679873,-80.67025919467756,93.15428406458977 +-134.36799558106145,-912.2001147139897,-668.5004403596881 +-108.91672251621821,-581.6290691841443,-900.0419426806425 +687.2993281036474,962.3850583282317,586.2857479934789 +707.569843409334,-516.0457393659092,921.2539510263996 +-606.1485910931433,902.8596207236646,989.6385879319021 +423.44561149209744,962.2874635836438,139.07955913420733 +-480.9164336478193,-126.0082286687583,187.12187075757197 +-853.83687594597,244.68652923449213,962.3556735245891 +-619.7847004325447,585.1902325767667,815.7975875592388 +887.4031856404417,920.2712088108944,42.919277442943894 +954.6158159830075,514.6204142688778,-676.6571275260762 +-46.19978706406005,436.6623507440079,-505.3193683618333 +281.23036709777466,333.20095809323857,-674.6005123828681 +130.17062490551257,543.2538219572155,-2.2086709281161347 +-975.7937664477852,-981.9230618414157,-285.94131205997564 +852.3881368635639,-542.6464407927824,268.7273777433743 +-555.8482586133589,-356.6600206809028,696.084179202968 +457.7228845398938,-809.2014453735787,-142.59595802713272 +-941.660472709471,-38.21970679398203,324.86802340213626 +-762.9947528036969,-422.23012218166866,-204.3267489956861 +839.0620493120996,986.510030845928,-910.1774020087682 +522.015846990784,-256.55186719531355,-215.08362754103996 +508.5299466940453,836.8528642908173,901.8571890050969 +154.24517207664167,-285.75768139899435,575.0981717175584 +-497.99723347539947,128.14805766703557,-282.8430769502537 +313.2621474157522,-519.2021742129862,-616.8141085303484 +836.4781733508742,-796.3926341009262,11.915815469863333 +-558.2944340739822,-922.140073348665,-927.9623634171472 +-649.5564557883454,733.5407090120004,-435.04251204594664 +900.9183411505915,163.24458597838702,-126.77162046246781 +160.17766933890925,33.39677045253552,517.5525075146504 +-435.0078680542955,-293.8992167993953,788.1886050665014 +892.913026300811,785.116454972949,-161.1040120853728 +560.7310060137634,-47.3285333978024,-4.920295707795617 +-590.6397818854321,182.260606517033,-627.7282044933041 +-336.87060186561246,710.0604032398703,-585.8483815782895 +-857.6834296531343,-861.9848147743674,881.5690410062159 +13.840875923669273,-181.17585636596334,621.7571620158369 +671.6518558210321,-335.61793376879075,387.2361149475905 +542.2456317037731,309.30137373190905,-696.8098503998012 +751.766167034114,78.18910547201745,-435.0551472599926 +-149.54362912461215,-924.8578192021853,-744.2663975551649 +531.0935010317216,-999.9767304892678,-166.8683430354156 +45.020362171176885,-890.7311599980554,946.1563259446657 +-547.7493375006561,-391.60256072743823,-392.1149754899453 +-539.1666757653002,-997.0523558273771,458.68958817599264 +933.6909995985707,-551.4130334299099,326.09438360684476 +483.79265391743024,696.8507581810495,-154.7416059727817 +-394.13818871914157,-349.4097319539378,425.24266619702576 +633.5589330112721,-636.7720644867948,-258.11798368446955 +803.8803934983,613.3870393894786,969.7168055249517 +508.4965193641615,-213.60959794415544,181.27566798927546 +322.0285084946406,-843.0883673657521,88.99391820773008 +418.6416569452192,-665.3573919978792,561.2634348511142 +167.54556102822335,904.4435713951893,-915.1554035862166 +-469.34772488906606,203.10775859964815,-406.8801755881386 +428.84832814248443,518.010565043862,-794.9680718670511 +27.708928413535432,17.781111182111772,-261.4384595689179 +865.8497251393442,655.0126397464423,394.41876381927364 +428.65327146999516,-76.56771237376176,841.9890421931518 +389.19085450657076,457.9621233116329,723.3818075746906 +-451.85682131561805,614.141807733406,-609.518794087016 +-309.3160955102243,-328.7790914603146,957.0509367782811 +713.0744474958537,402.3397231805195,454.1135232307802 +124.1455888051421,894.181334217038,-7.482494235276931 +-238.96458026021094,-673.929326136818,572.4113045221159 +468.88786415118284,-231.2899229517302,-949.6131720815413 +677.9946554360215,-977.1640330918527,407.3995592581018 +940.514219452114,-124.67734370359312,-530.0531900080945 +409.74202008676343,634.2562840311703,92.8606321556947 +934.0705505122924,-896.6625566840778,9.591196609056283 +436.9078946451002,725.280942298358,-641.48877618442 +600.0069635273628,105.4141514370906,-206.8926360200736 +-736.5699428418129,730.5915178178248,-685.4535836405694 +-380.42428158180155,-419.90893607512623,742.8280683817086 +345.4059884177959,593.3627943827446,-499.06420241500206 +249.74819921399785,143.49196628749746,665.6607535765422 +812.1741209625211,-975.6864570452263,348.0398381175853 +-896.328401760542,97.71733015471182,-424.73454191264364 +-386.44680095571755,-294.08299309528684,242.58489809922025 +-331.90006866246154,465.39810118056084,-190.94522885226058 +-863.2935993800827,567.5196849682145,-428.483350814588 +-134.46624080147478,370.887766443803,-335.087685702576 +-886.8286877065688,-252.15790597437285,888.8971653886069 +283.46879459711636,342.9582973344138,264.5643072752796 +-602.0157220811263,-163.33227179543974,501.87959672663646 +-797.2542048936817,-444.29444782057544,-447.36178306829277 +-135.96214481098798,960.73748188437,-864.9949066323561 +37.40198876119007,-641.2706359755791,941.3530908194882 +-773.3929905450716,-192.79799527681746,475.7699696692123 +409.10885605489057,-154.54272621213545,-306.9516640945635 +-204.7752428942589,-471.44747368272147,-589.3341225864003 +-33.920604882220005,-462.93248786478534,-425.0766702054998 +313.5121269491142,937.0746633997844,207.27440111875012 +-846.0410658700674,-848.832772291866,902.846441691132 +-405.41841938533275,-815.8660278350492,198.08917430076303 +247.29755658053227,297.0096402373763,-465.19594428491735 +-969.7786315710499,930.0307389089437,-498.213908617795 +352.0525761050949,413.2597397574191,220.01483415897133 +-374.18521157270357,-457.8074924718685,195.3365654054062 +732.191267223383,893.4674578467911,-788.1883911924847 +-690.3427748045603,889.4725175661592,473.07045666958516 +765.9876496595462,-594.7347317293137,175.17174221880373 +402.27918883494726,360.22377089394536,-183.69661826660376 +-969.210216617383,165.85211360852622,-493.7969216407825 +-99.49150771421932,915.1620301676346,-201.92936471513053 +679.6032133288534,-622.9187885014977,344.92099605005774 +954.0139088778869,-796.2137982541265,-983.3601155456159 +-132.83441473477126,-814.7490338972656,496.7686993524628 +829.0973276971179,-131.9580545824823,-482.57671568911803 +-131.19336198678047,446.895635700002,-981.891676839258 +178.90797896939443,226.583369774758,275.3764937918711 +-515.9558400382456,428.1054467562535,-817.2170273364472 +-601.4593270663984,754.9400933089639,477.4463014531327 +-972.5088919773095,-503.2474792603996,-571.1870340136709 +-458.3873439260549,-504.8804594402272,-874.9474085143086 +-82.11896680635937,465.46694957233035,213.46344943487293 +345.7433371961595,-837.7016429275217,902.9814203535743 +676.9836676860498,610.1806369913254,645.967610083535 +865.4210162655227,88.50793222739549,-599.4359642647482 +233.5672157050824,485.76298733587805,475.83478670805084 +42.898048333760244,-863.0825613328439,-257.77412313974435 +841.5332169267147,168.89781951485202,76.66388651142688 +-462.292971235613,-263.10216016684217,790.6921783063385 +332.92609505367136,574.7740535046657,-91.30915386468973 +260.4944389123159,-503.23278251358494,410.9216605669726 +-144.79733259332534,-114.90897037050888,298.64464915376334 +872.5612429378534,-871.9873067827582,649.4864746940152 +-415.2337791756138,-112.16109098724439,-956.1733424499821 +-397.9078443313739,5.2624852602609735,-887.647845305122 +-17.808541233669757,854.2212577168546,-789.2135637843895 +528.8814561510087,-180.65789324801472,310.3474290486761 +-479.52680402954127,-681.0154749172834,-679.0747714575471 +-859.0161087137108,-628.706590197514,328.43876997793654 +763.381223687016,628.2513711823237,370.26861974896815 +-779.1362731777947,-421.62510740810035,-380.3862493550621 +-500.0861072047575,30.01131941944618,71.10762975934517 +-286.2280496577796,-292.4216825271279,657.1111958121628 +578.5856966393712,-384.4083366385087,827.5768877465187 +905.630034005012,-346.5149159399183,-291.1501024138903 +11.268306843917685,882.2416250673471,752.638866284623 +-794.8640748328204,-214.5385134571676,106.74237949954363 +6.264945103080095,-612.2738641262147,717.6335423363093 +353.8815659936747,675.8167497036072,717.5285586989444 +496.7117073314796,-121.57879750056532,221.09351003084907 +-679.2691877605137,347.29083494981546,-641.4934885214385 +387.89918102031356,-540.8036784920627,-764.8973996995601 +-669.4310197140851,-996.0157295618594,437.4792357070605 +464.8020981167583,29.866699826518925,-677.2743978892327 +-832.8913249786206,-961.7420671254259,-668.5036460695586 +781.7110699662935,-516.9263165966365,-291.45734556556863 +-789.3090310373336,-555.2773905036595,38.449141560410226 +215.50536619130503,-509.29537166757785,-884.5356815497656 +-217.93426174520266,-531.5932581473317,-560.8921535403961 +919.7256054269105,232.6009718514481,113.7568863441918 +-168.4497929533561,-142.11133313971152,81.8100076761616 +392.8596140722145,404.29219236365884,-656.6121845891009 +0.2255041532539508,-176.08380993179605,741.0539325387683 +262.8378424367527,65.00813283196362,-769.2107156421653 +211.2757786468228,-765.5921886395331,-325.58684886849585 +-714.3160703713363,384.1472940487379,-587.4957723276948 +-216.28125362394803,791.3495552375573,-591.3672332020594 +15.610127917558202,-161.456677667956,-963.7519179085406 +585.5162271456256,-861.9081873708005,-51.48995804609285 +121.35658987789998,256.8529132291742,377.26325861575106 +-493.45523295456985,-980.0424466831013,446.88732470982404 +71.3131986951571,672.2354064144974,642.7767258013885 +686.6523355757663,-29.810680040919692,-332.7432083262687 +583.11640518274,-97.4117739414902,-633.1156071931309 +709.9480391229488,765.1197535446945,-67.38048771965975 +-848.600545380425,-224.34782016613758,607.0753189252068 +803.5480570924574,-593.0545150048083,-866.052775949457 +754.7009062656773,-221.1901220422494,83.52192853512656 +936.1316241015179,-866.8705441715542,296.63601490419114 +-851.7891548502658,-249.06214306699928,607.6290903868935 +-133.05553448873115,994.3647078059007,118.11856989320427 +-357.67569472809305,-559.7773481904937,-298.95893142767636 +-254.93345248089838,-862.572644552078,-260.8516011464536 +-71.5229605215502,445.4755044776093,313.4589694432159 +417.53131045830855,-983.2726362462859,-564.6652008389278 +323.3685767997131,-32.02126364050571,-989.373048663308 +608.9892848636446,545.6191465806749,96.83832598712524 +-867.0733484474558,533.0300990651692,167.42717546272797 +563.9199543159184,503.49398479168076,606.0041439156741 +36.01613280924971,-719.35096361297,342.31494675937734 +240.9475701039412,484.50637439817433,-660.2379878985294 +-610.0496001994215,780.8190344386569,499.95559690414166 +816.4569774006459,517.4306423278415,194.31061198060365 +308.2654740557473,778.2558478800199,157.61350902388108 +264.7826486567749,-687.0465679927988,-52.15755976779462 +432.794223916198,-458.1146033672692,-595.4916389509301 +-372.34638355116886,-516.9987440143332,-570.1747259272083 +-150.29831426382611,815.6770277670682,14.1192934774366 +-624.159238369354,-846.0566612382519,392.3122902758505 +-234.40247112722432,643.6618931707185,319.0215372815403 +592.482901082737,-456.10792116310245,384.7178449221162 +-471.87603061256243,878.1369589005833,272.74856306674883 +-350.9763996493158,-460.97627541545467,-618.146829856713 +389.28191778745554,-562.5687740041453,190.60653185497813 +-470.7299461492853,323.9378895877371,629.8794570810785 +556.0504862893063,521.7026618615635,-624.5551886154958 +-823.2301060309626,397.8976569747713,-263.30557241129736 +-135.30754719330537,-937.7018144132179,-480.84710144990163 +-932.6471922510719,758.3715452024953,-513.206633562939 +114.67433914601611,-922.0413586777391,333.6947826113162 +-353.9453084918123,795.8383739153317,776.2363778680717 +-349.4187632765045,801.9217913809357,992.3153469975575 +650.8313282478962,689.7426955104579,-501.9825277818202 +153.4047977155126,-865.4881720652643,-810.1641263566605 +997.7852240665811,-346.72150114817816,496.36782409769285 +613.330106053633,716.0465420144583,995.256594804313 +-517.0070294862643,-919.2983462806005,-177.61696401082804 +-739.8386603421061,-955.1482216758898,-279.14634571702777 +567.4765021504729,132.36138245014172,-374.44402157929187 +308.6840109854395,-535.9636393823786,-971.23710785583 +528.7067728728548,247.48616972801824,524.6052490019199 +-922.1239666246688,674.2392556613045,239.0524000726066 +126.7907014252803,249.2280962290631,728.8664937367282 +173.87301311781403,161.90075977635865,981.3583141315316 +513.460334137136,-115.41238909772949,414.79400006585547 +-221.53905661642307,-542.249075033002,193.70375377551886 +856.364196227903,858.2790400309254,-316.1894437890194 +55.35493244339,-576.7282028602776,991.2622189977669 +962.2358157358715,299.0178594148947,608.8281193549467 +430.2003225674,186.31643807893647,-893.3040060222046 +-90.4713148946779,349.5726043348211,355.0632277673694 +-253.7547631552328,883.3839733160612,-665.2859355264379 +0.7188924311212759,381.7679531016456,394.2716117836185 +297.2779135376311,-449.4235730962797,-687.5868626267561 +271.88065365342163,198.60423227887554,-641.287979421518 +410.2782911411266,-89.6560165326872,335.52118320630575 +674.7341595403013,-660.5431428461536,-961.7102640063266 +558.2051727915737,219.39485030523178,399.2791392442434 +676.3099499772852,605.6218696490009,921.8402938576494 +71.87015770423636,-23.008734680189264,-196.22560021853985 +-692.617914311591,145.21446576404492,-445.9749513480424 +842.6150244259509,166.38160855419505,185.68036101622033 +-290.15067824598,-896.021296044585,-936.5124692540228 +-153.32971169360496,-830.8692438055243,213.6939110802782 +761.9460112793149,765.8296330374444,318.0908202644648 +-577.5363370541379,725.9936627177442,772.1868706264163 +-606.6928300940826,474.85217154135444,-426.96090214575406 +605.2806247058593,994.4757998072052,-939.9479893412143 +794.7317315818639,245.26106719731615,946.7652383296422 +-69.9809649471448,694.7758611427475,-875.2118628034456 +-329.4418998434086,-865.9669244975801,950.686266958141 +633.9478145436735,705.0948424919409,875.9304628677885 +-829.7930277604293,-228.80481497333324,-857.9302219119958 +-578.4137968999428,-541.2684459246552,-61.785577904842626 +-462.8756650927148,-798.0437863644778,-665.0178218117846 +-705.4488728958181,946.1535958245966,518.5850138369472 +935.522930539124,-120.51902698418291,-443.26303667468676 +596.5863944183734,-347.4921639177064,-401.23325258930345 +-534.9880155843376,-740.6420435515292,-487.0738779664681 +-289.36050305222466,347.9884162914609,-874.8703155610968 +-578.9861206693141,618.0472805833529,-706.1561528324585 +-314.7097069549569,729.3178437162801,-690.1493777131147 +-834.5263287636202,-30.92400983997834,-395.1609774429272 +126.81672896770829,607.6097809669502,-725.7030236945136 +161.39816910857007,11.017520779727874,-711.8424279736009 +247.99697105796486,-452.7191642784567,-24.33136291197502 +-835.4553514458762,-80.83188557275389,-387.0730639143594 +644.7624223707087,-886.0425460052635,-162.7854501633401 +-83.13715173712399,450.01215259823744,148.57515018042204 +334.42467438836206,554.0985713035122,724.4059473163775 +-372.24900655505894,76.0454107278058,680.2161568783997 +978.9022619301129,779.0386220875262,-257.06547475124637 +-609.6669655626991,-21.214925186822597,483.28290367208456 +-14.861858493404839,-33.63827337266298,676.4608421636012 +-277.1924418656273,719.5893496232911,-186.39039809655287 +-343.53378864332115,-92.02017760060198,524.893917349737 +-747.9959442720115,-607.1615682559652,902.8896513261839 +-649.0167452372852,135.45463586210917,158.6289333238758 +-20.751075899510397,289.4904971536371,-540.3465484047631 +105.32453555349639,-255.6534895062057,323.3345192583781 +-717.552913253701,141.75483367895254,-629.4592892333526 +-442.7138737699272,-562.5803993528335,-634.3244402623658 +651.421903121334,-428.58486467821933,854.2475637288987 +939.8530506903817,142.5209398741947,-713.9977546685473 +-250.90351324083747,595.464526696428,-265.21854260585906 +-825.9655633944225,113.56982185637594,690.2417029920696 +591.8527742870049,-649.7537197392935,345.5292288249334 +-558.9914731287058,-563.5849308956556,748.1435466103703 +-500.66209451953966,-473.50530696397766,-998.6932184774009 +741.3380682510353,585.1896264182694,254.65787018135597 +500.53152787768454,-695.9028651510164,-83.35281082484914 +-297.5612253024382,-812.446947485967,-27.739029570151843 +841.4793006852708,-919.8817618986111,-417.0781730124122 +-584.918127588593,-523.7066926686074,816.8691037587505 +-63.8618915314197,-67.40117412036238,521.1512849105645 +-691.0155919901483,-25.46929179989843,-140.0295717578806 +193.8213810933123,999.1154065008773,538.8977881640942 +-204.26859396514567,655.106104548094,-658.5832733750397 +-939.0726273820798,-591.1032550714539,-319.17688777148066 +21.16151491911978,230.25828108239966,821.2114344288434 +19.708019100915408,2.5512892514587975,-899.5139803540358 +-930.1768946875524,102.31992383274405,-123.64277350331099 +678.3607899605972,-678.6408305763097,-950.0566757659008 +-101.92246413974829,-525.042886495485,-900.7712533223252 +449.19657369525794,-776.8140000855051,216.6390000155434 +-437.90049966622166,-653.007899289956,-240.49695416136512 +602.8915524459073,-215.81284619085466,501.5392984221114 +-749.0274064016986,545.5428393301581,-526.1333501867027 +354.7862597777455,131.56310968199273,858.2894344233746 +-225.35496404937192,-867.6696223311192,-961.6890288974942 +653.7171219455063,49.47127532286436,550.4881036698985 +-531.1487999769706,-309.8325089735325,-939.7922555773621 +922.9846491482242,335.73581340162673,866.4101755186125 +-469.0071851418553,222.92722245132177,356.9999365852757 +-364.90059948482315,696.21847003126,894.3229258004956 +769.7102353920086,478.13395187874517,-445.070640550092 +-436.76791578873656,926.7206408920758,-979.431008128616 +432.0999464842889,412.49232511052446,245.3790818995949 +980.2176921737316,-376.2411284725496,-320.0562724135036 +-842.1211941068889,-114.40372691252514,-477.9029475303038 +-313.22659564471155,669.1435805112553,870.9690270549916 +-628.5338559896288,-254.9821368930683,857.2611242307883 +-876.3830786215548,-815.278943777243,-674.4180215875413 +190.42566825374956,-699.0554579880051,936.152762901467 +-106.57094548295936,3.035920700332781,-506.682768389187 +-58.07949513053302,323.82726527402315,502.3542739080856 +507.73616541982597,155.78222538817658,808.7195499877143 +634.8156946122187,514.0962293972509,-888.7889566390787 +-986.2440755607014,-575.1054456090541,327.0471878269045 +-177.60502223490835,-195.18748140137654,769.1737764592274 +791.1256962636774,818.3505281071714,-372.24384696994537 +382.1116254785236,-456.73363745126073,-618.7803338511004 +-630.7350853052616,-315.7847582728119,-140.0847604403566 +661.8983421101368,-760.2178130545758,469.8516947897883 +62.909828378610655,-424.109314648015,-14.360830934350815 +-400.1158604459547,192.16391047661205,-132.31215428951157 +-671.1889418422425,-766.8338508886065,93.39136414426025 +804.8260665722069,-312.08462688462885,466.00021444524646 +317.32270987953393,863.109828618962,641.9620345982817 +133.21051781092592,314.0609964682146,796.7729331680698 +-200.96243082613046,-346.4105882844452,-978.3778327296073 +653.1021483829284,601.9614008067297,-791.0909637996972 +153.7147622654004,-72.03660366622523,-762.581808981777 +961.1364541214471,-570.6082250732891,-865.5316398188777 +189.69475900381917,477.73335426606536,-935.1131079056261 +317.43527745404435,64.58375190290894,-793.4699822499032 +-654.9522461072759,135.94859463216108,-407.2847729734233 +876.631457302632,637.4804589681016,967.134413027326 +-480.658322099172,939.4472655959541,-137.53226041688424 +-304.9624093724907,-899.3009460612935,-894.4694842807947 +384.02251189330946,-84.14201113194417,-546.9567479277886 +227.94061265046525,-494.28376349977765,155.26350868884515 +-281.5825060346193,647.1044532236381,641.3923215335585 +-45.29920375519737,-298.36178132996884,-274.8804068818109 +611.4290513364358,-343.64103440477595,-581.8812525863079 +-830.6233162493863,-66.61375823118317,-35.73580216031621 +681.8174208058142,-557.5226071078721,-238.01745266320017 +616.8114777873818,647.2472214979471,-230.77784804246357 +-81.75195342663824,-393.4282183014342,865.1097568386242 +-762.7124685168394,867.4988460029401,367.7329036706865 +63.14430537346243,-934.6818784310083,-48.80761635598344 +-184.5037899945354,-677.5623760497549,312.81920700131377 +942.3018147365715,124.37762212905022,429.50655288789153 +-863.0990948679664,-164.6660083660105,-767.2830296710083 +225.59167107302073,876.9643164283091,323.555464943277 +-846.393903371157,-290.6675900298343,101.32675888170297 +-193.58448773349562,667.2880209503446,629.3420094199785 +223.66204020644295,-253.08410973458945,-489.32725247351175 +-788.2513635737414,-290.2046330268919,-173.65496558456095 +351.6458502081473,316.3196485951469,-859.7837207174861 +-209.4813691376844,-636.4422655652761,-686.3745893663886 +654.6042994744919,-916.1695665674849,-161.63424819575732 +-663.5926884669636,758.660431356948,114.08102655007019 +-537.2387272463039,4.854574332752804,462.9727194062316 +916.2360178388676,-559.107991509162,772.3635442586904 +868.6082283349806,832.8410890641323,270.82871372381965 +259.6413088694153,-193.57873363235444,504.79576460757585 +62.58803670186376,354.8761424565889,-143.08419230240906 +462.9929280862782,648.9430352090981,-707.1274867943678 +665.859431148456,80.5930635806144,689.3318181804486 +-137.39658731797078,-241.9190292339299,830.1214650344448 +-497.6614649031974,688.4246505722863,-31.958854981191735 +28.19088510251936,-383.063437021032,146.08440123803143 +-349.5776074475774,-921.4611715166953,-456.00278931128787 +-987.2419131868187,956.7095741137132,931.4944196394949 +-209.6894050553899,456.74170867929206,-308.38780317915007 +342.18631417195206,610.8600860919582,893.5124893844816 +-199.57544830065603,566.5959659120954,-468.14309873576246 +980.6646075872966,-948.4608024712977,207.05761300224185 +319.0119633026543,376.0911141482577,-759.224842421822 +877.0595669462609,-637.6334418998345,245.50680647968215 +-554.6478417538301,-385.5671659574582,92.91708345624875 +-165.61316287084708,-679.5487980469875,-658.1271951583035 +-163.71042367440066,514.5659565510014,795.9292936955771 +-831.7446754812343,-213.79218488119784,-799.5088725542468 +-966.8150387348043,323.4373652879133,204.8988839331755 +-673.9617723702277,-532.3743338138718,-952.5844927109632 +669.8944113888074,949.3811920971029,-729.0809264106184 +-537.0495724694038,736.8190478938682,852.9275959123697 +-160.74523438637937,-898.7550554618517,-921.2163326143611 +147.8997321380209,-214.20978221364192,-942.695144844691 +166.50478462511364,-977.3949268219551,574.7439162985459 +-387.13435459325683,-919.4839939815358,176.7044419663066 +-204.63117113389058,947.600826714299,88.39732500740433 +-449.52163792598344,418.87772926794946,-457.0159949145774 +808.4865828151303,-250.5560589852471,99.73712555241036 +-898.8537923515423,-147.75752409553843,664.72707932199 +611.2976107266838,-551.3628822929475,-547.8418579788747 +634.6106244264736,860.796840338651,-809.2781574539929 +-99.88272114754943,-325.091442071542,741.3769109148786 +-832.9501706399625,-577.7481148839252,504.93667517298877 +-897.4123020375688,-14.929238571421479,-115.78593064055997 +-331.1976420225027,-210.8553693621525,59.88117386046588 +-677.2652832232338,143.99175656718558,610.8646585999727 +520.321859580318,-692.2001906124526,-701.5010605170521 +-463.6512645101734,-277.8505473179256,-183.0888371830348 +359.3944336666905,-886.6391356683292,-930.6545915478672 +-216.17887411218192,394.32738427596087,-613.1293140870348 +283.00896251250333,-480.34372411940103,772.1722176270328 +791.379888533233,-405.42559143734707,-540.012492073519 +-177.39205586753747,-518.9368296397026,344.76768658340734 +652.129369096571,346.1842618224341,648.700894498699 +-206.01567558505178,-687.3660585822784,475.90189479518426 +-279.0509897168922,342.54165045826494,-458.7121160364686 +-837.5407303866547,985.1635909755269,-687.5969841388014 +976.841987926962,954.5598651328946,587.6362078160794 +318.84592416399505,155.61410050216932,732.2030907556693 +-421.1209567610241,-64.6375750302459,238.77993873300375 +-177.61904826101784,-145.0270918194641,-339.4306649958312 +128.4636333690721,701.149056030232,-596.9432439873743 +868.8660775068829,378.17530749645925,646.5464253600603 +112.38138526002331,559.033402848127,-967.5992053210656 +636.7608495590705,-919.722281829267,779.8267527257251 +983.9254944772865,-411.8650756464443,-579.3628874284127 +530.7267277160813,-493.94731815949353,731.1247663444069 +-794.3148156850466,-748.0896072412835,958.3031102012312 +347.67779654000924,693.7744488579056,-351.34124529696396 +352.96749904120884,188.48365461719436,206.30024024589397 +365.0649190754432,150.71834625819724,-141.8752613946681 +-448.15461123890634,537.162661826404,-547.4551399936277 +384.7086123088284,-533.3343547013467,250.66033990890787 +494.15653425805795,-562.5722221869216,-880.1133982773835 +-738.0525140116519,211.99393454205097,698.892812451471 +-910.0063575291513,468.3025180832924,-317.3627080998957 +-42.94326016095499,857.7190996911313,-336.05699052830903 +-69.32613212102785,-972.6351704786377,-836.8025599903233 +-482.8168177304319,-944.2955183578512,262.7506520965019 +-147.20328639675495,96.29040545604403,-650.7056282073409 +-408.13594112676776,327.64894970545015,930.6054472607996 +-899.1664527955816,780.7686417105322,153.76240262241686 +127.83913351124738,0.557070415520684,-861.2118281916332 +-820.2462965276786,201.8240113181721,-318.08285712888335 +834.5361331553613,-186.8189252810555,-713.4370825947178 +429.43766700407195,-413.2931571179803,50.94061471178634 +395.66557101034005,800.5282224041407,584.3823896033523 +352.7221357454482,359.26636479028707,891.8492880641732 +-408.35180500692786,-997.7758116076252,-456.09088120360263 +-564.2172407465121,323.66917022799635,267.4231995310581 +186.92276540944772,-967.5131135810926,457.5561089012949 +-352.93917502901695,330.11197801326216,113.15685700430663 +-314.5381491441857,-730.8474657917845,-811.162204679038 +663.0366662244471,836.7950841631159,299.57609352859913 +-793.1317702790333,-195.94556622351854,457.87840021031434 +559.6417680201362,-763.5627554178228,-999.9385623092352 +424.27409176121,-286.8076480275887,-491.0373367634795 +-974.2050604209492,80.59881352299931,702.3014708519636 +915.2632925451758,131.48990122657847,28.922655479788318 +-829.8872290215178,97.74560308519949,-240.0418420692107 +214.27056176715382,-222.5473042469066,-519.4017530992664 +-810.069449543247,-370.1631108222085,-806.7103314244955 +-646.2060983520321,974.6723171590918,-111.79288618676276 +63.74353301003316,747.2370574744307,991.1378009813757 +165.428898689363,624.9476420883434,-346.1179513266495 +-388.5120851054178,-194.59255801087966,345.01452534729833 +364.3833785101974,-369.5211307010984,-733.5801517267425 +264.7925129310172,-743.348275622471,156.98501645866008 +386.84425611261804,401.2229927889032,506.9442213191935 +745.7188431313291,-0.08201607042315118,460.4983790591423 +238.34547073167346,-626.7201204046348,-948.6207102611836 +-430.91722864613246,-113.93258732476124,234.2118888573125 +699.9186610064107,-607.5085665876687,-748.9004202030458 +926.9598949486551,-783.9108812471858,-43.01785978562168 +171.12745758660367,82.74884181487641,-827.9356859341136 +-885.9461719927613,-789.0331450779287,171.175367745225 +88.68977526864228,-532.5184159265116,275.5482836911831 +640.1350041112987,-916.8420803068125,-3.740112903915133 +378.6208242053806,-495.37614586062585,-384.4581894137018 +227.27580597876772,795.8705868874738,619.8488406057986 +166.26043819916708,460.44343551449833,-270.3550595844026 +281.93105619751555,-67.636817744886,-620.1277270848782 +403.4765477545143,112.92927469764413,-282.75683609281725 +822.6783801572615,-958.1317643465335,-368.45369750100804 +-886.2372044447069,533.0546324432544,404.2149082275853 +-337.295562527366,351.325804414146,-208.1255476081003 +512.5075828448687,-91.63267452658783,-175.44054433666884 +869.459830976602,-498.24180021859956,-759.1053200068691 +169.08622651891642,938.6436245683578,-244.32157254562674 +-875.926472742437,-321.3894653808651,11.863308639116894 +-676.1539867355725,316.204436112984,995.4987780204012 +-96.52104803711234,-290.54288653957474,-198.59166633106668 +-769.7076432095978,766.5472028524475,-170.34868895729608 +-225.45117715031733,319.3805458609486,-115.93315813775291 +296.46693761569213,-877.107419738425,627.4466874444549 +881.0079057588052,297.5307723187718,909.1318577176214 +-697.1353712600734,-45.16762103929261,203.61346789089453 +163.47329484237343,-197.07644182191348,-323.8311812674772 +-746.3519548991624,-216.51509887544364,-674.6783697890297 +468.73135298443685,-582.33812901082,-882.8693894309323 +104.73227563446858,190.45946543880314,743.8261225610111 +153.9632248353637,-309.0382925531086,606.023763052641 +80.55778637484218,-841.4394307376165,131.70112062649332 +816.0370908433247,-207.37474900355892,-407.34839620039986 +-713.0610859639598,-697.1089561292854,-134.4570313163622 +191.359648323059,-838.7691896607964,879.1371780503314 +510.2672348903918,173.2478365673253,656.8773418779817 +-839.6264863757734,-46.322244533751245,260.1862537233269 +657.3058122365785,566.9391200985353,-445.8615005732007 +881.7603391184086,-751.3083171382593,750.2672372423042 +941.8804992092371,-645.6929535547489,444.13212840757046 +-919.4289624440031,-189.1543497216901,32.56659839534814 +161.29045181926813,871.874496497119,344.50137458838935 +-37.44409756152595,619.3500725317786,901.065641908818 +-955.8677026354183,965.0425445120775,-827.7357218726393 +628.7735585375226,-439.3304948971751,-735.6406844922565 +-120.28872057233025,287.91315889522707,-238.09630995304997 +-890.8691834346021,198.92227931743332,804.8065522213494 +-233.56926810549658,-567.334444738346,-114.84530813436925 +-903.2745779024383,640.9751689605496,652.6816219003736 +176.00092685925688,-293.79422212322106,599.5667288915668 +109.37404957673425,651.8646171000323,262.91758516604114 +568.8109464255947,197.12598643551996,-171.71786356866755 +915.8917198522752,82.2276497576895,210.17903708107679 +-559.0247211705015,251.30157885455287,143.21529896588777 +-630.32320410595,-880.8258052937126,208.71863942954224 +527.3845387006411,46.80274184401651,-546.4547493607085 +333.0439533860699,-839.7885467807955,-116.33259039609084 +-673.2664832031596,-631.0818978802333,-595.4121016835927 +-226.5858859120442,-897.6995887592047,-204.41311814180358 +23.41489422940174,-33.411430067349556,-234.4317991939189 +678.2932161415049,-709.3466151589918,11.393487562747964 +-875.9171660868914,-857.6886422441805,147.73169935419264 +132.03684977564194,756.0670256889139,115.74735132014644 +919.5820408097004,-902.6103032001405,-803.9846304385178 +-911.8682768592372,-629.44629933292,82.54022188335625 +291.1443628548559,-908.8296841026624,891.9417796911987 +684.3307533007621,-406.7750356858137,-845.6249395470641 +-660.2258535618855,-746.1111724900546,-753.4324414021063 +37.123377331467964,-508.30511501319944,-283.7205669417111 +979.0106667686448,368.6284978506894,897.9613340940027 +-714.8868899337688,-235.7210503348615,109.46360656470847 +-846.483876222524,-991.6251127440843,340.86866759383497 +283.63903360287077,-178.42238000077646,-20.71184793593477 +-169.11399881582076,-951.9899103102223,-329.2567875650751 +-645.8354892054203,-803.1516217972626,913.4408677786996 +198.71945008433113,457.3125684732054,-369.27251346776507 +-213.70574101196962,-526.1520122065531,-806.0686580691505 +-641.9367251168323,595.0280905929717,355.09161036755177 +93.85775197095381,-49.82025426646385,844.8685673122488 +-854.5301044426632,-438.798373524168,-300.12429285857195 +564.8516244255757,985.0292403239428,-518.6589704856939 +748.6146682741612,661.2455208635827,-550.6852047164668 +-201.3348396015549,-180.65426141496175,956.4413370531165 +-638.2161972422034,598.3159422095641,-331.6145716537802 +461.74069155232087,-159.97799140867426,156.71952623308016 +665.2235466522623,608.3311299677682,732.8463670794004 +-880.7653493106819,384.1011060794897,-720.0252465564743 +-168.36286396317803,97.17683010937685,-194.52103050633855 +39.22335160601506,993.0526175972384,-729.5653725742906 +350.91209067285104,-207.99806722876951,-733.9804021853424 +-682.5264732513809,898.5462124912337,759.202993423524 +814.0839208300436,983.0655516547731,-583.3692199829641 +-289.12132527187646,338.43805984973346,-32.39492027870551 +-163.22093324333298,-284.3775013288139,187.5612638869045 +151.18685728016408,-677.0843318715199,-56.52032496312188 +106.9435524196997,140.57387746278096,-579.7856141752964 +484.54278450457355,-949.6018103578607,-290.3362889136747 +560.4252970712671,127.78584211080465,-477.6751349782795 +389.9062386860953,134.78188831214675,592.4872189127743 +470.05037237964666,220.21584407246928,-23.644649378371923 +-733.6357486649531,-477.3339642292325,-161.80105416582944 +198.59857401277736,27.41571043060958,-423.63094808094104 +-987.0712844205789,-7.521556198372082,-428.7480228755138 +469.2166014210702,-952.107469459033,169.65562261158175 +882.9484750121308,-651.181465777001,-56.701018498809276 +-817.1560163657236,251.36382452270527,101.06336119245111 +-185.26895157433535,42.7540429474825,793.1493169380203 +-607.4113953778659,-954.8709765893055,723.329769398202 +154.23416477581304,781.3169109236849,193.89044682634517 +620.322179919405,-140.6532732897041,499.7198625765375 +826.082933779712,144.24592744441247,-638.429698875241 +-462.4047699396036,-602.7108462051884,-506.28594480853417 +-387.1691012979272,110.26757350637695,175.98325892766547 +-147.0005055162777,230.84155964167076,-836.8501487772681 +-824.4235258836801,-656.3410792846831,36.15499608068944 +-572.0106426033728,-433.43119301484535,-199.37432765401184 +623.7322480207597,-972.2757281742797,298.7576404732449 +337.7530620813707,597.3115607132731,865.5058781206264 +-959.7243021014203,-692.4325889735676,772.3425881119861 +-82.96287562596922,129.18127786692708,326.0544074462948 +358.13320899127484,863.4808066330163,993.8988348233393 +440.3149218618805,-425.5575815896983,759.5048045886872 +-901.5581709184768,-537.8382942510076,794.7714349274297 +-487.61697112129013,-558.6978807565031,-723.7494137195056 +718.2235152938331,0.11651838217346722,349.7864061083096 +-521.8672318499407,516.080842022433,520.011089924197 +-374.8039501833997,-178.63473397943426,-580.6194451395983 +953.1220466458085,291.2051541168232,869.0877614310311 +-393.22891274173367,563.7818259937794,531.7172877694841 +383.31130373308315,931.2779505336009,-212.88932778736887 +-738.5653528204855,343.41771848812164,458.61960095441236 +150.1211469176294,-586.3642137332074,8.911883338710709 +-375.62052686174115,-145.0669436666219,290.4371516893277 +490.4294853816691,-535.5506181973137,-189.3492787060933 +-461.6768580167417,-602.7367722762617,566.7744399916767 +818.5053888739849,-259.53562863084653,502.5578487475336 +793.9905787288221,692.2484210604632,-634.3732229215482 +912.5837630267226,-246.6471191410751,-321.51867765232737 +-875.1373454444393,-27.65269179023403,-781.9727687181426 +-502.92035814514804,-366.11475646543727,617.6526469833682 +750.9773007917931,-395.0673650770607,717.3962424891479 +714.4618747395821,529.3019007697471,-706.609771969637 +380.64569380145804,890.0481291611375,365.08095753431417 +-336.7663017843321,1.1586348616625628,291.4500867021072 +21.140817457007188,-760.0941165380603,-375.8719106959587 +604.792061107265,722.8360921910348,-725.3999345688595 +904.7735047974493,-342.3547643027813,324.62747746143987 +503.65029191336225,623.8924692757669,891.4994044518603 +-374.1609039423548,717.012909103109,-736.6261931275859 +410.08181270718546,483.95545902797176,355.44648240264087 +-495.370527729694,746.0862940304066,-662.2830732592099 +-892.7304169583383,434.92998122382437,-49.04856953453259 +698.1960399173522,-233.20571788348207,-663.4428229845744 +672.8843849397394,97.81926328014333,-621.6084152192902 +440.76799717289146,22.22727697900109,208.6259644806396 +-78.20332358683629,657.4179676360127,659.1254313660997 +418.7776436487725,-789.1972452070754,677.7077238081376 +342.02596106581973,394.0483320085991,-274.0343191922567 +758.5591123140134,450.743200469715,-774.819066941611 +-184.4439311876747,772.7607239202835,-905.606596605242 +922.8332392840989,358.3251366391255,262.7519552867532 +-458.88148702401725,-502.41642252164587,884.1164389771909 +-403.45509153175453,551.0105934379988,-213.75640358584167 +-721.4918584305921,-978.5694046092821,88.51467403050151 +951.5576370978654,-261.72761238159103,-285.61533201391035 +-311.81676430111577,41.08767460971694,-118.67023315141284 +759.829253454029,11.041583446980553,15.515676377137538 +-723.2568105588869,965.4790818207719,-500.05421826234067 +-853.2718650807947,326.29249795041756,190.73274031374535 +-169.70869201450853,-155.61553223864394,570.1278420928625 +-608.5747198007018,640.5066378897795,297.49422779003635 +-162.06045244095128,-83.9427668322628,-486.70558562780843 +504.22866539394954,25.749484610535546,-358.29091450031285 +192.10023152190047,991.4689041026461,-129.47544068689228 +841.3828015572392,-309.9663201508678,-890.5345861500282 +-591.5157872631423,-162.6097133446316,-560.7301428108619 +-999.5459235634889,830.0030754950544,687.758822461858 +484.58446297389423,-664.3708087079427,-759.2728475800279 +-864.7905010552337,448.0583775458424,857.6159213757705 +-138.92835817392597,-761.7186560079036,24.785641464213086 +-302.3361850827397,-250.35015130000465,242.6612483114145 +437.4362265244047,-778.7928022536782,-928.8195383870473 +988.6606053714297,-534.5433021688964,-892.3389501830818 +-620.2493418081601,-922.0843073030716,-216.37821076565672 +604.8035689026485,-317.5111004845588,-111.63318624326689 +351.1735471348775,17.788140139760344,722.8913720426485 +732.0713500915131,-980.1786090176927,556.0926129663983 +-78.53279951665229,977.6810826073261,-33.535848249129685 +973.791890776595,509.1387224114733,-502.79023077338735 +76.78995857391533,984.2712789571656,715.0612155038473 +-805.2662124175578,412.7439936199921,-308.8408282583739 +-986.0354762393038,-193.03806194600077,-530.4911565500574 +637.7385410409431,-325.33878230846904,655.0473879076342 +-998.8041223304094,-384.36169994776174,-517.6695713844761 +-532.865277862778,-863.6267604690746,-625.7514591789966 +111.09913977123983,-417.27785432451105,-165.21043534170406 +-246.266239305623,751.8098499997891,810.5979980210309 +-14.086056688279882,-339.6880993687912,-786.3985919952727 +906.8057587641899,-879.5461101994051,-404.6994448634391 +-403.8675976599917,-359.1974277195702,-671.4263134551815 +566.3228618473943,-755.0042760680216,269.8133183063255 +-752.3079465883651,-858.9287248140869,818.859007371753 +-619.7424673625886,642.5003091194085,89.26174221427164 +-844.2869607824608,910.896382876135,-506.07766601621495 +719.2906907052129,-662.3799884308717,707.8857642837058 +-973.542374189412,23.560913138961382,538.8851588431137 +869.5910349855667,818.404272412974,639.2497390952899 +776.3826993226082,-601.560628325847,-431.6314085765425 +-422.06295015788294,-245.8921379966024,-213.35865922962262 +89.11064930935095,-680.2404732671173,382.4933275719786 +-664.866921390987,-379.38303579090496,6.690261212308087 +592.8811230469546,478.93846647745454,291.0687128210445 +-688.4534788396597,94.09069123115546,-825.1069964002291 +-245.2736464066985,-172.96693942008164,-920.3771211084924 +-452.02380106005637,911.2989345329788,907.265215659379 +-295.3458914949214,-913.7997821033518,-641.8101213436369 +-215.56441313291975,895.5593959384596,-717.6018729256302 +527.0316873364245,-782.6349212506159,962.5151547825537 +-236.76700178173007,550.469077798112,-314.8178343777364 +255.3377543176175,-615.9678305199266,-707.9579614060749 +876.1282791362626,835.294555808867,774.9378804257647 +250.866900333187,616.5364224325565,-861.9261261772501 +-330.42191621864174,-372.59375048568756,271.2906439052265 +-288.08445305871896,-702.9864367126384,192.93415082708748 +628.767841338163,-235.75301108005362,-735.4625698030366 +-606.6236053743539,-525.033389661232,-400.2048140109275 +285.59014101261823,201.89096907543808,392.1597231340784 +-274.9960309369736,647.9953037599566,-591.8246776884795 +-61.91850496369216,601.8774430828605,-639.6827045347616 +-780.273772518434,767.3679353759794,-314.14067448160824 +367.74024981806406,-949.3027914721231,380.0937768188992 +-367.79737690605896,-888.5182928251165,219.62552309623402 +-518.3923678536535,-226.38551589624,-838.8383754269728 +-705.6734978101093,-404.0455290083124,-820.4809988796858 +821.6525293726304,-987.9059136320432,-32.27956227137713 +-753.5050837348971,-384.6418210441029,852.119119636531 +-676.6108934520263,931.6646394366653,-588.4112460211566 +483.13221693365927,93.35452979462343,768.9574551935184 +107.98651100626194,69.1184383126174,-609.0839992632002 +-667.5412758966826,832.9783022310285,-344.32360229993185 +-255.8354900742081,519.6473168567768,-322.35303515438534 +904.1248932780054,475.85553799760055,194.85848514683994 +761.7903210895049,-900.7881833010345,-485.8746156215825 +-69.92733155818007,-546.042921056958,487.8103746043039 +838.4160621074504,-152.45976013815323,-315.73479977621014 +923.1014642751325,-110.29513434491832,-21.90319910143353 +-296.7002553161892,819.0969460242768,137.91096656370155 +524.3491743632894,623.6134367017728,-316.3019161654836 +-132.61133735923988,696.9435488125293,-273.48929664837954 +587.8702669037025,881.9846451488743,246.42074613601403 +483.25457490377767,610.1946240822697,690.0792977932849 +-209.89332428640807,-897.4730816480037,-196.24745752652098 +347.51245956817957,-99.29922843841439,497.926301720797 +-286.0351410626722,269.488282208059,-627.1603902920508 +498.73887328991395,91.39193762605169,-591.8712229067988 +-416.17765300438543,497.2174171636648,-34.79752867695868 +-567.9371192138556,934.5423807405953,430.25003963377594 +914.2696650795922,-145.78990927931352,-49.79931861655905 +795.9104323700383,50.09868049076931,414.5578238113344 +-495.65424500894005,-106.54706259471891,-753.1002683792898 +-588.0399282460767,-998.1131694647378,-921.4698967026795 +954.5676463538587,-515.2926097264753,326.62141900800384 +678.1993975992232,101.32091847312859,-693.7109998320876 +456.23287467233285,200.50282019916608,462.50117869475025 +539.4932457141742,950.8207353694902,147.12656005342 +-316.7177746187964,296.92911380047417,-863.1185815147478 +794.7946366431727,-761.2379773236064,-344.3143242283635 +631.4907612522418,194.6247566614236,-212.72895944511583 +-53.12868124995714,709.0947864043605,-319.9912278802158 +739.2993696243427,-823.731138046617,553.5968744172615 +695.0952661094727,-636.3646943253225,-139.30693525559911 +-669.0004506726888,413.20825798843543,70.69553612331356 +270.64669341664194,-607.0260660875776,-576.508275895161 +-917.0053489801873,-355.8649296085406,119.48932266734982 +715.8698279946575,333.85489491736143,-129.2073532004971 +906.2402287882755,438.4904011516637,860.3304057251 +55.17594654433128,-482.19145041372076,-894.346627270556 +452.1697029677009,-757.3940039889318,-394.4497434560657 +64.94181576779488,128.83317555949543,201.16639397427207 +-667.4893393005987,-240.52519035670252,234.38845423393332 +939.6377292675695,455.26227539937736,845.2075141879156 +524.4241166283541,183.43393778480095,-615.953261727311 +333.37130378502616,246.75913191981408,204.938340914533 +-20.428264023518523,57.31320797855119,-331.11494576379187 +38.62538528460641,-604.8881886430436,610.3487947207536 +-628.4460906025844,-830.0674202210671,-127.5079472856853 +316.61487901212377,-124.56635013291725,-446.49173609738284 +116.34236778088143,-305.9953291756001,865.7353802532662 +845.2902792071441,4.743639944190932,-344.23201196348293 +474.26482791327817,-926.5741130338668,-50.46198791269751 +-327.3532114593329,841.0717702051093,-975.993945454635 +105.62975143669814,481.32716213325193,-29.96402495191751 +-829.1939396745566,944.9227800558044,36.02086275219585 +228.3724886380228,-526.7804345849854,-33.00382978639243 +-141.7010160833563,-850.2083159960325,-787.6792929050655 +674.945039237549,-520.3600955868195,-610.0834570027389 +9.822902500278474,537.4942627250259,-876.1069628420241 +153.61583927651168,-761.5791143188533,-927.077898348763 +-894.5120956755652,668.3282164168827,-764.0550327438768 +-909.6972711754161,-124.20022571417542,687.9869438840497 +-475.18324702139614,-156.57476494816729,-920.1549348724975 +-101.84297173024822,155.22616127426727,141.8141075042895 +-335.1466156512697,-368.933638673729,-786.7527621268042 +-266.4033587074632,-801.0106622540707,533.1918894241032 +932.5485954963717,940.1489133334137,730.1421987507877 +201.58429867923815,401.73139448775987,-429.58839463917184 +261.54084034524135,-88.70090112024513,-35.965320446135024 +515.5531207503159,-436.1632888054967,-363.9207766109603 +849.2835822572733,-887.5514102980555,-28.731403173319222 +825.6016008157235,220.72601563631406,92.8141484242642 +-500.5116415412896,-313.44902187110347,704.0968316093858 +118.43626353691639,29.484387513559795,-800.8405729199421 +-967.9436870897538,927.3703773740983,-246.02766542631673 +206.42612419900865,-840.56985362543,366.22857144609316 +865.1334174119218,151.3305059948393,-747.7693552491788 +163.44305494695345,532.6944262093048,-187.16692685196267 +759.6754958829356,297.3659067147289,798.497836578405 +247.0106224946744,-737.4240559903515,-380.6165777896217 +-596.4101034950861,817.6529954337245,520.8001345749653 +352.79673782001214,-398.06736073675665,-631.910455899573 +512.9021759778236,-51.684108241840704,-548.4208956987418 +233.2439563305502,-919.3322957230961,-347.65949174349294 +-62.88601081773072,-704.0833317811882,969.308955181679 +-581.8052708207715,-739.2937399134689,-592.9302522262071 +538.1222663194485,-148.98868145631434,130.83187950507613 +-957.9816860272786,-931.1373828533709,-108.34890034596765 +633.3104864032471,770.4777574151306,-826.5868648087196 +76.72620420204566,826.459372558541,-224.05449120422725 +659.1316628567372,-732.6086912011276,870.7889793355973 +502.8466350626054,882.6687855738035,353.234467105013 +-273.19213600114597,876.3623450494449,-448.86644738164307 +-335.6549558765349,401.61683600348056,530.6325990507726 +858.8069676983077,-590.395181887581,595.996070438448 +477.09210679392686,-872.4108874928042,-225.55371757958608 +-434.46908587980283,-391.01915129193924,965.8937591094016 +285.55482695985575,435.3523155869991,953.2352746300182 +-245.59643508472266,603.6803369056117,-130.9380733910093 +739.0673436299596,-638.6849173773936,895.3723541285592 +-562.4565831782406,-347.55898603813694,512.3844682135609 +-212.48971686918662,216.42275353289324,-110.85299786114297 +484.7398741795637,-543.3374952627782,-883.084025526246 +-400.14120505386757,-51.38267026313952,-663.9598956146428 +-290.40542068722266,-200.03396341286293,-885.216312623453 +166.61449636840916,768.686855942575,-696.5141740938952 +195.61602680302803,329.4784098216926,-161.33063916142328 +402.19517472854,-178.53691301797596,9.27457595486976 +-985.2939108911461,383.4402282693777,322.6853578894488 +-923.1982453473108,-263.4997852097338,958.0636815833348 +-158.52687486276636,3.89081026368342,819.8603163194371 +434.5237517315129,164.14026224844724,595.609362682145 +728.7325329119465,-86.22385652546632,-49.78327013632918 +-227.8981286963284,933.4122800369212,394.33250858070073 +-833.5538675838554,725.919246626037,-38.88011832746383 +-862.492187155025,99.4345103266221,-165.67144204859585 +755.4988097252497,-592.0107927812253,652.9292189843659 +115.37738237090548,-890.779393573062,943.6906026509694 +25.23048820639974,-418.246291536835,-61.18631602148389 +715.715567034978,-390.193751229873,-614.6472070265993 +-741.8575061382371,-404.2812032195775,560.0961740800869 +-56.747269609476575,-545.0367926129201,-667.6300007805016 +-334.54104697924186,879.8487457714177,-313.94657481995125 +976.2481519092707,-29.539088469287663,-641.6721634196982 +782.2801835870189,-79.28925373034622,419.34268700904886 +967.4231664183035,-899.649299360052,-806.6108804248657 +440.9134829255124,-436.34999340905597,-631.3972060998019 +-921.276240360541,-956.3065760275964,548.9712062395818 +-731.1331452608999,-64.55876805769822,211.79363035896608 +-143.29639886230746,-945.7866953275338,567.0030051758176 +-978.9735509166931,523.779788754968,786.6089875762455 +-134.32015788565548,71.08494619559656,-46.0332147646925 +-221.58276275312244,774.8490707407204,787.867021339981 +-328.367270716931,230.13950802939598,853.8151242917281 +924.1169978827031,17.91808084409513,-94.35038943134646 +-442.61136814294844,917.7437463808201,-714.3713910542654 +159.65915209545005,-434.8994649627223,-441.98341930440677 +-190.0628252476231,997.5858716313091,-890.0673863203558 +157.08363640706284,-834.8556839294456,-690.9583400189621 +-120.87411645420264,20.920262692882602,-482.41518327095196 +-367.08573825116764,-826.0659594881339,-393.56043231149897 +933.1168787610882,889.4147633449634,-330.24341972602997 +141.70787255752316,819.1907822218886,-987.6323547182067 +621.3671406751837,896.739105577838,-817.3485313328858 +-677.1046279341579,921.4926055427109,75.08028728069257 +-971.6067310565526,-484.73600247294166,-100.11265146228072 +385.8178220495354,466.32075627359905,990.8430258509122 +-424.977601232482,76.44020373695048,66.64709571921003 +-188.70948110552501,-661.6762123151595,954.9131263676852 +706.6343733331721,-3.333943411525638,206.49084536805958 +-545.4778928806754,87.5741407834937,389.94026624295157 +30.334056773177508,980.5703411698826,222.68331249545236 +-258.05257481566196,544.3040552316763,-659.0749768367159 +-230.9683725874669,-306.0820992448283,-136.38580978444543 +563.5596518574525,-31.65393567318506,588.0289005319255 +152.9778062797318,-315.8611306848893,619.9574873669449 +-523.4206588938168,-551.234040400409,9.005848109671547 +-478.3015080758222,-981.8259300975674,296.59505459760294 +22.18764294479604,-108.96437101367758,933.9370292366307 +142.39836792582742,726.863155578769,-721.0995275896796 +138.41292625885535,735.9592534618057,166.2115145597959 +436.02835625400303,-255.9128643755853,-815.1009659258668 +-84.19940974585711,-211.04121832228498,734.1203647578945 +-512.0093952950556,933.4684550702161,916.2762396089922 +-504.7367138571226,-303.8960890453591,791.1114817477701 +933.244441792215,-113.12179432791197,-358.0059087182044 +52.188026503084075,375.53841273146963,-453.05096925004045 +472.94634923814556,-896.6852857707179,-901.4110144711672 +-227.4245897089096,-293.05361587855884,-368.73356926569545 +-17.96047466217999,-358.5328353768575,-615.4841630638161 +-381.0609018227982,949.8085456204699,-177.77316601030282 +-110.57444628332848,153.08997990228,966.6815368284531 +-516.797447128474,362.5642210648675,431.9693870834483 +214.6488335861318,-822.8433207267119,353.7445516551529 +-871.8105779276491,192.28529909979397,479.16235444348536 +-578.0602187600991,683.2440150855482,-939.2923889339914 +687.6257273166123,-79.34189871446983,-564.824120136711 +-732.443710012064,906.6143351647452,-854.6688248376865 +-601.8131601281486,-304.355305133908,240.46969792224104 +89.60217055219687,-748.713015175372,-420.54403252357076 +-522.4964578279519,-572.9142910193173,-177.71132704002594 +408.0629051833139,-565.0941355655282,-266.64224059403716 +-218.16514631767552,952.9130588708204,909.3327137581377 +600.2751655041518,-516.6821583616297,-863.9253718166606 +-366.1917245587505,-466.41090113233827,11.851600292787793 +555.4558201355862,716.6458777577161,689.7281708210171 +-280.6488775538645,374.4686869213658,-374.33160495155994 +-878.1889135296345,403.1305312058846,-980.3448948604243 +-181.63482508302286,-341.24146139584855,386.75507703770495 +532.4909455207578,-391.81072805743236,623.2540288897071 +-412.16647899013253,-107.34728002687757,454.0370540282679 +385.8404584495772,974.7369446244002,-549.6779515681362 +324.63582707916476,219.3638165515547,830.1969089800598 +-687.2757167102499,503.59632717386603,136.53723253753674 +-450.66826042418916,-51.13017170565183,-332.4468058604044 +158.6268055769217,778.0012216293317,138.60996882440395 +263.44483665316807,37.49569422941886,-897.6689871090482 +-534.2828862478116,-15.99654113583449,-379.5294325105905 +-636.4728044776116,8.265683836876633,-354.38041310429935 +-483.78471365317057,-72.02916511923843,-733.4314838356537 +855.4914661508146,735.404195838478,415.24117148107075 +-787.5723448230876,551.7545089393861,615.9146562180381 +535.5292354286753,-772.0682257615176,287.8159141355295 +668.649591498797,154.70680243933543,292.814750456178 +-83.27304114738763,57.41463976810519,-931.2462832965496 +277.9260439465693,-837.1055742176816,-129.97081131955326 +-414.6898046651844,90.85590042342619,-733.1673289535859 +383.2868039466364,590.0230738569408,-673.2911005136871 +-791.3738252962357,-708.9690344252817,754.2551237970035 +56.37852351271226,-65.47800798499486,-786.5763617952914 +299.11201351392356,735.9991837901798,656.3717386469059 +252.1094179616025,-849.4425666966528,-775.2059456479741 +-901.3820257803507,-485.04156701506145,-728.6770656792445 +-479.9039194951322,-229.88388856207666,885.9655681422714 +220.7521195633842,669.9475713659247,420.70300142466454 +-774.9937389467365,471.84081274789764,-449.8022368817511 +278.2156939894128,-318.0760527140229,995.3445265293183 +-472.8970410064444,-441.73905845146066,861.3445111247966 +-950.7111907273546,393.37797574639376,450.65278147175627 +672.7571548207986,948.8786212769508,951.2038383133047 +-869.4464848670722,643.678645505805,292.6198673147626 +294.6842687461824,-743.3001467706104,300.3743328913067 +964.9651612024957,823.6371390788938,-121.7386783902989 +-920.1040534278113,-275.41301999959035,652.7806232011103 +402.9982029303321,-81.31268881208723,-889.7969296823378 +-146.21054435339477,-61.950120564232975,857.1110657882718 +282.17220716431893,-376.6941666907022,50.636528901442716 +-867.8893843556798,945.1364712994737,-279.88019613854794 +-44.26529017372843,-289.43205152615485,365.02346023240034 +324.4643166591861,430.64462105827124,-463.7135407761583 +-368.663037671868,-749.4975378075841,311.0199436922253 +-920.4057453286949,195.36467104691815,739.3917697032678 +781.6642965792671,-101.92447926007662,-81.39262357385246 +-846.0616339839653,341.5300508860714,642.518840745691 +-510.68989079057394,-157.39823673327066,677.6786735305407 +754.240935324576,-513.6400394715481,101.14126908272851 +-615.0136987283458,-796.2424717208869,822.2410027839151 +641.0150084642182,520.0698036063477,-902.4673623737192 +687.457585420515,-123.9118481892325,-315.2097534082807 +92.95272205075298,-817.2935145528884,513.2930987047976 +164.87015377659168,-626.819806253665,-623.5356004619089 +-631.5026968546515,-885.9952248961321,175.5968987433696 +680.6963551770161,-965.0035720252228,-901.9907100574529 +145.5405533738915,638.9913707721046,-346.52221886273287 +-300.77120238455564,192.6929949935518,-451.574221751706 +-946.7832678446317,470.45703620319205,251.29982588290613 +161.51199811131823,483.36825798364634,350.4616751240751 +-588.2360236433577,-295.0379061132977,-747.77971664275 +-740.2859731642379,352.3914927130784,717.2002139649965 +925.465167722278,256.69423509888884,-631.7973532780861 +-788.6993091021386,625.7019430735156,157.51295271999857 +236.57004202743974,562.9241775094185,406.5544554649032 +668.9165057121934,-887.5721890802431,495.0412734930096 +701.7055146441908,-427.72991508337134,280.8945479865058 +-371.6758723260558,915.9421329649081,-933.1528551289925 +159.58568766590997,-666.9929059009698,424.44041035431724 +-648.2194331626758,-529.2334762032849,-11.258377908483794 +829.6698999937562,-576.5712557040583,-711.519957763793 +517.9536637080612,1.2390646678619532,823.5702247635429 +-706.7708856803154,291.8557860460787,-534.24170769637 +-686.4791426967214,366.85883031454114,187.36923981746645 +509.65491672466237,-381.07484710763526,-104.05668723562007 +-189.05664733916308,968.1789279330285,-415.5020865212242 +-410.36552330646623,-290.9035823427853,129.18816258064294 +-495.35451147250956,830.5798807585479,-468.6288702674731 +791.6314631203893,-793.0498727068307,313.12540479930453 +813.9710368764875,-662.5011232035409,936.6539201985099 +-94.23327916897665,891.4302168820489,353.6400872600941 +-396.8262602528969,-623.3949501657871,-392.52990754980124 +-813.9651814746501,-712.2640673133405,-790.6791193070377 +-154.11291251688453,591.1567525151729,-717.2328915673196 +-739.3591336553283,286.8578990346616,-605.6340360638674 +-804.7799237820168,-666.3028435888448,847.4627917535522 +642.9425055523816,-291.8708752898118,311.6415346547856 +74.5513473360761,354.2485269651279,365.34230492551865 +257.46803011998577,-467.7972629253828,-921.9871584743637 +-88.86643601978244,781.9477693814076,138.9945170371518 +664.7820834038159,983.2486859224564,-672.7675917234475 +383.5552782839645,348.58714740004916,959.9108947165569 +971.2014679056008,373.357223448259,-512.7704160356114 +597.111676261198,-785.9417315779237,561.3986083432574 +820.3922482893929,-234.3332104631295,261.27058996616097 +-139.71453580634739,-124.46989002374312,-379.25822178375995 +524.2592409006493,872.3531283330103,881.5017184689223 +-650.4374302501324,749.4872993131321,474.86288285424416 +-494.3251986194215,-865.4307741569709,-464.0054662312441 +824.4164735630513,266.3573497915445,442.10932179574365 +-485.69529778180834,438.7763111496406,-943.7569874441525 +-249.35730845397245,253.5066970846624,-707.8068689173596 +646.0071488938695,-529.9374023761627,304.56222563689244 +-189.60571484934064,192.08719095529432,-785.0988947421838 +-966.1744001567854,819.1288547606023,-460.7399824656344 +639.354005560918,998.7006009444003,-577.1374840021776 +-469.65851763328885,325.7195752693315,930.8972692012426 +831.6286963814878,5.751040131169816,590.2205650534493 +-728.5082938001979,954.8763684080245,928.706468071973 +-672.5420842416581,-401.1537503937867,-799.6900049864662 +-456.5648022036406,631.9115788304132,-243.3687856694811 +-823.2060657064833,-315.54895044219086,962.7666684825601 +259.3671905184058,-167.67810718768453,-666.92297300546 +972.3535945673896,641.6980185262576,-437.0453950981612 +-859.8626085576211,-886.7488852448839,-759.2437009889323 +161.53716722884337,857.5268424109847,-6.513143988031061 +685.8909649123943,-108.22676028038438,417.16709153565057 +463.74547457300173,-652.0725881933226,-277.5678820483764 +274.6043130760479,-858.6067836312676,-276.91962447408685 +69.59893256238502,992.4489860892772,-50.93287475511852 +632.1135142286471,-135.86542986676454,592.7814452394177 +190.82960324021678,773.1908830047967,-178.1148952997802 +208.60883964295772,260.03736123765475,-165.2341163990534 +-711.375912625037,-812.8811861753289,-966.6568988007338 +747.0685284904293,-527.050175522611,-576.9865014364639 +472.070800852131,-359.96777382521645,12.089384823673186 +-674.9778694050874,919.4914429239384,703.1628000344747 +727.5792459300067,-186.45250285598956,524.7224274143457 +-712.2476892204397,-982.7619948164395,-960.0541348439438 +173.20347480912096,-89.21018950411838,36.03069781703948 +-985.0737191655612,-154.6267606851486,436.1363224017216 +-114.61259606512829,464.4384126244445,-533.9620712063304 +626.284008963451,176.8624809069047,-578.4738011401876 +-526.5590482923342,256.060929139074,659.8791864248867 +-168.74443594168963,-483.39914174481555,734.0232138212009 +338.53658350166984,-103.82902543384694,-24.19960944139632 +-591.4870641272072,253.60526012968785,-282.51497891422275 +991.2903533486985,-39.632969476224275,-28.228787620773687 +131.70357482134386,833.5120062374936,601.6361997195006 +-97.73986040431714,437.3985319455919,172.4709975615233 +-15.26590259750219,-615.3684544312989,-72.12747309021813 +-508.36282595485073,829.6842997033093,-329.1863730073061 +904.5280290667445,66.11058018942231,263.0887573523207 +85.88088897865555,-741.2387660665981,-248.3575619841181 +-801.7077754447521,245.90808836676342,-106.25160959912216 +555.9699431418737,-559.0590380012603,-670.8678831413301 +-187.33553807246437,853.1707664367623,420.8436300248236 +-162.1527504141627,34.54433950862108,-831.5739776458033 +969.1517927522261,332.81460938983787,-429.191863073155 +171.61678843048867,-781.035267862012,931.6733376151672 +-650.4300242332681,296.0606361104283,-509.0910749221391 +435.1227652970715,553.642734480562,346.83945782286537 +228.998920510385,784.9381879040234,-842.7465780204839 +-338.17046843960964,-503.4250407383081,976.0279241308431 +-221.220440666253,465.22539848079737,369.45032776200924 +-575.8375250452445,-522.0046395768974,-437.4308728939318 +-177.74544348124152,-531.3498686989465,-960.6970345063044 +758.7861136143911,931.2196627617682,-316.85922593686416 +-322.9862411490543,-985.8163744512581,360.50137666074806 +650.8797914972574,-706.7833992799937,-680.6673012656986 +580.1664999428756,232.58149670828925,-910.278884744566 +245.0939809245633,-382.1645543124679,-262.5496890583081 +539.4628365937604,621.8703853452212,-199.2867463203387 +894.3058720127094,-187.07456409585552,543.6720704602199 +-32.24547087148187,795.0646530441682,815.5224873003572 +-825.1663842578323,872.9866626204514,651.0696830408313 +582.6214286253337,-598.1773206289552,610.2384175093298 +700.2654693700736,-421.6993310916981,904.5201567246474 +-900.2797072016715,-700.1814935057207,75.16227610302872 +151.58494224461947,290.3001666018067,-966.0617413690671 +920.7335492442605,-910.8238145317121,-713.8760945531952 +-971.970964947886,133.7168665881893,864.5337678419444 +331.89433216092834,645.3149369608545,-973.4375930828398 +84.03059695945217,-80.87404498895626,-2.064111558413856 +-855.573629329624,368.87072213861484,6.440829717268912 +530.297699722528,-29.418731876569268,-701.2367275471358 +296.513908155644,-655.2272757896676,744.7891267096297 +226.23247813848297,-685.5922328860916,924.6761149624137 +36.73092667064134,-854.2030962566901,253.66580883013444 +-493.60218597437955,607.3869037546049,635.6441471323812 +957.8947117093237,3.7390620490074298,-90.08624054452571 +506.95121089296117,-735.0586873161469,93.83102758624841 +92.49520026170194,-821.0537543792256,-164.03182898617285 +706.5695971344039,712.3072439893206,-801.524670160638 +-818.5582345043383,-474.60904599612945,749.532125107987 +-742.1948298530021,439.9936052548926,-797.6687607737936 +246.27570749565075,-287.86540176171036,577.827925931734 +-532.6191023492728,278.4036587799196,-528.6349308482302 +427.32056622430764,747.3560691214975,-746.3964017464799 +733.191377191007,187.15050882859578,-745.7790182659521 +-144.91628928057594,-678.2794130298042,400.69577773313904 +517.7362688358992,-788.4069594544021,12.279705389288665 +629.2501120518343,872.3260831019929,27.03573348354007 +900.558447222814,71.37794091205956,-211.61901080018413 +696.4062571057909,-14.034579083821882,-56.194978870953946 +-19.375021180343424,693.5700037394906,663.8830833761042 +-192.96001511957763,-333.4002802589499,-16.143951921741404 +145.54501947421795,-523.3255787440061,587.9101694311812 +-27.034468535154247,-331.90890316008085,-786.3580140720187 +-522.3096791927861,898.5623435119674,-389.8006263609468 +-662.2814212659293,-78.65441669001359,-385.82451327950264 +-929.6814994576117,-353.7095654411655,88.21724787893709 +103.42474403993378,-286.8821576462226,-105.3944874947988 +931.0358364695328,-245.30304553937674,-483.54637348003405 +-513.0659118664798,-84.4707745917317,519.0402974338881 +-588.0236316230536,418.59225428153604,-957.7003533011674 +-162.1340440321079,551.7301304055736,-322.5340884511372 +127.474202890799,-590.0415343481784,483.9907822523446 +-895.4417934624807,705.0852897510008,-603.6072271566637 +748.7960634166616,-294.9415173989654,445.3671489489732 +-361.549404427623,811.8233424692951,-746.7257489632512 +-642.9604214548026,-13.939749682395473,-836.1231219237077 +-608.0396305964762,887.5327644240288,952.9793222957744 +-247.48134133915607,846.5720420278712,89.64935134686357 +-460.5150682524659,404.7974421611973,317.80361314971447 +978.2506382174668,-469.90542518143343,344.1190053234709 +-895.9524899411063,-772.7079226065612,-992.1632500978135 +998.9213621193462,604.5473942949554,573.4460294670816 +19.452150576359372,-399.86583418912016,-697.4714310746481 +-430.6505223070727,-248.05755614172176,512.620193960588 +79.32357780630491,-845.0327468890346,-963.9419820821755 +-795.3356409318737,-179.0025726052413,866.3858340980366 +274.8049624184432,603.6517997510302,-67.25081099090289 +-276.6678336099144,-783.1992545667546,751.86604437241 +566.3200580558057,-663.7638048045497,24.521127752521124 +-25.25038415751021,250.1831053730573,892.3737879825223 +159.54288352495928,80.43453355723727,-899.3541341306722 +-874.1850479639521,-625.3064173464222,-935.0584566165035 +486.70579114002476,446.66060798792637,-727.8875311367142 +672.1578015905618,-690.427930307776,-397.64882600528244 +-502.04620167727,-255.38580285390447,-490.67246822007627 +-22.098147123095828,-185.1842372906292,973.1389815586531 +-888.1472997435487,-715.6372472252967,-894.348212182795 +251.68238996475156,-890.9814451725608,672.8794747522466 +23.87726136385561,54.01524916306744,123.18901542438834 +-658.3725873875785,-604.619393771025,-362.36535425399063 +186.99283164370286,-579.764448119571,-767.3365457334776 +940.2337728368643,-956.0363703807542,605.3948106720431 +576.0702991500441,-405.571772309808,-728.7467679853733 +-708.7427065891532,394.8632344743851,285.61318217234725 +565.4913485027735,874.9623447982094,383.854726533184 +-688.296926897113,-513.1147664691787,684.3874617462291 +-581.3878483315829,-854.9553660910371,406.5601080845008 +-194.94728901971587,840.0801050918071,300.510142187323 +-819.1620444166786,895.7131345073215,-482.88547271950824 +-325.57501918742844,-195.47917263291595,-897.5514071913735 +-6.969155538790346,-753.3630178494155,-198.0593466232965 +-298.58042401583145,545.6801668530068,606.3410232654624 +-693.1742352218239,-266.89762524154753,-253.29367793633662 +-697.17911212783,596.907010102381,414.45665667084654 +-619.2364274059305,-266.55618281240186,-788.3899502869715 +256.4131941860878,-757.2561509027606,971.8683372498356 +561.3641493757248,-219.5229008320099,157.12786455870878 +822.6836324328176,108.1985607916522,-651.0030272040897 +-242.59328883768137,686.2897300594907,288.42603197923586 +301.4487686676007,733.6429713769783,787.9461149250094 +839.5851435588727,-810.3016134936878,88.25200392620172 +481.01904243663716,513.8536902540277,213.43240394000782 +-666.4253296326517,594.8411078833287,440.22266702989145 +-827.7284569019274,-72.38035065124745,-652.0452009563928 +-325.0459085740563,-963.8378155886292,-199.3402631784835 +99.75384231242083,239.16518565417368,326.98069025742006 +672.58262620492,-569.07418544854,-759.0363551230641 +703.0743437958513,-686.7743702147002,949.5201626723906 +685.076458797274,1.7532117791982955,962.8428498440505 +-805.2465417839916,-393.86847764979666,276.4488300812229 +-299.98626305364246,856.7451039615837,-868.7478236443649 +98.82366412192914,181.732534790229,305.4562475544483 +-488.66755333637116,-270.86714496027105,687.3610593299552 +-610.1144620596804,653.7356943467241,125.31084580548486 +524.3750223881643,427.2147325269432,-584.977009230242 +137.62547286774566,735.4463056101847,-135.7675263961413 +933.1815404466336,-95.56979979656387,-714.4287266642307 +-221.1306398446535,903.4048127810743,-360.55830132029155 +736.1963197341256,762.5013633637795,-299.6269513360778 +-833.4846838987357,449.11581831763647,-376.97540197202795 +565.8472285151447,-114.69030347913383,-29.46651531475686 +555.8188134970737,-235.27333787674422,-113.7453093541709 +-247.61906246075569,-265.3189694454401,51.89315380291873 +617.5988890023013,-276.46337615486823,48.50944107547343 +341.4546508852018,-461.12110739268996,-444.95439019521484 +866.8262540469095,447.0691466621772,154.37335244661767 +295.44010884122395,-941.4011137931633,236.2059311233936 +19.01774644840384,91.49935955887145,-281.1523463383659 +-837.0522045741162,-613.3215327758955,901.4894264253435 +-182.60087545813212,-66.63368833827167,-894.580420293122 +-924.8675409120389,434.36289409351525,76.18932824222247 +17.411968432533286,-513.7509391546627,489.5014632598445 +-663.5268417830163,-620.1305126779599,-78.57565730344902 +-427.44027577611826,-505.07403753370727,290.47528910666324 +301.94349043708894,649.0341395998585,-164.58286605404828 +-853.8298179476996,-452.66723015708465,960.0109263936338 +192.51715046540426,419.47416960204055,-985.284340749171 +36.41146436504164,-924.9426849363938,138.46042418289585 +841.5416992721507,936.8382610008157,81.10535077784834 +-83.59038949556805,890.034188496988,347.2196639933902 +-870.201440923181,-68.54884466500494,-519.5099630713921 +-60.3913571026369,-89.06885598727649,164.28960562948396 +-286.4590193014975,-671.4591010881438,7.438869179912558 +660.4057686915241,328.0244561352047,-323.26426814956835 +871.0460455177144,824.4151424983643,-581.3032012318024 +-921.1648297592741,482.61741670152446,655.2205226983065 +935.7291319027106,779.6727881766215,201.06953641282962 +60.10467842476169,-944.3178974748274,-506.68710631044434 +-80.77049653414713,257.00780016713566,114.50366663682144 +485.271979363381,-440.46613822591826,129.90521530494652 +-823.7155132184157,-172.6689528335861,500.321665909202 +386.801706858088,981.2854743443579,-444.21774802448795 +-3.6214016520417545,-340.9391724520066,-118.79377188165051 +713.9002597387762,368.41815037697324,764.8823826951634 +-592.977783336227,746.7222356828761,-880.4754516432312 +777.1985608743048,-341.8524410785442,-370.824733171867 +24.177153397327857,881.3803754464636,-904.4372706371893 +-295.53804985850945,713.1439773666714,-207.89104512906658 +-601.686204805866,-150.41163733717644,-228.89499701666136 +830.8324029334069,523.8687514861942,10.231111488012743 +976.7411334431422,-69.44493744815338,-883.5243383594495 +-475.4513563700302,-127.85903956137474,-686.1947517077598 +895.1302526480861,533.6977956355463,-463.42559914445474 +181.60906703583169,442.89831421914414,882.557857813596 +763.2706983508212,30.384452276427282,549.3052395860352 +124.28950765516993,105.40778009108021,-770.5160833236162 +-747.7246839676959,59.06723004491482,-462.27691004198675 +-957.9261950790627,445.67840780042457,-935.0268066196701 +190.5536822081092,78.38758825462878,937.6293811556088 +-31.57372130471674,-872.7971272444053,103.37593561292329 +682.1923412322028,993.6985685628799,-139.313652621855 +-359.40251500651493,813.3065939039977,-617.5157418477572 +230.85783006585325,-188.57115163810454,-917.8352700888894 +-305.42305138860445,-469.5429549946508,372.1823078869736 +897.5809953838364,-463.90562524272445,622.9318783033634 +-889.280366123181,76.2420200796264,-858.8998725802109 +868.0659822612786,532.7025611147803,315.8998224091847 +647.7927632493286,295.03959114032637,937.8887943485822 +427.9158957295431,849.3172191644935,34.263784021276024 +-765.8711740362746,56.35544284603429,-746.2543438738135 +184.98695835281,-35.01387894467416,245.15079566556346 +-979.9060378903368,-610.3190166892718,-17.33913617573819 +901.0071231782697,-232.78191928968317,-151.25594789273066 +429.39217801324435,207.58551457223598,-402.1476998033336 +-178.36720886514445,-564.6004022855351,932.0429182604171 +-738.7312368852805,-256.3264308671611,-948.3220555599776 +-556.4410161329072,560.9422767603098,-597.6495354222411 +-839.8731949420688,-51.09364031095345,-980.061530530963 +-830.4676911473337,615.2517391259503,542.9466897192128 +830.277640809792,709.030871821499,366.35112647963615 +-895.3342853986743,565.697235973315,691.0216216811209 +598.164291543909,16.95807061605217,-534.1963227010367 +690.6599513774534,454.32561948027706,961.5223487777032 +-688.6148044881342,-548.6708338958899,-576.4037002369946 +585.0795352426735,-626.1854070997637,-866.6803403533878 +997.1216131712572,-950.3655771097017,670.4881203177313 +-269.2663168986944,683.2309195156306,109.24098242229002 +803.2624589727202,852.3859728292534,-981.803637438448 +-849.1756480144235,-499.28254085828905,338.6308327270033 +776.5443930230119,-80.11609741207451,213.94623254853082 +-623.0002944088777,609.9336677633707,934.6562227069394 +-462.80213417080506,-10.348096798907363,-827.7677789872524 +118.2733129259368,5.566883693361092,-711.1270316898448 +-115.86757376384992,-331.7906958268735,43.661750610378704 +171.30867085759837,-983.008842785581,522.0119658991107 +426.0285837234817,-267.4272275869556,-894.1281288623635 +509.86507957010076,910.3503209562648,-519.6968079559716 +-352.9507725259242,-632.37422103637,153.8722466896793 +-690.3172107050901,-287.61211307724113,394.02602786852594 +120.23196601869677,-227.07487134412952,-159.50079638491616 +124.22176524645897,-988.2705442256774,-842.9802630927803 +762.5161355260232,-844.2420218174185,413.60719242101027 +840.0763282181051,-458.63279139653775,-259.01712588097143 +137.84281168943266,763.4179392771694,883.8111745208403 +479.12649622253616,-826.7604782906119,338.30831106970163 +-179.39255625467592,-58.59800101787687,-901.7032193096459 +-617.8757213072836,581.0272150672954,-92.0823339042804 +-396.6755167377023,-231.96185207008364,708.7990266513605 +497.99803480991386,-455.3692056378344,-764.9963195752534 +-496.00355671185656,841.5129021094674,163.1776756995107 +66.96041748956577,192.78719938492304,-267.94346850696945 +614.2140406390256,46.57249860049956,-766.5041944624089 +-741.8697503418741,73.71829300523677,873.1404361416783 +-383.2957566476025,739.0823377184365,528.1911731577586 +-504.3751141861863,-927.3185033675151,-796.3054697152345 +456.9878676948804,-600.6605239187065,-257.4581589892124 +3.3983320128496644,450.9363369003256,-773.5375534817492 +-187.26718944507707,-29.85418171460924,81.6541279430794 +636.7212827904334,-656.6436099135663,615.6629036532447 +385.7568553933045,111.7416283979187,399.05574080514384 +-175.96452209668723,-723.2048280637509,331.5304805307346 +49.34461337124458,278.7496010855509,-324.00243794302 +813.7331546796718,174.7397371511538,-829.1950314182524 +-100.39201859114269,512.7121094872687,588.2691234645447 +-10.805894472482464,789.4951416626022,-464.6631256114049 +-178.8026055234668,797.1938211379402,792.5134329431578 +371.4255376493618,717.9610942444403,-822.4534660875347 +729.9899524155526,-358.7601868995465,-643.3369751435673 +-521.2603273159073,-164.06298397222588,-497.61599079106554 +-358.86482796700193,-730.0430278567158,-407.646468882003 +144.56762908400242,-116.29258381787213,-306.5624775281776 +492.9042577142279,787.0199427866357,513.578445804794 +-335.99859576464166,488.8843356751074,-696.0396350518976 +-739.3640238174182,-308.74592592768215,615.4047380881141 +-507.3035055153963,-873.4931822026408,-736.5809295872898 +717.4899370591604,267.56656949457533,-493.5976732600467 +110.59165065636262,55.159244850700816,310.8719568813226 +-533.6248911567674,728.8059743887954,-381.2628758399743 +388.2633079524737,-967.7507072555702,-254.68574021170548 +-296.5803640823834,86.96885716602901,-854.527476445607 +580.2627474522167,-564.438396464863,354.0756297640205 +606.4242464881863,123.75391248302617,481.76641344397103 +323.72062443001096,-288.94040569598474,617.7170780671306 +-410.59726022894404,142.42583550303425,490.7954782830791 +-242.08818037498486,-394.46478476514994,-81.30797965435454 +635.9269886983072,859.8435262913295,90.16682571978026 +322.93241064730364,806.5472444778284,-802.9062971741153 +-535.84284426767,417.8000125031649,647.4889238245994 +714.0580566611559,-169.78564629013476,-821.3201954162663 +-124.43704540076021,-538.5308195858925,-417.6070900067517 +544.5351136750116,-848.9458279482262,655.1624349614042 +-144.66182835166182,192.12786220119006,-820.695537528642 +-325.2818432854407,-820.5981619703084,923.0874457622192 +614.5232986525009,-80.73449128707955,-552.7949033526578 +866.9102104997044,-310.80680854605646,-678.0311366252505 +126.32877690790974,887.5482406896322,-992.3394189993548 +-523.7503134920025,876.8952808208153,-657.828066285676 +-773.5130967203603,140.3744315996089,723.6876465896598 +-45.780364612147764,989.1285133690494,358.34339907598564 +-851.8501855791045,985.6642633639508,-184.2115264396191 +-425.1949323090349,115.75836715577111,-391.38481635827134 +-827.0849857596954,-997.1433138416465,-100.83329415947537 +673.7268444531846,144.6303712601532,998.4145978868817 +-426.30670870560004,-439.0898704798893,-680.5010795321116 +-671.8728234693297,-429.62680797990436,585.6800905470543 +811.5135812728956,950.1743394153625,-535.4206918070947 +762.5950912281833,-343.4898214453259,-774.3189109662312 +740.0498510403313,272.2112692872372,-670.5382078378766 +-140.33748497399495,-425.4846102458647,473.5891374203941 +-93.1675387514639,978.5598902127699,-890.5100354808097 +-289.96946772750664,-36.199665780045166,6.267109496639591 +-368.1283552287265,458.4804981951361,749.4941469779494 +877.438603955726,610.1867535990523,701.1603946131988 +101.09060123999097,651.7764528536293,-392.9921817040955 +-203.04247578157117,-366.1739723629114,-65.22532910414918 +-428.8407675227272,923.2228845088937,-374.3107439886637 +-803.9109237781204,53.634332100826896,-885.8018431096473 +-778.913667382839,-561.2212216075075,-71.29950023571666 +-133.49813538194417,599.3837240055823,478.94930776822684 +-147.3634120185974,-332.59158484874024,-367.06243187700284 +547.9901745880179,-895.8551875574606,-974.3567009787884 +591.088783853296,-45.707248021901364,-738.2377228928481 +-528.8681308109974,865.0079061947652,719.005951249796 +419.57010044794515,-35.54953932534693,40.64725238277151 +950.4890705679172,931.5408877685743,-569.4619084283315 +622.2091326106363,-605.5146676659664,-572.9250442320972 +352.1860683291536,-189.99780282490315,863.0888142130405 +-821.9805302079824,23.05128161898608,837.0430608862425 +808.2273209590103,-686.9415731685176,-266.7245998070871 +238.2428000933926,-681.2102304571956,936.0443440914773 +829.4986574553207,-666.0996419310616,-757.6890774780292 +-829.1830343834695,818.8873280732623,-612.7523804090783 +-167.43014291129055,-102.29726869599403,198.02208842713503 +-856.5293125051501,-546.4827651989681,862.9807738378522 +816.820214537139,562.5812948113844,-961.1975087635691 +-345.9864630077958,255.91747068581572,-449.6195764530486 +819.1733901075547,267.7789236648837,-856.1865653671089 +818.0111776714061,915.5333163524451,-844.5751632165491 +64.72046972262979,-393.27143557165914,-214.3218470371953 +-640.6975640893163,156.14420402482506,915.9587064977811 +6.145200543218152,-834.1708372110377,240.00266695481673 +-319.55401109748595,711.8503791825956,-130.64370336705952 +-614.3207821155088,-617.7887546177101,537.5283614423208 +-468.82480338528023,534.4667883184459,-588.2253784668012 +-356.6272625973812,-69.0260551206012,886.3916993869013 +863.4628495076493,-586.2562491554245,-283.5619175138544 +-701.2012230924554,19.970158626994248,-78.83489861066687 +801.5203249014648,860.0107555821453,-232.86521798541582 +-16.524113962021147,792.4724982922662,613.415615490123 +-992.6873773107014,-359.880871632835,-156.45151612774816 +-540.5674326335366,-600.8567682081225,-924.4309868086407 +286.73945013952107,-474.9794190336687,-895.3056431373739 +-538.0413789438727,603.8279056722531,702.9783632930933 +-33.867509613394645,-167.85865918262766,955.7073870035636 +-598.8706808238602,-569.2814342907831,-416.26564592720047 +-654.4853634378253,-241.2688035916268,821.6684539795076 +230.69568125714864,-176.1069027754727,868.8215891424295 +-903.0715350483554,-579.4476441962772,131.77721020351805 +231.10524638635843,-920.8849868747737,-193.9224841857357 +298.30792966174545,396.1410928068033,276.27980503253866 +-358.8735512781509,-812.959752804181,-145.7751071613318 +-742.491125263889,895.2473170413341,-49.65826795474345 +-365.4816512862649,532.6081422378002,-4.102814835472259 +-379.9319519750999,623.9354847816035,734.304302002244 +346.016332577354,-906.0711551846654,132.64576033306412 +526.5898239945632,-726.9939758328356,-542.6584972307933 +764.9902101362729,-959.7565562938519,505.454275651952 +-52.45341497115419,-106.45568232078631,-985.8069350102256 +638.7964619329855,-280.350198726867,81.5312626010857 +354.6013726713188,405.25915287583166,911.9601176521446 +62.679906473218125,-200.56089805114482,907.4072529834159 +284.2204700510422,-403.6992874468888,-747.0715091928577 +685.1090029303625,-275.6367944116969,320.93944272886233 +-58.367161268203745,-602.1404404099233,203.37321724093022 +-878.6338620986354,-173.3150802576156,93.22987932734213 +-127.90605176284191,497.3443505019816,655.8499090906248 +542.486148066356,-922.3741043763957,-611.7424591080555 +73.21501852754864,869.6440808876025,669.9135501042338 +685.0690167036032,-393.58361248065023,-141.10420584259487 +-58.588105368125184,-685.2568333001791,-937.8637395110874 +893.8057989210338,-518.5748286729865,-520.1021925527374 +-833.2418924624809,857.0155038875571,159.47422987954405 +334.0737142507078,823.153774526105,-308.759662198421 +243.0146222761682,-922.4010905422251,-626.4549435377413 +662.4916101798849,533.5367126766714,-298.7146170857062 +-246.37874445157502,67.10886710715886,-999.5179906297309 +-517.5113279239442,-583.5363827835711,-499.03410650047306 +611.8116850668825,-440.65228690711365,-616.9573558997037 +8.526921586063054,731.2900727454639,-517.3005923250003 +-842.9275144144026,-287.1905283006706,495.3036491299556 +101.3810893895893,633.586739148695,919.1842952184679 +585.3249535032342,207.60615768750677,-13.316823895239054 +-919.8618273034667,968.6439576280825,-233.0377548499149 +-695.5435721662664,333.41771079291357,-431.42342180908133 +171.55654186209517,173.53581568918253,-108.54035819426167 +672.2372310900853,-470.06587688911395,-102.73481676453162 +75.38425718194298,327.2494415345993,567.943701011179 +-210.3854342434879,292.093888193192,-698.7780938629617 +865.2962010849571,-233.88238715799287,459.04284395287686 +-959.3178362356447,-589.625714190386,-25.83491135284396 +756.5049354646931,54.5102999013543,859.7409645877581 +-32.40620683440727,-19.101806528100155,-760.5064229989362 +605.3124883044395,-506.069175065875,799.2249787446301 +821.6484406607922,886.6202237482994,40.460978206180016 +354.1875695672886,557.0317601233271,-737.9707626990688 +201.9143899949945,-931.4041973933766,-4.867833222548256 +-690.3146367595452,-634.1541480758306,-269.9048666147969 +-135.12566656699403,246.34484906437456,-851.1431631229686 +7.383522474889219,-634.7497394937977,147.9503500634837 +274.809224522367,113.41851310570769,476.59102095661524 +-328.78151151819736,530.2131832662617,-134.4658365836127 +-31.631003354806353,296.2042545221427,-963.283232001552 +307.98844284049665,237.17029814423063,-380.30576649344016 +-828.4114302010211,-818.1291001739178,846.4474939704571 +378.55864245167436,-745.7947724585192,-286.55366138218733 +184.96598780319277,671.1434101812974,-912.678142573983 +-526.7337370599823,779.4979805907601,-981.668899632367 +-597.2017944122251,918.0483519459319,226.80369304434225 +-476.65726672498704,-866.0178112083048,-943.6173191055557 +-510.50984072614546,762.9716391778209,-168.17269140498104 +440.6667383319859,836.5700707599156,-183.9190767943668 +-617.4452579252059,34.23586171383886,816.1673741197089 +608.7488282754011,-868.3403132736925,385.1456001551637 +143.7950449179075,814.926352692851,-755.0371662994055 +68.07222640931332,758.9253870237847,-179.95242651651404 +-36.01016453426587,-859.0786446660834,-443.7127191021783 +-350.98670166210536,890.2448974897738,-434.6652789176819 +-78.26252946069599,342.60884712855955,-675.6332551842452 +-27.115225716251075,477.0780789518151,733.7104260541321 +252.51854932485344,338.1070306338959,-747.4330548308621 +891.5529944926943,-734.8518450310353,549.3458743635965 +-470.3673564433624,867.1862874025032,439.9190787389591 +507.62742595673785,-561.8816538802334,-113.92004672967835 +235.6263891785727,539.9472364132018,-792.0812481752208 +924.7306329090568,780.441341109112,-459.3028190088313 +645.520486064664,36.6478460796468,-76.38703687596274 +-371.1317883771892,161.93717326318483,459.77823540719555 +-178.1341900744835,258.4383860165842,398.6258423106076 +422.2436340305717,-896.0678037376395,719.4956113701339 +-83.49337046990411,-475.1678366075711,-516.4709850406368 +-33.971774312099114,773.6630789379185,-243.30483663470613 +499.4514935670866,-806.3625380255628,-47.88659569787649 +983.3722807854713,540.8756055846738,-578.9430231187739 +2.882947395821361,-532.7504727028669,-180.87814547498147 +560.1680474699294,542.4496305808073,-543.7992441952297 +844.4466363097204,185.13636552965363,-240.15141807597092 +3.8711615617212374,210.14250687548747,119.78106369157081 +-27.189928927643564,9.865608178800244,-647.1761791442277 +625.4658086093586,83.52063988203076,-737.8402765905938 +532.3142031655559,864.8879567547017,894.6137984739241 +-261.9645351776545,-728.9662528784919,36.799253266130336 +-774.7815413015586,867.9748370252346,-632.840745289708 +-494.4682800976719,-186.72694623005918,-233.6710628817484 +589.325784795778,-87.3663588980753,-658.4634799933262 +-465.58020902785177,18.226770375043998,-705.0921651477302 +223.31135129202812,131.49461310229185,429.4046327645153 +875.4092307587352,824.5091222023113,892.1512361376626 +-510.56880595259815,-736.8693867212908,-395.44659900710303 +790.1703455326292,944.1069492469765,718.649902140952 +-779.9645577449128,894.8559961195863,-153.28394529842808 +-981.3794184752926,-115.21251850361284,-907.8616606490648 +87.75584232223514,-322.89194512589734,-53.13013281190251 +226.3407214862341,737.6021916356406,323.8031529438572 +-131.90226304363864,638.8557073407301,811.1642751462643 +-760.4800671356056,63.865955105583,-430.9760805151117 +-905.8776042461052,337.09339022797076,725.5415549184511 +-674.1946910452119,624.8273152478009,706.7914670738833 +828.6808853329669,-469.4298218278951,807.9061303797785 +-358.6744905271355,104.67602691100569,-898.9850583354357 +-912.2378232625128,440.7464254644058,-111.04004404441787 +-487.4152492615649,-619.1730079501797,339.9069817184361 +-999.1969119493202,611.7823383937084,-841.5007877401424 +-617.0207701837611,-227.52720940182076,-30.282520567792744 +-290.00976837211635,-358.5756700314122,927.8320241463769 +283.1593624867885,-953.1340892652236,-139.64818311137367 +750.0173994879403,-397.0876271786641,-810.8873104512236 +516.7695431798356,212.02766387216252,140.62501565300772 +-892.8468807851841,-719.0019804089653,245.09879242622765 +-584.3523170823285,8.140159496848696,89.7633720587869 +-432.98561945812116,896.8503110829856,684.9282136711504 +444.74701526559693,-844.0122671811819,-787.7399613819612 +-14.437308270088579,-678.5733016180286,956.5309270589482 +-682.9595319451811,-25.064329072052033,-271.75788631698913 +278.772842908196,-741.9271822211501,-139.3671439152182 +-450.5899343857127,775.503049343376,-918.8285757306098 +827.4549880129184,665.9882771060009,-404.85856711836914 +578.5813093542095,-937.5728793225048,933.7311005867873 +53.189885179578596,-393.4379478691095,-274.8335748106458 +-867.1892930790052,978.6990280840785,-921.4161096986151 +309.814246295718,-114.52814458708337,897.8324363774302 +-508.0005193864097,64.17364787602264,-35.28758283449406 +405.7328881002027,-863.979536095159,-612.4217399532903 +-570.8703598143004,476.30150968337944,-621.7226073465199 +146.9835277819534,-569.5123589980926,723.2499001679569 +884.3709089792771,36.98594988448099,-295.3822315816434 +-531.8844499650017,-900.4379969539125,-462.9998476050092 +308.4715598906357,67.23386261842165,888.082556561855 +-207.44547501659883,387.7266846567891,-21.354505049757222 +25.152431848423248,-464.45137079176504,-90.0984463160006 +-58.43000597458547,413.28504349786795,881.2799983722277 +-341.35744503499143,-915.5990628374032,-7.409748998720602 +88.92266429833717,-663.1188977361695,520.9292125521333 +969.8582168829832,891.5494340169219,-605.7879223526957 +750.7264798015215,408.9872728233695,-92.3068723861769 +81.22198864945813,699.2003499649163,-39.73012072325366 +-253.58526178974626,-13.505013948028363,158.25960807009824 +-621.8446924433024,801.8154605339814,348.3738976592276 +266.53783467497783,-801.0075476387237,208.34787634518352 +-758.0786755230154,-842.6046496092019,54.621791284786696 +-194.42893190701,177.62054031244634,-821.5556638855228 +-138.0338743054832,-650.4265699096841,974.2001718482331 +122.3004248703487,374.8737218817346,-349.16343863478437 +-810.5221704413117,951.7417255670732,-427.48192923363365 +-152.3836296528516,299.72784340515,-950.6054046277775 +620.5182610345739,73.15638005724054,-443.56562586235566 +-876.7840294150615,-675.0031690511171,790.0677177068737 +372.04844787178195,-500.1965567262203,-868.7984701099409 +381.23062477327267,144.8154519355303,-190.96095108352995 +-272.7771016198724,-566.3714481417834,339.2225130750353 +941.3360555877409,-648.5695083263483,194.23324003100674 +-151.62988850804754,-106.62255651067017,-491.7054397443712 +650.2697513228381,-29.48879170551777,86.81170439652828 +-390.47817440534845,-636.3830686661005,-828.179223594359 +428.23828184983176,-607.5314366242887,380.1507083775955 +-219.2471079060922,-168.4503980206971,-61.64500781445656 +-264.5829837449136,-798.7600455548198,-380.73637999430844 +327.46872138787694,331.568802937742,-427.5513855200113 +-79.79474688462403,-613.1055439761251,-579.2558369403284 +-953.9058231867851,793.4930998154891,-578.5866698501876 +-544.9322461270733,-440.7971347097364,-745.183856609142 +278.52576636272556,-849.7140936448269,-731.5951473472994 +289.5134531801857,-320.67875903711456,415.895653402378 +114.84948934028398,-487.95765387697384,301.65590097865606 +-767.4526394142387,72.82076616006088,-125.70378990993072 +-464.2528343651185,208.00999547900028,742.667184680565 +997.8093995261534,215.5255374868491,-190.58825134165966 +-549.5857995675967,-485.80782120977653,-41.09004370046864 +-265.44459743858147,827.6290452498883,-263.4090646885809 +-253.11081770912904,-232.93097513204611,673.2404207353161 +301.5766416938038,228.33770063778525,-331.7139552322757 +635.808353664879,-923.2722772885977,741.5943446762262 +25.499799587859115,-203.4995302731744,-5.66543856462863 +334.8310610676622,-974.4691469642053,743.1037129164954 +-106.52094937721438,-314.0669605998436,-723.5088687318857 +-121.0692512831157,-7.354457431242281,-192.70661101304438 +357.32018765379416,-158.20694248154803,922.8351556931466 +198.5550356471838,614.955871303818,-781.2881937810423 +-205.4174141081886,-326.3045971056946,138.9647762731836 +722.2270401228511,-843.3235644759867,-854.8504039105784 +700.6354163151977,-574.2998279232852,337.5065088996273 +85.75626472161025,665.787189774459,-749.8221803271929 +-740.4340685547775,113.63672055661505,892.7573067167418 +-170.00448325849152,-346.11579949061013,213.37864639577174 +860.8972010900623,673.8556656892474,990.9672214664397 +-954.8628335952458,-774.2837105744755,218.93552673324393 +641.1528786676995,-429.5113153864669,-521.5778239315625 +573.9515987624018,-887.2362922935368,-261.2347048348298 +11.618445184659436,120.6973487006469,457.23031358555386 +-290.3085531386836,225.3686893492145,170.7508455819127 +95.23220130749428,280.96658628442447,-481.10165786384744 +-830.702492830742,-761.4566559205132,-550.8352346921979 +0.3958710455705159,680.8855010920402,402.58668417676813 +578.0812084040942,-298.04875214781725,-190.69251670289964 +-212.63622801877432,-616.2536311909969,-877.5666837128559 +181.8321856544535,978.4333668411723,-666.3405900994744 +-906.6303602014525,559.0633636478658,-494.8279866305516 +659.2876107058567,407.87333406903076,891.3470741016092 +-182.14552848665596,323.9396789012683,-70.29043837345864 +261.177394617087,-100.80218798452529,-622.7355071518504 +15.794832006761794,57.16840287488458,621.2076965203221 +471.04141158716243,327.58324788288814,-773.2258088948549 +441.2325813274301,0.6103127090295857,788.1990722123185 +839.7418682610855,-889.6868187964291,641.2831207089575 +-924.6052191546588,-265.6607486099547,84.59995124215834 +-703.7984027457451,492.6276251381537,-983.2905916557229 +-662.8019031319263,161.59365970695148,428.7751240745847 +833.2862053878323,410.9933038692477,343.558540509732 +-211.3177072986714,-997.4311489463971,-759.6814825287561 +69.1090895120783,350.25977168883946,-165.103432207075 +461.35802305678044,43.72459066435749,-851.6476088113756 +-615.9674980641023,679.9964464878858,449.82549324887896 +789.5239740249899,-764.8855017581268,980.4450692301477 +-581.1865721001328,-976.4402474267159,994.8458781071083 +-437.8522291097737,336.0389050251199,-646.6353716473895 +160.45706439828336,808.0699729091186,-359.63766514312283 +340.5079520887184,-624.1928224031669,249.59079743745042 +-327.09929636497975,-577.5834828240967,-373.63589859272975 +-642.3178629844012,803.8322156757656,-205.62622736574235 +-509.44139005126533,-103.18431796813422,-358.9276663870089 +488.838507626652,942.4398237709888,-123.9326866047063 +722.0667999444809,131.72614711923893,-685.5286698115331 +381.24548416268317,26.868994251640288,301.2130465042069 +779.3748251433299,-119.1308586879079,802.3552464347113 +501.33802856330976,-22.790148244030433,206.44427131592738 +-348.83773496197716,967.1945994775483,334.7023261007919 +-912.3062950067402,-346.75618850398246,246.62886751811493 +-887.3334444015204,-952.2316173617145,-99.95152094439482 +-334.61964061465994,-123.40278393366816,-474.6133802399896 +-670.5645061140382,378.28671396067534,29.142232535600897 +-599.6915775012664,-360.82114748000333,183.61581532665173 +-855.5413034550443,-705.0939814676409,-853.5087917852197 +624.6346654282377,504.8184664240184,506.62586375851424 +432.65068695205605,338.77084733973834,-46.01616924364998 +284.55632701422996,-923.2768904240507,242.92884531356913 +555.7554110737544,0.7167207687804193,-284.9733431455261 +-445.1465303980417,285.60410032416485,385.6023972598175 +741.9351997250851,-315.33183507801857,539.5446147711712 +122.71164837867582,765.6729813561583,55.62421659124152 +35.25965679593446,155.75416288181827,498.6307102848689 +929.380957656922,-852.8732915684686,-893.1307952179657 +875.100674814677,59.751251036412214,229.80602913387224 +-35.15279681054233,-812.685094785051,536.1787568373331 +494.4492901771737,-376.593357014376,-387.52150954319916 +675.6827618110369,-855.2854845173467,762.2102967131316 +-486.67662020817113,185.96949551098783,871.9883580035555 +356.24500307329276,-171.14037506592683,379.0684178108304 +-312.0407273672596,-445.48316730162776,993.3665558693594 +501.58046235957545,289.43995476363534,-289.4207135613625 +-901.6783416899037,-937.8862479296888,108.36251089759753 +524.065442078102,74.75838088771025,681.5701438782291 +-933.1469338135568,-266.49584714811976,-525.8592176516439 +-105.45406368575595,-855.247213611755,908.2632831421452 +-553.4891978612782,844.6155509671696,-148.21368992663645 +971.0482665104362,108.11676692042147,861.6657283516149 +-989.3020226115543,496.4776123618003,806.1013062050308 +-720.5588660420918,-807.748296535697,-150.85478562808885 +867.3578122658703,84.77312038087757,54.91292744346424 +-717.7477634013562,-998.4209778135624,620.2801814909224 +-824.8508740275236,267.699637470648,829.2329090303829 +-582.696173683138,330.5456724738217,-842.6028465849811 +207.51028767522598,-672.1365580935945,471.90712103035594 +-397.5374104121836,-73.21798239070756,198.86108405524328 +-657.4531786675209,483.2756372352419,-394.71931872637094 +324.743719825507,-683.4338986012526,376.2353184127005 +-743.6238543790765,-149.28700746003278,-505.58785252224635 +496.7504988563651,-475.9299909862509,763.4346127907925 +783.6404228132258,-607.1173695544283,227.6918900154485 +-824.5647165600714,-216.92580079674167,426.64345900254443 +318.84649369983254,249.40133881321594,-434.9182726751128 +-243.950101131196,-794.1077105994276,438.0456408672019 +7.77759358254707,417.53126469130916,-502.11295040625447 +-351.1235427298676,-331.56932547977067,-948.5151805055676 +-317.90425433875293,606.609147036067,794.5969914994771 +36.43663127185482,-88.99660956155958,-938.3507626012595 +758.4086751707653,-973.9795731482545,889.5001604204235 +-21.567502623818655,-316.13101285054677,848.4368696853201 +-951.2180137798065,162.8497897381742,97.86504899867532 +-561.3591975772358,-142.22513729957882,304.5280118875405 +454.262393763855,-998.5662825868404,873.7068601820306 +-670.9492552143752,-532.8391315552816,-473.0531086123035 +-924.3597268959294,-753.8957528193502,972.699845888324 +-369.5665252454279,-769.3978193219014,-786.0174776507533 +438.9199353399438,709.1373280652817,-486.09540098306024 +-958.18097532953,-553.8199631092884,-886.9686184064853 +-793.210126739917,-136.98376030471525,-540.1632582767348 +31.891757050846763,-493.01249348561925,881.0746022058952 +811.8879358525292,133.61221002093203,-291.1520160252277 +-237.70623593052892,-176.29543371100613,455.1586442698881 +-96.72200896232414,713.4598930117947,888.1895718607291 +-328.1076932421323,121.38896275136017,-809.8869263348711 +-599.061904467282,-173.0684665796798,-587.5945681964423 +753.120981577435,-683.4274878818039,-88.67835689381604 +211.39848091975136,383.7278163216888,-233.8612605469865 +738.1981374494571,136.63830215585108,-120.98443910489641 +-865.5187318959267,-70.62106310966999,641.4716816314606 +229.08203644263085,664.3249074582368,-11.976658801388794 +-763.0765898110363,-972.7203083282378,-393.56090656281765 +395.9809429955849,580.5198078833876,-408.4943307593412 +-8.69215823350578,-157.76219113183674,-178.9544312971443 +-537.302573599699,-727.2577899410833,-606.6228835375738 +-889.3352256733078,-603.7385163528459,-981.5982047492411 +254.51680127195664,-367.2491852246343,946.2894228538173 +-612.5658984474043,-308.34285938081223,-284.31768271693363 +-983.0970078750789,678.4159060789179,-936.0110797113506 +880.3596694584828,784.1487021872413,71.04383217192708 +87.19114982258407,307.55584591231263,-225.89997613022604 +294.4445667957109,-910.4632226230262,-891.9047453005469 +-85.53916076091127,99.24460221206982,775.6352806716379 +-790.6787321842075,645.2958543877787,-579.9053254158608 +-211.83270297993624,-366.79513034517424,-199.6894542692021 +-699.009003854829,7.140148807109881,603.2851796627344 +-116.93197924220613,-18.772848203601825,697.5351705626285 +412.11622927606163,-19.0911829604305,-484.60870362164064 +769.8534936899332,154.0408033811168,-557.7047797786132 +-461.76049472397926,606.2661778724919,-911.7088758250891 +984.1843740576401,-739.2966405704165,592.1370507938748 +-210.44936645663427,-15.567633425066333,761.3011549291557 +-174.17762082157356,74.98750734646887,-901.4006751816601 +-995.3050522650937,-510.4002539965482,361.1661858375346 +-757.4702132817266,-772.4760823909012,-178.0787839281934 +295.67407721645304,424.1439844958611,-643.0986518032505 +-840.8237052559151,880.7940678910884,-478.66723487579657 +706.6929952174476,726.9829009256366,545.045183525089 +-662.3327866948598,643.6029185084008,538.5011184831733 +193.44598021243428,-325.5959296620945,-474.98279146691175 +-756.2215758392821,19.514133801742787,170.52175101969306 +-281.3220189684256,-49.281864638262846,-272.97108526146667 +282.0121146414026,802.5184155931267,-672.1594759061102 +-237.18238019375315,-718.2627920982774,249.8875408156639 +457.7410189771915,863.8254651949117,-442.25614747807015 +900.4224117308604,-873.4746563586505,206.02772672917627 +-885.73456131334,787.5483755238897,59.61811414010822 +338.69670152559206,663.1478518209051,-699.3787550320625 +-922.8168761237323,757.7622918257043,-370.133545082135 +-742.0421841456695,-63.07752582582691,196.6121513920375 +-938.0587931549798,-450.2086834858245,-934.400251446208 +-159.32922160900205,790.2000581324887,965.3048229871383 +274.09510700725514,-676.7246124308164,811.6987799986116 +32.495646400120904,-692.5013757941638,843.4533389033227 +514.938101446206,463.4105454463031,418.36140758880924 +-599.3203578071153,-577.9866165849478,376.5859968545101 +-560.5544997792063,-122.65660639390228,564.0036511878827 +567.905036195682,-93.47645494828066,584.3798765504903 +677.2435923961136,309.5515025685204,-543.1482953831596 +-451.97643922890495,-370.3176891825293,-766.391784532096 +-453.68075926010977,-580.9615513749358,-89.34250038279572 +816.87509574453,-791.0393664920839,440.53584789479123 +374.5660088262555,-808.4916026732847,845.1448098116002 +136.9444043136391,-272.54895772863154,513.0771669906133 +-485.2690831967319,387.0196740926408,-920.5775848555056 +678.816075218544,-103.65830595736304,273.38582871588346 +-557.5243603866327,354.1474253168958,544.4805517865532 +-53.573626231202525,235.4538481235886,-87.34815235520284 +788.182738515691,-4.261638971361663,683.6174180576377 +602.7041165404971,-178.99035730328694,-539.8310162850499 +-187.83573488045806,652.4347515504403,-544.7349283612152 +48.872691715498604,612.193495921495,-293.04504974324243 +284.41927400539475,-508.736851902371,-781.4411092636801 +588.7684501857127,-802.0627531825863,-457.2372098408308 +710.2188439948802,-307.0614258426656,946.0906990283222 +959.4686695477194,-463.44795909288666,-918.0435555002191 +410.1265684107582,-98.02699470331254,-798.4943120808474 +415.04563795608556,-937.6501817761575,740.3933809844843 +-722.6949417733925,-745.3762425065499,-648.6554040628309 +920.532716984133,386.33872050769196,602.7430709272735 +-204.73002853449395,-327.3745449900889,-531.0319864336601 +-38.70394337518212,103.65746706833693,263.5496873055108 +-485.762992002611,897.3081618059812,-660.4830035857283 +931.3063495328247,-970.2877549849924,-37.74861636630874 +-333.26432376687444,-101.75317213949836,141.32915796157818 +-128.8216839745819,-170.30629939681012,465.446830826613 +371.7525501729292,666.5425640716958,-500.0820375210089 +219.05701950812727,170.38957078570775,-260.52437825462243 +-27.88491619463821,-372.4357133885426,-716.3112047660296 +-572.3975786745343,-788.9727071975979,366.13915038024834 +321.45478621830307,901.2127431597457,459.3568272944826 +-895.9083224877371,768.4903478579083,725.3503258914516 +-113.35935845460267,171.72610105584317,952.1566649450376 +64.60872769633261,810.6436567521796,-833.9224843796271 +-617.8962625826343,-118.49011311736433,169.51361667460947 +632.4557037256004,976.5242302863737,-222.29700705176708 +-905.1687277198301,602.3430065906496,208.76143816561625 +-602.9142822635966,-10.343086757159654,484.6204910674487 +540.8235741372876,-0.7631760024760297,-389.5709397422818 +947.4851640769871,326.7252219129857,-183.52496130740258 +-439.07355159069516,462.2059660071243,-515.6331088124646 +-656.5800220526237,59.66777792414064,-420.02521471171633 +257.81028984723,-764.1226502515331,309.88220913464306 +-433.4069440045955,-999.5141311309745,-746.1278846516473 +867.230755670188,734.7092782307157,-532.7819359275263 +556.7438090909825,217.14318634794859,941.8094228997388 +-252.7886809318818,362.92122503434257,-872.9285551521629 +-207.50530636718815,927.6353223763608,77.96174890024099 +-424.24099333031086,-759.4580737427863,407.0566803630609 +289.7120868594536,-252.1225727924508,901.8827037316685 +-955.5943740242993,-392.55229673634835,842.1389725991628 +-358.12912336111924,-495.4943322896592,68.44081986249466 +647.6034998410757,-793.7064782432778,886.0414192914723 +590.145762362328,-637.4994888968961,424.0159223963253 +-230.08255472488565,-195.41064384736262,566.5801848777328 +925.5696159614645,-746.6882543056122,-158.7395262423612 +-38.11678383139292,-247.3763660900048,-273.62175256754995 +-895.4626648768069,371.0772411252465,-127.57116575990926 +-610.4123947121465,632.0670046041369,605.1214963032558 +-27.21674382221238,-403.098677704479,276.18545159290466 +-423.6957284451938,-527.984139352576,461.0293080526533 +-919.3495205580986,-810.463057930812,-986.4236519528205 +-694.1136270491477,-862.0199825790811,991.6047355598371 +-422.38006009182084,-701.4639746615055,-518.007484008164 +872.2511430802692,40.32044604879138,-270.36380738428625 +746.7829158184386,-210.01945890193508,-329.98286008460843 +-585.434954900529,-244.406352181177,-366.63128796614797 +354.60791859628193,-420.83459065854584,154.39949284512295 +-868.2156699360546,-617.4216866069712,-185.18945677730244 +873.898507817391,-245.49602856860918,328.14824239966833 +-489.8255551572037,-745.9328480535365,-882.9267998398998 +-389.17300291449726,-684.677946406184,-651.9791039677516 +521.5186167739,-968.3238581102515,115.62025147086888 +-241.07723881307038,13.099999817094385,125.6604744292058 +-373.2646110854437,-409.78227963142945,466.8036986698114 +742.5539762423143,-614.8367350829442,-804.7624789297021 +795.5916127840519,-300.20907270520274,102.63478132562841 +-280.91371095999307,-748.3953273078973,178.66328989545605 +50.2817035392593,-594.0128816176056,-96.26191069544427 +593.8950080312916,180.85220621578264,-806.1653458660103 +96.04299445827019,405.4765985791737,585.4068115615028 +258.2351572685336,-694.6836709184325,420.34653318032133 +354.6836921630327,-951.1462341187336,-176.50466481951366 +-334.09950607525343,338.8241285072868,-567.7283753781585 +181.743845948517,826.4119236283448,595.6047444172154 +842.9154724330608,957.0119338653799,-978.6597459876745 +245.48255275495512,-174.3212044821871,719.7089806702434 +-496.3705959817366,962.0589782301522,227.4159390874945 +587.0748044576619,-828.8008943544634,-633.08423048227 +516.8073460684063,-956.0269559213527,633.7559717875656 +-972.101962616177,314.23767812254664,-269.8121595363882 +222.98970543839823,392.0628139782275,-315.04956162739165 +-784.0751037783289,-860.7082645034687,177.8720451250956 +41.31070746822297,484.40201824226506,19.471020007874245 +-155.1084199382418,-203.82564352753832,-947.106194804665 +-328.8855966066857,952.0403150489885,747.1111524541775 +-341.24386593156464,175.5908101327443,694.593491070988 +-117.45132649986272,-964.084272499698,-850.9790763627199 +20.78544269741326,938.8787513517566,386.4190844377356 +-858.167617122861,-621.2782484162744,542.6462864337 +682.8795199124895,235.3891723771817,288.84633925963317 +-943.3250992332307,657.060519163017,576.5504163416592 +-481.9297117933057,417.353439931014,-570.2907871500038 +-919.3396778969741,-597.7269148192454,-642.7422464914009 +-324.50400653030556,-163.10100564908385,17.077782995415873 +-46.49224898334364,-458.6507880694213,-941.6586628518511 +210.2032444743013,-208.51034030529127,-402.6556852249006 +733.8820856610246,493.48661559631955,715.5310967448845 +-10.034410575078027,-738.137495746445,392.4428722425448 +-587.8524401256495,-117.5406618165664,-869.998422102223 +650.6168048459649,-748.1187179049989,806.1950140986194 +728.4612045231142,-70.83447112150782,488.7364086079813 +238.89014763630666,606.1512846754897,-136.38979842817594 +571.6169684887,-75.08636586970408,881.9315756855876 +-27.255798349704833,-74.76145613254096,570.1437231270254 +643.155383521676,108.97822864234149,-640.4043730098492 +-64.48353808484103,936.1450058193568,505.97238607837016 +622.3252077582645,-934.3490023615198,-64.28107473168018 +293.24226731511067,660.0653672561493,-901.452692834457 +704.8777712837461,96.80187348382333,-605.3720588478802 +-365.48956710059997,-436.14089649687844,61.71806857695151 +-896.6286401777363,-682.9276830001529,625.3860867515648 +-734.7920185063779,-533.207461083746,-93.25878879168533 +34.24177622666093,527.2209592283173,-105.33514666762449 +579.7292420710776,236.69261409091496,-773.800521152355 +-687.3371232143229,-125.93254910045835,-206.22121382192086 +487.08853927458927,161.47427959470383,-223.7338379955014 +-658.4794330992288,-546.3257953490097,151.00203693811795 +-153.1223902004151,29.85501772134421,-658.6451293955326 +325.81250468913163,705.0774817119341,-484.1209864261988 +-16.971548336346814,951.0546580418036,-333.51651889854475 +190.09268984752248,-819.6085995995113,212.03000495888637 +-820.7364533907642,918.470870647644,431.3253041446228 +576.3195762714129,408.20872154327367,179.45807215293144 +-100.17443782898931,716.7467595221249,913.6713350861262 +-1.927654191837405,863.0700983105239,166.66581997703497 +76.76837379286644,-91.03453408928658,-581.4244769397603 +-992.5606783638816,-516.9875462878774,19.446343207130326 +-240.08009548049495,-103.02954399473242,961.2964391280991 +-299.4552586613448,-95.63412127978427,-732.9688972943609 +-904.0845351260248,550.8190291849892,141.36635014395733 +521.40961208779,-700.2744022268968,143.65754236538191 +-492.71505131724894,-543.8763661999601,-976.9479718940295 +-739.3185528618562,-381.4637770006093,-766.2424788181219 +971.7168808218751,-382.7347029520987,-739.3521065953437 +-601.8353743440846,175.40645668295292,-871.9129522704229 +724.8682602823137,922.9993584742947,-506.50515866523824 +-99.8094628182813,-955.7310979410058,281.4204494544431 +-172.14788389482226,-459.88306779688855,-586.3257787667831 +308.04615531752097,-167.56593793537115,-640.6814219401759 +378.2181629736481,130.1445660733873,717.3441098589924 +-765.0482022470142,571.3332038889123,347.033573634518 +-769.9781263438043,389.6414597434414,-116.90542224033913 +889.9695711116863,-716.7772987642013,285.66678163147594 +-236.0399090741081,913.6293411817555,-340.0502094194471 +924.3718189836004,802.9717022014981,-459.2335293786873 +607.0835536528555,991.2084036070119,-494.6739956574353 +-126.4456613533606,40.36147313351944,-410.13772839227136 +-969.4703207079405,-559.7415116049467,-436.1262313164831 +-112.80059736362568,-657.7950431731963,746.5087133833451 +409.82226546267225,-829.599044880676,300.18490227986285 +307.31295281124085,912.4423472872554,-993.9582572876775 +-504.1351003883856,855.582958750631,864.2678307965662 +441.17283874127475,531.52664209508,-817.0340841407058 +27.751669556467277,-536.8340174220011,-637.5639127727654 +620.606598246665,-729.9237266389051,-62.696726007229586 +877.1564791720662,-628.3358888693149,955.9868474764692 +988.5759715221182,111.23430936480577,-659.7145196456842 +-367.7902241182087,-151.01433464692968,-381.35155128355416 +-438.7288402469685,944.459418432715,-693.2703451685087 +466.65581743372445,-999.1794211216503,192.36533880475372 +831.8860079081048,-424.13181181356197,-628.9480494845616 +303.3595897568539,425.2028145967863,376.06103790396264 +-361.3662399572519,-495.5951956813382,911.8375999240884 +846.5990165398589,-85.36678021435944,692.3877323087468 +-95.35304473140798,-151.2219638549792,-686.4741048014107 +-147.18788701605433,74.83387719961388,-954.9913451426271 +-111.77398964918711,562.7124367904007,360.09211274853965 +270.31397772787,819.110856874405,-963.9359803495399 +114.09517238446824,574.6976968194142,82.67076540253447 +-352.2088948392417,-727.4988698160444,775.1261436323825 +-58.475215224794056,756.2303939714027,171.7042448663367 +348.38423323000166,608.5223087569,318.3110892002687 +-203.8903186421246,27.266767857302057,606.0910493517597 +-252.6994072540316,-223.75708646300586,-808.6197678839977 +829.1688704434955,-817.9273701091165,296.41835489711184 +-173.61104239440465,-188.76121948911532,359.1036731453678 +-865.8125347402425,187.41156590286914,544.0635719447096 +656.4255157731884,-658.9392212124494,794.8381001563473 +312.29218369488444,763.7096016413657,-29.438565779603437 +84.06669019440415,838.0765540573423,799.8190867093435 +-103.67825326199602,-451.1747367286365,-213.6591308714717 +-224.47134294050056,-426.2662500344121,-462.8407913340668 +722.1258729594388,-860.2761586306766,355.2223641991882 +-654.3598970870954,-310.9882132118736,-876.9139317303263 +-460.05272628907585,536.8421422344843,770.0306490945172 +-556.9456961952659,-72.90432148215632,-59.351904125587225 +747.1506115194684,525.5981057516108,26.154436736099797 +341.4944009435467,694.7101078187336,-980.9220919489101 +-194.2199378999028,814.4863345541573,480.62606168790285 +85.68274866814932,59.28905407026696,-304.4598047911245 +41.04106728302895,310.7663989269065,-163.27392314241388 +428.306292784348,722.4644545207716,-690.6303036302777 +-96.90595436515116,-183.9598174298378,374.9296080994561 +-500.2650694841413,280.50182990455255,754.9784834629761 +-163.73680041275463,822.03139995844,986.3274778669568 +-787.8159001040958,-533.8936240302828,900.7595029641864 +916.6553729627735,-804.585449226483,-970.0029992457266 +-677.7999534871556,992.0255667644965,-640.0007667786263 +5.095213444046294,696.8354528610221,-959.1967786235873 +208.97796451691897,-445.9491022607514,724.6698328794632 +-433.0777014718417,373.5114405638178,348.4392648947937 +-557.01290228072,-930.4016002632998,-181.50085242920545 +-421.61369606826065,617.9554992274172,600.7283769106905 +-85.95209561474906,213.0244506464378,208.51903197385036 +654.3162968552467,-149.99517175360495,-449.1066404189819 +-469.9301637189051,72.38455856440828,-101.7035945355749 +-119.7584580301276,-817.7253218205856,437.2074813803913 +-572.5266240361786,-606.0927395825572,-174.48335944521307 +-544.4433167643972,167.71653461603069,-257.07332133105695 +-102.17655481441977,74.33864320805765,-592.9289550363903 +-688.4967542689404,760.8438057472094,-132.55259433715798 +-175.81278073492172,-928.7756994543171,-4.047394825213587 +108.33944322200023,117.68174190933291,414.0623386457687 +-645.0363300179765,-495.55373153876235,621.4609304608255 +894.341233686788,-728.1345052653587,-4.700890989563618 +-571.6474945208263,-879.8536632900351,-348.99332374772916 +-712.6247496315746,419.8661468684925,67.45082734288894 +-712.3310580193782,-981.5168231889712,616.3140980484254 +-647.6111876715049,212.4332844415319,-326.15617384650886 +170.97187663007116,-368.692746035352,-826.1208786154916 +-554.0999828844929,-623.8828670418488,-143.9612951207123 +316.5675668523147,-472.38785010728486,-975.8601293987641 +37.87472852951373,211.51897871794404,925.7409880036193 +178.94160618649357,-57.65488124371632,146.80325179540773 +855.801259724054,656.7562912032924,-354.04253327238405 +-525.4912726857256,-474.73277526785273,8.842079430425997 +488.09890245715565,6.438414365924132,-864.4072083437748 +447.1614008799618,611.9402573419077,-421.00426976056076 +328.2514785667008,-146.81619789121328,778.2387114548856 +690.4511163214797,50.863996619284535,383.011091627189 +766.699402044208,-8.565979843448986,-373.49851902235605 +507.33227581916253,-559.8674904306165,-222.93770398791594 +731.4544742135874,448.8446805386302,-192.37798950500155 +-570.5109951832851,-288.0632183355269,-431.79170154513406 +-647.8214241122921,486.66582713131334,-495.860226299657 +-91.66505966447232,-228.2811063277819,964.1547572712616 +-217.81551170355897,-840.0350344064905,-820.348494855832 +181.50744270612972,198.72710347653128,-162.4820190346901 +-136.3126153759406,-892.1348343182576,33.09302077852453 +9.478950760703356,-700.901362886111,-792.3212277781448 +-752.855018801019,-797.943507017483,219.41639107351966 +-607.0346951941627,-497.1396956250731,-652.8557116971206 +915.6706088970061,709.2349263036708,-539.0103252969582 +-344.86741215574796,-580.2143153900056,-16.24808107835247 +-960.7789350514928,342.7360177935914,46.31629963528326 +797.2778566022066,-671.2146313431717,608.2184921222633 +583.9220289334314,-745.6376215662261,-202.8815517117448 +-659.6947177109662,-490.5589990849022,-473.5076503389113 +112.47278805154542,-177.17813647906894,895.4656080126106 +-747.2597161059897,947.3842697003977,-538.7227195714721 +545.7478727637063,-322.06014765435725,-713.8372091653722 +715.7783704924798,-382.27820152707363,317.7108084536844 +132.8873701732532,-56.48738121825136,-8.36105470292182 +464.4758281845752,-824.4541717531189,336.3613239158103 +791.6242027971573,-884.4236059602717,-718.6933215326665 +433.2638734040629,-125.4367035107648,-192.90275837262323 +-726.0667309115283,13.540081435576212,-746.9093776072455 +-46.75908737891916,527.2305979233133,-483.471284225673 +-38.42766364054535,984.0319387936713,373.30084670807446 +682.7135426103971,-170.30478687890854,535.7218462517105 +-918.9816541173564,-754.17763491551,-593.8588141598757 +-196.09615076956084,691.4897566515262,-307.467898424139 +309.2423870309258,418.6285896069669,172.36470817668283 +-285.5160636597276,154.10668342708846,-315.46881442050756 +-832.2525228959759,985.6079563720289,-745.6350927349782 +-855.3032323278853,757.0614984143117,-396.3306782142098 +300.5939481470152,-341.9885406755343,-217.09145841105772 +-475.774055966407,-313.91198841397966,-178.59919882691372 +440.83213818468585,23.072388469583643,887.1304343139539 +-916.239212322449,6.136645264056369,168.44957766343623 +840.3939721485478,-901.6829527571448,146.99916987043207 +707.2598570559142,-516.1445437615268,752.5846970478749 +-961.9131814514163,464.90925826745934,866.226442337306 +314.39532328012433,-121.94151203910405,-910.2379670545639 +840.2276266452575,-59.40755461685046,-942.006511328104 +379.6421426575239,-36.3254928474837,-751.3093651151785 +-571.4563813794808,-871.0186390883075,148.58707941714715 +244.0589585040184,11.484596710888695,634.2042660052298 +722.0176426160272,231.24879336625327,-974.4870405851389 +390.4593114954714,-164.00156615929689,131.11496645277407 +298.1612040377688,-299.52677134584644,834.1970103435885 +-732.0502665004376,343.02361456207495,-991.2808400868391 +849.3022108103617,-774.991733523817,-810.2315397048508 +-333.98473389551157,-252.86742792183884,-571.3998553542427 +170.24332185424942,-114.1718039160728,-931.6488219178252 +-360.69587548939876,620.865827146341,379.4030697237372 +449.74170715976084,396.2338481670472,-378.0539572339334 +-800.6721558464483,-455.06563193380805,663.5706003703185 +960.9415955661423,-12.305970516877323,-980.5992901539156 +-719.910375731542,-355.83884936746847,157.1706971858996 +-849.8127083893721,886.7145974197633,-269.83265343119854 +825.1684358496461,561.0436055140435,510.87454503116214 +213.43915956446403,253.56763410368922,276.00647043249637 +257.4427740511642,107.45646279672246,972.8280369657778 +464.5811348513921,553.8927767850423,744.9256301673483 +-568.7204745483016,-832.3916818098785,-34.21112680280271 +28.16139123854623,658.3635598998353,-112.43284143532856 +141.70605108862537,54.141877026916745,-923.5944324852179 +230.4297931938279,656.0865715485045,-684.9989038483923 +188.6634678531916,187.22108889282867,-671.6300718872825 +-753.072852538528,960.1038859529697,-212.56166069392486 +-545.1565425529415,-657.35091109125,335.2034271664702 +218.89059465455762,287.10424597483507,-823.9879449770955 +787.069166996874,-221.46720638190345,-373.2611871392842 +-75.27710550452161,-219.86786850474346,727.1540062782917 +858.5219503957842,-393.0935671007876,727.8716149199097 +563.0462590661343,861.6153446895237,-508.49937562822436 +153.91830024195815,-450.91083051911073,648.1889809687484 +-989.3516188578715,129.6383257727923,-321.5931374561641 +-354.6325858443595,289.812647729834,702.9688986279878 +218.39078278665238,706.345957293445,-470.8057762379401 +39.00370952996218,-98.92692186584793,-976.7102009938076 +113.62428628148018,323.04864829234975,183.82880883814005 +472.5597975668429,142.6790569061543,-866.4994902984862 +-767.1089518305771,192.94915508790473,-450.04161605271963 +-840.7097419304683,-140.79451310290642,108.64519616731081 +-342.50802330078693,440.867404451556,287.5412162024893 +-334.36327781665614,509.7450578171213,297.3900850660709 +274.89075743580406,106.85540157413607,-977.2206638228944 +393.01436695377834,-247.91641778168707,885.2194203173112 +635.9695421544106,175.38893906262433,-495.63603636146115 +-592.5652134446668,-319.23032464490177,-46.8641128399629 +-407.86897992210584,29.8589907849655,-669.2591489736282 +955.4256256509998,-784.1508900700122,863.8882793087441 +827.1560228053897,50.720963638995954,449.8205436721687 +-127.90340405482436,260.06915508487646,-318.84812515776264 +-397.68196042910927,156.45957233902732,-3.7406516320393166 +159.0727382999621,-426.67883742595404,-266.08433636600944 +-832.2040787421814,-895.4472554555886,-493.0857406539675 +-851.5062813389085,-792.4505827305186,625.8568107878741 +-922.2526059666214,317.88558786948556,-454.884502369199 +743.0913614162528,-30.01543084500088,-388.84708134434857 +35.27787137886912,-236.08396190946235,128.60212933966045 +-770.9342633473035,993.9810056251022,-148.88824460656497 +-303.5387205852627,420.41969663252985,-272.20118700933506 +666.5486100575154,-91.45855127914945,439.11682653086973 +-785.093567116227,692.2383711102236,471.4359735562198 +-576.5664430760687,-709.4279805084267,-367.41530254875124 +952.1411720638087,-486.33685086588275,-87.74558210673342 +-939.9595485653274,-205.54494086753493,142.6400308662055 +906.2492250159303,33.472089880128806,638.2146523553756 +94.25528513780114,-918.4299731289638,-369.9834496204519 +151.0990156622065,901.1879318622487,718.2607195024666 +-543.2887716423047,-559.780339961673,-597.6540657721985 +844.9977926050062,705.3323062034412,549.7668645058975 +-214.52977155154485,8.76140859753366,-71.33651040969437 +-493.2037848812547,10.05609229753395,-939.006904294491 +-736.3792530050816,773.1791923378928,503.3595340628465 +-154.26318188182586,34.300724567754514,-260.00222808004514 +481.5597343213449,568.3743584641593,526.5703804063182 +445.2234496688991,-590.9913226144083,-324.06004151904244 +-60.30913003265016,-338.4140171446887,509.88040031665787 +-341.2929515000907,-723.5358264293257,-201.91909590339185 +959.8288655647607,-548.2371741328482,224.3173178864581 +-134.05390032058745,-857.9508647013467,-24.24678800388108 +404.3286572966249,26.439951655637515,744.2121274931621 +-422.1259666848347,-827.5016573920701,873.1312233160122 +-243.607300943562,152.8111029072668,584.0062522603919 +-351.37267224883885,432.32907635522224,-729.162300364344 +-417.41250558898946,-710.5787277269601,622.4611168027157 +-554.7015295464292,434.80711081042045,886.5967944913052 +55.544418137754064,80.05838452137527,-77.93286380437587 +-348.2197132127145,-48.689938150165744,205.61506453351876 +971.9831443413186,875.5291186364484,724.3059165862435 +778.2610714097166,-64.30163341591413,314.8886543549297 +790.1334458724282,-214.09847001729383,923.5249566909376 +-168.427875861634,202.16533078643124,419.6094265447439 +901.1840261518767,-510.7674518954679,492.26195647728446 +41.63117228816441,-462.88571875871787,553.2136795927811 +104.44456034769314,321.9476412993515,-354.19786284419797 +-37.45209634478999,234.70850197613413,-190.17837146031206 +-603.2549203045974,923.2809846306081,22.93508008523486 +467.840740575401,-177.90561288788376,-289.7364719485673 +-185.67140306575004,-181.60671242870046,88.36023188390709 +86.93973996272621,-5.692368234256719,-730.4284301651238 +-7.849042998937762,-661.792199158697,-747.7284274084697 +865.2914346823354,209.90002629540845,318.98011624916853 +-196.41265933327247,817.9617838297283,275.860979159331 +538.3397390471748,-262.8750619445723,920.023761638251 +640.92258031663,707.8969260290874,-655.6114651484914 +-458.0735842575609,-428.74680063284586,-458.1815535062576 +710.8163242085759,-936.2304095828158,-847.8000220384514 +-452.1702587401926,-600.2540507011126,-536.2807722343032 +595.8863785066001,126.25318778409383,-988.458677414064 +-141.35446859160947,-184.23014629928218,-772.1094611109129 +352.28357720291433,404.1943767589821,441.78643810419544 +456.941891117184,-999.8943461354064,907.8416076934443 +628.4175341093262,807.9633931785706,-968.7134093851317 +867.7175915714788,619.5770573762095,674.4382859173973 +-813.425230556063,477.55605783719534,919.833379284182 +357.0946828363212,141.12280924921288,891.259355497994 +-114.12575653112799,198.5871326209574,-47.32341301126769 +865.6924427205984,-847.8305464689855,2.2394016506963226 +373.9048827708766,583.8130768444737,166.03729488827275 +817.835488242908,883.9828937677435,-871.361553612833 +-195.25892091725132,-953.0819565576911,-341.16668525111413 +73.73643594120426,821.5898610198976,693.1086449308057 +-745.0005466560285,-813.9392505182086,178.53467751333415 +64.23594491756535,-467.2447171399523,798.9061691076704 +854.7328189231068,-194.77712331967473,780.6051142270405 +-232.1022114740548,473.6336636594003,-48.11556490455166 +-754.833686985634,855.868402474043,-91.80681324492684 +468.9740806448074,-265.6523711374157,-962.2382428475307 +-798.9392826163282,-7.561041020151151,379.92871425272483 +-330.5293468414419,390.97691835530077,397.27117886391216 +407.87181465566164,-14.956291958983229,829.772300243008 +-21.606964038768865,-99.46961300672365,-601.2383619787461 +-384.6898252873269,-915.3310149633933,267.07058723234036 +-502.92851214581424,-391.6894910290698,541.6290433286424 +-345.5576336770922,-515.6082159737157,-661.8845017325884 +549.7168043639117,-740.5874840199463,-92.49247949929293 +13.860232154388768,374.77982537142907,266.566964665991 +621.4413458903496,-910.4971321475236,-407.11855044120557 +-439.7317624492405,-707.9661888157835,-421.64349228711376 +-380.46937171419313,43.76892385495648,327.40895785251223 +-237.7989727763719,438.9404626267624,-327.6693228408401 +-419.43264537047935,82.37611171404865,-952.5672793884188 +-840.4217527319993,-164.06091282694592,885.825422783513 +443.0235596868472,-823.7468609988845,692.6360255617474 +464.60154121636197,221.89305140530632,640.5859212183548 +-191.78030451408574,-556.9978982922945,24.04677821751875 +97.68351118694773,76.65274401982424,130.14758296021046 +897.4098364783615,804.4912461924628,751.4340731178788 +602.8336218172542,886.8562145305707,-803.0107166411935 +-469.753477108521,-9.888108690830222,693.0689862468105 +10.33142304546493,496.0694786831775,-722.0801895021675 +-495.1723740468796,463.5521900753447,-670.5319822245519 +-297.28813069014643,-470.2674843728571,-300.276611555043 +416.6480981559407,-264.305637714398,110.52664521588031 +-800.1362458911807,610.0353864692556,-260.2227487037503 +297.0683180666849,450.77920332366534,-580.6781557765992 +769.3499699066999,232.44850321390595,-142.54971649703702 +-635.329632843561,884.6018758024134,510.13640826325013 +-583.9508745335022,-324.578450551551,619.3485161761464 +391.3553264306779,531.5685854314486,-117.59779557413515 +432.9525252843339,-227.01255427217257,-577.4741661236071 +265.3540696827199,952.0278511975885,-378.79805720934075 +-78.06081557492075,348.00274213970715,83.01256424497569 +686.8555914180986,523.4854129390319,-883.4055922752859 +996.842467847548,504.8049074389344,727.8066325882264 +302.39542419069267,712.5702560935244,-775.2340501425812 +-304.5243288813688,752.8418872089856,-596.6895774662155 +-843.5158028399545,576.2378798904379,670.9723112865925 +-674.6955636201988,708.6919655654308,373.5355911943393 +40.16536643316772,660.5003855627701,-161.50150136206844 +-612.0120875532056,-430.29464677877274,10.32803658662965 +62.66158534635156,611.1616528824673,582.705447304669 +162.73311440914972,561.5709667309527,-616.4530834126581 +-899.8709458134113,747.2676452694002,-848.8910124744609 +-506.6231405120054,390.63789924876914,-181.10412474538168 +752.6279398310176,-404.040410675461,-976.2573066612814 +-398.68871887851174,156.15009836966328,-248.12324919341336 +69.74551151751052,753.1962376700374,824.970108460737 +-468.0518706917758,-75.71905346019855,98.28803048290229 +898.2249137764941,997.2346383287693,-529.1855023169467 +453.95974269163094,-243.9378755336097,-983.7836062275735 +-981.4949551281953,-78.86798487548856,-23.330173991330753 +-954.8606068531146,373.85483354860503,-411.9932228100938 +119.78620307189885,-398.1618536691625,-665.7313702613856 +-185.65252280224945,-535.4532704189985,69.60195383833616 +-602.3429394270402,16.81195328925412,-685.2429702622649 +341.9494189715699,507.8753688828481,-779.2115315001324 +-64.39517592532161,-858.2565986902529,196.36489108400474 +-471.1914041407092,55.24891367741566,34.92201876858235 +848.7086923876009,98.16644513744586,165.9969594366312 +-196.69374847123947,898.1592063656335,554.3718188792193 +-429.18941939431693,688.4191715524641,-135.20727962982005 +657.3342870671879,645.776136587004,-622.2596264742913 +402.28226276715395,-418.71406138693783,-405.0146600146636 +-407.30384623883856,451.1364951198964,-540.3479164149278 +-998.1883295078195,430.4737069652663,-657.6305123297494 +-791.0352093843308,-524.9677588118798,-240.19895535459204 +-48.18734505359862,-910.8599185747383,941.1466652547208 +432.1261068391161,-353.61186935132775,-362.6054854292054 +-102.91490126308122,252.48964552606594,-707.2538668220645 +-622.1403724700954,718.8691656671017,-487.4901522218548 +-239.61000404964489,742.543701900234,326.295658799645 +-316.5762413166233,367.3990914492415,-960.6335692371725 +471.2853200227305,-25.967918967521086,626.3642945689226 +909.2753040129367,851.5770989891366,818.5300869106816 +24.33991186777439,-279.7157717221239,-69.92935053865449 +379.79200662672156,767.9955537423734,-586.0273939997609 +836.386316923406,630.3604639397781,957.7120303564693 +760.5035465633744,-440.1253406161867,-788.0881773119046 +-775.5178560168227,-417.55336284344776,228.3674479690785 +608.640652194345,798.5006139631294,247.50676873846555 +-988.7373745038925,-627.366446962933,-800.5475922932641 +-273.35104886197996,2.701987267491859,-913.2056428428783 +-303.0440484086894,-641.6406507493548,294.14033251774777 +-71.45526135132002,-9.364706132182391,-144.61642393307784 +912.0394209731339,-570.5297497568736,33.32851968774867 +472.03473673067197,113.68882626912523,858.0417714336022 +-244.06328871743165,-72.64838845364397,-822.9553695705431 +217.99822210385696,-423.5760631037879,-679.3819209688622 +89.06258580901613,64.62052675982113,-848.2567175519049 +396.4309069889455,247.5443813017057,-621.9654345070055 +-61.13027569191229,440.64583295711986,58.87148108255292 +-209.0218476328596,-355.3230838381128,220.78773328810712 +878.2173966204812,343.48968095496684,-850.508192727369 +-78.63005303573243,781.6482630212552,-811.0751483978263 +977.7514242750867,898.1387872908426,-843.4510385402483 +866.8266408991099,-273.73481948107553,689.418334151725 +-163.2333245734569,-118.28977459496821,268.48618195508516 +548.9548385519668,-932.4216981035028,186.31199105426845 +-626.534011805258,-308.1009642735942,-304.062667689567 +-61.879319557692725,-331.72717624765323,-785.2777630986645 +-708.7425229490971,-933.1240288778047,-59.50182934249142 +908.8953897059771,-768.6495527037669,892.5289860061641 +466.723029464187,274.99760586832645,290.55551064712586 +653.4552967925642,-786.1602712403572,9.508647131083421 +394.182276521517,173.64089014712727,665.5581420465892 +-855.456581977297,381.40207899833194,68.05546076943551 +-241.67827204011314,-319.4500355319383,241.66526554838583 +781.9907492885297,-7.648147797769411,649.4463281538403 +-195.687236312065,-795.2110744136469,-876.9885270827228 +-897.3312573526448,-239.69971608466017,-325.5244983283159 +435.8740472451391,485.6430031697316,-898.2920623325203 +-557.75347422197,-451.47629968220065,95.22396828561887 +-710.9695521860995,-732.1175611999993,887.5777784159161 +608.4058145955619,-638.6901958176594,-186.8643841890181 +-288.7560014848689,582.0081481308146,20.425832956244108 +-744.300526013066,477.98412631248766,-206.22404355016215 +-474.1515047357059,-249.00275595855965,-4.4868727862073 +-313.76896716598117,-516.1884548164844,-202.9959423920393 +-961.6541785002036,544.9956921926278,-658.1102128648283 +-912.1907727387255,307.3973858101583,547.8722576473444 +627.6582631856863,-12.981634678800106,-589.2636306200294 +474.45535449965337,399.4261543086743,-507.45853179365355 +806.815511725586,-791.257083834342,965.3764791826513 +720.4956219549292,375.79729095815037,877.4997765596656 +444.6223366474155,-619.0860059399081,-115.68772377437654 +-856.9939513367293,-220.68515542376917,483.20603947441737 +-227.11329813836528,-339.41164906373183,190.71144502062384 +744.4090579977901,-904.8336149077752,-229.05913060052922 +-683.5185163694746,390.70850146373937,-788.5508791377302 +329.61551716048916,-427.6382584041853,-602.1663725255506 +872.7051156499708,-962.9508465080883,-124.44545622086207 +-956.7460150764124,-32.813903791342,2.0947555888363922 +-356.675057210506,-735.6764449499526,-247.2249245310494 +344.5258798651321,564.7916172889181,61.50120477628457 +179.6687888795111,-598.7672577506946,-425.33933354470105 +-676.2087798952832,-501.4092999907773,-550.2264395489365 +38.89757278247521,125.37751158145875,889.8948416430089 +-608.8587057969539,283.35142032299177,634.5185379750458 +120.48292756610499,-489.9926949978486,-474.8995399599995 +-921.4938938580002,-389.1115469030366,489.20735800676016 +-904.9644855857792,-561.4094349903387,412.46499706356394 +565.3031256457532,-89.36317987614314,396.14867695729777 +-224.09566269021593,-680.173509951745,-203.70101295418692 +159.93564040628576,896.1065637057807,-862.4980958226454 +14.788187689921187,-342.1604435785513,16.623388553389077 +-952.0491052469366,-373.9492905968374,639.73629505401 +107.88346770927501,-98.83501436776521,-428.9498565693208 +-403.9149544172882,-233.79713281883107,671.1414199291207 +934.4264136165368,-122.68923729925098,-213.29432250447633 +693.1015516397256,-146.1893587273928,104.0363445913024 +-538.1166708025112,487.00507155815035,63.97663654156372 +618.0691004806833,561.4654600573394,-569.9904634599429 +431.27110111552474,600.1088159027429,-307.78551843520984 +-654.7817741954509,-994.7356888408236,-98.19269381370361 +-295.1345369223168,109.81966765081779,-623.9178148224285 +719.3310953329503,-484.48956874378064,-547.1407898247 +-38.571887031288156,-2.2979525114515127,-569.8295424298143 +-456.2785465481685,-660.5895216895101,436.92035664633363 +540.1780625081637,-75.34300508143474,428.17404537003495 +471.870783874891,-723.4489446443829,932.3560496690734 +642.0638941928621,-591.033077608353,-627.6699285078596 +-748.6777088408345,-723.2428749161633,496.32359805739225 +-60.6914860967529,565.8683454797344,492.5097887004108 +209.22542701044313,372.73321315735916,-963.2885512417164 +-376.4447063899561,275.64435851882035,-981.3100930275116 +-934.0461126348132,703.7759649407665,368.0497233841436 +-469.2605337593121,375.92568023741796,584.9133382785265 +-386.41143377979745,-927.9252450016251,865.5582493754689 +-309.64032340873905,-787.0364734305872,-16.2862572137052 +536.9355913282677,-556.7053707648818,-461.0198997332733 +-514.5700264028337,983.3461056633564,-605.192532538915 +151.04043393224788,850.5292833139285,-706.2068622444415 +941.7083957354005,894.9544687912492,769.1439741165252 +-570.8869573399954,268.11011202196664,521.7829459224804 +972.0558563928594,-639.1523558372592,532.0517990385929 +-322.3976601457741,-648.7470688639953,-157.24611757229013 +587.6718242972327,-70.30039259189573,75.04620040609689 +990.3188204002424,-201.78140088514795,230.80150941847955 +-269.51159676925624,-214.4287073425901,391.2815068908162 +875.773952189767,84.71790098464271,536.7998578975596 +-821.5868823660724,-577.6839251361461,4.263281839064916 +-959.9765527424504,-494.2900424748824,34.80257964993234 +-970.0776034873986,-470.90742754791654,28.06163895173904 +146.29849596249142,851.503386110611,290.6912465012158 +-170.5283949400125,860.7023542661357,569.7659667755886 +-599.9821577745048,-738.3152773023605,351.6232714854659 +119.76633115396771,579.3472275855113,477.6101001573729 +250.42306771503013,972.7643432577843,67.17946022081742 +-773.7884869965603,656.5471296319768,-496.29327530858205 +554.6042962878366,914.2141920001027,393.5910279286825 +192.0603218996023,-79.22764864991882,-271.18026800919347 +-293.9904980563275,272.7454114191812,502.5462338754919 +357.03413896882876,-603.1797976128746,-12.025639713017654 +583.280144366126,-48.591843621887506,73.24655947098768 +542.2720963416443,322.5306125301829,-181.31015823521477 +790.8254223884378,-674.8658626730428,991.0328971806496 +-762.2948430475255,-970.1000577915222,780.0378022975294 +-510.09298326808783,459.3992548934418,622.0307498641387 +717.9727820642336,983.1884713283334,-411.92057992000184 +420.48668385451833,-769.2002834383436,-186.38141728630114 +695.9433866251807,-264.6839078817833,182.19076107122805 +7.54688744926807,291.90306222409004,945.7887787753898 +-888.5289469971958,147.92303500325943,726.0575585005695 +-37.234576503145036,-842.9456281168543,121.07870483354168 +-335.85221835235916,-690.1164293241281,698.0690265669459 +43.199025982243256,866.5528247581333,612.0330092061381 +385.9435875473348,-989.9489932693762,-144.35308672350016 +-605.0274366959354,821.5958220977354,-650.8320306472795 +-427.87989668142905,33.67353546899835,-473.27276200384154 +-580.2706454417577,198.19865020550492,-822.1409544899523 +-883.6644825581506,-255.50940962785717,441.32890901572455 +109.61351654789587,-154.24706306644237,131.5031284491647 +-269.0970306934528,872.2926708642258,-890.1902181784513 +346.78295805967036,782.565329655501,607.7694174705068 +-631.9179303571066,-408.14730203942327,434.0958774142093 +-831.4588816384689,623.723399665168,437.81388920958057 +459.21329847068523,-799.5172594648172,435.5210896324618 +359.6362504399399,661.8449816437012,-916.808087487061 +-953.7786630644156,-253.98580024287855,-702.4234323016942 +116.76895514044372,834.6978030134978,-217.0405393319685 +689.9007545452082,-999.518250964267,-662.9707130816316 +-939.1529206918287,-343.7056389698628,816.3791913930056 +-806.0957528020244,212.81955348760084,-97.00812176111162 +876.9364247316248,-754.9617149258123,-575.9442989955421 +-940.9160627770134,-132.12950073725244,-444.33420087069146 +739.8118677806417,209.88162639551,228.1814759514034 +63.821393762604885,-816.299325541598,-109.96263254928954 +999.0103794170332,670.4585816920296,786.9181083342319 +646.4527184929989,-793.9166131380346,-545.1034918704008 +-993.7566972871807,-392.97975024377706,-782.7851953070149 +-54.41330939683394,354.25497714780386,749.0105900761541 +498.43433018179644,877.1711915570104,-892.2034192124224 +-975.6403291669171,322.6762276724253,-421.2951795555075 +-492.9979677884537,-338.22582461241143,-460.4078842152717 +22.872812603174566,-119.703105551735,24.857102753312574 +345.42722300087235,-225.73898205770342,-497.3846257156864 +-667.598926382509,-301.0517609347489,483.612950492344 +513.4098202229391,333.81077336842054,-531.9436493862509 +176.17249170939544,141.37932315369585,-31.467603780548984 +99.9579727677285,-16.41873475266391,130.9127321482165 +431.0119092422576,-780.7436111931205,499.2515042980474 +-728.2276997448116,-866.7440031792506,952.1593724429351 +913.9835377408829,-879.1269101188719,-113.49311705007574 +-627.5101234004505,-29.31020573116382,660.3544859991748 +901.2235494857805,268.5053069030748,-292.1886655763659 +206.65113128919666,-375.99738778309927,819.6472816641208 +740.8009262116739,116.46350055932203,-350.4021692392789 +-413.22064883404335,-933.1640105898811,631.6417020505905 +-99.23357392198409,-349.7341431994712,-57.77929000449217 +637.4759809093041,-750.7715845849576,715.3119764836547 +795.017670216708,893.4158300677764,-205.02401515474446 +-565.7191919246562,-252.71836306660305,-334.17580753719346 +-647.6921749942799,214.53334020297598,-46.75167898274219 +731.4019846480073,-935.7808390358834,287.7358551102527 +525.8977570231223,518.9731383766141,772.1479341910501 +458.06748565898806,855.6201232953927,-334.68680035821706 +6.418833503086148,-971.8406734342186,-986.0848253934175 +-519.7467590969602,-798.3856057218295,-479.57726412849274 +-645.9134109432052,-942.9599503227035,818.6082928120989 +-983.5537372222169,472.16428867417085,-695.704226160967 +824.4592439992,785.5918791797715,307.8022927385148 +344.4682996012102,-989.3217160606229,969.7431322272041 +755.6652071516287,790.212451460184,318.4890741017439 +-310.4261426909269,787.2972981809617,-416.9661436976153 +125.42308668440569,-800.5380553122352,843.9112602655002 +-718.4590844575733,-550.2063885391855,116.2683162564299 +528.1860004259631,238.7026118725978,-535.7321743996877 +-998.1139149450194,514.3011606148784,970.4146518221874 +619.8262406121808,-79.58676368676936,807.5345227982132 +-180.30465376329994,49.86816848693502,-45.74046520863351 +-104.75225466895006,550.3815385878115,53.537814538984094 +-366.5657559495679,-483.6836646830434,-924.5053660651332 +166.39032376609202,-540.0771691979317,-703.7321559672339 +307.65992765535543,362.41851564309763,504.309784515332 +7.153792677182992,788.1092104077732,872.6855067964557 +614.7418795849787,271.18696401637453,-392.55809281762265 +965.8898432404424,-451.7276656161233,-594.6861560191378 +-115.69177242683452,-886.3188585752231,956.9889293435815 +176.86711283284967,113.90418332835043,311.59255979943987 +-5.952704445586733,-935.8729658109169,224.62257768079348 +432.3477539128612,-166.50187875189374,514.5911441423859 +-545.9974013231588,-557.4468178676319,-677.1660246248521 +-256.01048042167633,694.024070778167,655.8241242981287 +-234.3515840729924,178.23747196047316,441.6326329498313 +-517.5864507439541,-663.7178282105058,944.191986424622 +235.11462641923708,962.8314436673277,-324.4880257355418 +406.06339994826294,-554.7927269175245,-477.59965745217414 +23.80424253924798,-360.76374898385757,-664.756872318831 +-474.23859602134803,-928.5032110682707,408.8472429549731 +-15.766685828276763,-811.5138671909488,-656.6120137430175 +-794.930923774712,225.1856165517529,-811.5792727750124 +508.56466607043217,-958.9781613592177,-501.2484240082158 +781.3333517838144,437.06263624449207,-854.0633341486246 +642.2522089703596,-13.929756919590432,693.5660543376584 +201.47954890078677,363.66606406571736,987.0031207914162 +-535.3289081519637,247.8911495227767,-79.35721988520322 +-921.0960941546172,-971.05871699427,-761.5428443642827 +298.1834810770963,134.3261758267845,106.85912232745477 +-936.2864749434798,-61.394007279985885,849.2456356850571 +-204.81626137870683,249.84493957691257,559.6373512462872 +567.8505582837752,38.560164790542785,715.9038908046728 +-217.24381327250603,777.3864295695967,-519.5456672089094 +-439.5671860188579,-893.7587516019978,591.1636730845657 +-165.88952753458886,-541.7667721772019,-536.4194447668407 +802.7998824584663,667.8332009220737,107.06177071436673 +232.22160083144217,-51.34885889941802,-216.6669142423823 +830.953762436663,-748.7745929593958,-163.1064205675441 +-310.87618402424937,-3.698559497703286,-84.73625090964993 +37.77906330216274,-720.1620455460118,26.28300302655407 +-515.1623722255783,-631.3373020236174,-870.3315624276175 +525.3051175122819,-145.11615828688002,253.28736662351662 +455.18668660948674,358.63333062710694,-58.99856182063547 +-224.20294209654037,-248.08018071867252,280.09759386011274 +-10.411290116253213,698.2644959770212,749.4039686534243 +-658.879243986963,-727.5326969085487,260.80185207199906 +-397.54850387544116,-962.8585624698023,777.2853387259102 +-546.1984655123836,858.5613033716181,434.8689017565073 +525.3069798229685,-597.0770084136791,-531.6111487663742 +42.53550764813144,-655.8002947002757,-389.13661463393544 +-357.07504410439105,-680.7401334944718,-589.6343332096785 +577.1036840165132,-665.6082909054633,-943.085216312155 +258.70988525787675,951.9662387849,-337.57237075375724 +-762.6885936074955,140.77465073506164,812.7084221912924 +568.1235596569577,245.03173682543206,-369.8870067848012 +83.76034655243984,-817.5103173914893,357.8908485613399 +450.19203779530176,930.0632458198377,-479.2052825098567 +-963.0871619139547,91.21692885430116,413.5810087936288 +580.814951765976,-612.5221339503788,-476.4942619259526 +25.18185053459274,-338.79838005999625,721.02297317489 +-52.4796925225595,599.1572882040059,161.23952096470748 +546.1802832342239,-334.6540269393523,662.8332438606224 +-450.85536889795685,92.19761600658171,-571.9857736522515 +-48.946956747613285,-363.64958098259365,-466.5931387255715 +933.9700360560751,-679.8517890265388,574.6516749147904 +968.3299189664299,-960.1970325198444,398.0548280841899 +-494.1763888874258,-919.0243513433911,-194.22084208673834 +870.4356203417501,-976.4698112660046,175.77138385956346 +2.7929571906486217,746.768328742095,-831.9965709587486 +363.0520597733007,360.2193968665547,338.1600337245666 +884.668989870074,646.1750580137609,-916.0545475129879 +-57.83429859097362,-204.09388759733304,-379.70555781839585 +-97.32654969180544,-231.61163014804504,-135.3322002426694 +958.5237312172849,-822.7340505008385,844.4617396774597 +-39.52657305794662,247.48449099908225,660.3659332353877 +-279.07394170148893,-139.15618382406626,-180.96303944257204 +-250.5379549284803,851.0586432937898,657.8597823860241 +-782.0000202740478,-783.7532950458079,-144.26097029401762 +-802.6852465343819,238.18619054223927,-712.6167854765322 +44.74652793360201,-985.5601059925644,-366.8073031747066 +354.3814473453108,-31.922119544303087,956.5389719979762 +748.2075921324215,-281.85844191369756,-909.0269170554508 +691.2526002300376,822.4686206293427,641.2547868380736 +-744.1001181604703,995.8302688245756,-482.8315568944523 +448.40982561674014,816.0697526714432,-528.6257713385811 +816.5171093541321,-381.03684161026604,952.8264447681122 +-437.4799592390508,906.8716495156702,-892.9106982146502 +418.54402333962594,64.2222676740073,-44.245845754538664 +-553.01137148832,411.19157955298397,-618.3810171073858 +105.68359196953656,-493.5092739194984,911.2427595627121 +-942.7376123286944,-600.5434397775268,-515.3787872251046 +-171.86434846436714,-534.5395162598929,-17.301819462429535 +744.9310465170779,424.12684281834163,159.92396107022205 +-821.9936440346407,387.9842167785512,-667.1714313781204 +572.734771923396,-499.8864829796936,-165.90254335819816 +-299.0595953641441,717.6278293497137,-746.9110825731838 +131.28976476957723,-715.8767811138755,409.5916722643733 +810.1562555889623,-130.78469226549316,-23.815479470048217 +854.8456729655245,41.982777298714154,-24.803123900878177 +156.6582054086084,378.4594727259039,-786.2332498259373 +642.2210554830322,-128.98994509348154,-855.3029802050289 +572.3653383964263,-246.10005662745584,-799.2650098098921 +267.55807908650104,760.2627068672834,775.5070188279726 +915.3269496179464,735.410919533376,-995.7181613090496 +-239.5176671732196,637.0851598110062,-267.4939880030515 +203.09701275941234,212.63389474906398,-269.9493919223539 +808.9478545625752,6.45669077223522,-70.43158812499837 +995.0274913237918,-12.999271854766675,-643.2034961428378 +26.13884572687607,628.0334710398602,553.7206537965628 +577.163530216942,416.04756799582356,-491.5643418666236 +724.1681716804628,786.8869307525301,-611.6946067629019 +-739.0887268972122,951.2099371782242,736.6479273007358 +786.4722944198934,772.7527692487904,83.37364806745677 +292.80347333159943,90.72570426728339,-897.5873016193418 +491.0061707055454,10.664066671760565,295.4181495804596 +5.279609951070597,-16.37735535508807,-656.4217810444663 +-442.5725697177021,-682.2946161120884,-608.6674087493152 +945.9547608406099,-693.7731084556032,-461.4591513895847 +181.1793154771699,220.3571524732838,-692.0517405123419 +587.4348515704246,570.40573582565,-525.3645915922178 +-422.66739464907914,875.975730918994,651.3428919589562 +395.5940661250477,-835.533556978799,-163.4718381948486 +118.60374415365413,-625.1774240324462,-103.54683578355093 +202.05175497737991,-345.2466397692016,561.8896379009743 +680.8991632776108,-352.78106113185845,677.3143089849143 +-792.84686779397,675.4581972453127,-694.4991366647669 +-834.1456949805479,283.55080888202247,-56.12526848941138 +815.7812008256656,-273.6216078183015,-425.69547312474265 +1.4698122883967244,-88.10762846267744,-311.1439075656235 +387.4825973966572,519.1236678278167,705.9679380602734 +945.7132094206856,-466.687615734991,432.186964979923 +-211.48352900850955,354.16394390221626,-48.03661930155931 +987.5462055358632,457.80427158149973,904.9826008686491 +669.9390989623714,805.8020223267422,628.8383944293498 +-81.68173924817722,-496.42309330623124,-259.35964909895563 +-959.5275347200991,47.98633492933436,10.115600540817354 +50.50092966097645,948.0624499441276,822.9080069096785 +-676.574443339784,-262.23495688822163,-152.08764107347622 +-278.93416429670447,596.9919272078262,48.075339735173884 +144.1996339432501,706.0271179758511,611.8563068307171 +-735.5769543594006,427.82916816726856,-129.12774219592893 +-410.702193874999,-899.9623581956273,-25.50087930909808 +-289.1266385509373,-496.9739206471984,389.3434591939151 +538.970774631174,-510.4209619411504,-901.1051266413054 +697.5054011304701,-980.0805175913933,874.2249878429441 +255.23974796541188,-356.30672959735944,-507.0441808465276 +-981.9886714710495,-529.0571659782456,-724.5433969657178 +224.33244144629134,-666.9088228123974,57.25967507323867 +180.23284468894167,-403.91660330617094,-929.8701019625626 +-925.4922387716078,-947.3053356121648,478.2493342730925 +-363.98059037140376,592.6003719353273,-136.5343523143017 +-94.00379834007231,25.765205019147515,426.0629127502077 +-452.9942683405859,-756.8253009329462,112.1146703829229 +-346.0447535145215,-115.01737266392524,293.89341667461076 +-11.748517717458753,240.5576342016857,88.40000422725575 +479.5927438721983,411.87323542324,68.37978361723845 +357.80604171941377,747.1192045452256,-135.45742442366281 +-174.47385450241268,528.4912417047603,165.10767408398806 +-857.9864395548229,784.2240313821626,-938.4337955247197 +496.7927124194862,517.5882854086258,906.2221705638608 +-891.7311831953584,193.713721568982,-144.3188587458941 +-338.7340902809159,-819.3628794018539,125.30823934261844 +-41.918548650772664,-790.8910836979514,224.97901419416667 +475.9062405058769,534.5566021072964,810.7463765248549 +-181.05851622244563,906.145537244274,730.8588101653722 +-406.9968579521219,-681.433925301083,-129.2212077439732 +-196.20258408806683,151.43861066240856,166.77246465549592 +499.9739687599506,19.779896411220307,-790.3547181184689 +716.5826711062123,-380.4708336296259,942.5949206131841 +-764.2797826404596,916.5023444650064,-817.9763862349661 +-537.927724105881,-906.8401158269169,410.22629327798995 +700.5974731435836,-131.85783636803922,857.0441500848594 +180.59814351119917,260.0142708930464,690.8384034015398 +-406.39958989632214,-291.46855734474843,811.9038383892887 +801.9269920775275,952.9655524017417,803.6766328833423 +-745.2559279332783,647.4485722739746,-180.32304378081187 +981.6027118918757,-55.43807134239785,107.67216500444124 +59.549830513597044,-356.52594028344447,-849.9558222141636 +791.302460803837,605.3516250525736,-720.9464388806614 +553.5365427001457,251.69333210122,-181.71242416475536 +-491.95770180887456,719.4575670044649,400.37651858810614 +95.47981893827364,219.13706779692825,-817.8676358356381 +-52.16047817761614,-612.599414428596,-583.2326419823493 +322.6079245737335,822.5123036685761,-192.4867790433069 +-584.5014539756193,297.49387447330855,742.3740927006354 +496.63760224498174,737.5144610731743,73.10934202159865 +503.75248873838177,-719.8708812821271,-303.45076927361697 +-220.90167103695512,22.591492492069165,858.1527205136474 +748.5931204443486,-730.949015421631,-654.4206962350736 +-284.7189008221774,-418.51226821865214,229.5419063125246 +805.5520955290897,924.5830833451737,307.2059050704529 +676.3184028021733,50.40440046159415,-583.3461062799206 +49.376824186954764,110.16520287530216,484.91512842711313 +-560.2340205853018,-263.3792358265365,-271.94506157086744 +918.8791914823298,-112.11007934656209,510.18793459629296 +501.62276274887813,-468.91163039351727,143.73937874346416 +788.6057866372962,-49.60456108610117,890.2350146850922 +-571.0835413516768,-851.6817884519385,782.9077462894986 +695.3623959244333,985.1797518676894,358.7869762248522 +873.3758533342991,653.8980501682217,688.8526662401737 +138.28314090853655,-235.27080416657827,869.1161450865636 +-135.76564876821112,77.63873449933817,-107.77138574962453 +129.63662792039418,-58.98984201534563,-904.0648828410483 +764.0963720153973,-111.21236216846046,177.88729701469742 +-721.624394484026,-993.2243040347217,-509.4198127127141 +409.17206426670054,-801.6109397742428,817.7748807729356 +-569.9548612876308,-590.8127714164484,-636.984076757009 +-972.0365740572705,543.6109369564692,750.0690624905171 +228.32540523239777,-623.6000366402754,-429.4440061182405 +-48.14660527007345,908.6919032466017,-505.2972563645144 +463.2918078397761,-121.10355341415936,-404.30530327995643 +-88.16812595577255,-857.5865649175349,597.374741860725 +-513.3961440340657,450.8242463859408,-863.3032571036106 +910.1971123313722,-613.9700291886028,765.4841524141609 +618.946419230869,935.719848162832,-44.21867810850074 +454.79458769190296,-258.57868592443185,-631.2635239606124 +-113.84813413310235,-668.5019692230902,964.0892455727678 +-807.5070177185672,178.42344690524078,252.9277105081119 +76.15908574810851,324.37177142366704,-767.6384499762181 +110.0370484105822,-425.574857745277,880.3521266021132 +524.1433068794515,945.0289643194853,-924.887860519621 +-429.7336496385826,-609.154826723302,-977.690825376339 +-515.3485395073571,357.5519670408578,-537.822155730863 +18.006890965236494,775.6362299299972,387.51584069815044 +-210.74186018793603,-255.06212217578343,-88.52837198303052 +-645.9171178801872,268.0015348319762,-271.694361790789 +704.7306985240873,513.1053201156326,221.02632818432016 +-271.5955547009679,-580.1363366530312,552.3037282112457 +-27.181802017826953,-550.499923645285,-609.6507699199876 +-669.1981909972819,554.3223924111899,-542.0256293993766 +53.2845270503949,-96.90727805388713,159.22179845656774 +754.3098007423885,735.4947801634612,-97.84785635028072 +-969.2674985305534,-147.1123885713937,212.3870748482807 +115.52951819612349,302.67221160041095,-691.8485350538331 +293.0701975614652,-634.6967625124555,501.04796139349787 +-321.82477347464,419.79086676290717,-904.2688021877858 +-184.27994881817324,410.0690445266655,-546.2589673370117 +590.5740895944452,261.559466209864,175.1235442995967 +-292.9022915913257,-35.097059237764825,194.69860195570618 +-55.075772170219125,396.62664788112033,-132.60613378608093 +-595.4536365159393,-572.1324343979055,-988.3924623141178 +-398.08456888265505,497.83528095703923,588.3254176752191 +-595.0649158085,918.0879937428156,4.805586960253436 +833.9574980370053,413.5305637232623,444.86684604482616 +-829.9127573878577,-560.0177462061387,-982.3703334110547 +432.255280953475,-311.1234231429801,573.3050321526937 +-322.1275601259474,638.6675045977222,-738.6034925033739 +-653.2536864849836,-318.246920832127,-183.02522223545338 +-302.5943783140432,527.2940650464398,-806.0972147465706 +-297.56596072302386,674.4799990309186,-866.405845475656 +884.6870153427149,972.6336845440258,-822.8636523498399 +-417.454955488526,-255.1986679292877,552.7827373054522 +191.8536242334676,288.73140098513477,515.019645637012 +-764.0420011259486,666.4189138205247,411.239608360288 +154.6834503927405,779.4706695661134,400.6127077676142 +-596.6000747379492,-140.50923784866654,-11.914266128533427 +-889.5647464991887,909.2750267201116,-742.845478406243 +394.92253445345364,12.462072181760277,-948.7355002311548 +849.4949517287234,703.6736176378663,48.51585580767096 +-542.1153277211095,-756.7542186398115,-273.2150411357468 +-489.143437907819,13.382402012597481,932.8185922468579 +149.90698645928273,779.8621117801958,301.7576749915545 +-49.50694682559913,709.2151254667424,-57.26377965400502 +737.256341020722,-416.8464608484694,-742.3738524740238 +710.6289287258767,174.83032758533363,778.1847964979202 +875.6544139847665,-892.7432192571016,1.9386037177366688 +-250.07090185094148,251.71679414023424,587.1823944046471 +-438.8195680512621,113.59676874634329,417.4571598097991 +-731.137834328532,628.1338119025338,212.21919970594627 +899.0748742273036,-320.94216173861344,-783.7081153256026 +13.00240207385059,-828.3784565811222,939.0530466480136 +-922.630083485617,507.00780221461605,50.20479628448811 +-262.75869500342264,-868.3156709826907,244.3338483472155 +170.44065878191054,-438.2334538648005,820.4434028206242 +-391.77998531432627,-100.54917881578774,87.52491183731127 +-799.5362436474278,864.3234384272646,-250.92769509791776 +-838.4415722513128,-225.41765264934008,200.4050941851615 +27.30534364265918,389.08394807454806,-889.0321158641788 +-430.9187794558877,638.4611536802045,-840.2126244172782 +710.9719093919152,-816.2078158457875,668.9084297833924 +-278.42319784254664,224.4181265144316,-694.2257687040037 +-867.6625565496383,-568.1235919597298,-744.2923641826089 +-375.18820464073644,28.766493022040322,177.51892713001894 +579.7362147594858,312.4797864967172,217.51665025910597 +-176.43594502845076,-52.383130079722605,-170.95834121963787 +684.3320601227663,-539.9990949032003,-988.5581369160708 +302.63979445247855,-595.0756327223372,780.2302726196187 +718.092659413312,-846.5452561435882,-787.2231891718453 +-9.656815506667385,218.4453255387093,-450.18332503551846 +433.5954333987413,189.83204183774296,-350.3517805028906 +-949.2570239153688,500.3005625970354,-570.4926683498345 +668.9474869252567,-159.4194798914897,154.1548852635308 +745.8974608180038,727.2460018399067,-256.96084951285343 +-582.2222145703138,550.2921554571894,-133.83959279573764 +-615.9160128819918,808.8506846343005,-603.7916115178252 +-948.3856636175378,-959.4400524651601,244.6307129085285 +323.3501214350606,-377.91658988603217,-359.97802150587324 +-321.01216988011447,360.31709351775726,-883.7324179463428 +858.2327053826514,-554.9579116451071,999.3464104841844 +-656.954612425626,543.0929146247549,-553.17491014075 +-838.3063967134921,749.8666487012977,717.5025183817838 +-192.85921510079731,404.7922850808536,114.13186536783428 +705.9122273474975,-369.88806136269113,47.34479999797031 +-29.255257590899078,-292.1883474862825,782.9101291127445 +-668.244150674929,-700.9827209586076,153.81907064550273 +314.98845996988393,-610.7614913508696,-218.56511549075174 +893.1276859574875,-506.765154618652,336.7214042347882 +480.29878739518153,-103.74260106968097,875.051973519166 +473.3134704375809,-84.15084027820433,138.67040355218796 +385.22688685020125,184.38036085843646,757.3951676521517 +-286.2226754391977,-400.2285198883901,-572.3222210094714 +-924.4340638708097,-913.9720712398894,740.1103862185655 +356.7862928118145,321.06483087297215,229.28563786977202 +698.4382893882098,-39.46614866874506,740.8216571166006 +-281.1099476355216,853.415008678181,397.31396016248027 +-485.64572795114543,128.16984337725034,66.06112297651111 +-724.2023565393321,182.48581150122823,-370.4287525660841 +-895.3024663807952,897.3123154131297,282.9807381285757 +753.837863741694,352.11201002650637,-286.03261571977407 +25.376144657622945,351.4935206943542,920.5046504028751 +-492.6610817566071,749.9541172482354,848.1556105885388 +340.83102931791313,862.5332548026756,-204.2428250452631 +906.0323520808854,405.56575433194985,-915.9884651623762 +813.7456636381055,-31.054381933614877,-79.34603044433425 +132.93321195926865,-701.2309064575442,-61.66790286520279 +662.2544334354914,-969.0350817249694,-454.1656793512574 +-995.0908271123116,-168.57738170030336,456.63102098746936 +597.5436582292571,890.3795222540132,217.00922594157305 +-490.74626669420906,848.2958982733978,550.6315077607521 +148.85696600628899,391.28043143787204,848.6327100148583 +424.7880569458432,-263.25098483053205,426.05640457819345 +-919.4436745292243,-227.16887633883755,-187.3539363088414 +-666.3235311583306,-953.8290388964597,-733.2375267245143 +309.2429915941102,604.577632727375,976.4069854539484 +-307.27299378301143,198.7584445222035,874.2899336302439 +-665.9164373236947,435.29117268548544,509.9574662983264 +-822.0489282613232,722.49877036613,626.2100942216878 +-933.1939868451311,-817.831170239897,-901.7462122162954 +-330.5129364012755,18.577981359852288,64.69545590925759 +-464.6664804611147,823.1937731205483,-263.47442025617363 +-908.899688069295,-399.5457769172273,62.2188450883109 +-183.5563548235359,-452.3149618014817,-737.3535004713651 +638.3290001924595,992.2904842483838,-340.9157329522359 +-236.7579116467922,236.0750493539142,436.8829494710826 +-215.94093039281745,809.8590339636305,120.00797845783677 +-99.21984718813803,293.3455063198103,905.6076964983463 +589.104588843411,-919.9737389297513,-335.3801785200807 +-58.910630097554645,-370.9648555817895,400.375121660913 +652.538299725162,462.6901903705432,978.6665736565506 +-454.90470421394184,749.9789900488429,533.2453303489724 +-275.64248488370777,468.24908731393725,-791.8480871635061 +578.6669646811047,64.66120517420518,-415.41965458149366 +311.55460356836033,283.239997428818,-581.0275545608006 +-939.2051703769478,-132.7548261966523,139.0237386888425 +753.2105567411968,856.4335912951888,57.61043631353277 +507.60696753708976,-121.39345534400616,492.1643131457861 +-590.3969501216661,-257.8705303929372,268.45599762722964 +-963.6840687858423,444.92262067790807,671.0710025363335 +-201.71667781209715,-104.11516564567137,702.564424433062 +551.3092706520667,-423.70102193325,-352.04778687692203 +357.75646478119324,126.39618489632244,-675.5408578070062 +-380.1401815416672,799.9665537573082,376.3488734445268 +971.948635371039,534.0250599615388,883.9488642871804 +-567.6228522590492,542.9697496338515,-959.5649597044052 +341.5200434230678,-61.435443759517284,-306.4798561598627 +724.8087045861782,708.5353853150614,-955.3965902027128 +219.01024489886208,-264.3355513580872,-168.67799699910165 +664.081478437552,-380.3204569446434,886.0976212752403 +-640.7323472557184,325.44484673635543,344.2101340275294 +-495.6096771441636,-350.49878206559606,669.5969851598809 +523.610509909905,-341.8082393704809,67.91309386986768 +-876.6394074938091,-582.5082352027415,-28.358882279201794 +-828.0525294415768,686.664709783875,436.01242021529583 +887.2673412969896,386.9338119280544,880.8027445243711 +109.02511138192995,200.43722212393868,953.9421092525217 +284.2582937285208,-938.4268622785069,447.60555326104645 +810.9373842748314,591.1604995886532,167.66654525084527 +342.6070261870327,980.3835785033434,-818.6758229813233 +334.48965726647907,-433.2046108588123,280.18079317234015 +215.24715176787754,-693.0863357836758,-586.5067085195217 +243.25915608642708,-743.5401053924518,-469.63824973935425 +670.4910954760048,-345.8169879967228,-23.879687460674177 +882.2806702916805,-545.7018223261075,-220.74796528397917 +212.91555108709122,510.67785900794433,803.3067734254103 +830.9459751470304,553.2801487452459,-543.3383268133791 +-950.3813399148684,-232.4521392887524,-716.9022980243533 +420.77529487659626,322.26117365143364,-912.0567167570903 +673.1875582619023,-502.51346741763547,-135.54584901791554 +335.8674709114848,-141.16242629549333,-117.42439440011321 +-868.7440093285193,-197.1129014799924,529.6957864399669 +830.3526743731954,-173.00572587325644,-152.82834624184227 +405.25421264730426,885.5440022105531,-465.8781195212796 +-119.71158692412632,591.9464871046023,219.38713874807695 +-778.8273120720905,255.4654711245314,-626.5074308053462 +20.431868156808264,58.20653532087704,752.4067244499697 +-75.01145197512369,-441.1151555282115,-538.0673035679368 +748.5037533686723,-657.9782911635432,-148.2628782337125 +-625.653770146106,546.6080802287506,-51.25472005076199 +-297.71261888637594,-277.8007187470664,704.4284134459588 +107.54790858887623,435.7357022625272,794.0770325013691 +803.483352081284,-342.98189132427365,904.9025262927705 +-950.2482359707891,-246.32887796766863,791.5977150176832 +-450.7262403660342,-453.8370993573633,-394.75542983622256 +224.62676969384438,-123.33444877129239,453.46967270668506 +789.8212851293315,348.3987498857214,-591.066559604849 +865.3638047210043,-471.014253305043,-700.2114093436837 +-820.0654422780782,126.76748133233127,-772.4750750386963 +-722.4482317747385,-399.9390388090068,-436.69398063107235 +208.4790206642847,633.4905589453631,522.6993124057849 +-475.0310905670465,-509.37900402804013,931.5830602139351 +-983.5275168160797,759.4410661204315,-600.54296175519 +894.5686461795358,-315.3854303449606,-119.2964522134954 +414.24122788876184,175.33810294652062,-364.12134058635434 +107.66183173564696,461.41376872577234,-915.3301081950158 +-977.6013894885917,-83.86612185421734,-736.3267643929717 +328.6885829294288,-571.8950875451317,-134.2977864086581 +-604.6581262514621,96.96717149824894,-767.8930812308622 +-953.7862944250395,-897.7367237866056,908.5168830306197 +-715.4275627781283,416.95650627367036,-864.1475915543475 +-783.6792955296357,17.752502818669313,-70.25813969131264 +903.1606188797391,889.6709060414746,559.2172850849302 +204.20366025469957,-90.07936521397801,-287.6429313431579 +894.1750939511107,205.81762284937122,158.14505537198897 +-536.1977564621702,-906.6043642297739,890.3771595190888 +-372.5294823106922,-114.82195335108258,-770.7201128285863 +673.8486598185839,-944.7363342881388,667.981524198193 +-719.4299744240664,773.1282252623041,459.5452746723147 +-670.6594749853898,131.63598571893613,-374.68737128956104 +-643.5338021768331,718.3643988222168,-192.95446698554122 +-202.91257126923506,-660.22665038676,-233.8686478284426 +743.2336926577004,-273.74257902072816,903.2071249995761 +892.6177984167748,-710.202681385308,-645.3774929547103 +725.3481406637784,-214.47816215056162,-991.2520354339813 +-452.25636058925795,195.25798639111986,598.5319319199361 +-733.2227658134809,-778.9172711665293,844.1853071446633 +502.2967356451652,179.55920155615695,538.3735799918561 +-142.2912773867231,516.9114946182531,-256.39401745092846 +-511.81085501479527,458.0268425859372,-160.65541568546337 +962.7542086523897,-301.029635383798,843.4548410621319 +865.9250971341589,-516.2941058705078,596.4423631760267 +-133.85098971086973,835.0494544606961,-99.75145472952238 +488.6074346747323,-66.06518167240426,-544.3984885742876 +-601.2997421106274,-149.13761148730885,510.9893140284298 +210.14297036153357,377.2585798010866,-435.3472985361151 +-37.12930808478893,-911.209470061346,635.0648319162412 +979.7843244797493,-186.2418747506582,-978.0726937369133 +-660.4147208981053,305.0537555008377,224.1586364077184 +575.729439171088,-492.2319780778637,527.2638310942682 +375.9680430473395,-354.3710045723134,90.97629611392404 +-705.4523830033465,-94.8709931288347,762.3946791112819 +-157.61724034921838,679.1334129508439,180.50673051938884 +-616.2465737952864,162.21248939579277,11.966658314126903 +-202.71732960723193,-760.7391209678593,-166.5826723055403 +-854.4752475207458,-802.4618972024975,-168.166934134568 +-389.23703606307254,851.0886517244469,-248.58838923945893 +515.7162441442003,60.49505273248542,408.1713372846709 +-479.7680339692016,883.8099456766581,60.1769938288478 +662.6481425704992,-269.908613047773,-799.577301898951 +347.4232954416975,-984.480703325151,-49.414046868983405 +-614.3961946670815,254.75100887072426,958.8397462757043 +-71.19418735870806,634.9965130513333,15.568373902242115 +-8.319937791951816,860.8469863575556,779.931737493363 +571.6009303759488,-407.4884933664317,90.01683144788103 +-552.20553338863,-112.1666039069205,-31.57386848041881 +663.2800803386617,792.0567306499861,-170.75987520704427 +-964.5911098535256,723.5476795787092,-651.4426429972787 +243.76392778078707,-950.0581991317376,-200.98704947887143 +971.9206042306996,-798.6127977923938,-152.61369600071544 +-385.70009962009567,810.1762467765286,738.6802158147104 +-524.6024793875424,-837.6244258991377,254.27678812223508 +-327.2625762325805,344.1687812121261,-935.760487864371 +-733.2015296450211,372.74446554528663,-575.2586893950045 +715.1753515248031,-882.8182245797291,-569.0360344288508 +997.1204969701373,-133.84779482641477,405.9313270892869 +-634.6739022859726,219.73746997107537,452.212136738837 +-371.0467282669789,657.7942239517556,206.8351569445665 +-221.75398076993952,115.28478668631715,153.52169487184847 +-668.9294146122679,-194.53526026606767,-313.1388239610138 +-198.19455484174784,522.2211769705159,-34.923185066654696 +880.6323064785286,-412.6471732831276,-168.592843430142 +573.9136209580829,92.04918664150046,94.05629284889551 +-893.319673989633,-202.80067456308836,-458.532535156535 +998.6702456622306,-383.2898587353794,768.993069587727 +352.46747008095485,-318.1671816158191,87.06875674824732 +681.0717598983874,766.7365960618238,-679.2122499877096 +-320.8537175836608,-329.5536395728567,-915.9104078481106 +196.475519703793,709.6401059843761,-236.85122434896448 +480.07188996835407,255.40082720147984,-248.7025290139984 +-717.8804010154058,418.6477055519347,709.130337882481 +371.70898480298365,-964.2430319303638,-567.5342112180175 +-861.0400302329361,140.7721991524536,512.9553576808248 +-778.8416258626811,676.6756411867705,111.01795679096631 +379.93802428344975,942.8036972172924,-832.6380235046054 +802.4480459555784,-747.7946080251813,-214.0823867266355 +702.8773926622287,812.5084734757363,12.743347090290627 +188.2092765508503,416.2946691971142,665.5173369054285 +-756.9776609246677,620.1386164584553,-37.447698976766446 +-98.75314978366202,-152.2004960060035,18.423170492085205 +890.101106789207,96.4075455843033,906.3550765262785 +-639.4197387687188,448.2719576652662,624.4790772174945 +358.2576626697239,213.8445604530807,129.62556217236443 +721.860965157392,643.293194329,-755.422557638801 +697.1753140617564,-171.86276111911502,-492.6063400083784 +739.5371360278518,-135.95040073251675,616.7293803536334 +-473.192776088311,-992.1413571555644,-9.08161419411124 +-799.5434867142314,508.7519110498192,-447.8497278611793 +-112.70870679304255,-825.9328698168915,-426.6815031054947 +562.9804865171438,-696.8241761953611,294.31912225391466 +834.8517056090022,359.6735195154406,622.0433785844536 +-782.0567413921684,-498.5363479958911,789.0777044811821 +430.2112272361785,279.10765275462245,327.53347224339996 +-171.5988913907131,-910.8867367646935,568.8830841414581 +357.4264724307077,-54.391071774550596,799.5192307365148 +-327.6806700298023,-411.35651153752815,745.5926501588856 +593.975309517971,29.95962129668942,-738.5305210843001 +-569.8570570698951,312.4559808176132,-229.91752431917666 +672.9463833319423,899.9100186644082,611.2738505498364 +-244.9091540088857,577.3728584628482,-297.1166530586331 +-665.7998244687321,-933.2135902682852,-228.56657447795988 +807.1186073945637,-522.026824488647,-586.973670140432 +939.6415704820806,-949.9917742988158,571.5643007875087 +-357.2600885182593,-925.0240862606813,835.6050804191673 +-720.7153395808327,103.5585674513909,-451.89158514090445 +-869.614395630618,-900.1550286732418,-768.8866023273224 +-857.26597222124,521.1162310398458,-28.867595433141673 +-314.2158173020406,-163.26217973598568,857.8934711452466 +821.5036254762945,431.3529602451538,769.3647548433755 +-360.70394482475047,-237.78134798343433,227.42436370845599 +247.25189459452827,-36.60032397531813,-198.6843031240935 +972.3606232173902,642.2472522354487,-130.03960422390958 +454.58495447913697,-460.8766134950811,-799.6613475253403 +-295.1379488945187,-194.05439975321156,-966.9257508786584 +629.5840032717922,-281.61319522163694,160.83633156029418 +-852.073625458088,-650.006342498832,779.3874506551199 +217.37505576560147,900.5681003409711,997.5000687826339 +-256.27976933381126,-402.3938718334508,716.7121103181935 +997.2228540749084,259.2824684649147,590.2814450230446 +563.4917176305489,-289.320583560906,148.5407605141745 +666.1138825284272,376.2277525221109,-957.6723720359234 +-326.58866220493303,-711.0486068107894,-534.0555758439218 +810.9789549826514,-926.2134221784637,-560.3985760761525 +-380.86129552353714,233.7681439327896,68.20338017173094 +-563.4610342932278,-671.5178655536911,-526.4039308077624 +5.059253403311118,-457.6444285775931,895.2050032154443 +-72.26955714230485,-882.4079669107259,458.5328116732667 +-342.3094235820207,306.9778641164951,-440.811258953536 +141.4874834666398,544.3050096149293,856.017483549108 +-477.74571113384593,-330.28609800203765,-71.46715942812068 +854.3496754719777,802.7737136213143,-820.2434397987239 +-736.1403484923783,-8.981645338723524,-786.761454389153 +-308.83825330260504,-703.2292435650447,272.0807102637716 +898.9908634783235,993.4675405887629,-249.51773500617037 +198.02527422922458,712.5353070481626,-765.075854407232 +379.1288221039299,-182.31267654986345,-587.7076794396719 +-194.49276250511605,-848.0794260701663,390.81429717861147 +-494.51466250309386,-377.18870991024403,-757.8374035170746 +729.3182277797835,-13.111441434522817,144.2937555728006 +138.86536618970922,-179.0137709173165,-614.940169123721 +490.2654969967998,-745.8874692846514,-792.252419442379 +420.2900751930067,-582.3259590960324,-386.4544972943354 +-49.5450659965195,-101.29736654090755,417.15825012999835 +246.86358688672203,288.7923245637314,428.1086613109146 +-414.7745451530693,-355.33337639905267,-124.00450420889172 +-385.07565393294783,969.8757379417268,628.1038528428594 +-670.6906234879409,-988.811688236261,-914.4334635054643 +-511.87309791414947,-771.4174283262869,66.67622978514419 +715.9904454547172,473.5004418264548,-568.7818738356192 +-201.40148794842833,15.78841906255525,620.4116990066711 +678.2432062123296,819.4366238155519,18.49050100575039 +388.549492871726,-776.3992575321257,130.5779199079641 +-502.61638105772977,-136.56622994677775,268.1010166134388 +-486.02812429243784,-895.6298844064778,-979.532287182485 +-955.6809289109569,-983.3005249724607,-779.2898868842491 +-521.0225708597402,-557.5569716354016,973.5931883597934 +-387.9877895821136,-745.1584332812017,91.12508833551601 +715.9149107950166,356.12075357535036,-407.8358217290994 +123.2323195829099,429.7119484008183,456.2089847354846 +333.07691059537774,741.620849551236,740.2109166882087 +157.8731188140066,-140.2872617775754,283.1405911301997 +636.4240027409262,-988.6957903176306,983.9940180297021 +-634.2124553416015,-59.5020286800476,744.0594696857333 +-549.9192019116012,-46.409552199233644,-734.8356396376416 +-209.84734922361486,-645.729090413995,-272.74450245768605 +-253.07156641455595,986.3415791966654,989.6260586075446 +-770.4274426787752,451.9375586566946,-896.5090406617977 +-939.6159693256227,-789.3322115100714,930.9713140158681 +881.7270957893948,-612.1443594386391,-676.655328892577 +-518.929826968106,31.093988150284304,139.40926407081975 +-556.8131391211052,513.2455761798903,-380.89366119469844 +844.2626510588207,313.44541291346127,-127.29761139277662 +579.8240034056907,635.8292520933296,-419.0367887821127 +-320.57091232783125,871.9103074572067,-670.5179232734562 +-915.6991660741317,-91.88935478090161,602.4198004872578 +543.3362126214915,839.061257825665,66.40132873808057 +-799.8706568669334,177.37794867203206,556.7912287064232 +-813.3437594603472,-654.6851978048205,-975.4186776886582 +187.30515889362073,773.4687838918089,341.3266320041989 +964.080175181964,-873.9326950004769,806.0021703029925 +628.1365747733614,-371.51695900099014,947.0531036745035 +-424.12450365716995,778.6094476564369,761.4971541483787 +515.3152332059449,126.94094762570376,-759.9945007662238 +63.943468992996486,-286.4074886901309,584.4340663107034 +516.2584129936897,821.2250147452105,-970.3396751365842 +618.2064336460921,876.9241062493377,578.6008982163003 +-739.6110802592666,-837.4417903182245,-958.3095203845984 +257.4904516561421,259.3453037197746,973.8274284364245 +-203.91365179180855,-336.18743020500654,248.84985436878492 +651.2173450151879,873.5478990460037,606.2483323580773 +-146.65203876839053,269.8284706241284,712.598653432234 +-18.780623376521135,-566.6267125892145,-660.5531205042541 +-999.6845108438865,436.4759899625685,-777.805582308019 +-512.3218006081191,-404.2473369544133,120.75972027353669 +-204.0854454084615,349.3479840463235,-888.7226813425946 +-752.1216114711211,-1.576992933466613,-326.0704243063403 +-408.3732744972806,-865.9438419249545,791.438349496003 +383.63717225010146,-756.7636863607013,-869.9080845257188 +949.745066862486,362.3451008790098,-165.08785781251697 +403.46208151156975,512.6635729603181,559.9244047775587 +-44.245388693884706,-140.23448375030398,-977.9438314621993 +853.1142302836761,206.6157567778862,-593.6921256200637 +839.2068388428734,829.8638035405927,978.3683287321919 +748.1131262779577,995.5687756401294,-510.6276237534548 +684.4991703984681,646.056617591529,-538.1192815585325 +-803.1249019980185,958.8410273551992,-407.95089695877925 +741.7835809356122,-991.7456906507922,-957.9503855607956 +-68.25738260726325,-522.5706321298728,379.68256687192866 +131.12865113590874,-845.0284050990172,-674.7434073685658 +-223.90145988317147,-628.7918720891337,584.4446944878571 +-167.85952889343992,-813.1362663150014,-31.314195455750337 +-818.3236378771717,-742.1253891603656,-520.7803359435894 +719.0554104949795,849.2250646659438,652.5154586641381 +-331.8455651643055,-455.1071177823367,98.31138158047838 +443.70632106622475,986.7455763203498,-736.8585762421476 +-901.4160019523911,388.71177799054203,664.451567007811 +692.6975597328465,356.92709815432136,908.0316082383742 +22.009527089173844,827.6295966724249,935.6242739830461 +694.3149140062155,-380.4828734827588,-607.5686976594095 +96.24012996363695,-93.97049923962311,755.5166843854659 +-799.9366578656926,-484.51987737696277,503.5978890374172 +-810.0267100453757,-358.4711719565996,-225.68921189203377 +245.18759312537986,-683.7347085612708,721.208980699419 +-104.91552906745153,834.043423761113,-64.26017273213677 +-449.9194821185333,-716.3423426246502,-992.5098105774304 +64.31496996967121,-785.6866061461532,-216.54447273764356 +178.54352247417341,-448.62820619459944,-649.5514152677695 +549.4432452186832,893.5823445632411,-799.119164276068 +-688.8193512299842,920.0253145054373,-924.4315563755074 +955.2646731009445,-990.7110338300224,747.3373113026628 +-385.3496380245009,877.177716354593,-366.10942272882903 +308.612643068112,-839.9348604681268,-515.340377092522 +547.3586929585015,57.37170735763948,855.9381235740896 +-142.4971833172914,739.6247316278461,-102.08912504352497 +958.4965574039707,919.6687627977535,-341.7265888878394 +771.8473408336065,695.2227484312984,-578.6392053448743 +248.58080156653932,-854.6353688203703,673.4214411669232 +-650.908232993007,-858.370597228471,-199.56180892237762 +153.84427719928703,709.8339171195421,948.485051043473 +-121.01497486027267,-879.1061540294596,498.23115805174143 +130.34651244787483,-104.21731031107367,-381.4622424156206 +4.797055687071293,-322.6407910859381,514.0237354947205 +87.78739298528217,753.695548308224,87.08782929888412 +-523.4751733201399,702.183764464289,114.43808986008776 +-586.3179237128775,247.0156199124442,-284.56647011514497 +688.8112245841317,-93.40052270691433,452.8827162148334 +-808.9275847275258,-207.9513073953076,966.4828729447975 +616.9205789542966,-680.1183952661427,-444.47190104548986 +-340.3683822872779,300.73112099089144,513.989518979311 +499.05321761581945,19.748112612805585,621.6410756763025 +-125.84383448504991,-752.2388694088762,128.8836833076266 +904.6027692022135,585.9873027850226,157.40129538448468 +293.6113206981938,861.1240540711453,-143.31441113007907 +-337.21172211472526,954.483130000898,726.8862670206668 +-353.91283076279524,-72.4388052781544,-169.84374198440185 +-701.8086426571322,915.6386476265181,-191.37513756048236 +750.6581652758159,-621.2875446386699,95.74162127443947 +-952.0772297514603,528.4409676846171,161.82779649255667 +251.17916693950542,-896.558234890693,-577.9233395827691 +-851.3382552928397,-422.1713683923765,254.87801536430197 +132.37196863475037,224.29964322678052,98.50254275578868 +-453.94240864828123,-510.98500531114956,-725.8806329268375 +698.1417498069841,232.95871708248887,-626.9779749918805 +-645.581240357521,746.0712030522734,485.4617275266387 +318.79815981074285,-186.27178492140035,-476.0488714429649 +958.9015262256476,594.4791500456004,-396.44155372744706 +695.1295925569893,517.8638972293629,-405.8389002440033 +-146.8942915167206,-628.0931092179467,-777.8951112437812 +445.5240656793935,-464.97628529226677,640.1187314925071 +991.2174230288522,-846.7603721407027,-53.92974983259944 +604.1251186216061,577.9017930824671,519.9943166619369 +-302.01012939617806,-92.29348862989536,189.93671468294042 +947.8811671465144,-344.9054581230142,846.2877754337155 +-461.28616363901176,978.1489309474091,340.5273736551835 +-72.97703928289809,226.78085612720974,-454.9376619195864 +-451.65228497706676,-772.8909123130123,-771.8994045892025 +-304.6565170621774,525.7109557927433,215.94233519632508 +-794.8308793379583,704.4730499518218,202.7352539801327 +921.7111535695594,340.37093482241517,-649.650272591638 +-52.43327538435551,296.99519509440825,-943.4705979000446 +-970.1794716903842,-741.1939988028641,-496.6711299090585 +-140.9017529586489,-25.119052480423193,-723.9447821242064 +346.7831582316617,192.2761233930696,-411.0718023176796 +-972.680233129416,-844.7041692934185,-216.6104489783212 +-692.0512976686322,-246.36078770405834,256.36520902071015 +94.47485575856717,-537.6482337252115,-312.3550174824952 +228.06239689730114,721.7100560868973,506.4268774777545 +106.80005366682985,-275.4140033670276,-269.8974449163891 +758.8346205287921,-921.5128479189073,975.9652888405219 +328.75082170312453,362.2753981447811,-924.0043253905156 +211.05854978254433,-30.443879819105973,-788.442186211866 +-444.15597846128185,780.6289124273026,99.9768317319058 +-173.16684965218258,-854.6356883183781,428.2430548046111 +405.70164679206505,228.08721394512713,20.52529244129846 +-132.4311955852546,186.5421859759847,-533.2090965431867 +882.5181283552954,177.58905836045915,-377.6151112912469 +-100.64029822968541,611.3695777537846,-676.767878539405 +-414.32875507947915,359.0160454731108,-369.0215870355522 +585.0033637229319,-739.0930256452783,525.372340909217 +-863.2965702988676,-974.8147746650104,796.4470376643242 +162.6784338645973,-296.34620582637706,-534.8107260722992 +233.77156652163217,18.004367073476374,983.1955510599703 +966.4319733074915,270.04913228321925,-114.25898778821897 +-17.7180617306758,364.95813247372394,-796.8509115292372 +-343.2958523785636,-849.4555179927922,-853.2784809661609 +-608.3215162115325,-29.49349081354626,569.5486423255786 +-29.00821766825493,-329.0467788782605,-835.2940193264837 +100.5910463662592,-457.4628270336465,229.8683558342948 +954.3754782648366,-777.3713570448997,-575.7492025561202 +-53.81092380125051,937.2276306918591,543.6195525399912 +796.4583863256603,-332.5703030484142,984.0769475571892 +-794.3343678716852,-894.0541879077983,711.2052541080564 +854.5297404139724,-818.8292849077965,-773.145146508317 +-933.6516844884524,-790.9848747145518,-581.1603663994383 +940.153237820002,335.7204444793608,557.1060510370842 +552.2788073830443,70.14749955842922,594.9779554260344 +191.6150647799393,-370.90780479328475,122.22021753680156 +67.01717226902701,646.9061075186412,963.454434763318 +-177.9148691581389,526.7813568827194,-800.4739919237329 +553.6627388965771,-257.16617601353573,-921.2196742206266 +-273.5076428756455,221.28550184328947,-761.4996646370669 +848.0689848605091,-844.6551734543228,860.0134396663323 +414.2750358713729,-340.5756491715928,-218.4993045818136 +481.6187294654883,202.9422017624147,343.28584290989033 +-221.67076697304003,-24.37303638480205,979.7349680757868 +-572.1542590005646,-164.2876269557372,-416.3536248520654 +530.2230208796996,528.0252513314415,-415.1090780052083 +-837.2193667340342,-977.134646655592,-145.098933515029 +-179.32481132845828,976.7797572797258,-60.39584860464072 +-487.16326084915875,782.4588820629349,-17.864100692843067 +198.35127042115573,-808.6625791435747,-234.16718534045185 +888.4473489475736,179.01076835085087,-310.9962897150766 +251.3343612631861,820.8221791562323,-452.01879905481985 +10.233436941348828,917.3813078235107,-655.2077134030947 +439.32785119342316,228.96201640596473,359.3502622812696 +-297.56073866486065,-372.2412530324701,368.419341176741 +-568.9134297909093,-160.69051028198976,-623.650707894164 +-983.3903177533405,940.1147200761388,-136.59404268716196 +938.6992288396505,-719.3529604643478,174.73355891497204 +-598.0519344175208,580.1482539265494,567.4059775219505 +-774.7857019213764,824.1289057527783,-610.7407055935507 +225.95468317872064,971.267240175408,764.7930695327277 +913.1278571223381,-314.8024575637611,-788.8487155610733 +-623.3062534210999,0.9897901532276592,586.4593565466444 +-699.6927116322495,319.4630645215143,-352.84479192097626 +-317.59585521569295,323.83546031585274,-66.00116093355962 +624.0665860519878,-688.1629806743458,579.896539534077 +-871.5295038851582,-611.89223950879,312.2994290063307 +709.8513130221424,-494.64074452130194,-345.6167883421741 +74.24149657347994,-576.8543870213954,622.3125231750114 +547.2732900115216,-709.4165760684368,-72.34053636673582 +549.6555333092429,-325.3409377931704,266.2136454354634 +-899.5737570848546,217.37752105863592,-694.6940399987859 +661.1666502289027,-289.1010728390431,-436.89227454360855 +681.7779534229701,-899.7119538563795,-206.78240133131044 +-259.99291884993727,-430.39925150089834,823.508664002954 +501.85678703344456,-872.1536716161224,429.3748988699083 +54.598266257587966,801.7357888031584,-374.1087653032831 +148.3239992191659,1.5105494819720207,-20.87818754478849 +-87.78920096557476,-588.7410489354374,511.41984498478564 +-97.32793452142266,917.0325500052115,-478.38314561444736 +365.4876792540822,881.4341592782168,326.9166460321851 +742.5458152347892,654.9619195140122,-279.7645690219923 +200.247879878993,-687.4773203772888,71.05176539119907 +-539.1560563713256,487.47362990489114,56.11684378424911 +-177.54527473667906,-462.4058076660449,997.3969636825736 +-856.5789582301346,-912.8786388551599,-565.4851990122709 +942.1449172556393,958.4763366399688,309.85546954427195 +760.2133344128094,-572.0765383184092,944.0841883532471 +-714.4302997208706,-797.7496236366835,-775.5769215054543 +146.25584654512932,561.9488014361048,-266.66564425073375 +955.791975572253,-131.15972376334105,-699.1028984535674 +-68.06650362772655,358.0743308448798,664.4515610087574 +-82.46342008681415,187.21365209833493,-465.31057568229323 +291.833052811028,971.9438879006875,-901.8928548244123 +773.0613414103354,124.56500553504566,-495.80268087540014 +909.7794200185158,-33.2913938822021,-336.6194966532288 +-637.0047434583178,-511.09557948667583,665.6980831828851 +228.82001863433175,826.4912389766321,-536.0630956844284 +-757.722852302197,-987.82493804882,15.724075231987626 +996.6138607639764,389.9305376372779,-383.2108160697079 +753.7171660523434,563.4445319759193,-969.1696678469215 +633.7209610820448,-398.94648552300805,-700.6530708327978 +-547.3383205258508,-62.84039124972196,-150.264145863978 +-422.2254012515465,-655.5633555859346,524.4615792843385 +980.2195674698341,555.5831608393808,-408.1260646569176 +-510.38207717573323,-564.6682478681236,-726.6098510219274 +102.6610993846025,210.80074390668824,411.0053213262745 +360.426741867336,-415.3333774332351,-339.3779892063069 +363.0290708846758,-301.1047184327433,-574.7536207613739 +-251.32769260652083,-455.83168484404473,-823.3745575628444 +660.2778045533071,706.2227783140727,-560.4993996662411 +-870.4556009495965,477.65487470235894,-576.9427482731726 +-213.12902112627955,-871.7294955252335,-547.4608304831297 +585.8045566592716,608.7928938304037,-585.8303502245792 +-328.172309786621,-731.5231618125129,-851.6547394301552 +984.343428896819,311.18790248967844,84.1930183966374 +530.997000810599,680.1543193754483,613.429536089455 +-966.9211014202468,-626.3842036190031,309.81060423566214 +-248.4813043920742,964.9653021222141,330.80958527650796 +913.0978174584129,-597.1070367084124,727.9140562300461 +-357.2953883695493,979.1296164756136,-684.6226558537054 +32.6796376766531,585.6890676742439,-134.71503879192824 +-63.83187962470663,972.7115910114821,-149.38369939769336 +208.14420119812712,-890.9206786496986,684.42016042052 +296.33609795908706,-191.95979427437294,-967.6609200909605 +183.33764118700788,-974.6843430316757,-997.5927721819642 +232.19712429870924,-621.9658653308915,-616.2249005638093 +306.5431316654874,-892.6056241212515,-373.1888770508873 +-701.1361957159619,160.35273959306778,323.5303094547917 +442.27170719808714,-489.53756616286915,-821.500496726832 +-842.6326861162044,-147.6969030985524,891.6888181254301 +-564.5419315059507,-486.5167973169014,-798.2223957882821 +211.14054778786044,359.74574789434973,285.86241632151996 +722.2604860895624,-27.148329947856496,-731.0859184658711 +-421.18973859117466,324.8599468427035,226.24394748311965 +62.00625948592506,365.9288373773743,274.78170074659874 +762.6497789299033,172.03275495659318,557.202717401113 +-502.58568806706427,356.36516917813606,804.3882367653514 +-228.5353442003335,558.2083746772932,449.57860239087086 +-880.947606256355,163.01661924814448,-739.6213015983952 +934.6383444611822,622.8150054013124,-780.5523975057598 +-756.4960047046432,188.947709825238,-310.22165165363333 +-930.1882818537814,83.28301566610617,-224.30980062830622 +-797.8470152565146,603.8407845119652,830.1535305576119 +513.18786802826,644.8446200325545,-567.0188654677652 +-472.854098162798,-582.9449194016245,530.1268627311279 +895.8341578689942,433.67441346780515,762.9335297591119 +277.398189766345,-224.6801988824019,-148.4767701393896 +-849.3571356651903,-937.0856095079479,390.9512083781549 +-123.14221597763878,104.43013610925891,115.32249524483268 +-445.2483733333971,-48.21497834101865,-58.47955666459552 +-223.14555754428602,641.3507668021409,-97.67199262480824 +207.28904901197575,791.0402407616521,732.4672457178449 +780.8444075583302,-459.9900070699721,-930.0350233838743 +-477.8664002093416,-442.58530875858276,818.720653449936 +298.4854656759412,-836.5920807955424,-729.2428079777977 +-688.6477489160492,260.8434963378463,470.8280510140062 +719.2878211307923,881.2731016124862,-596.5908852271165 +-380.4550305519019,-519.3542385103387,-282.4768650677245 +829.3302148474988,150.225133878723,476.3837946489982 +-19.76152774643606,-942.284173327751,-871.6090280043713 +75.84606253577158,437.57806964005135,-569.338944942537 +443.819147984608,621.3315469670249,-176.2050432757776 +492.8384656882099,-191.9400993430802,356.70125891004 +527.9940986390861,983.8532366162217,-309.20667587280786 +-177.91843885077708,-668.7598811796573,-591.8538831963863 +386.7900051967554,834.0911803089521,-210.79009667751893 +-640.3111063289175,-429.8010012340119,-89.89659038372281 +-418.6993412692632,-532.8418337562675,471.9689775141592 +-984.3101575187536,78.46105467296616,587.5336140595077 +-467.5434273650636,206.5830212240346,337.80021123723554 +310.04939281018005,-108.30073160256461,-306.84402424844154 +671.848146055627,516.8919139997286,-357.48965317217494 +-793.9616111155879,-856.3849091090616,-811.4480442021279 +165.73872238408558,-896.6756483420206,-326.1462500719232 +506.3994038284586,-411.30366696924386,526.6161543602598 +490.9340764141107,-508.3457347335674,457.644360185491 +495.5532765442015,-205.0921486659463,-579.1590325169635 +42.541613783738285,842.7951760003928,279.233464864124 +-654.1550047454775,365.5138494670398,-145.59394543633084 +183.05759471074612,468.1280700462157,29.89470302888958 +627.9679491466172,444.31115863325545,230.14668003702127 +-698.414368335297,671.8982218231367,871.8111706396321 +-726.0697523814104,-23.517741133138884,-482.222516058991 +509.04661485112933,443.25927200939987,-718.2297588592025 +754.0545425232742,-638.0538720439954,594.5180512962149 +-86.03928074399028,-343.4554128836975,-683.521474651573 +-664.7714877067413,323.7811094018007,100.86077589424099 +-755.8291566975346,-774.6042791233497,-855.378850454417 +487.5346947470882,423.7641704585783,-883.1380182908497 +120.5401511939458,-830.6476895146202,807.4915412178834 +814.2348383602648,396.46597962626015,852.3778428788999 +622.906060827381,657.0771518540987,139.41570113986654 +-387.8816035676482,-564.4017697671568,-345.5999559221417 +256.9908601781242,-654.6869283352021,-482.7195267253568 +-63.87827440907108,-533.8998029507688,177.2873394321232 +846.3520569126597,496.17873140625284,332.85322829782604 +165.44295196755752,-24.104181485870185,-626.8722807306806 +789.4209108537311,-502.92799597432736,-817.3822448436786 +500.0303584573903,-648.7689313376673,-256.20800091764795 +-943.4301434180405,-725.8641149191038,-653.5927384801759 +-891.1797444996441,313.3139132456904,674.0155916062345 +-253.36918726811803,749.1529534364015,-573.306850879747 +-349.2191528775211,-698.5260139376633,241.11839083799714 +-160.26081825938627,226.56669368379744,523.3498107883672 +91.40603206589685,255.26070980357576,870.5006287886658 +-401.87138078231374,-281.6721227320937,435.4067234186739 +222.61103411077352,-642.9341909205704,-247.70537997901965 +-64.32397375057008,-161.22032406322126,-643.4503833559183 +848.8601835685245,524.6375233879517,-37.28833578429544 +360.12205661367307,794.5653442710436,-727.6517152768575 +-499.2538985860446,85.4024945132901,598.0207427047173 +-927.4902091169453,968.0363003927209,-90.18679423520575 +-281.537718756554,-414.5511243204562,-651.2865846982568 +583.1478178600557,910.828329492193,-172.71049030920358 +904.8413895069125,647.5952308700682,-37.8977450473634 +348.05235825226555,-130.03164165907413,117.44681642510477 +-883.9073259629923,392.52695060106635,-894.3507110317266 +634.169893839299,649.893858921115,-525.8454248875707 +-352.67443792839947,-37.37924288341344,193.32581386496304 +-425.2926765160065,184.97280926384997,-404.42585354140226 +-889.0185578578787,-994.9449003361821,-797.6978841631428 +584.5014003280364,922.8626247666743,-146.0676014375615 +25.36790689988561,-706.3036618531478,102.06270536031411 +-710.6901959860463,222.42866239766022,866.5173351617077 +-608.6029213939207,529.1274361142039,-952.995154363352 +-249.005517356758,-778.502984338982,-295.0491168086012 +-652.9261607222329,-253.39001975422514,-164.95438778493929 +-398.8177544381632,313.24389894625824,837.7041025178194 +-198.8092517894553,-615.3136870499571,-458.55448360803325 +708.001646992738,143.2794465402958,-89.9779353860855 +-700.7265569821466,-100.54538335243615,-443.0159932852267 +886.3262557066985,768.1402188314626,-832.194916343604 +33.30697852248568,-549.8833089706559,-178.4458209514188 +753.6959965029127,55.029039777089565,-331.5694132584804 +-584.2232917900059,600.6497188129786,249.0360307286942 +-63.869079147537605,-565.0312922740438,-331.5072516857374 +919.686853477037,40.17987521166856,-198.60143751349415 +42.84408469664777,557.9770117992173,-319.7821269942624 +-642.5877581347822,169.87223667809553,330.4082069621343 +425.43600591709924,763.9751815322593,-257.65175862177387 +-849.2902075422164,916.6971672618845,-129.97614512504958 +246.51501934626253,332.61064625658446,93.02741740240708 +-589.4849405274598,510.28610023228293,607.5039486081632 +105.95117203487962,-22.87767883031688,-772.1236337440293 +-832.0966770004324,-320.8703088729426,-378.3076889652135 +907.3129019265425,567.2454848868595,319.84859051811986 +35.29617803521023,-665.2649385466973,956.9133443685678 +-249.91860351957996,-786.1487951055104,-12.402208568507831 +747.9960232261665,774.582003554659,-978.0681678871055 +772.5914895027995,-457.03156500028297,-922.0552720631539 +695.5805407257487,727.7335119764166,192.46215968470005 +148.86751459271682,626.2405452428388,572.6191054205597 +780.2109468854082,105.49489519340705,935.2941854656174 +992.293661866677,-766.9107800027348,699.0875191082441 +-0.35548450282192334,-224.86732340033575,226.14461976542998 +-888.068885475986,12.922237534159763,741.7811400533335 +-573.0769677220624,-147.2202104611497,878.961775429751 +-142.87232438860542,-283.26473533520334,-118.9267037532436 +38.90553303511274,263.9826882629377,601.3856018334623 +-95.7955884713715,634.9618701802806,67.44132270416117 +-323.03897926404466,315.9016562388283,435.4445094869827 +116.09795125897494,-886.7700537305532,-660.2342496783501 +-429.40455821954356,-434.74878809701374,346.8416004937412 +-963.3026766527348,511.3635540990397,-469.31505038613363 +-379.9563075677952,55.81965588784851,-568.1487981220849 +768.9426271510551,-829.2624413468694,-111.23527539787028 +698.8445389097799,231.6877888424715,-415.3409683147331 +-158.47958444707854,413.3887606850292,946.5214867277987 +786.277436758867,-315.13438323524645,996.395758575715 +-992.9906729378835,-944.7404883831698,647.6810303423877 +-601.074626333896,-878.4614632075182,-525.7038535269955 +-147.79969203827955,461.1325408668097,248.67105310241095 +-524.7575648791592,6.5408962011688345,852.4282107971376 +630.0155539675154,-353.62043033641316,964.5291227113926 +417.24080087026186,-875.1012886664364,-929.6785734227226 +-663.1841019799401,455.7117361002936,-632.5221483151442 +22.973538417666987,-813.4797596383365,841.7723156603902 +-312.07877283286484,816.2641131212615,889.7512838210887 +-987.7427053726384,-71.72962560253598,-950.6878885862143 +817.3855326058117,36.815089469151644,-850.1119746030064 +-779.4465434468663,-232.98195101452188,880.468385745779 +385.81830313616183,735.2377323782648,-267.08670732004066 +-913.5726009000034,948.6352744088283,-965.6540186752609 +895.3033061621779,-262.6451523017106,-979.819189956237 +378.31446344901656,961.0806080627083,931.2514456751851 +-678.1259775951631,-637.50438786769,131.07782923932018 +274.60965285664884,478.83582733173125,-637.8992790557049 +918.0141735288689,277.47851257847583,694.0938377411096 +80.1314305683436,-171.4463048202348,954.365813189992 +164.2427416396722,733.7471655983579,906.5847927325799 +350.7092540173185,97.87735703734984,-992.9782981786988 +-919.960718521988,-598.2975678977673,-627.9831362880095 +-490.4824096003093,-390.13072460467833,-279.8690128985435 +-158.9246198622469,-802.2673230879707,-915.276136094436 +347.8888981460468,74.66964968615548,-111.71159555976078 +268.87988233670467,655.3588144070809,-144.61418176759082 +282.23893010395864,907.1444476703175,679.2489917231214 +-147.99837899518104,289.43367562948606,-645.8581561681206 +121.04436979017964,962.6565822768855,36.630230405044585 +855.2765983802947,-185.33015899347856,997.6896543692624 +158.44007045511557,-915.4620115281309,173.50959338277607 +-450.85460864080676,-935.0373559282106,641.7066093893266 +-448.5407260384882,593.0971080929969,-423.564834088266 +-611.3472922524514,947.871148208855,-276.7093444899609 +202.7524228863208,219.96298562894322,120.94696434700359 +829.3914870424292,348.88214273373706,-192.53399179013968 +724.7607690485481,-637.8742017680712,88.473515220835 +901.1007438875126,250.7952597608255,633.9369009497525 +307.1214510903858,678.7417270757808,888.9757596904872 +-454.15654493452644,-660.6778374865623,-32.01849933492019 +403.7248536484317,-545.6174936355678,-991.7970991396659 +-314.1297683265893,937.7186709355769,389.93492121169334 +-197.34911211755218,-614.8478053063193,-287.82065249050606 +-660.3211333975041,-787.3883573740972,813.4847451451078 +995.3006767509471,-671.7711208084194,-890.9548822434406 +-340.53778570757527,-76.68163847716937,-590.3575058482911 +-397.15017640288306,-598.2585286166845,548.5211368649025 +425.1558864945216,269.9030315219634,-225.5642858415905 +818.0818826284719,939.0650830700399,-652.721374749176 +-553.974717176244,51.26205600073922,-817.4988614355094 +-127.10320235377435,163.58252955542025,44.147142274666294 +-338.18283384394783,84.89161215441368,917.6019085176956 +-587.965191417248,309.6627167880072,-913.2066116878963 +-867.1671910371301,103.65644844717008,-790.121639344101 +-955.3064231462853,-656.9740047039556,129.69834199914885 +406.6819090378649,-595.04287171724,336.51887441634904 +-635.0473378015413,226.91485326251427,-176.08064020840231 +307.5990186672334,990.1055049584945,875.633930465124 +-991.4364843277928,770.8775287246115,-867.018409650467 +906.09317231969,-436.3486418006306,-235.9303391774581 +-816.7235896485442,-775.4544833421808,453.4811304586392 +888.6644714965832,221.49698990861907,431.70003105362207 +523.939489194307,-474.3714508941166,-909.5407381595702 +-996.2545121616629,-298.7014340919627,-517.0715436015678 +-875.3645499016287,-640.9434150126665,-751.0022034641045 +829.7567612347407,-719.4655730816621,75.29692797535836 +186.21191022432913,86.97891541726744,-801.8871315680241 +-362.40327649889764,-897.4593350736934,-208.660171807368 +-622.802137456816,123.2650665687595,385.61678769820105 +64.23972040941294,-131.52660677720849,-225.33315828661512 +683.3835361940075,-561.2638698694599,468.4366790577376 +514.964649480238,-161.59998545853102,-405.3988015487213 +-58.91702790804959,-813.572148214603,-908.13993554182 +-776.7936010962164,-625.7099370755477,8.353640676086002 +698.2732723222443,-528.715336000626,870.3240214935561 +909.8158178700069,917.8092096904104,675.1254693526475 +-272.3499184045588,-854.6321779947539,137.63746353298984 +117.36288787446756,699.951534219191,991.9821018922103 +16.31461312029512,-309.5919379204315,-628.196576887466 +-990.4003503652585,18.227384977758334,111.03733340519148 +649.876959634795,9.15393578560122,832.936697332113 +256.1669531428711,680.6724764421663,-703.3965303845058 +710.6722606046294,350.2877088876967,-659.5339351233389 +-620.4728837079783,853.0012380884427,-935.5692790992542 +-74.93011340858777,-373.04942013179686,330.15487999685615 +679.258775137984,-279.24375688686087,-146.19582535432562 +963.8355690028284,567.8330193584056,794.4082618635828 +-122.47555869674056,-531.8475920317696,-176.27306922709658 +432.1838356630269,-781.1391903280414,-459.0617887669823 +-906.7281990768192,-135.30452332373693,654.8914719592265 +-950.6726234039784,350.647053614332,864.9917490274793 +-526.1442769776354,387.2696814552962,950.2038022004008 +924.5561203049265,-530.1416139417134,-799.3378935758626 +-703.4349242081681,404.0713369642842,451.5177509065511 +348.4731232563979,-327.84322451552384,-660.4461204837557 +161.52218390450616,-32.63910848426701,457.66829424460684 +-117.27984262875714,-322.72061062706325,-413.04284528197127 +-577.0593599005069,-468.5072476266772,-810.3391223117973 +-306.28597814222087,-926.8603752740836,-627.1723056673463 +493.5408892388582,-349.0620226467547,336.4740339546877 +433.7683511945547,162.3706854642271,917.3954827307969 +-957.1202667537735,477.3053011762843,917.573287880816 +724.5434587058785,-664.2146163899733,-346.3593874965359 +-655.0963202470692,202.61672762940816,424.3759639589846 +-365.8524612738836,79.01314796859083,381.84114014239003 +-157.32036677790325,708.0310609109185,543.0998705756342 +-870.6689122988587,242.250598181658,-529.3488980805007 +115.03652933455055,913.7768852659324,758.1240091045004 +-190.96719376973658,-416.97228331129327,-531.188511183482 +65.02973951304011,-771.5030934838874,98.5500162564972 +-997.332721018416,-352.30073850831036,-560.1313723388375 +942.4375799215641,454.48463913995806,-300.6932390755246 +-814.309826938759,33.601189381248105,-573.1042373479154 +72.85909179671557,670.724708357785,231.5851042027707 +267.57683909000434,82.0605781256229,854.5312652628184 +863.8053688412067,25.446402147104436,-388.48102571299114 +-80.82598824111221,-626.8841756087686,272.6886306361787 +0.18467156446649824,-793.3990443734402,-604.7044377607693 +-40.73608760094635,775.1779814377167,132.7814412621949 +363.07000041694164,-321.9429005121806,142.82278608846855 +-105.24035472386515,318.25982524632127,-898.8488678419792 +-13.399567522081725,-408.0147497120661,-347.6298774441815 +921.8348631161227,-634.6103745772344,-377.50949484280613 +19.785151461743567,726.0538962992473,-166.65983358725907 +487.73056177634203,712.7481964296048,-379.9672883563021 +-214.49963292258008,-286.88755262328743,665.7116172358421 +-911.3062760927977,-383.15782234264,358.81711519025976 +130.88699913068535,-127.42128141261139,79.8964544427688 +-604.8308283433635,-138.56675678397926,3.405968352698096 +802.3782439092033,-478.3296743920473,735.6570043298652 +288.4828016519639,-959.3183378647981,449.2626737987873 +-928.8962449018898,994.7622536276263,745.2733753823957 +-405.31250491990863,-485.1775396065891,-237.11783578878226 +-287.66606937111396,-255.32436322923786,-363.44690776103914 +242.2668136966629,-671.472672558752,691.9625848920264 +624.8049680626307,-47.0335842894591,705.4599305570953 +-505.70985993941343,-964.8690885920661,238.41585005964612 +-84.1811860705692,134.3290925917413,798.678818036806 +939.8511471318868,268.9062795112061,528.1111797048768 +-832.3831330256714,-678.5688302169888,466.4096099059532 +-137.26908722399617,-108.06945919118857,-382.78463672912676 +214.7127669554875,-629.6699091675948,253.8325586277913 +-652.4022857295206,-872.3479305805728,-339.284622601878 +-537.7193159803046,777.9832771126646,-890.0930922627468 +-646.7726148517543,97.43921116609886,-37.86561830505275 +-908.295963250597,-985.4951439697111,976.1358839222999 +317.66940071767635,-269.18773819688636,-59.1355046735174 +-466.89975909142606,-310.2524326135805,298.08893453642804 +765.6235977347415,-631.7399538376303,680.7230107706375 +-756.8867409634619,-570.0155528232176,-925.649423900708 +-718.376275814001,834.6062909281011,-81.12250676324288 +-844.6682764432929,919.4536760779226,757.9846155173002 +509.3650417362826,866.9455838951158,-559.7411583284718 +672.7385860201728,379.9823927086122,739.5184991353767 +593.8231314852596,-307.00987364635,548.7970740345111 +-475.08739403021934,-342.8156739438904,-784.1885655540477 +870.1532319609375,-417.9932731994369,41.24493034290367 +-217.3343270676147,919.856241167003,-329.9016581230352 +557.0916428453781,710.83230926236,-128.78700503806817 +-243.6563710941375,495.49164186525604,825.7919606124681 +509.86346614447643,-545.7472688162688,776.6154948754106 +-224.83666512633386,152.45882355586855,662.8712385854221 +-623.2104651990155,569.0202713551062,192.3255958213549 +786.6832836552164,-656.0591963129141,-158.63552591814312 +665.6861857336748,-961.5365930864797,-775.5972664687143 +981.1304255134694,-439.21164281929896,951.0863874479066 +-634.9368979826522,-277.8111139853288,505.7388890071413 +315.556814476357,162.24479985811104,59.79835161001506 +686.8808873294804,-530.1028743332146,-115.0581460129631 +-689.0954156870855,191.88319146140884,-498.91115145735967 +-332.3158713132284,-57.4985667529437,-946.4588285937443 +-816.1241281583247,371.8584414164393,-142.06003856498546 +729.5804439997908,389.34400728839887,-983.7981167053551 +233.42466153426972,-812.5502678805672,561.8663595809885 +983.015376557004,62.3975884830229,365.55900038826076 +-525.3716782104968,-124.80451249241287,712.1906644727674 +-665.1541045074976,-468.92878877247574,-109.13264942793967 +424.497783688028,-248.2320904086523,855.4645595660077 +-811.0858974625617,-258.391604910305,417.9082468568438 +-548.0264686770151,312.826268459346,-671.5660835453082 +-888.0394302766273,-757.9685665027023,859.9695662682693 +103.50176587910255,592.691550959298,-334.6909981898975 +185.31729577089322,-10.095732590016837,891.475918804588 +495.14927210822066,461.08526299315804,-907.293461131441 +99.33933800738214,-66.0170921963703,855.6845332123889 +-485.31602362093554,-460.33309341781137,-177.3075022369992 +-513.2605731872479,-741.6321643825011,714.8296933016015 +116.5530488078316,722.7254379131336,662.2695308073919 +-435.9152904206578,95.4748886485479,-833.5645945198592 +830.5037680615169,-191.47456986969382,-212.64763222195722 +-394.4892587640936,-78.67251057859232,-496.4812269091039 +-250.29545440639095,599.8940971697637,668.5110071703436 +-391.6350447429677,-61.97113889442414,747.6395525601044 +-894.6533363406057,778.2899239915707,-561.6313086953367 +357.0784884287516,165.10339276920058,105.88149637850415 +718.7204495056428,-796.8557127106775,-305.943949348728 +76.50549268953114,622.5777078920796,-567.113833176657 +605.8596827485526,-200.72303501212855,-622.1722871326092 +517.9728808869652,-818.2021970509044,29.53474815088589 +-872.2484322762232,-287.16428968442483,202.15359801278532 +112.23108297442627,-190.68916419066693,-141.9040120557686 +-546.460893298467,-88.23482315179422,906.5097114416685 +700.9058355675809,-709.5342618473123,-940.4384253581582 +867.0486254332611,53.49949976149537,75.67564629861545 +561.4359914130446,-370.6220522573469,-36.18486232799569 +937.3258262934751,344.2973738648143,-692.5099360084282 +-733.5465040312934,-591.4704833339893,533.423348841435 +-409.2459923187679,-957.2223066498404,888.3487270113237 +-660.5731672101787,-980.8836277038629,-525.7367952333541 +-529.9424257637327,-155.98949830855395,840.7796630000737 +758.3698355581957,-86.21089003514419,-178.20019001638695 +110.0181729497026,-513.0919760564685,-895.6300160672744 +878.4482723424135,-626.6020302456545,-603.1985415085672 +-55.0793422921048,-16.773310319338634,-963.1315805985162 +-704.0905224520586,-243.69036287851657,367.46138702107805 +-543.1630863361283,-153.97110751647472,114.69012943293365 +777.1849892465841,-347.8589953457533,-732.883468273033 +-21.455548204783554,493.44320336812416,-780.2804858945332 +-150.6330166060792,-964.4297174750332,-932.8816367054977 +-34.09327356666881,-403.6054036981411,690.2145980108244 +204.30861225290846,-92.13407651401928,-184.1292578914073 +-5.509039620873409,-919.1223375746773,785.5867128413199 +996.6063114679166,-637.0257502826026,-759.2340704507606 +-712.8450731028095,322.05411646873426,322.88167690154955 +695.8483245568218,503.6527768525066,-100.62065326132051 +225.7107231306377,376.5693407360159,25.47294057045042 +-48.69803109672671,290.19489128530654,114.94909795130752 +287.8846106718206,225.70954792672774,438.39312102730923 +285.60701756575213,39.484972874534606,363.59362256877307 +-101.03606962914387,-516.6575480547979,-997.1635597321691 +119.92829429168637,181.31045321728197,944.0979295514287 +-277.04333181144887,-211.73351434337656,-596.4008373156196 +-858.9314095253562,545.608985723481,-500.63787132134996 +217.80972206007596,375.5460710909631,-57.52662541670463 +752.7042260543833,-112.4103180405425,-430.1827539164698 +792.0310459232446,723.128568499913,-671.920105847174 +-948.0779632921581,-820.0288873007586,-426.9052028923659 +944.5196034834214,117.03230632165014,-253.47653594146232 +777.4321892254927,-93.72733704300072,-369.52274319795777 +882.4390574913148,699.035332385356,687.3367508388819 +24.569486100426275,578.87679763091,-641.2932814708963 +146.44591511248723,967.6918456950914,-418.0831389640766 +588.7046584953503,-19.04318558386558,-920.3886335558253 +526.0387956313348,-662.8617112157744,262.9471342655004 +-828.6716119060542,893.7347949919297,-416.55222563927816 +-547.0706166452102,-741.7271918673314,892.0043866780957 +423.8074848826104,483.3217774361774,-1.1908772395108826 +-50.544429459033154,-779.9575140170467,119.68219116798355 +-506.16700978241914,954.2906656008117,593.1618800302947 +-174.0158796142248,-697.317482616934,570.663382277568 +-755.892465837368,-621.3324930058591,-576.9589645115452 +113.78127654618879,574.1133079807325,-371.37024255061556 +-830.6603714494212,-70.92307295116166,496.22048231987105 +-556.6723138252235,-560.1509039212515,894.4540546934215 +908.3074542383558,980.9314641231529,615.3192031495603 +-623.6316616641088,-576.0369584014772,-319.54951695521606 +-363.73493733301837,913.0554981560181,578.1479657633872 +448.0175843231077,-628.0735518837364,819.0511187246591 +655.7407590123476,-672.7163173441527,742.340663921945 +-455.50492725905747,-838.2605083357879,313.64461302842005 +307.6093187686613,-810.1359808687638,-362.2963821268353 +985.6289245110772,356.8533340174738,460.1503332066584 +-574.1654287913886,-842.4358579921713,-446.19662051812475 +-502.2032296136161,-530.9117985038938,-614.4913562259209 +149.5113813108087,-343.7930483163565,640.6900300950608 +-632.1051643052319,-70.74585826291104,-972.68432714784 +-36.63535508961593,-888.3235582470512,955.4470237452872 +581.1842573008257,-19.777046727089214,-826.8252836412995 +184.8908815808286,517.527501403755,-618.5654939905094 +136.41668157498157,628.421796765736,536.4955552926326 +605.9840357343057,758.6468497394396,875.3642043189404 +-188.9576895929281,137.53820504575447,581.3190520912217 +394.2796278915664,991.0404565287577,-972.6446977907117 +-289.73356936841867,-437.9441474595951,-475.36829966893083 +-554.9404350022285,418.24768163045815,-830.4810534493563 +483.21766788667674,386.8516840325469,-498.3917349982072 +-494.33243366967747,257.72117068900434,524.3422109673556 +752.9712261747311,704.2791277089516,929.7659883277063 +162.76979067302227,817.3111226807193,617.0265465208215 +789.3352486280271,-976.7467974292667,931.8059837316218 +-52.93967430704333,596.3659791496857,-745.5917613244383 +-208.11780837205185,-457.07867395801816,-416.682458998126 +-753.4887600982365,611.5276650860139,-981.5153708378436 +-374.989086029595,-651.17891356717,178.0778812166809 +-491.4951947709123,-482.00309094380066,-23.323712009362566 +305.3780786818513,-757.3905908696728,-648.9770950690076 +-505.6505108109648,947.496428235921,-205.69500011415926 +197.98018126205307,-516.9143745680442,-19.080949685024166 +-851.7616512280839,-930.5157081553461,-62.532946357079595 +-202.6814249631759,-726.2393606163446,375.20285784146745 +985.8069817985288,-208.70635760657512,249.11727183478888 +925.9518847289714,663.0699448937505,-72.89555339462845 +474.97896891983874,-743.729919498952,24.207710927598328 +-441.87944564012696,-677.6726242076778,-147.43818749093032 +-737.9708911327712,397.970216348971,-87.51991189332898 +62.28926512932753,-707.248122663686,-720.4566778130111 +166.83087052024825,970.0194956588925,-807.4988335245488 +-428.5371428684375,738.9182330757751,-855.455975489526 +751.7714427339026,48.57196674950228,-183.4664521471483 +-380.63887129708826,-405.7656837443162,-388.3948351010424 +769.6061619203915,447.590460349571,339.4460156623011 +597.4982979040014,-485.77067399171005,236.0856241635115 +-79.86752208409814,564.8832704003867,-381.487779053429 +286.3572337397916,764.424823634627,-195.69904761014254 +-866.7558252650771,32.10164468358562,-308.0550243859482 +344.4507610943499,902.0658494972122,-28.783364006305987 +-67.61953968893226,309.1696003829204,-793.0049928128647 +-492.9876221499707,837.9586510007971,339.8852267275324 +-973.1119120331675,-590.7490548819603,365.67453205779816 +528.7984051251485,679.7191453480837,-415.6463932359102 +862.0571925551253,105.89378715578482,393.0780447757859 +193.477725559816,-754.5198906507591,926.2293187697596 +-754.2488402116946,-490.2360871776328,627.2557604459603 +237.19392300220284,676.298330752714,31.4723767480898 +-246.0135292667303,843.6909990955699,-927.4953649704103 +712.2604407060917,-538.3644296244368,697.4726555079355 +-721.6067731662288,160.43792738108095,776.2158380229441 +-52.92070620221898,493.13334760678595,609.3432357111169 +472.9884174335584,850.6594737491966,-106.33153896014267 +-653.7491216696885,-904.3778725950405,-507.0802607249898 +-713.6049922395158,115.89748286896088,-630.109325576536 +-922.1325854212577,-928.0203422626643,663.1389967297232 +182.89986288604973,-283.8293962132436,788.4560854804938 +-859.6067771845728,960.6441454556518,232.58358050892207 +-633.071492062303,358.13819795393715,526.7625195671253 +-141.314433258451,723.2652124910949,-698.5351854070593 +-442.32483284478326,-813.0152768320204,-578.2443187852957 +-522.5423761777099,835.2663818434203,-843.7806224976875 +-145.16975962458116,64.79737445382602,797.3861076043215 +995.392437322427,506.7762298396717,941.5819811380591 +574.2022650717474,926.4052819428332,414.5414518889104 +-840.4731490978579,-196.15962601464696,293.19456760494086 +-298.56298109149805,-453.23216377244285,154.79853426618206 +867.0037534048697,-930.0362529676929,538.4624070828754 +445.4545560892543,927.9068507765742,861.4224446650871 +524.4651240883857,40.81752936519729,-591.4648935329603 +90.47143665114868,530.7039878393075,791.3384252757862 +579.4240184210983,-609.466129617892,199.37262845611872 +-335.65308093728595,-981.588665218714,-599.5581284226679 +-773.5587001331014,685.4382470789371,-482.9874957043761 +-430.60406222488905,919.8731435977686,-241.8265539022957 +-980.8287197112109,-432.3077033077269,-761.4008387963751 +-794.3828765282921,-845.025419728501,186.51894035075452 +-621.3045527402828,-277.51441191797915,724.0354322600335 +-151.32372040744872,831.3827001032753,-4.123893208787422 +-202.32677032048855,500.7778541814032,-853.6498024639958 +-821.0432340351653,303.9474278459213,-26.118573521503436 +580.8305006384205,832.5416746870628,-223.26624465690497 +192.82005316929258,1.3932555906197877,963.2213112848658 +662.1688147131904,823.4754165547072,-491.31982484479164 +545.0528463251887,-469.0535500047022,-582.5149331432202 +888.5323193111017,-961.3911665642668,930.7774073268592 +-701.4762060223876,638.8761635865362,-448.15489386379386 +-298.5953451385452,-566.4845773560301,171.02808496215926 +-303.80890498425185,314.78607898932637,-968.7053641158681 +-871.2502329699207,-800.6776945375027,-162.01262937953788 +629.5923453199521,776.3558207567653,-510.3785198781985 +148.73944847802795,536.729985385201,-422.34114016078263 +-181.98452652745357,47.94840537142795,-730.2503071839046 +-948.0354125484394,-694.3883813634335,253.70724250706667 +-852.7634769326366,-620.6072702997434,-324.2922286093925 +-844.2598713872674,-616.6014576767311,822.5395779670221 +-961.4017355460305,306.86384834872433,-231.1821381696302 +345.2974788647423,177.3834407268091,-553.0024912907114 +694.418975146777,-16.11923478128665,645.0720378269434 +-187.9749276235616,969.3711078304782,540.9787170025927 +931.900410225147,28.652957819717585,-52.61773541859907 +510.9076186505158,760.5825260268605,928.2915917311161 +-350.8961879350005,597.409147685278,-578.7088047289267 +91.14869349089054,-640.3037031816017,-305.2052764993223 +862.7167344129184,-707.8186004538279,264.801790270393 +185.90854585480656,-758.5232945820271,-348.04191246237565 +125.96300903053157,-625.6427820230194,601.2473128256308 +944.3130190694997,-570.4812000750559,-626.1760704188482 +-90.12985640511079,495.5305542800643,-436.7987795294972 +-960.2401826054391,82.44125606578791,913.2011355346153 +-217.44628918610886,-159.73089163379916,937.803434228076 +389.21522325345677,438.34384568425025,125.40401074213514 +949.2184217264833,377.7329688511122,790.0655032103389 +398.75773146644224,470.23164968079186,-419.17815571550693 +-393.04260397236203,565.9692991520585,-406.5874216602008 +125.54014160306315,-501.2953781865961,633.9667616181389 +-778.99729754462,658.8932795233288,205.4596010152036 +-626.1809303458454,84.07077101223626,-435.0023263053191 +-353.0653305390068,-296.9439168062394,-873.3615060553582 +971.9233688028348,-936.9307437375518,324.9937463685569 +-257.54470448513894,292.0205818933978,-287.5034938248324 +347.5012925177175,458.4710189367215,381.10528079928963 +-772.0760372836954,313.7864693093693,-440.0249010918054 +-942.397258861333,-170.33865622209214,-132.9137943923979 +-65.65173329510696,409.6483307814324,-382.31238171508176 +-369.4389737921548,-878.8954875174788,373.6424319845919 +135.6521827991678,-301.1497746124239,410.3779578347094 +74.71549845375444,-61.510108258920695,22.649087322252853 +272.696250534113,320.0052091491989,-422.0843617185657 +-718.5132732176935,-686.7316376189625,278.78177180600323 +745.7465715342519,-181.00744330889643,-660.9596793410752 +513.2049965877093,664.9789488388972,761.1648862419331 +213.6628578274665,721.4571187761694,-969.1700831031847 +-785.528396460953,-814.8478658958024,425.209368509466 +-860.8364329128419,-7.271255067385937,-54.58620272742178 +-378.59295288351814,740.8103398841997,-659.133596240008 +-295.0744312015204,548.3430000458582,-939.1553712134315 +345.9008004927373,632.7954527231411,864.5356776763344 +752.5932809829699,-361.2317663326296,172.7282826459052 +-845.4130136990683,-484.25999290398283,-811.5552425049852 +-369.62541969207234,750.3744269174579,-305.6663206514147 +123.79620600285284,-133.23830377011836,-82.16695140252943 +939.1441036731164,-407.6910634722841,254.64893904634278 +-159.87466084110588,-877.7076379046275,-21.338336751528118 +626.6866580902167,-802.4940626366233,-860.8163052073821 +-692.7369592134667,528.8002227786121,447.9907682894759 +130.03553781222104,-63.54719181473524,776.6516294052442 +533.395647666965,623.8845026036104,626.5246027013086 +285.434309491116,-83.97075136810827,729.3555051713008 +852.0148352065014,-952.3879134833139,-896.8902534674974 +917.4865938168746,-445.6787723116105,746.7388792988374 +-222.40976207719473,-761.7998847812888,-839.1135995813315 +-686.9842018390871,-500.2136102652706,-22.963292138347583 +402.9958011315671,972.7971529705999,-116.98651342165795 +36.36988468621962,43.6314027665112,78.86871097587209 +35.48131420892446,-982.4504898761644,-996.5503557803186 +-804.6673637477542,-796.8867931416423,409.79381790959224 +-590.1679349680005,789.4282095112258,857.2126591540391 +951.7866757917975,878.1626097740402,-456.2233561629507 +19.55368940702499,-649.090059606118,612.4193103448663 +776.8634102881922,702.5776785950297,-133.26610260633015 +517.347769373562,-804.8416608474611,-919.5104587614986 +506.4728286175218,-149.28945134263256,991.0985294791383 +-805.4915682889352,711.2553630704674,-40.03386894201651 +654.3003910077541,634.2545643402898,831.9840027241548 +-404.2999774277945,899.5987069240061,-696.6660792847595 +-836.0624448130189,-136.76896525530174,656.6459372836853 +-53.15773873310877,658.5733550610282,459.3736115886104 +-581.1432277221329,897.7632497989275,-878.4376627411932 +796.55941508759,-391.113102019252,0.29616632879856297 +-155.29625459853105,-656.3308861661676,-283.7062671966137 +-614.1311274144094,-592.2270490789523,-625.8863279472394 +-21.96523930681144,595.8627350226311,137.94006752248197 +786.4131771016837,273.08897715344847,378.68023126520893 +335.2144594540064,-101.0816136325177,378.6776444001655 +-860.5845070620777,719.7029438313264,555.6242868878346 +-509.5400835366424,536.0649085081648,-974.714797199963 +-565.5068550382391,-869.7255226582081,560.4538332357893 +511.7483023567743,627.2720476036613,-991.0366133489423 +2.465453356816056,409.67239503467295,-689.1977425219691 +299.5814550252494,-831.7798013806286,-637.3482877913737 +-48.4063700107979,307.1303053622041,-708.2617460922079 +-629.5533383381241,-591.107265868674,-522.5983906020431 +-546.8923029474175,-209.7017830047265,307.5793016734458 +-123.93643373106067,551.9478174997762,438.5370118972296 +-746.9461719018486,-902.3167533585122,755.8831279992121 +-840.3378668742532,-703.3216385605738,-955.7334488837639 +256.67273059730746,164.7411263166971,973.8073328705113 +773.864792634344,-178.31364503818054,-256.82831817493 +-406.2959314400298,-695.1861599242372,-723.8326867959819 +-735.4325839807891,-771.7704856264429,-518.9759151889261 +-386.6627393737672,923.1579420778316,156.94650200377146 +975.1915490265619,-255.06610434865354,-84.74673482111791 +-350.8426816694416,-634.2246982068946,-713.6705844448417 +890.1583956156637,973.6213635975114,-910.1810069825369 +-699.308250536467,-152.95181539795476,-627.3330473111853 +-272.2392127462334,-741.8073002807332,-86.97648655641956 +-456.6107676614814,-296.1898884826784,-811.3746970745049 +-143.74389857971664,966.5152219231397,-342.33390623761943 +752.85854968487,686.3982832473703,904.1168365944211 +580.219024534189,319.1936541176299,713.1688884549153 +-848.7106386853008,-74.33868560238443,978.5124772301176 +539.2003025894644,924.1507560744462,559.2687122669581 +749.7639348842883,413.05926460638193,521.0040088344797 +46.35601967900129,848.4754016282659,650.0778212467233 +687.7699313312644,346.01820192610467,-390.84010582550195 +-928.7404092197213,871.3102588190891,172.24069761099372 +-403.7140577037195,-701.7297843049244,659.0463310015093 +673.0403888951578,629.015936261063,290.16538393357246 +-267.96922481624824,-391.859430439486,-982.8904597636596 +667.2151173764807,-825.134605012715,261.5099960815353 +8.14989368017666,53.378717852702266,853.4256906155467 +-936.7699774575158,546.7844492575446,-895.8952032653857 +-923.6927881292456,-140.36460371723615,-873.8496513140666 +578.287902585824,59.126187296674516,-941.9224346804511 +-918.998627036161,225.33705947895874,612.2236353168098 +-124.40093745045283,109.1613430712489,599.658908099803 +221.01234808363824,-550.479524682361,226.1040517389572 +256.5589181304272,468.21396176225335,241.74837511360238 +938.484260916076,-605.423382565863,902.1813591341524 +76.67898070003253,343.912280989824,-801.0768050956203 +-238.84811724378596,538.7582929263453,413.82203019798067 +-919.7212236691796,93.18852699448917,-823.4436140631811 +991.7128583563247,794.5931770665893,-957.8386791429261 +717.2991578052618,838.8592011168153,-292.9035548730899 +439.0033100955318,-115.7925075844422,310.4649691526881 +-319.36519140361713,-354.88152673346326,-151.13222228484187 +-708.8644826949976,662.2779288707652,-302.6042092767267 +-199.7008921883097,788.1092254042892,-6.752371873657239 +88.50781870172591,912.996249554197,773.4527662899784 +-661.066582223121,-53.56994016378985,942.5924548570911 +-255.26740354279468,-256.85378296759984,-609.9395364216913 +-771.3537717617496,480.6095815119636,540.060937403033 +938.0259270059998,546.836421810726,-513.2950119328026 +-919.7668434229691,970.8747687393204,-319.09860891278856 +-376.05691513515853,811.9104194987649,170.1997970899722 +-570.2576523017308,778.1924854324791,986.7217101094868 +-826.6428776983386,724.5032566049745,-218.9686046312121 +48.14489301340882,829.6319515299615,946.7583915502344 +-475.67217918240124,-574.2984580801724,-838.9668828169763 +123.59570532427597,-972.7912090986634,-176.2034047801269 +-853.2319666959829,-189.548434141332,-920.1356214687814 +670.4345212175378,-580.5220121228683,-343.382579284176 +740.0959932127837,492.53212266441005,-561.923276715883 +-856.2011626850078,431.347553710679,-218.59489862378132 +532.1599982364423,-109.41045524957917,-307.99517405544714 +-97.58918357520702,497.1179713413535,804.4405730807482 +-900.4656068228489,48.223082453910365,-934.3291418322448 +-63.180909951282615,770.5656581938008,-276.8194671593807 +864.9008421612864,261.21694330121886,868.3106875860128 +514.3332508250394,-793.1296667024754,-537.6972648746458 +-211.65909083298766,-659.786235975848,-10.176790446678979 +-57.26368859701881,912.5183960547624,-132.5442342080445 +571.2536085759957,883.8210897029596,753.977661947971 +-582.6647509768163,-7.9402114929114305,-304.5204354081485 +-200.28260972556905,-278.3863475084976,652.7184203500083 +-95.72188975510505,47.388664489376424,964.8947140941493 +-880.0414556169671,-24.084720418502457,548.1234138922323 +-697.6760836235469,223.0631892295478,-521.0704409310665 +734.8082264491352,-345.8006691998414,-341.87436619818095 +196.387757035787,-632.8741837601826,-430.22272219387787 +-166.73629976117695,-292.72427371977926,49.7544360111649 +199.28028813793253,133.3349075003291,308.33662398386446 +-384.50096678435955,-747.1475456899439,521.6150828621542 +701.5607652613639,-485.98753555513554,-185.81608768396052 +-2.8615660728894454,66.65368550587277,318.9803421753036 +-916.7935332893574,442.95416546803403,-876.0579860411794 +-63.42286465426423,655.3422711383882,-97.5693734432075 +-701.8205024635045,970.0676900119195,778.5709241485265 +542.627266450028,-176.9767942015792,-632.3085462214044 +882.8223628370024,64.7022530342781,704.7109207749702 +-315.8099884811485,-329.42336584105885,971.0809613480783 +43.666096989699554,-718.6091522785074,-560.6506440105852 +-36.111441214558454,-915.0581790231773,-74.93202924339903 +-162.1183158397448,558.672530638974,-290.1160710215165 +965.0975230791987,-638.4601613981938,181.97336993626982 +-820.6014059834907,467.7279679879641,989.507376123943 +638.2772755032645,111.4070814406025,-30.517285200615902 +670.0599225336939,871.9481694214485,978.413051596186 +-206.92154487103176,981.8349495890245,-688.147495652337 +-492.90044813618164,-821.9677505322077,-456.5229670310367 +535.8751032360224,705.8487163568993,557.7852902051434 +262.1315563353926,27.93302504529106,417.4085784272929 +-218.33290146555635,682.6167029994037,354.38018795357084 +395.609396988817,71.87198625814244,770.4579684223452 +-495.97053264189503,-237.7046932778985,555.2851393553781 +-14.502207741324582,778.4280268483817,-307.20136047429537 +-261.33966236071046,777.4715787732507,-71.25935963591792 +32.24916840497349,-334.47256932864127,-446.6601156418361 +311.897421676784,-760.3186769175923,758.5452823658186 +558.4062735302157,-618.5034725883945,388.0398916491308 +205.2658425712698,-630.9298985267118,-453.59298789953505 +-182.02699253233118,398.4854704909478,277.44681763401195 +64.46969535339576,536.8210862280685,515.8754792123318 +235.71830812451185,573.9801667696504,-331.4732504415816 +762.4990566452111,229.82017160388136,644.7270276248612 +92.55820958056802,-563.1235100226393,84.82025735661728 +-257.7766724468238,394.99807207418894,-48.41241653052839 +672.2256098553753,356.14502464383327,369.08886606264787 +-565.68933301787,968.4995329825808,683.3504185429774 +578.0097691213891,-339.5695496799451,71.26330569446372 +-725.7936238513428,76.95195332541198,-708.2215070334255 +106.07568797920248,297.4437603098113,-219.60806550019527 +-2.910243337413476,751.3067753491719,-782.8737105943812 +583.4657859993058,-658.4908980076073,-926.5840343907432 +-628.8507945099045,530.0863799409794,-189.74785332627994 +745.041033692364,49.4150823645316,-955.4992961473381 +433.4272192038536,-779.5341825575346,578.7592669238488 +-663.7949003896399,-309.1072283889731,522.5428592507205 +908.4627149528433,-257.1320987065353,658.8004403978716 +-618.4154690483226,614.3595404049822,314.98811851250207 +-614.5129855752632,-394.9920792971768,-736.458222805928 +-234.06597787137343,-592.7027177534452,287.995907260947 +989.0102084411174,-975.9816738314718,81.83962657459733 +147.33319509801936,828.4175793616237,12.010669533875102 +87.4028392898349,-56.69439734322282,-462.1913908770372 +-887.9417335021726,-182.68463558032772,-894.817057518643 +100.98493893183559,-385.41271351541377,67.20480305085562 +-731.4060712096266,865.2599314787192,789.0424870998697 +-620.006981595431,-313.1114334119802,226.98554370395914 +-808.6275853881875,-290.8643577676984,-497.7754263619878 +831.0334574333933,705.0212725784104,159.66548253372753 +40.69267374314836,861.4515890907944,864.8555659576307 +938.6602507033208,-749.2422317836247,-678.8843784736596 +353.47339735977334,82.86895321968973,-963.068190213528 +-876.0499280209613,776.1607645176102,737.7415910787727 +-285.4581560079097,782.1012338610694,187.35014879580353 +611.8112940378037,-145.13785767957143,-773.2033453101825 +-132.54587470796753,-85.40040400620421,101.88838768120604 +-788.8345741911439,982.8037260992228,-511.7263583861873 +-602.8951929258142,53.605837711873164,74.41635878977718 +-120.35852433351147,543.7842926505091,33.30880145720539 +219.39091028996836,447.49277081557125,-949.9497968722668 +141.28836509008966,768.3889424567385,-965.2225141491322 +-189.6357923980778,852.45490041166,-293.69119543492434 +-82.54235159951827,963.0827860886254,-601.3522820988524 +-869.4896217499881,718.8451817226087,736.9306824247369 +-55.84433063997358,28.41434895457246,671.612739235672 +477.11899623159024,-469.7019955659787,-966.2132898569631 +-40.599674932908556,717.8246521912827,791.6693533803243 +912.4523941523078,759.1264752255624,160.08711059619668 +-110.78880152779823,549.699693068198,479.64326873119285 +76.28686016290885,-825.3452548830618,852.1626935738375 +-88.79492499667572,-273.3324361674714,259.13479033754334 +347.67592233395385,-578.6241659393971,673.8776896199124 +-420.12581267524433,-626.6321481713666,-187.2002942910052 +461.1201617949305,930.9163568796068,618.5625287428663 +880.6967553403836,-718.7883918469464,-857.6464022726465 +115.40952381334228,-419.40503391193124,656.1099459385457 +343.9757428046521,941.4563279715887,-490.4152885373916 +-28.431771289535277,2.480954850706553,-521.6464102852476 +180.18679897601555,-113.42802784152093,-106.55688802025281 +-274.5267040550327,-966.1412951489299,44.19047382957797 +-329.5043285993378,-997.3602620313407,-384.11258467613595 +-442.743333820486,-213.10369355272837,-736.2960207132061 +15.36764927016884,384.88070503626,260.371138109145 +607.5098951383814,-95.98342402583773,38.1834606794564 +620.8038817179665,-144.59765836152292,403.19869979919395 +-130.7952625640163,-164.5276109768747,520.4112490583207 +-650.3261690675777,-322.82805611685285,-551.6554465061965 +-281.78011406480573,-539.2503552679519,158.8112621733094 +596.3416052356904,573.2261224358037,-270.99807090241507 +977.5208117885234,187.70872941160155,-201.19939644341048 +671.0785584828509,459.74802528528176,498.5506736482089 +-607.7213005322568,-63.35138526288972,723.6562616492056 +8.076015257514541,366.9054868421006,175.8674660685292 +684.7135754367641,-430.8783204767948,150.95055577272979 +-753.5306639803921,380.42155339893566,463.93567670542416 +-914.3253576220031,351.5819272559702,-170.61969166842732 +-751.8062477806353,-160.18490460306475,-611.5341406088367 +-168.88093575336688,-231.32194408294458,476.78327387211493 +548.4311163327175,214.05730876909342,-954.6263156351049 +862.0445581419881,372.46656019289526,-931.6091001576224 +637.6657984282356,-599.4676905640077,158.44237914221367 +-66.73126009962573,-160.32243528984668,779.4274402487952 +-125.27741687477055,-849.3117648536985,893.2774544299052 +841.0704624792552,368.86537916319753,-64.2149437359501 +-814.2810541129575,581.4962371549523,-849.0441711519421 +-862.7980302097087,74.76768487873619,-679.7435196307196 +-984.539465319302,-153.7731380084275,-725.5655367798681 +-678.9691694386175,-846.1787225293307,-589.8124925527801 +430.96835954877884,617.8546144355828,-94.9327119413988 +13.107631762835354,-934.6899308115948,-861.3674772573663 +-484.8645487009662,87.79684142629503,479.10229746998584 +210.00612267606607,-215.74429002642353,-763.3518539937236 +561.5464697743789,-272.4278968018858,472.10802896557925 +25.957683828683685,477.3241071236505,814.5791229051438 +842.059032107604,70.21356000120682,23.01672953127752 +-468.6430689943255,871.5996630585828,-84.16166560075817 +-744.8175214252457,-134.59017074690018,-745.8934995239921 +5.06336851415017,122.55102971242445,-324.4884770128293 +-856.6987715370307,887.0070712664781,546.7062269668593 +677.7621610102419,-266.26321142754114,521.662060038901 +-29.254209661611526,-597.8330231879081,-751.1532461855734 +-309.89826135588623,-724.8957770497207,996.5379524081372 +-901.6220195359559,-117.71280126184695,-95.81295521923175 +-398.7361428366489,142.7031314138908,-700.0459516969106 +567.8247611744673,-335.1045635047234,182.68517959728342 +431.27847213391874,778.0842353803223,671.5748729044003 +216.61805620711925,-223.21363923222611,6.409340149927857 +537.4695867576052,755.091085118946,-792.4361436466563 +-230.28747501389307,552.2331968270012,-136.696474812078 +-335.5444718674323,-177.35460635346078,205.68949357270162 +999.610288267603,-14.015141790936468,-583.0110500914789 +-674.3068494418105,-915.3005050471714,117.6344698366429 +89.14418297766838,-589.5321464393817,390.658812905134 +482.2140832593616,-481.8035892357775,-311.8004719405269 +980.9433446945134,-251.4710642985316,521.6033435122035 +-94.54914674012002,586.6896557219518,538.0464775652958 +335.5120503970711,709.5566925911585,878.4369897553704 +159.9666409041679,-525.0621855545086,-202.7420767118499 +516.6114270265864,301.766970247739,-644.4033228695025 +-897.5209177071506,365.9231870841297,-497.84195194130933 From 51b1fa5d892ae20ed5d090aaf67309e3b5c4cc77 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 14 Apr 2026 23:51:45 +0800 Subject: [PATCH 541/654] add constraint annotation for staging --- .../codegen/ReflectionInstrumenter.scala | 9 +++- .../scala/hkmc2/semantics/Elaborator.scala | 4 +- .../src/main/scala/hkmc2/semantics/Term.scala | 10 +++- .../src/main/scala/hkmc2/syntax/Tree.scala | 16 +++++- .../src/main/scala/hkmc2/utils/utils.scala | 3 +- .../src/test/mlscript-compile/Block.mls | 14 +++-- .../src/test/mlscript-compile/Shape.mls | 2 +- .../mlscript-compile/SpecializeHelpers.mls | 7 ++- .../shared/src/test/mlscript/ShapeSetTest.mls | 15 ++++-- .../test/mlscript/block-staging/PrintCode.mls | 12 +++-- .../test/mlscript/block-staging/ShapeProp.mls | 16 +++--- .../block-staging/ShapeSetHelpers.mls | 27 ++++++---- .../test/mlscript/block-staging/Syntax.mls | 53 +++++++++---------- 13 files changed, 116 insertions(+), 72 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index c632de33f5..f0c92c2b38 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -249,7 +249,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // maintain parameter names in instrumented code def transformParamList(ps: ParamList)(using ctx: Context)(k: (Path, Context) => Block) = - ps.params.map(p => ctx => transformSymbol(p.sym)(using ctx)).chainContext((ps, ctx) => tuple(ps)(k(_, ctx))) + ps.params.map(p => (ctx: Context) => (k: (Path, Context) => Block) => + transformOption(p.flags.reflConstraint, { + case ReflectionConstraint.Dynamic => k => blockCtor("Dynamic", Nil)(k(_, ctx)) + case ReflectionConstraint.Static => k => blockCtor("Static", Nil)(k(_, ctx)) + })(using ctx): (constraint, ctx) => + transformSymbol(p.sym)(using ctx): (sym, ctx) => + blockCtor("Param", Ls(constraint, sym))(k(_, ctx)) + ).chainContext((ps, ctx) => tuple(ps)(k(_, ctx))) def transformParamsOpt(pOpt: Opt[ParamList])(using ctx: Context)(k: (Path, Context) => Block) = transformOption(pOpt, transformParamList)(k) diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index 486b8aa511..a2a0cde668 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -1396,9 +1396,9 @@ extends Importer with ucs.SplitElaborator: val allParams = ps.fold(Nil): _.params.flatMap: // Only `pat` flag is `true`. - case p @ Param(flags = FldFlags(false, false, true, false)) => S(p) + case p @ Param(flags = FldFlags(N, false, false, true, false)) => S(p) // All flags are `false`. - case p @ Param(flags = FldFlags(false, false, false, false)) => S(p) + case p @ Param(flags = FldFlags(N, false, false, false, false)) => S(p) case Param(flags, sym, _, _) => raise(ErrorReport(msg"Unexpected pattern parameter ${sym.name} with modifiers: ${flags.show}" -> sym.toLoc :: Nil)) N diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala index 96177f1926..99b7b130b8 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Term.scala @@ -1220,11 +1220,17 @@ case class TypeDef( annotations: Ls[Annot], ) extends TypeLikeDef +enum ReflectionConstraint: + case Dynamic, Static + def str: Str = this match + case Dynamic => "@dynamic" + case Static => "@static" // TODO Store optional source locations for the flags instead of booleans -final case class FldFlags(mut: Bool, spec: Bool, pat: Bool, isVal: Bool): +final case class FldFlags(reflConstraint: Opt[ReflectionConstraint], mut: Bool, spec: Bool, pat: Bool, isVal: Bool): def show: Str = val flags = Buffer.empty[String] + reflConstraint.map(flags += _.str) if mut then flags += "mut" if spec then flags += "spec" if pat then flags += "pattern" @@ -1233,7 +1239,7 @@ final case class FldFlags(mut: Bool, spec: Bool, pat: Bool, isVal: Bool): override def toString: String = "‹" + show + "›" object FldFlags: - val empty: FldFlags = FldFlags(false, false, false, false) + val empty: FldFlags = FldFlags(N, false, false, false, false) object benign: // * Some flags like `mut` and `module` are "benign" in the sense that they don't affect code-gen def unapply(flags: FldFlags): Bool = diff --git a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala index 7f9d1b29d9..5e2b2b5536 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala @@ -9,7 +9,7 @@ import mlscript.utils.*, shorthands.* import hkmc2.utils.* import hkmc2.Message.MessageContext -import semantics.{FldFlags, TermDefFlags, Modulefulness} +import semantics.{FldFlags, TermDefFlags, Modulefulness, ReflectionConstraint} import semantics.Elaborator.State import Tree._ @@ -318,6 +318,20 @@ enum Tree extends AutoLocated: // fun f(using <...>) case TermDef(Ins, inner, N) => go(inner, flags, modifiers + Ins) + // fun f(@dynamic <...>) + case Annotated(Ident("dynamic"), inner) => + println(flags) + if flags.reflConstraint.isDefined then L: + ErrorReport: + msg"At most one reflection constraint can be added for each parameter." -> t.toLoc :: Nil + else go(inner, flags.copy(reflConstraint = S(ReflectionConstraint.Dynamic)), modifiers) + // fun f(@static <...>) + case Annotated(Ident("static"), inner) => + println(flags) + if flags.reflConstraint.isDefined then L: + ErrorReport: + msg"At most one reflection constraint can be added for each parameter." -> t.toLoc :: Nil + else go(inner, flags.copy(reflConstraint = S(ReflectionConstraint.Static)), modifiers) // * Base Case (for `using` clause) // fun f(using A) diff --git a/hkmc2/shared/src/main/scala/hkmc2/utils/utils.scala b/hkmc2/shared/src/main/scala/hkmc2/utils/utils.scala index 3cc1052cb8..b0b8bc347f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/utils/utils.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/utils/utils.scala @@ -74,8 +74,9 @@ class DebugPrinter: val flags = Buffer.empty[Str] if isMethod then flags += "method" flags.mkString("(", ", ", ")") - case FldFlags(mut, spec, pat, value) => + case FldFlags(reflConstraint, mut, spec, pat, value) => val flags = Buffer.empty[Str] + reflConstraint.map(flags += _.str) if mut then flags += "mut" if spec then flags += "spec" if pat then flags += "pat" diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d4577f8607..c15271245c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -20,7 +20,7 @@ type Opt[A] = Option[A] type Literal = null | undefined | Str | Int | Num | Bool -type ParamList = Array[Symbol] +type ParamList = Array[Param] class Symbol(val name: Str) class ClassSymbol(val name: Str) extends Symbol(name) @@ -28,6 +28,13 @@ class VirtualClassSymbol(val name: Str) extends ClassSymbol(name) class ConcreteClassSymbol(val name: Str, val value: Class, val paramsOpt: Opt[ParamList], val auxParams: Array[ParamList]) extends ClassSymbol(name) class ModuleSymbol(val name: Str, val value: Class) extends Symbol(name) class NoSymbol() extends Symbol("$no_symbol$") + +class Constraint with + constructor + Dynamic() + Static() + +class Param(val constraint: Opt[Constraint], val sym: Symbol) class Arm(val cse: Case, val body: Block) fun isPrimitiveType(sym: Symbol) = @@ -158,8 +165,9 @@ class Printer(val owner: Opt[Class]) with fun showArm(a) = showCase(a.cse) + " then" + (if a.body is Return then " " else "\n ") + indent(showBlock(a.body)) - fun showParams(p: ParamList) = - "(" + p.map(showSymbol(_)).join(", ") + ")" + fun showParams(pl: ParamList) = + // do not print constraints to next stage + "(" + pl.map(p => showSymbol(p.sym)).join(", ") + ")" fun showParamsOpt(p) = if p is diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index c02987ac90..6d2cb85ae4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -28,7 +28,7 @@ fun show(s: Shape) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is [Class(ConcreteClassSymbol(_, _, paramsOpt, auxParams), params), Lit(n)] and n is Str and paramsOpt is Some(paramsSymb) and - paramsSymb.map(_.name).indexOf(n) is + paramsSymb.map(_.sym.name).indexOf(n) is -1 then [] n then [params.(n)] [Class(ConcreteClassSymbol, p), Dyn] then [Dyn()] diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index ebcde8b268..ede1ffe469 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -342,14 +342,13 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = defn is FunDefn(Symbol(_), ps, body) then let isMethod = shapes.length > ps.length // TODO: clean up let paramShapes = if isMethod then shapes.slice(1) else shapes - let newPs = if isMethod then [ [Symbol("_this"), ...ps.(0)], ...ps.slice(1) ] else ps let ctx = if isMethod then let clsSymb = shapes.(0).(0).values().0.sym Ctx(new Map(), mut [], Some(clsSymb), shapes.(0).(0)) else Ctx.empty() if isMethod do ctx.add(ValueRef(Symbol("_this")), shapes.(0).(0)) - ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) - cache.setFun(newName, [FunDefn(Symbol(newName), newPs, body), mkDyn()]) + ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2.sym), paramShapes.(i).(j)))) + cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) let propFun = prop let res = propFun(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) @@ -358,7 +357,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let v2p = val2path(valOfSet(res.1), allocs) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) else bodyWithScoped - let entry = cache.setFun(newName, [FunDefn(Symbol(newName), newPs, finalBody), res.1]) + let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, finalBody), res.1]) [entry.0.sym.name, entry.1] else throw Error("cache error") class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 92a03174ff..60949b680c 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -8,7 +8,7 @@ import "../mlscript-compile/Option.mls" open ShapeSet open Shape { Lit, Arr, Class, Dyn } open Option -open Block { Tup, ConcreteClassSymbol, Symbol } +open Block { Tup, ConcreteClassSymbol, Param, Symbol } let x = mkBot() //│ x = {} @@ -31,19 +31,24 @@ mkArr([x, y]) //│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} class C(val a) -val clsSym = ConcreteClassSymbol("C", C, Some([Symbol("a")]), []) -//│ clsSym = ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []) +val clsSym = ConcreteClassSymbol("C", C, Some([Param(None, Symbol("a"))]), []) +//│ clsSym = ConcreteClassSymbol( +//│ "C", +//│ fun C { class: class C }, +//│ Some([Param(None, Symbol("a"))]), +//│ [] +//│ ) :fixme let x = liftMany([Class(clsSym, [Lit(42)]), Arr([Lit(1), Lit("a")])]) let y = liftMany([Lit(1), Lit("a")]) selSet(x, y) //│ ═══[RUNTIME ERROR] Error: Array out of bound -//│ x = {Arr([Lit(1), Lit("a")]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(42)])} +//│ x = {Arr([Lit(1), Lit("a")]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), []), [Lit(42)])} //│ y = {Lit("a"),Lit(1)} mkClass(clsSym, [mkLit(1)]) -//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("a")]), []), [Lit(1)])} +//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), []), [Lit(1)])} filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)])]), Tup(3)) //│ = {Arr([Lit(1), Lit(2), Lit(3)])} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 51715a0b11..e818ff00b3 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -9,7 +9,7 @@ open Option fun printCode(x) = Printer.default.printCode(x) -printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false))) +printCode(FunDefn(Symbol("f"), [[Param(None, Symbol("x"))]], Return(ValueLit(1), false))) //│ > fun f(x) = 1 printCode(ValueLit(true)) @@ -35,7 +35,7 @@ printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) class B class D(val x)(y) extends B let bSym = ConcreteClassSymbol("B", B, None, []) -let dSym = ConcreteClassSymbol("D", D, Some([Symbol("x")]), [[Symbol("y")]]) +let dSym = ConcreteClassSymbol("D", D, Some([Param(None, Symbol("x"))]), [[Param(None, Symbol("y"))]]) printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) printCode(Instantiate(ValueRef(dSym), [Arg(ValueLit(0))])) @@ -44,8 +44,12 @@ printCode(Tuple([Arg(ValueRef(Symbol("x"))), Arg(ValueRef(Symbol("y")))])) //│ > new D(0) //│ > [x, y] -let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) -//│ f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) +let f = FunDefn(Symbol("f"), [[Param(None, Symbol("x"))]], Return(ValueLit(1), false)) +//│ f = FunDefn( +//│ Symbol("f"), +//│ [[Param(None, Symbol("x"))]], +//│ Return(ValueLit(1), false) +//│ ) printCode(f) printCode(ClsLikeDefn(dSym, [f], [])) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 7c0b269dc6..0536b38207 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -308,14 +308,14 @@ print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") //│ > class L1(y) with //│ > () -//│ > fun call_L1_Lit1_dot_Lit5(_this, x) = 8 -//│ > fun call_L1_Lit1_dot_Lit8(_this, x) = 11 +//│ > fun call_L1_Lit1_dot_Lit5(x) = 8 +//│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () -//│ > fun call_L2_Lit2_dot_Lit5(_this, x) = 7 -//│ > fun call_L2_Lit2_dot_Lit7(_this, x) = 9 -//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(_this, x) = x + y -//│ > fun call_L2_Lit2_dot_Dyn(_this, x) = x + y +//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 +//│ > fun call_L2_Lit2_dot_Lit7(x) = 9 +//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y +//│ > fun call_L2_Lit2_dot_Dyn(x) = x + y staged class A(val x: Int) with fun f(y: Int) = this.x + y @@ -347,9 +347,9 @@ print(B.class."cache$B") //│ > undefined print(B.class.f_instr()) -//│ > FunDefn(Symbol("f"), [[Symbol("y")]], Return(Select(ValueRef(ConcreteClassSymbol("B", fun B { class: class B { class$cache$B: class B(x) with +//│ > FunDefn(Symbol("f"), [[Param(None, Symbol("y"))]], Return(Select(ValueRef(ConcreteClassSymbol("B", fun B { class: class B { class$cache$B: class B(x) with //│ > () -//│ > fun f_B_Dyn_dot_A_Dyn(_this, y) = x, class$generatorMap$B: Map(1) {"f" => fun f_gen} } }, Some([Symbol("x")]), [])), Symbol("x")), false)) +//│ > fun f_B_Dyn_dot_A_Dyn(y) = x, class$generatorMap$B: Map(1) {"f" => fun f_gen} } }, Some([Param(None, Symbol("x"))]), [])), Symbol("x")), false)) :todo staged class D(val x) extends B(x+1) with diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 5b8cd16dff..9bc0f222a9 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -8,7 +8,7 @@ import "../../mlscript-compile/CachedHash.mls" import "../../mlscript-compile/SpecializeHelpers.mls" import "../../mlscript-compile/Runtime.mls" open Option -open Block { Symbol, ConcreteClassSymbol, Tup, Case, Printer } +open Block { Param, Symbol, ConcreteClassSymbol, Tup, Case, Printer } open Shape { Arr, Class, Dyn, Lit } open ShapeSet open SpecializeHelpers { sov } @@ -45,7 +45,7 @@ valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)])])) :re valOf(mkDyn()) -//│ ═══[RUNTIME ERROR] Error: Unknown shape +//│ ═══[RUNTIME ERROR] Error: Unknown shape: {Dyn()} valOfSet(mkLit(0)) //│ = 0 @@ -65,15 +65,20 @@ selSet(mkDyn(), mkLit(5)) //│ = {Dyn()} :fixme -let a = Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]) +let a = Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")]) let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) selSet(x, liftMany([Lit("a"), Lit(2)])) //│ ═══[RUNTIME ERROR] Error: Array out of bound //│ a = Class( -//│ ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), +//│ ConcreteClassSymbol( +//│ "A", +//│ undefined, +//│ Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), +//│ [] +//│ ), //│ [Lit(42), Lit("c")] //│ ) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Dyn()} +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")]),Dyn()} selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) //│ = {Lit(1)} @@ -96,7 +101,7 @@ filterSet(mkDyn(), Block.Tup(2)) //│ = {Arr([Dyn(), Dyn()])} let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()]), Arr([Lit(1), Lit(2), Lit(3)]), a]) -//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")]),Lit(1),Lit(null)} +//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match @@ -106,7 +111,7 @@ filterSet(filterShapes, Block.Lit(1)) assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = {Class(ConcreteClassSymbol("A", undefined, Some(["a", "b"]), []), [Lit(42), Lit("c")])} +//│ = {Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")])} filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) //│ = {Lit(1)} @@ -177,16 +182,16 @@ sop(Ctx.empty().add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) val x = Symbol("x") -val C = ConcreteClassSymbol("C", undefined, Some(["a"]), []) +val C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []) val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) let ctx = Ctx.empty() ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ = {} -//│ C = ConcreteClassSymbol("C", undefined, Some(["a"]), []) +//│ C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []) //│ ctx = Ctx( //│ Map(1) { -//│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some(["a"]), []), [Lit("pass")])} +//│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []), [Lit("pass")])} //│ }, //│ [], //│ None, @@ -347,7 +352,7 @@ module M with :ignore val MSym = ValueRef(ModuleSymbol("M", M)) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.348: val MSym = ValueRef(ModuleSymbol("M", M)) +//│ ║ l.353: val MSym = ValueRef(ModuleSymbol("M", M)) //│ ║ ^ //│ ╙── Module argument passed to a non-module parameter. //│ MSym = ValueRef(ModuleSymbol("M", class M)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index b0b0907f92..f46b308bdd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -28,25 +28,15 @@ staged module A //│ define A⁰ as class A¹ //│ staged module A² { //│ constructor { -//│ let tmp3, tmp4, tmp5, tmp6, sym, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12; -//│ begin -//│ set tmp5 = []; -//│ set tmp6 = new globalThis⁰.Map﹖(tmp5); -//│ set sym = Block⁰.ModuleSymbol﹖("A", A²); -//│ set tmp7 = symbolMap.checkMap﹖("moduleMap", A², sym); -//│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp7, tmp6); -//│ define cache$A⁰ as val cache$A¹ = tmp8; -//│ set tmp3 = []; -//│ set tmp4 = new globalThis⁰.Map﹖(tmp3); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp4; -//│ end; -//│ set tmp9 = A².cache$A﹖.toString﹖(); -//│ set tmp10 = globalThis⁰.console﹖.log﹖(tmp9); -//│ set tmp11 = globalThis⁰.console﹖.log﹖(A².generatorMap$A﹖); -//│ set tmp12 = globalThis⁰.console﹖.log﹖(symbolMap); -//│ end -//│ } -//│ method generate⁰ = fun generate¹() { +//│ let tmp3, tmp4, tmp5, sym, tmp6, tmp7; +//│ set tmp5 = new globalThis⁰.Map﹖(); +//│ set sym = Block⁰.ModuleSymbol﹖("A", A²); +//│ set tmp6 = symbolMap.checkMap﹖("moduleMap", A², sym); +//│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp6, tmp5); +//│ define cache$A⁰ as val cache$A¹ = tmp7; +//│ set tmp3 = []; +//│ set tmp4 = new globalThis⁰.Map﹖(tmp3); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp4; //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { @@ -61,13 +51,18 @@ staged module A //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > module A with -//│ > () -//│ > -//│ > Map(0) {} -//│ > SymbolMap { -//│ > classMap: Map(0) {}, -//│ > moduleMap: Map(1) { -//│ > [class A] { 'cache$A': [FunCache], 'generatorMap$A': Map(0) {} } => ModuleSymbol { name: 'A', value: [Function] } -//│ > } -//│ > } + +:el +fun f(@dynamic x) = x +//│ Elab: { fun member:f(@dynamicx) = x⁰; } + +fun g(@static x) = x + +:e +fun h(@dynamic @static x) = x +//│ ╔══[COMPILATION ERROR] At most one reflection constraint can be added for each parameter. +//│ ║ l.62: fun h(@dynamic @static x) = x +//│ ╙── ^^^^^^^^^ +//│ ╔══[COMPILATION ERROR] Name not found: x +//│ ║ l.62: fun h(@dynamic @static x) = x +//│ ╙── ^ From 580e86d9fdd403e1ccc94ed2099d93f2b892ebf2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 15 Apr 2026 23:15:08 +0800 Subject: [PATCH 542/654] add check to reflection constraint --- .../src/test/mlscript-compile/SpecializeHelpers.mls | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 4a52c82177..6616ddc102 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -409,7 +409,13 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = else Ctx.empty() if isMethod do ctx.add(ValueRef(Symbol("_this")), Some(shapes.(0).(0))) - ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2.sym), paramShapes.(i).(j)))) + ps.forEach((p, i, _) => p.forEach((p2, j, _) => + let shape = if p2.constraint is + Some(Dynamic) then mkDyn() + Some(Static) and not staticSet(paramShapes.(i).(j)) then throw Error("Non-static shape given to static parameter " + p2) + None then paramShapes.(i).(j) + ctx.add(ValueRef(p2.sym), shape) + )) cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) let res = prop(ctx, body) From 5168b920c596bdd8ac5663bb64ad42b528b2a22f Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 15 Apr 2026 23:47:48 +0800 Subject: [PATCH 543/654] fix abug with ctor propagation --- .../mlscript-compile/SpecializeHelpers.mls | 92 ++++---- .../test/mlscript/block-staging/ShapeProp.mls | 198 +++++++----------- 2 files changed, 122 insertions(+), 168 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index ef52a16f36..7763658262 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -62,18 +62,16 @@ class Ctx( // we need to keep track of fields defined in parent class, // which is stored in ctorCtx fun clearCtx = Ctx(new Map(), ctorCtx, allocs, thisShape) - fun add(path, ss) = + fun add(path: Path, ss: ShapeSet) = let ps = showCtxPath(path) if ctx.has(ps) then ctx.set(ps, union(ctx.get(ps), ss)) else ctx.set(ps, ss) this - fun addCtor(ps, ss) = - if ctorCtx.has(ps) then - ctorCtx.set(ps, union(ctorCtx.get(ps), ss)) - else - ctorCtx.set(ps, ss) + // Later ValDefn (in derived class) shadows earlier ValDefn (in base class) + fun addValDefn(ps: String, ss: ShapeSet) = + ctorCtx.set(ps, ss) this module Ctx with fun empty() = Ctx(new Map(), new Map(), mut [], None) @@ -161,7 +159,7 @@ fun sor(ctx, r) = if r is let cacheName = getCacheName(clsName, true) let cache = actualClass.(cacheName) not (cache is undefined) then - let res = SpecializeHelpers.specializeCtor(cache, clsSymb, argsShape, ctx.clearCtx) + let res = SpecializeHelpers.specializeCtor(clsSymb, argsShape, ctx.clearCtx) [End(), r, res] else throw Error("cache not found in staged class") else [End(), r, mkClass(clsSymb, argsShape)] @@ -177,16 +175,16 @@ fun sor(ctx, r) = if r is throw Error("runtime.Tuple.slice not handled in shape propagation") Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ClassSymbol then // class within module [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] // FIXME - ValueRef(clsSymb) and clsSymb is ClassSymbol then // global class - if isStagedClass(clsSymb.value) then + ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class + isStagedClass(clsSymb.value) then let actualClass = getActualClass(clsSymb.value) let clsName = actualClass.(Symbols.definitionMetadata).1 let cacheName = getCacheName(clsName, true) if not (actualClass.(cacheName) is undefined) then - let res = SpecializeHelpers.specializeCtor(actualClass.(cacheName), clsSymb, argShapes, ctx.clearCtx) + let res = SpecializeHelpers.specializeCtor(clsSymb, argShapes, ctx.clearCtx) [End(), r, res] - else [End(), r, mkDyn()] // TODO make unstaged object shape - else [End(), r, mkDyn()] // TODO make unstaged object shape + else throw Error("class is staged but cache not found") + else [End(), r, mkClass(clsSymb, argShapes)] // TODO make unstaged object shape ValueRef(symb) and // built-in or top-level let name = symb.name args is @@ -210,7 +208,7 @@ fun sor(ctx, r) = if r is "!==" then lit(l1 !== l2) "&&" then lit(l1 && l2) "||" then lit(l1 || l2) - else [End(), r, mkDyn()] + else [End(), r, mkDyn()] // FIXME: evaluate path Select(ValueRef(ModuleSymbol(name, value)), Symbol(fld)) and let mapPropName = getGenMapName(name, false) let cachePropName = getCacheName(name, false) @@ -324,11 +322,9 @@ fun prop(ctx, b) = if b is Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) then dispatchMethodCall(ctx, Some(x), None, symb, f, args, restBlock) Define(ValDefn(opt, sym, rhs), restBlock) and - sor(ctx, rhs) is [blk, r1, s1] then - let newCtx = ctx.add(ValueRef(sym), s1) - if opt is Some(c) do - newCtx.addCtor(sym.name, s1) - if prop(newCtx, restBlock) is [b2, s2] then + sor(ctx, rhs) is [blk, r1, s1] and + do ctx.addValDefn(sym.name, s1) + prop(ctx, restBlock) is [b2, s2] then [concat(blk, Define(ValDefn(opt, sym, r1), b2)), s2] Assign(x, r, restBlock) and sor(ctx, r) is [blk, r1, s1] and @@ -374,16 +370,15 @@ fun prop(ctx, b) = if b is fun propStub(ctx, body) = [body, mkDyn()] -fun buildShapeName(s: Shape): Str = - if s is - Dyn then "Dyn" - Lit(lit) and lit is Str then "Str" + lit - Lit(lit) then "Lit" + lit.toString() - Arr(shapes) then "Arr_" + shapes.map(buildShapeName).join("_") + "_end" - Class(sym, params) and params.length is - 0 then sym.name - else sym.name + "_" + params.map(buildShapeName).join("_") - else throw Error("unknown shape when building shape name" + s.toString()) +fun buildShapeName(s: Shape): Str = if s is + Dyn then "Dyn" + Lit(lit) and lit is Str then "Str" + lit + Lit(lit) then "Lit" + lit.toString() + Arr(shapes) then "Arr_" + shapes.map(buildShapeName).join("_") + "_end" + Class(sym, params) and params.length is + 0 then sym.name + else sym.name + "_" + params.map(buildShapeName).join("_") + else throw Error("unknown shape when building shape name" + s.toString()) fun buildShapeSetName(ss: ShapeSet): Str = let vals = ss.values() @@ -412,6 +407,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), paramShapes.(i).(j)))) cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) + let res = prop(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) @@ -424,30 +420,26 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = else bodyWithScoped let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, finalBody), actualRetShape]) [entry.0.sym.name, entry.1] + else throw Error("instrumented function is not a FunDefn") else throw Error("cache error") -fun specializeCtor(cache: FunCache, classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], ctx: Ctx) = +fun specializeCtor(classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], ctx: Ctx) = let newName = specializeName("class$ctor$", [argShapes]) - if cache.getFun(newName) is - Some(x) then [x.0.sym.name, x.1] - None and - let actualClass = getActualClass(classSymb.value) - let defn = actualClass."class$ctor$_instr"() - defn is FunDefn(Symbol(_), ps, body) then - ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), argShapes.(j)))) - - if not (actualClass."preCtor$_instr" is undefined) and actualClass."preCtor$_instr"() is FunDefn(_, _, preCtorBody) then do - prop(ctx, preCtorBody) - else throw Error("preCtor not found in staged class") - if not (actualClass."class$ctor$_instr" is undefined) and actualClass."class$ctor$_instr"() is FunDefn(_, _, ctorBody) then do - prop(ctx, ctorBody) - else throw Error("ctor not found in staged class") - - mkClassFromMap(cache.owner, ctx.ctorCtx) - - else throw Error("cache error") - - + let actualClass = getActualClass(classSymb.value) + let defn = actualClass."class$ctor$_instr"() + if defn is FunDefn(Symbol(_), ps, body) then + ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2), argShapes.(j)))) + + if not (actualClass."preCtor$_instr" is undefined) and actualClass."preCtor$_instr"() is FunDefn(_, _, preCtorBody) then do + prop(ctx, preCtorBody) + else throw Error("preCtor not found in staged class") + if not (actualClass."class$ctor$_instr" is undefined) and actualClass."class$ctor$_instr"() is FunDefn(_, _, ctorBody) then do + prop(ctx, ctorBody) + else throw Error("ctor not found in staged class") + + mkClassFromMap(classSymb, ctx.ctorCtx) + else throw Error("instrumeted method is not a FunDefn") + class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with val printer = Printer(Some(owner)) fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None @@ -510,4 +502,4 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" + indent("\n" + printer.showBlock(ctorBody)) - + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().join("\n")) + + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().sort().join("\n")) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index bf2af82540..bd33362121 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -38,23 +38,7 @@ Test."test2_gen"(mkDyn()) print(Test."cache$Test") //│ > module Test with //│ > () -//│ > fun test() = 20 //│ > fun f_Lit2_Lit2(x, y) = 4 -//│ > fun fib_Lit4(n) = 3 -//│ > fun fib_Lit3(n) = 2 -//│ > fun fib_Lit2(n) = 1 -//│ > fun fib_Lit1(n) = 1 -//│ > fun pyth_Lit2_Lit4(x, y) = 20 -//│ > fun test2(n) = -//│ > let {dyn, tmp10} -//│ > dyn = Test.pyth_Dyn_Lit2(n, 2) -//│ > tmp10 = *(dyn, 2) -//│ > Test.fib(tmp10) -//│ > fun pyth_Dyn_Lit2(x, y) = -//│ > let {tmp6, tmp7} -//│ > tmp6 = NonStaged.sq(x) -//│ > tmp7 = 4 -//│ > tmp6 + tmp7 //│ > fun fib(n) = //│ > let {n, tmp2, tmp3, tmp4, tmp5} //│ > if n is @@ -67,6 +51,22 @@ print(Test."cache$Test") //│ > tmp4 = n - 2 //│ > tmp5 = Test.fib(tmp4) //│ > tmp3 + tmp5 +//│ > fun fib_Lit1(n) = 1 +//│ > fun fib_Lit2(n) = 1 +//│ > fun fib_Lit3(n) = 2 +//│ > fun fib_Lit4(n) = 3 +//│ > fun pyth_Dyn_Lit2(x, y) = +//│ > let {tmp6, tmp7} +//│ > tmp6 = NonStaged.sq(x) +//│ > tmp7 = 4 +//│ > tmp6 + tmp7 +//│ > fun pyth_Lit2_Lit4(x, y) = 20 +//│ > fun test() = 20 +//│ > fun test2(n) = +//│ > let {dyn, tmp10} +//│ > dyn = Test.pyth_Dyn_Lit2(n, 2) +//│ > tmp10 = *(dyn, 2) +//│ > Test.fib(tmp10) class C(val x) @@ -75,28 +75,20 @@ staged module TestIf with C(2) then "C(2)" C then "C" else "else" - fun test() = + fun test() = f(C(2)) f(C(3)) f(2) -TestIf."test_gen"() +TestIf."test_gen"() print(TestIf."cache$TestIf") //│ > module TestIf with //│ > () -//│ > fun test() = "else" -//│ > fun f(x) = -//│ > let {arg_C_0_} -//│ > if x is -//│ > C then -//│ > arg_C_0_ = x.x -//│ > if arg_C_0_ is -//│ > 2 then "C(2)" -//│ > else "C" -//│ > else "else" +//│ > fun f_C_Lit2(x) = "C(2)" +//│ > fun f_C_Lit3(x) = "C" //│ > fun f_Lit2(x) = "else" +//│ > fun test() = "else" -:noSanityCheck class C(val n) staged module TestIf2 with fun f(x) = @@ -116,27 +108,19 @@ TestIf2."test3_gen"() print(TestIf2."cache$TestIf2") //│ > module TestIf2 with //│ > () -//│ > fun test() = -//│ > let {tmp1} -//│ > tmp1 = C(2) -//│ > TestIf2.f(tmp1) -//│ > fun f(x) = +//│ > fun f_C_Dyn(x) = //│ > let {y, tmp} -//│ > if x is -//│ > C then -//│ > y = x.n -//│ > tmp = () -//│ > y + 1 -//│ > else -//│ > y = 0 -//│ > tmp = () -//│ > 1 +//│ > y = x.n +//│ > tmp = () +//│ > y + 1 +//│ > fun f_C_Lit2(x) = 3 +//│ > fun f_Lit0(x) = 1 +//│ > fun test() = 3 //│ > fun test2(dyn) = //│ > let {tmp2} //│ > tmp2 = C(dyn) -//│ > TestIf2.f(tmp2) +//│ > TestIf2.f_C_Dyn(tmp2) //│ > fun test3() = 1 -//│ > fun f_Lit0(x) = 1 staged module LinearAlgebra with fun _dot(v1, v2, n, acc) = @@ -150,12 +134,6 @@ LinearAlgebra."test_gen"(mkDyn()) print(LinearAlgebra."cache$LinearAlgebra") //│ > module LinearAlgebra with //│ > () -//│ > fun test(x) = -//│ > let {tmp3, tmp4} -//│ > tmp3 = [x, 1, 2] -//│ > tmp4 = [3, 4, 1] -//│ > LinearAlgebra.dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) -//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false @@ -181,6 +159,12 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = true //│ > acc +//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) +//│ > fun test(x) = +//│ > let {tmp3, tmp4} +//│ > tmp3 = [x, 1, 2] +//│ > tmp4 = [3, 4, 1] +//│ > LinearAlgebra.dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) staged class L1(val y) with fun call(x) = x + 2 + y @@ -197,81 +181,46 @@ staged module M with fun test(b) = let y = twice(new L1(1), 5) let m = pick(new L2(2), new L3(3), b) - m - // twice(m, 5) - -M."test_gen"(mkLit(true)) -//│ = [ -//│ "test_Littrue", -//│ {Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ -//│ () \ -//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)]),Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ -//│ () \ -//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(2)])} -//│ ] - -M."test_gen"(mkLit(false)) -//│ = [ -//│ "test_Litfalse", -//│ {Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ -//│ () \ -//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ -//│ () \ -//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(2)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ -//│ () \ -//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(3)])} -//│ ] + twice(m, 5) M."test_gen"(mkDyn()) -//│ = [ -//│ "test", -//│ {Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ -//│ () \ -//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)]),Class(ConcreteClassSymbol("L2", fun L2 { class: class L2 { class$cache$L2: class L2(y) with \ -//│ () \ -//│ , class$generatorMap$L2: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(2)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ -//│ () \ -//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(1)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ -//│ () \ -//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(2)]),Class(ConcreteClassSymbol("L3", fun L3 { class: class L3 { class$cache$L3: class L3(y) with \ -//│ () \ -//│ , class$generatorMap$L3: Map(1) {"call" => fun call_gen} } }, Some([Symbol("y")]), []), [Lit(3)])} -//│ ] +//│ = ["test", {Dyn()}] print(M."cache$M") //│ > module M with //│ > () -//│ > fun test_Littrue(b) = -//│ > let {y, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new L1(1) -//│ > y = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > m = M.pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Littrue(tmp2, tmp3, b) -//│ > m -//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 -//│ > fun pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Littrue(x, y, b) = x -//│ > fun test_Litfalse(b) = -//│ > let {y, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new L1(1) -//│ > y = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > m = M.pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Litfalse(tmp2, tmp3, b) -//│ > m -//│ > fun pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Litfalse(x, y, b) = y +//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > let {obj_1, obj_2} +//│ > if b is +//│ > true then +//│ > obj_1 = new L2(2) +//│ > obj_1 +//│ > else +//│ > obj_2 = new L3(3) +//│ > obj_2 //│ > fun test(b) = //│ > let {y, m, tmp1, tmp2, tmp3} //│ > tmp1 = new L1(1) //│ > y = 11 //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) -//│ > m = M.pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Dyn(tmp2, tmp3, b) -//│ > m -//│ > fun pick_Union_L2_Lit1_L2_Lit2_end_Union_L3_Lit1_L3_Lit2_L3_Lit3_end_Dyn(x, y, b) = -//│ > if b is -//│ > true then x -//│ > else y +//│ > m = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > M.twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) +//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 +//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = +//│ > let {tmp} +//│ > if f is +//│ > L2 then +//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Lit7(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Lit7(tmp) +//│ > L3 then +//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +//│ > f.call(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") @@ -282,10 +231,17 @@ print(L3.class."class$cache$L3") //│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () -//│ > +//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 +//│ > fun call_L2_Lit2_dot_Lit7(x) = 9 +//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y //│ > class L3(y) with //│ > () -//│ > +//│ > fun call_L3_Lit3_dot_Lit5(x) = 13 +//│ > fun call_L3_Lit3_dot_Lit7(x) = 17 +//│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = +//│ > let {tmp1} +//│ > tmp1 = *(x, 2) +//│ > tmp1 + y staged class A(val x: Int) with fun f(y: Int) = x + y @@ -326,6 +282,12 @@ staged module M with M."test_gen"() //│ = ["test", {Lit(3)}] -// FIXME M."test2_gen"() -//│ = ["test2", {Lit(1),Lit(2)}] +//│ = ["test2", {Lit(1)}] + +staged module M with + fun f(x, y) = x + y + fun test(x) = f(x, 2) + +M."test_gen"(mkLit(1)) +//│ = ["test_Lit1", {Lit(3)}] From d0d659161b3dfde28fdd42e34abc86fc144eb7e7 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 16 Apr 2026 00:57:14 +0800 Subject: [PATCH 544/654] fix removal of valdefn --- .../mlscript-compile/SpecializeHelpers.mls | 32 ++++----- .../test/mlscript/block-staging/ShapeProp.mls | 69 +++++++++---------- 2 files changed, 47 insertions(+), 54 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 0734f215f6..b55714ed19 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -149,8 +149,8 @@ fun sor(ctx, r) = if r is else [End(), r, s] Instantiate(cls, args) and let clsSymb = if cls is - ValueRef(symb) and symb is ClassSymbol then symb // class defined globally - Select(_, symb) and symb is ClassSymbol then symb // class defined in a module + ValueRef(symb) and symb is ConcreteClassSymbol then symb // class defined globally + Select(_, symb) and symb is ConcreteClassSymbol then symb // class defined in a module else throw Error("Instantiate with non-ClassSymbol in shape propagation: " + cls.toString()) let argsShape = args.map(a => sop(ctx, a.value)) isStagedClass(clsSymb.value) and @@ -173,7 +173,7 @@ fun sor(ctx, r) = if r is [End(), recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") - Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ClassSymbol then // class within module + Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] // FIXME ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class isStagedClass(clsSymb.value) then @@ -234,7 +234,7 @@ fun sor(ctx, r) = if r is else throw Error("unknown call in sor: " + r.toString()) else throw Error("unknown result in sor: " + r.toString()) -fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = +fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = let pss = sop(ctx, ValueRef(symb)) let argShapes = args.map(a => sop(ctx, a.value)) let splitted = fsplit(pss) @@ -260,16 +260,14 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = [concat(End(), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - let resBlock = prop(ctx.add(ValueRef(x), retShape, false), restBlock) - [concat(End(), Assign(x, callRes, resBlock.0)), resBlock.1] + [concat(End(), Assign(x, callRes, End())), retShape] else if knownMap.size is 0 and let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) isRet then [concat(End(), Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - let resBlock = prop(ctx.add(ValueRef(x), mkDyn()), restBlock) - [concat(End(), Assign(x, dfltMatch, resBlock.0)), resBlock.1] + [concat(End(), Assign(x, dfltMatch, End())), mkDyn()] else let armsRet = [...knownMap.entries()].map(entry => let C_i = entry.0 @@ -287,8 +285,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = [Arm(Cls(C_i, ValueRef(symb)), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - let resBlock = prop(ctx.add(ValueRef(x), retShape), restBlock) - [Arm(Cls(C_i, ValueRef(symb)), Assign(x, callRes, resBlock.0)), resBlock.1] + [Arm(Cls(C_i, ValueRef(symb)), Assign(x, callRes, End())), retShape] ) let armsAcc = armsRet.map(_.0) let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) @@ -298,19 +295,18 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args, restBlock) = [Some(Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - let resBlock = prop(ctx.add(ValueRef(x), mkDyn()), restBlock) - [Some(Assign(x, dfltMatch, resBlock.0)), resBlock.1] - let matchBody = if knownMap.size == 1 and unkShape.isEmpty() then + [Some(Assign(x, dfltMatch, End())), mkDyn()] + let matchBody = if knownMap.size is 1 and unkShape.isEmpty() then armsAcc.0.body else - Match(ValueRef(symb), armsAcc, dfltRet.0, if isRet then End() else restBlock) + Match(ValueRef(symb), armsAcc, dfltRet.0, End()) let totalRetShape = union(totalStagedRetShape, dfltRet.1) [matchBody, totalRetShape] fun prop(ctx, b) = if b is End() then [b, mkBot()] Return(Call(Select(ValueRef(symb), Symbol(f)), args), implct) and not (symb is ModuleSymbol) then - dispatchMethodCall(ctx, None, Some(implct), symb, f, args, End()) + dispatchMethodCall(ctx, None, Some(implct), symb, f, args) Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then [concat(blk, Return(r1, implct)), s1] Scoped(symbols, rest) then @@ -320,7 +316,9 @@ fun prop(ctx, b) = if b is let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) then - dispatchMethodCall(ctx, Some(x), None, symb, f, args, restBlock) + let res = dispatchMethodCall(ctx, Some(x), None, symb, f, args) + let b2 = prop(ctx.add(ValueRef(x), res.1), restBlock) + [concat(res.0, b2.0), b2.1] Define(ValDefn(opt, sym, rhs), restBlock) and sor(ctx, rhs) is [blk, r1, s1] and do ctx.addValDefn(sym.name, s1) @@ -501,7 +499,7 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() assert ctor is FunDefn - let params = new Set(ctor.params.flat()) + let params = new Set(ctor.params.flat().map(_.sym)) let ctorBody = removeExtraValDefn(params, ctor.body) decl + owner.name + printer.showParamList(paramList) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 5b227fa195..15db1093bc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -39,21 +39,6 @@ print(Test."cache$Test") //│ > module Test with //│ > () //│ > fun f_Lit2_Lit2(x, y) = 4 -//│ > fun fib_Lit4(n) = 3 -//│ > fun fib_Lit3(n) = 2 -//│ > fun fib_Lit2(n) = 1 -//│ > fun fib_Lit1(n) = 1 -//│ > fun pyth_Lit2_Lit4(x, y) = 20 -//│ > fun test2(n) = -//│ > let {dyn, tmp10} -//│ > dyn = pyth_Dyn_Lit2(n, 2) -//│ > tmp10 = *(dyn, 2) -//│ > fib(tmp10) -//│ > fun pyth_Dyn_Lit2(x, y) = -//│ > let {tmp6, tmp7} -//│ > tmp6 = NonStaged.sq(x) -//│ > tmp7 = 4 -//│ > tmp6 + tmp7 //│ > fun fib(n) = //│ > let {n, tmp2, tmp3, tmp4, tmp5} //│ > if n is @@ -62,9 +47,9 @@ print(Test."cache$Test") //│ > else //│ > n = n //│ > tmp2 = n - 1 -//│ > tmp3 = fib(tmp2) +//│ > tmp3 = Test.fib(tmp2) //│ > tmp4 = n - 2 -//│ > tmp5 = fib(tmp4) +//│ > tmp5 = Test.fib(tmp4) //│ > tmp3 + tmp5 //│ > fun fib_Lit1(n) = 1 //│ > fun fib_Lit2(n) = 1 @@ -99,8 +84,12 @@ TestIf."test_gen"() print(TestIf."cache$TestIf") //│ > module TestIf with //│ > () -//│ > fun f_C_Lit2(x) = "C(2)" -//│ > fun f_C_Lit3(x) = "C" +//│ > fun f_C_Lit2(x) = +//│ > let {arg_C_0_} +//│ > arg_C_0_ = x.x +//│ > fun f_C_Lit3(x) = +//│ > let {arg_C_0_} +//│ > arg_C_0_ = x.x //│ > fun f_Lit2(x) = "else" //│ > fun test() = "else" @@ -128,9 +117,16 @@ print(TestIf2."cache$TestIf2") //│ > y = x.n //│ > tmp = () //│ > y + 1 -//│ > fun f_C_Lit2(x) = 3 +//│ > fun f_C_Lit2(x) = +//│ > let {y, tmp} +//│ > y = x.n +//│ > tmp = () +//│ > y + 1 //│ > fun f_Lit0(x) = 1 -//│ > fun test() = 3 +//│ > fun test() = +//│ > let {tmp1} +//│ > tmp1 = C(2) +//│ > TestIf2.f_C_Lit2(tmp1) //│ > fun test2(dyn) = //│ > let {tmp2} //│ > tmp2 = C(dyn) @@ -155,21 +151,21 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ > tmp = 1 //│ > tmp1 = *(v1.(n), v2.(n)) //│ > tmp2 = tmp1 + acc -//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) +//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 2 //│ > tmp1 = 4 //│ > tmp2 = tmp1 + acc -//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) +//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 3 //│ > tmp1 = 2 //│ > tmp2 = tmp1 + acc -//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) +//│ > LinearAlgebra._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = true @@ -193,7 +189,7 @@ class L4(val y) with staged module M with fun twice(f, x) = f.call(f.call(x)) fun pick(x, y, b) = if b then x else y - fun test(b) = + fun test(b) = let y = twice(new L1(1), 5) let m = pick(new L2(2), new L3(3), b) twice(m, 5) @@ -227,32 +223,26 @@ print(M."cache$M") //│ > if f is //│ > L2 then //│ > tmp = f.call_L2_Lit2_dot_Lit5(x) -//│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Lit7(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Lit7(tmp) //│ > L3 then //│ > tmp = f.call_L3_Lit3_dot_Lit5(x) -//│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) -//│ > f.call(tmp) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(y) with -//│ > val y = y +//│ > () //│ > fun call_L1_Lit1_dot_Lit5(x) = 8 //│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () //│ > fun call_L2_Lit2_dot_Lit5(x) = 7 -//│ > fun call_L2_Lit2_dot_Lit7(x) = 9 //│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y //│ > class L3(y) with //│ > () //│ > fun call_L3_Lit3_dot_Lit5(x) = 13 -//│ > fun call_L3_Lit3_dot_Lit7(x) = 17 //│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = //│ > let {tmp1} //│ > tmp1 = *(x, 2) @@ -280,10 +270,10 @@ print(TestThis."cache$TestThis") print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with -//│ > val x = x +//│ > () //│ > fun f_A_Lit1_dot_Lit1(y) = 2 //│ > class B(x) with -//│ > val x = x +//│ > () //│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 staged class B(val x, val y) @@ -306,3 +296,8 @@ staged module M with M."test_gen"(mkLit(1)) //│ = ["test_Lit1", {Lit(3)}] + +staged class C(val n) + +staged module M with + fun f() = new C(1) From d4c207c728ea0f09dcdc0b676763c0618a86abe3 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 16 Apr 2026 11:25:45 +0800 Subject: [PATCH 545/654] fixup! Merge remote-tracking branch 'mlscript/hkmc2' into add-cache --- .../codegen/FirstClassFunctionTransform.mls | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls index 0213abb1f6..27296e2c6a 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls @@ -92,12 +92,12 @@ let f = foo in bar(f) bar([foo].0) bar([foo, x => x].1) //│ ╔══[COMPILATION ERROR] Cannot determine if 0 is a function. -//│ ║ l.98: bar([foo].0) +//│ ║ l.92: bar([foo].0) //│ ╙── ^^ //│ ═══[COMPILATION ERROR] Cannot determine if 0$__checkNotMethod is a function. //│ ═══[COMPILATION ERROR] Cannot determine if Error is a function. //│ ╔══[COMPILATION ERROR] Cannot determine if 1 is a function. -//│ ║ l.99: bar([foo, x => x].1) +//│ ║ l.93: bar([foo, x => x].1) //│ ╙── ^^ //│ ═══[COMPILATION ERROR] Cannot determine if 1$__checkNotMethod is a function. //│ ═══[COMPILATION ERROR] Cannot determine if Error is a function. @@ -114,7 +114,7 @@ bar([foo, x => x].(i)) :ge [foo, x => x].(i)(0) //│ ╔══[COMPILATION ERROR] Cannot determine if the dynamic selection is a function object. -//│ ║ l.131: [foo, x => x].(i)(0) +//│ ║ l.115: [foo, x => x].(i)(0) //│ ╙── ^ @@ -128,10 +128,10 @@ let foo = Foo() foo.("f")(0) foo.("h")(1) //│ ╔══[COMPILATION ERROR] Cannot determine if the dynamic selection is a function object. -//│ ║ l.149: foo.("f")(0) +//│ ║ l.128: foo.("f")(0) //│ ╙── ^^^^^^^^ //│ ╔══[COMPILATION ERROR] Cannot determine if the dynamic selection is a function object. -//│ ║ l.150: foo.("h")(1) +//│ ║ l.129: foo.("h")(1) //│ ╙── ^^^^^^^^ //│ = 0 //│ foo = Foo() @@ -385,7 +385,7 @@ foo.Foo#x :ge foo.f(0) //│ ╔══[COMPILATION ERROR] Cannot determine if f is a function object. -//│ ║ l.418: foo.f(0) +//│ ║ l.386: foo.f(0) //│ ╙── ^^^^^ //│ = 1 @@ -403,7 +403,7 @@ foo.Foo#f(0) :ge foo.x(0) //│ ╔══[COMPILATION ERROR] Cannot determine if x is a function object. -//│ ║ l.441: foo.x(0) +//│ ║ l.404: foo.x(0) //│ ╙── ^^^^^ From 0f8b2a7e1e37abc1ebfb9bfdf4f301830d003f37 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 16 Apr 2026 12:30:57 +0800 Subject: [PATCH 546/654] wip: allow shape inference of variables in valDefnCtx --- .../mlscript-compile/SpecializeHelpers.mls | 26 ++++--- .../test/mlscript/block-staging/ShapeProp.mls | 77 +++++++++++-------- 2 files changed, 58 insertions(+), 45 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index b55714ed19..98de064822 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -46,8 +46,8 @@ fun showCtxPath(p) = if p is // FIXME class Ctx( // ctx tracks shapes of variables during shape prop val ctx: Map[String, ShapeSet], - // ctorCtx tracks fields defined by ValDefn during shape prop - val ctorCtx: Map[String, ShapeSet] + // valDefnCtx tracks fields defined by ValDefn during shape prop of constructor + val valDefnCtx: Map[String, ShapeSet] // allocs tracks the new variables allocated during shape prop val allocs: Array[Block.Symbol], // thisShape stores the shapeset of this, e.g., C1(1) U C1(2) @@ -55,13 +55,14 @@ class Ctx( ) with fun get(path) = let ps = showCtxPath(path) - if ctx.has(ps) then Some(ctx.get(ps)) - else None - fun clone = Ctx(new Map(ctx), new Map(ctorCtx), allocs, thisShape) + if ctx.has(ps) then Some(ctx.get(ps)) else None + fun getValDefn(name) = + if valDefnCtx.has(name) then Some(valDefnCtx.get(name)) else None + fun clone = Ctx(new Map(ctx), new Map(valDefnCtx), allocs, thisShape) // For propagation of instantiation of derived class, // we need to keep track of fields defined in parent class, - // which is stored in ctorCtx - fun clearCtx = Ctx(new Map(), ctorCtx, allocs, thisShape) + // which is stored in valDefnCtx + fun clearCtx = Ctx(new Map(), valDefnCtx, allocs, thisShape) fun add(path: Path, ss: ShapeSet) = let ps = showCtxPath(path) if ctx.has(ps) then @@ -71,7 +72,7 @@ class Ctx( this // Later ValDefn (in derived class) shadows earlier ValDefn (in base class) fun addValDefn(ps: String, ss: ShapeSet) = - ctorCtx.set(ps, ss) + valDefnCtx.set(ps, ss) this module Ctx with fun empty() = Ctx(new Map(), new Map(), mut [], None) @@ -102,6 +103,10 @@ fun sov(v): ShapeSet = fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s else if p is + Select(ValueRef(clsSymb), Symbol(name)) and clsSymb is ClassSymbol and // constructor + ctx.getValDefn(name) is Some(s) then + s + else mkDyn() Select(qual, Symbol(name)) and ctx.thisShape is Some(thisShape) and qual is ValueRef(sym) and sym is t then selSet(thisShape, mkLit(name)) @@ -312,7 +317,7 @@ fun prop(ctx, b) = if b is Scoped(symbols, rest) then symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] - let newCtx = Ctx(new Map(ctx.ctx), ctx.ctorCtx, newAllocs, ctx.thisShape) + let newCtx = Ctx(new Map(ctx.ctx), ctx.valDefnCtx, newAllocs, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) then @@ -433,7 +438,6 @@ fun specializeCtor(classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], c let defn = actualClass."class$ctor$_instr"() if defn is FunDefn(Symbol(_), ps, body) then ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2.sym), argShapes.(j)))) - if not (actualClass."preCtor$_instr" is undefined) and actualClass."preCtor$_instr"() is FunDefn(_, _, preCtorBody) then do prop(ctx, preCtorBody) else throw Error("preCtor not found in staged class") @@ -441,7 +445,7 @@ fun specializeCtor(classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], c prop(ctx, ctorBody) else throw Error("ctor not found in staged class") - mkClassFromMap(classSymb, ctx.ctorCtx) + mkClassFromMap(classSymb, ctx.valDefnCtx) else throw Error("instrumeted method is not a FunDefn") class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 15db1093bc..4662c8cb67 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -212,12 +212,15 @@ print(M."cache$M") //│ > fun test(b) = //│ > let {y, m, tmp1, tmp2, tmp3} //│ > tmp1 = new L1(1) -//│ > y = 11 +//│ > y = M.twice_L1_Lit1_Lit5(tmp1, 5) //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) //│ > m = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) //│ > M.twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) -//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 +//│ > fun twice_L1_Lit1_Lit5(f, x) = +//│ > let {tmp} +//│ > tmp = f.call_L1_Lit1_dot_Lit5(x) +//│ > f.call_L1_Lit1_dot_Dyn(tmp) //│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = //│ > let {tmp} //│ > if f is @@ -226,27 +229,36 @@ print(M."cache$M") //│ > L3 then //│ > tmp = f.call_L3_Lit3_dot_Lit5(x) //│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +//│ > L2 then f.call_L2_Lit2_dot_Dyn(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Dyn(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(y) with //│ > () -//│ > fun call_L1_Lit1_dot_Lit5(x) = 8 -//│ > fun call_L1_Lit1_dot_Lit8(x) = 11 +//│ > fun call_L1_Lit1_dot_Dyn(x) = +//│ > let {tmp} +//│ > tmp = x + 2 +//│ > tmp + y +//│ > fun call_L1_Lit1_dot_Lit5(x) = +//│ > let {tmp} +//│ > tmp = 7 +//│ > tmp + y //│ > class L2(y) with //│ > () -//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 -//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y +//│ > fun call_L2_Lit2_dot_Dyn(x) = x + y +//│ > fun call_L2_Lit2_dot_Lit5(x) = x + y //│ > class L3(y) with //│ > () -//│ > fun call_L3_Lit3_dot_Lit5(x) = 13 -//│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = +//│ > fun call_L3_Lit3_dot_Dyn(x) = //│ > let {tmp1} //│ > tmp1 = *(x, 2) //│ > tmp1 + y +//│ > fun call_L3_Lit3_dot_Lit5(x) = +//│ > let {tmp1} +//│ > tmp1 = 10 +//│ > tmp1 + y staged class A(val x: Int) with fun f(y: Int) = x + y @@ -254,50 +266,47 @@ staged class B(val x: Int) with fun f(y: A) = x + y.f(x) staged module TestThis with - fun test2(y) = B(1).x + y // FIXME fun test(x) = B(x).f(A(1)) -TestThis."test2_gen"(mkLit(1)) -//│ = ["test2_Lit1", {Lit(2)}] - TestThis."test_gen"(mkLit(1)) +//│ = ["test_Lit1", {Dyn()}] + print(TestThis."cache$TestThis") //│ > module TestThis with //│ > () -//│ > fun test2_Lit1(y) = 2 -//│ > fun test_Lit1(x) = 3 +//│ > fun test_Lit1(x) = +//│ > let {tmp, tmp1} +//│ > tmp = B(x) +//│ > tmp1 = A(1) +//│ > tmp.f_B_Lit1_dot_A_Lit1(tmp1) print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with //│ > () -//│ > fun f_A_Lit1_dot_Lit1(y) = 2 +//│ > fun f_A_Lit1_dot_Dyn(y) = x + y //│ > class B(x) with //│ > () -//│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 +//│ > fun f_B_Lit1_dot_A_Lit1(y) = +//│ > let {tmp} +//│ > tmp = y.f_A_Lit1_dot_Dyn(x) +//│ > x + tmp -staged class B(val x, val y) +staged class B(val x, val y) with + val z = x * y staged class D(val x) extends B(x + 1, x + 2) staged module M with - fun test() = new D(1, 2).y - fun test2() = new D(1, 2).x + fun test() = new D(1).x + fun test2() = new D(1).y + fun test3() = new D(1).z M."test_gen"() -//│ = ["test", {Lit(3)}] +//│ = ["test", {Lit(1)}] M."test2_gen"() -//│ = ["test2", {Lit(1)}] - -staged module M with - fun f(x, y) = x + y - fun test(x) = f(x, 2) +//│ = ["test2", {Lit(3)}] -M."test_gen"(mkLit(1)) -//│ = ["test_Lit1", {Lit(3)}] - -staged class C(val n) - -staged module M with - fun f() = new C(1) +M."test3_gen"() +//│ = ["test3", {Lit(6)}] From 36802dfe53ced13e5cd3f459414450e1a0625dc2 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 16 Apr 2026 12:50:29 +0800 Subject: [PATCH 547/654] fix the this shape inference --- .../mlscript-compile/SpecializeHelpers.mls | 3 +- .../test/mlscript/block-staging/ShapeProp.mls | 54 +++++++------------ 2 files changed, 21 insertions(+), 36 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 98de064822..664d6a3516 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -103,10 +103,9 @@ fun sov(v): ShapeSet = fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s else if p is - Select(ValueRef(clsSymb), Symbol(name)) and clsSymb is ClassSymbol and // constructor + Select(ValueRef(clsSymb), Symbol(name)) and clsSymb is ClassSymbol and // variables defined in valdefn ctx.getValDefn(name) is Some(s) then s - else mkDyn() Select(qual, Symbol(name)) and ctx.thisShape is Some(thisShape) and qual is ValueRef(sym) and sym is t then selSet(thisShape, mkLit(name)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 4662c8cb67..31fc2e8f38 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -212,15 +212,12 @@ print(M."cache$M") //│ > fun test(b) = //│ > let {y, m, tmp1, tmp2, tmp3} //│ > tmp1 = new L1(1) -//│ > y = M.twice_L1_Lit1_Lit5(tmp1, 5) +//│ > y = 11 //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) //│ > m = M.pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) //│ > M.twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) -//│ > fun twice_L1_Lit1_Lit5(f, x) = -//│ > let {tmp} -//│ > tmp = f.call_L1_Lit1_dot_Lit5(x) -//│ > f.call_L1_Lit1_dot_Dyn(tmp) +//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 //│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = //│ > let {tmp} //│ > if f is @@ -229,36 +226,27 @@ print(M."cache$M") //│ > L3 then //│ > tmp = f.call_L3_Lit3_dot_Lit5(x) //│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Dyn(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Dyn(tmp) +//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(y) with //│ > () -//│ > fun call_L1_Lit1_dot_Dyn(x) = -//│ > let {tmp} -//│ > tmp = x + 2 -//│ > tmp + y -//│ > fun call_L1_Lit1_dot_Lit5(x) = -//│ > let {tmp} -//│ > tmp = 7 -//│ > tmp + y +//│ > fun call_L1_Lit1_dot_Lit5(x) = 8 +//│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () -//│ > fun call_L2_Lit2_dot_Dyn(x) = x + y -//│ > fun call_L2_Lit2_dot_Lit5(x) = x + y +//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 +//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y //│ > class L3(y) with //│ > () -//│ > fun call_L3_Lit3_dot_Dyn(x) = +//│ > fun call_L3_Lit3_dot_Lit5(x) = 13 +//│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = //│ > let {tmp1} //│ > tmp1 = *(x, 2) //│ > tmp1 + y -//│ > fun call_L3_Lit3_dot_Lit5(x) = -//│ > let {tmp1} -//│ > tmp1 = 10 -//│ > tmp1 + y staged class A(val x: Int) with fun f(y: Int) = x + y @@ -269,38 +257,33 @@ staged module TestThis with fun test(x) = B(x).f(A(1)) TestThis."test_gen"(mkLit(1)) -//│ = ["test_Lit1", {Dyn()}] +//│ = ["test_Lit1", {Lit(3)}] print(TestThis."cache$TestThis") //│ > module TestThis with //│ > () -//│ > fun test_Lit1(x) = -//│ > let {tmp, tmp1} -//│ > tmp = B(x) -//│ > tmp1 = A(1) -//│ > tmp.f_B_Lit1_dot_A_Lit1(tmp1) +//│ > fun test_Lit1(x) = 3 print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with //│ > () -//│ > fun f_A_Lit1_dot_Dyn(y) = x + y +//│ > fun f_A_Lit1_dot_Lit1(y) = 2 //│ > class B(x) with //│ > () -//│ > fun f_B_Lit1_dot_A_Lit1(y) = -//│ > let {tmp} -//│ > tmp = y.f_A_Lit1_dot_Dyn(x) -//│ > x + tmp +//│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 staged class B(val x, val y) with val z = x * y -staged class D(val x) extends B(x + 1, x + 2) +staged class D(val x) extends B(x + 1, x + 2) with + fun f() = x * this.y staged module M with fun test() = new D(1).x fun test2() = new D(1).y fun test3() = new D(1).z + fun test4() = new D(2).f() M."test_gen"() //│ = ["test", {Lit(1)}] @@ -310,3 +293,6 @@ M."test2_gen"() M."test3_gen"() //│ = ["test3", {Lit(6)}] + +M."test4_gen"() +//│ = ["test4", {Lit(8)}] From 4876527ccbaa200c72dc367c12e2adcc48983d41 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 16 Apr 2026 12:52:01 +0800 Subject: [PATCH 548/654] UCS --- .../mlscript-compile/SpecializeHelpers.mls | 87 ++++++++++--------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 664d6a3516..aabf4a392c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -246,34 +246,10 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = let unkShape = splitted.1 let isRet = xOpt is None - if knownMap.size is 1 and unkShape.isEmpty() and - // If the object is certainly a known class, generate the generated method call directly without pattern matching - let entry = [...knownMap.entries()].0 - let C_i = entry.0 - let ss_i = entry.1 - let actualClass = getActualClass(C_i.value) - let clsName = actualClass.(Symbols.definitionMetadata).1 - let genMapName = getGenMapName(clsName, true) - let genMap = actualClass.(genMapName) - let f_gen = genMap.get(f) - let generated = f_gen(ss_i)(...argShapes) - let retSym = generated.0 - let retShape = generated.1 - let callRes = Call(Select(ValueRef(symb), Symbol(retSym)), args) - isRet then - [concat(End(), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] - else - let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - [concat(End(), Assign(x, callRes, End())), retShape] - else if knownMap.size is 0 and - let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) - isRet then - [concat(End(), Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] - else - let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - [concat(End(), Assign(x, dfltMatch, End())), mkDyn()] - else - let armsRet = [...knownMap.entries()].map(entry => + if knownMap.size is + 1 and unkShape.isEmpty() and + // If the object is certainly a known class, generate the generated method call directly without pattern matching + let entry = [...knownMap.entries()].0 let C_i = entry.0 let ss_i = entry.1 let actualClass = getActualClass(C_i.value) @@ -285,27 +261,52 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = let retSym = generated.0 let retShape = generated.1 let callRes = Call(Select(ValueRef(symb), Symbol(retSym)), args) - if isRet then - [Arm(Cls(C_i, ValueRef(symb)), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] + isRet then + [concat(End(), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - [Arm(Cls(C_i, ValueRef(symb)), Assign(x, callRes, End())), retShape] - ) - let armsAcc = armsRet.map(_.0) - let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) - let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else + [concat(End(), Assign(x, callRes, End())), retShape] + 0 and let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) - if isRet then - [Some(Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] + isRet then + [concat(End(), Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - [Some(Assign(x, dfltMatch, End())), mkDyn()] - let matchBody = if knownMap.size is 1 and unkShape.isEmpty() then - armsAcc.0.body + [concat(End(), Assign(x, dfltMatch, End())), mkDyn()] else - Match(ValueRef(symb), armsAcc, dfltRet.0, End()) - let totalRetShape = union(totalStagedRetShape, dfltRet.1) - [matchBody, totalRetShape] + let armsRet = [...knownMap.entries()].map(entry => + let C_i = entry.0 + let ss_i = entry.1 + let actualClass = getActualClass(C_i.value) + let clsName = actualClass.(Symbols.definitionMetadata).1 + let genMapName = getGenMapName(clsName, true) + let genMap = actualClass.(genMapName) + let f_gen = genMap.get(f) + let generated = f_gen(ss_i)(...argShapes) + let retSym = generated.0 + let retShape = generated.1 + let callRes = Call(Select(ValueRef(symb), Symbol(retSym)), args) + if isRet then + [Arm(Cls(C_i, ValueRef(symb)), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] + else + let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") + [Arm(Cls(C_i, ValueRef(symb)), Assign(x, callRes, End())), retShape] + ) + let armsAcc = armsRet.map(_.0) + let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) + let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else + let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) + if isRet then + [Some(Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] + else + let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") + [Some(Assign(x, dfltMatch, End())), mkDyn()] + let matchBody = if knownMap.size is 1 and unkShape.isEmpty() then + armsAcc.0.body + else + Match(ValueRef(symb), armsAcc, dfltRet.0, End()) + let totalRetShape = union(totalStagedRetShape, dfltRet.1) + [matchBody, totalRetShape] fun prop(ctx, b) = if b is End() then [b, mkBot()] From c3b2d542c77eab22b4923d78c344d6b3fe7d46b4 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 16 Apr 2026 13:07:28 +0800 Subject: [PATCH 549/654] Revert "move ctor processing to instrumentation" This reverts commit 5634cf7b94a5f35eb3dc3dbd51a415114b34a102. --- .../hkmc2/codegen/ReflectionInstrumenter.scala | 16 ++++++++-------- .../test/mlscript-compile/SpecializeHelpers.mls | 14 +++++++++++++- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 059e8cec70..6e095efa9a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -379,17 +379,17 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def stageCtor(ctorFun: FunDefn): FunDefn = // refresh VarSymbols for ctor val paramSymMap = ctorFun.params.map(_.params.map(x => x.sym -> VarSymbol(x.sym.id))).flatten.toMap - val transformer = new BlockTransformer(new SymbolSubst(): + val paramRewrite = new BlockTransformer(new SymbolSubst(): // refresh symbols after copying parameter list override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l) ): - override def applyBlock(b: Block) = b match - // process ctor: remove ValDefn of parameters already defined in the class parameters - // remove `val C.x = x` statements from the constructor - case Define(ValDefn(_, _, Value.Ref(sym: VarSymbol, _)), rest) - if paramSymMap.contains(sym) => applyBlock(rest) - case _ => super.applyBlock(b) - stageMethod(transformer.applyFunDefn(ctorFun), Context(new HashMap(), true)) + override def applyScopedBlock(b: Block) = b match + case Scoped(s, bd) => + val nb = applySubBlock(bd) + val ns = s.map(applyLocal) + if (nb is bd) && (s is ns) then b else Scoped(ns, nb) + case _ => applySubBlock(b) + stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(new HashMap(), true)) def stageMethods(ownerSym: DefinitionSymbol[?], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (FunDefn, Ls[FunDefn], Block => Block) = diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 2d6d0b0edb..eb2bfa7f63 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -122,13 +122,25 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any inlineAssigments(new Map())(preCtor) else "" + // process ctor: remove ValDefn of parameters already defined in the class parameters + // remove `val C.x = x` statements from the constructor + fun removeExtraValDefn(params, block) = if block is + Define(ValDefn(Some, sym, ValueRef(rhs)), rest) and params.has(rhs) then removeExtraValDefn(params, rest) + Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, removeExtraValDefn(params, rest)) + Assign(lhs, rhs, rest) then Assign(lhs, rhs, removeExtraValDefn(params, rest)) + Define(defn, rest) then Define(defn, removeExtraValDefn(params, rest)) + Scoped(symbols, rest) then Scoped(symbols, removeExtraValDefn(params, rest)) + else block + let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() assert ctor is FunDefn + let params = new Set(ctor.params.flat()) + let ctorBody = removeExtraValDefn(params, ctor.body) decl + owner.name + printer.showParamList(paramList) + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" - + indent("\n" + printer.showBlock(ctor.body)) + + indent("\n" + printer.showBlock(ctorBody)) + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().join("\n")) module FunCache with From 7a5e20f0763a091a48374ef91c437b45a92aa259 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 16 Apr 2026 15:12:56 +0800 Subject: [PATCH 550/654] make the naming correct --- .../mlscript-compile/SpecializeHelpers.mls | 38 +++++++++++-------- .../test/mlscript/block-staging/ShapeProp.mls | 11 ++++++ 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index aabf4a392c..a1ce1e9fed 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -103,11 +103,11 @@ fun sov(v): ShapeSet = fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s else if p is - Select(ValueRef(clsSymb), Symbol(name)) and clsSymb is ClassSymbol and // variables defined in valdefn + Select(ValueRef(clsSymb), Symbol(name)) and clsSymb is ClassSymbol and // variables defined in valdefn (for constructor propagation) ctx.getValDefn(name) is Some(s) then s - Select(qual, Symbol(name)) and - ctx.thisShape is Some(thisShape) and qual is ValueRef(sym) and sym is t then + Select(qual, Symbol(name)) and // this.name + ctx.thisShape is Some(thisShape) then selSet(thisShape, mkLit(name)) name is "length" and // special handle array .length let qualShape = sop(ctx, qual) @@ -388,18 +388,25 @@ fun buildShapeSetName(ss: ShapeSet): Str = if vals.length is 1 then buildShapeName(vals.0) else "Union_" + vals.map(buildShapeName).join("_") + "_end" -fun specializeName(funName, shapes) = - if shapes.every(_.every(_.isDyn())) then funName - else funName + "_" + shapes.map(ps => ps.map(buildShapeSetName).join("_")).join("_dot_") +fun specializeName(funName, isMethod, ps, shapes) = + let mappedShapes = shapes.map((ss, i, _) => + if isMethod and i == 0 then ss + else ss.map((s, j, _) => + let psIdx = if isMethod then i - 1 else i + if ps.(psIdx).(j).constraint is Some(Dynamic) then mkDyn() else s + ) + ) + if mappedShapes.every(_.every(_.isDyn())) then funName + else funName + "_" + mappedShapes.map(pss => pss.map(buildShapeSetName).join("_")).join("_dot_") fun specialize(cache: FunCache, funName, dflt, shapes) = - let newName = specializeName(funName, shapes) - if cache.getFun(newName) is - Some(x) then [x.0.sym.name, x.1] - None and - let defn = dflt() - defn is FunDefn(Symbol(_), ps, body) then - let isMethod = cache.owner is ConcreteClassSymbol + let defn = dflt() + if defn is FunDefn(Symbol(_), ps, body) then + let isMethod = cache.owner is ConcreteClassSymbol + let newName = specializeName(funName, isMethod, ps, shapes) + if cache.getFun(newName) is + Some(x) then [x.0.sym.name, x.1] + None then let paramShapes = if isMethod then shapes.slice(1) else shapes let ctx = if isMethod then let clsSymb = cache.owner @@ -429,14 +436,13 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = else bodyWithScoped let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, finalBody), actualRetShape]) [entry.0.sym.name, entry.1] - else throw Error("instrumented function is not a FunDefn") - else throw Error("cache error") + else throw Error("instrumented function is not a FunDefn") fun specializeCtor(classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], ctx: Ctx) = - let newName = specializeName("class$ctor$", [argShapes]) let actualClass = getActualClass(classSymb.value) let defn = actualClass."class$ctor$_instr"() if defn is FunDefn(Symbol(_), ps, body) then + let newName = specializeName("class$ctor$", false, ps, [argShapes]) ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2.sym), argShapes.(j)))) if not (actualClass."preCtor$_instr" is undefined) and actualClass."preCtor$_instr"() is FunDefn(_, _, preCtorBody) then do prop(ctx, preCtorBody) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 31fc2e8f38..1a12b21ac4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -296,3 +296,14 @@ M."test3_gen"() M."test4_gen"() //│ = ["test4", {Lit(8)}] + +print(D.class."class$cache$D") +//│ > class D(x) extends B(x + 1, x + 2) with +//│ > () +//│ > fun f_D_Lit2_Lit4_Lit12_dot_() = 8 + +staged module M with + fun f(@dynamic x, y) = x + y + +M."f_gen"(mkLit(1), mkLit(2)) +//│ = ["f_Dyn_Lit2", {Dyn()}] From c0020cb24ee203e615dfe4981439e490c9757c6c Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 16 Apr 2026 17:16:53 +0800 Subject: [PATCH 551/654] . --- hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a1ce1e9fed..676790224d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -390,7 +390,7 @@ fun buildShapeSetName(ss: ShapeSet): Str = fun specializeName(funName, isMethod, ps, shapes) = let mappedShapes = shapes.map((ss, i, _) => - if isMethod and i == 0 then ss + if isMethod and i is 0 then ss else ss.map((s, j, _) => let psIdx = if isMethod then i - 1 else i if ps.(psIdx).(j).constraint is Some(Dynamic) then mkDyn() else s @@ -418,7 +418,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let shape = if p2.constraint is Some(Dynamic) then mkDyn() Some(Static) and not staticSet(paramShapes.(i).(j)) then throw Error("Non-static shape given to static parameter " + p2) - None then paramShapes.(i).(j) + else paramShapes.(i).(j) ctx.add(ValueRef(p2.sym), shape) )) From 39545a4eea455eb63ea916a484e2ddeb783497c3 Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 16 Apr 2026 20:39:58 +0800 Subject: [PATCH 552/654] remove obsolete file --- .../mlscript/block-staging/ShapeProp2.mls | 36 ------------------- 1 file changed, 36 deletions(-) delete mode 100644 hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls deleted file mode 100644 index f30930496b..0000000000 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp2.mls +++ /dev/null @@ -1,36 +0,0 @@ -:js -:staging -:noFreeze - -:sjs -module NonStaged with - fun sq(x) = x * x -//│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let NonStaged1; -//│ (class NonStaged { -//│ static { -//│ NonStaged1 = this -//│ } -//│ static sq(x) { -//│ return x * x -//│ } -//│ toString() { return runtime.render(this); } -//│ static [definitionMetadata] = ["class", "NonStaged"]; -//│ }); -//│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— - -module Staged with - fun sq(x) = x * x - -staged module Test with - fun f(x, y) = x + y - fun fib(n) = if n is - 1 then 1 - 2 then 1 - n then fib(n - 1) + fib(n - 2) - fun pyth(x, y) = NonStaged.sq(x) + NonStaged.sq(y) - fun pyth2(x, y) = Staged.sq(x) + Staged.sq(y) - fun test() = - f(2, 3) - fib(10) - From 4b0c647e3a0391ba6198aba23a081eec61ccc7e2 Mon Sep 17 00:00:00 2001 From: TYeung Date: Fri, 17 Apr 2026 16:45:28 +0800 Subject: [PATCH 553/654] fix subclass pattern matching --- .../src/test/mlscript-compile/Block.mls | 2 +- .../src/test/mlscript-compile/Shape.mls | 19 +- .../src/test/mlscript-compile/ShapeSet.mls | 14 +- .../mlscript-compile/SpecializeHelpers.mls | 96 ++-------- .../test/mlscript/block-staging/ShapeProp.mls | 177 ++++++++---------- 5 files changed, 117 insertions(+), 191 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 7e0326f2b7..67168cff5c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -69,7 +69,7 @@ class Arg(val value: Path) class Case with constructor Lit(val lit: Literal) - Cls(val cls: Symbol, val path: Path) + Cls(val cls: ClassSymbol, val path: Path) Tup(val len: Int) class Result with diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index f4690b411b..46f44da996 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -28,7 +28,7 @@ fun show(s: Shape) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is [Class(ConcreteClassSymbol(_, _, paramsOpt, auxParams), params), Lit(n)] and n is Str and paramsOpt is Some(paramsSymb) and - paramsSymb.map(_.name).indexOf(n) is + paramsSymb.map(_.sym.name).indexOf(n) is -1 then [] n then [params.(n)] [Class(ConcreteClassSymbol, p), Dyn] then [Dyn()] @@ -60,13 +60,18 @@ fun silh(p: Case): Shape = if p is Class(clsSymb, Array(paramsSize).fill(Dyn())) Block.Tup(n) then Arr(Array(n).fill(Dyn())) -// TODO: use Option instead, since all of them return at most one shape +fun getActualClass(c) = if not (c."class" is undefined) then c.class else c +fun isSubClassOf(d, b) = getActualClass(b).isPrototypeOf(getActualClass(d)) + fun filter(s: Shape, p: Case): Array[Shape] = if [s, p] is [Lit(l1), Block.Lit(l2)] and l1 == l2 then [s] - [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] + [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] [Arr(ls), Block.Tup(n)] and ls.length == n then [s] - [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [s] + [Class(c1, _), Block.Cls(c2, _)] and c1 is ConcreteClassSymbol and c2 is ConcreteClassSymbol and + c1.value == c2.value then [s] + [Class(c1, _), Block.Cls(c2, _)] and c1 is ConcreteClassSymbol and c2 is ConcreteClassSymbol and + isSubClassOf(c1.value, c2.value) then [s] [Dyn, _] then [silh(p)] else [] @@ -75,6 +80,10 @@ fun rest(s: Shape, p: Case): Array[Shape] = [Lit(l1), Block.Lit(l2)] and l1 == l2 then [] [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [] [Arr(ls), Block.Tup(n)] and ls.length == n then [] - [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [] + [Class(c1, _), Block.Cls(c2, _)] and c1 is ConcreteClassSymbol and c2 is ConcreteClassSymbol and + c1.value == c2.value then [] + [Class(c1, _), Block.Cls(c2, _)] and c1 is ConcreteClassSymbol and c2 is ConcreteClassSymbol and + isSubClassOf(c1.value, c2.value) then [] + [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [s] [Dyn, _] then [s] else [s] \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 4720afa8ba..84707a1a62 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -5,7 +5,7 @@ import "./Predef.mls" import "./Shape.mls" import "./StrOps.mls" -open Block {ConcreteClassSymbol, Path, Symbol} +open Block {ConcreteClassSymbol, Path, Symbol, Param} open Shape {Dyn, Lit, Arr, Class} open Predef open Option @@ -69,10 +69,18 @@ fun mkClass(sym: ConcreteClassSymbol, params: Array[ShapeSet]) = .map(Class(sym, _)) |> liftMany -fun mkClassFromMap(sym: ConcreteClassSymbol, paramsMap: Map[String, ShapeSet]) = +fun mkClassFromMap(sym: ConcreteClassSymbol, paramsMap: Map[String, ShapeSet], psOpt: Option[Array[Array[Param]]]) = if sym is ConcreteClassSymbol(name, value, paramsOpt, auxParams) then let entries = [...paramsMap.entries()] - let keys = entries.map(a => Symbol(a.0)) + let keys = entries.map(a => + let s = Symbol(a.0) + if psOpt is Some(pss) then + let found = pss.flat().find(p => p.sym.name === a.0) + if found is undefined then + Param(None, s) + else found + else Param(None, s) + ) let params = entries.map(_.1) let newSym = ConcreteClassSymbol(name, value, Some(keys), auxParams) params diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 446c43fe2f..a6a366023a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -26,8 +26,6 @@ fun getCacheName(name, isClass) = fun getActualClass(c) = if not (c."class" is undefined) then c.class else c -fun isSubClassOf(d, b) = getActualClass(b).isPrototypeOf(getActualClass(d)) - fun wrapScoped(symbols, block) = if symbols.length is 0 then block else if block is Scoped(oldSymbols, rest) then Scoped([...symbols, ...oldSymbols], rest) @@ -121,8 +119,7 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any inlineAssigments(new Map())(preCtor) else "" - // process ctor: remove ValDefn of parameters already defined in the class parameters - // remove `val C.x = x` statements from the constructor + // process ctor: remove ValDefn of parameters defined in paramsOpt fun removeExtraValDefn(params, block) = if block is Define(ValDefn(Some, sym, ValueRef(rhs)), rest) and params.has(rhs) then removeExtraValDefn(params, rest) Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, removeExtraValDefn(params, rest)) @@ -133,14 +130,14 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() assert ctor is FunDefn - let params = new Set(ctor.params.flat()) + let params = new Set(ctor.params.flat().map(_.sym)) let ctorBody = removeExtraValDefn(params, ctor.body) decl + owner.name + printer.showParamList(paramList) + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" + indent("\n" + printer.showBlock(ctorBody)) - + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().join("\n")) + + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().sort().join("\n")) module FunCache with fun empty(owner) = FunCache(owner, new Map()) @@ -172,10 +169,9 @@ fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s else if p is Select(ValueRef(clsSymb), Symbol(name)) and clsSymb is ClassSymbol and // variables defined in valdefn (for constructor propagation) - ctx.getValDefn(name) is Some(s) then - s - Select(qual, Symbol(name)) and // this.name - ctx.thisShape is Some(thisShape) then + ctx.getValDefn(name) is Some(s) then s + Select(qual, Symbol(name)) and // object property + ctx.thisShape is Some(thisShape) then // staged class selSet(thisShape, mkLit(name)) name is "length" and // special handle array .length let qualShape = sop(ctx, qual) @@ -256,7 +252,7 @@ fun sor(ctx, r) = if r is let res = SpecializeHelpers.specializeCtor(clsSymb, argShapes, ctx.clearCtx) [End(), r, res] else throw Error("class is staged but cache not found") - else [End(), r, mkClass(clsSymb, argShapes)] // TODO make unstaged object shape + else [End(), r, mkClass(clsSymb, argShapes)] ValueRef(symb) and // built-in or top-level let name = symb.name args is @@ -272,7 +268,7 @@ fun sor(ctx, r) = if r is "%" then lit(l1 % l2) "==" then lit(l1 == l2) "!=" then lit(l1 != l2) - "<" then lit(l1 < l2) + "<" then lit(l1 < l2) // TODO: technically if one shape is {1, 2} and another shape is {3, 4} we can still do partial evaluation "<=" then lit(l1 <= l2) ">" then lit(l1 > l2) ">=" then lit(l1 >= l2) @@ -280,7 +276,7 @@ fun sor(ctx, r) = if r is "!==" then lit(l1 !== l2) "&&" then lit(l1 && l2) "||" then lit(l1 || l2) - else [End(), r, mkDyn()] // FIXME: evaluate path + else [End(), r, mkDyn()] Select(ValueRef(ModuleSymbol(name, value)), Symbol(fld)) and let mapPropName = getGenMapName(name, false) let cachePropName = getCacheName(name, false) @@ -379,7 +375,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = fun prop(ctx, b) = if b is End() then [b, mkBot()] Return(Call(Select(ValueRef(symb), Symbol(f)), args), implct) and not (symb is ModuleSymbol) and not (f is "concat") then // TODO[later]: Ref -> Path, remove special checks - dispatchMethodCall(ctx, None, Some(implct), symb, f, args, End()) + dispatchMethodCall(ctx, None, Some(implct), symb, f, args) Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then [concat(blk, Return(r1, implct)), s1] Scoped(symbols, rest) then @@ -468,6 +464,10 @@ fun specializeName(funName, isMethod, ps, shapes) = else funName + "_" + mappedShapes.map(pss => pss.map(buildShapeSetName).join("_")).join("_dot_") fun specialize(cache: FunCache, funName, dflt, shapes) = + // FIXME + // right now the function name depends on the parameter constraints + // so we need to read the constraints by running dflt() anyway + // which prevent the possibilily of not running dflt when specialized function already exists in cache let defn = dflt() if defn is FunDefn(Symbol(_), ps, body) then let isMethod = cache.owner is ConcreteClassSymbol @@ -519,69 +519,5 @@ fun specializeCtor(classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], c if not (actualClass."class$ctor$_instr" is undefined) and actualClass."class$ctor$_instr"() is FunDefn(_, _, ctorBody) then do prop(ctx, ctorBody) else throw Error("ctor not found in staged class") - mkClassFromMap(classSymb, ctx.valDefnCtx) - else throw Error("instrumented method is not a FunDefn") - -class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with - val printer = Printer(Some(owner)) - fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None - // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions - fun setFun(k, v) = cache.set(k, v); v - fun toString() = - let decl = if owner is - ConcreteClassSymbol then "class " - ModuleSymbol then "module " - let runtimeClass = if owner is - ConcreteClassSymbol(_, _, Some, _) then owner.value.class - else owner.value - - val paramList = if owner is - ConcreteClassSymbol and owner.paramsOpt is - Some(ps) then [ps, ...owner.auxParams] - else owner.auxParams - ModuleSymbol then [] - - // process preCtor: inline temp variable when printing - class InlinePrinter(ctx: Map[Symbol, String]) extends Printer(Some(owner)) with - fun showPath(p) = if p is - ValueRef(s) and ctx.has(s) then ctx.get(s) - Select(qual, name) then showPath(qual) + "." + this.showSymbol(name) - DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" - DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" - ValueRef(s) then this.showSymbol(s) - ValueLit(lit) then this.showLiteral(lit) - - fun inlineResult(ctx: Map[Result, String])(r) = InlinePrinter(ctx).showResult(r) - - fun inlineAssigments(ctx: Map[Symbol, String])(b) = if b is - Return(res, implct) then inlineResult(ctx)(res) - Scoped(_, rest) then inlineAssigments(ctx)(rest) - Assign(lhs, rhs, rest) then inlineAssigments(ctx.set(lhs, inlineResult(ctx)(rhs)))(rest) - End then "" - else throw Error("unexpected Block type in constructor: " + b.toString()) - - let extendsClause = if owner is ConcreteClassSymbol then - let preCtor = runtimeClass."preCtor$_instr"().body - assert preCtor is Block.Block - inlineAssigments(new Map())(preCtor) - else "" - - // process ctor: remove ValDefn of parameters defined in paramsOpt - fun removeExtraValDefn(params, block) = if block is - Define(ValDefn(Some, sym, ValueRef(rhs)), rest) and params.has(rhs) then removeExtraValDefn(params, rest) - Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, removeExtraValDefn(params, rest)) - Assign(lhs, rhs, rest) then Assign(lhs, rhs, removeExtraValDefn(params, rest)) - Define(defn, rest) then Define(defn, removeExtraValDefn(params, rest)) - Scoped(symbols, rest) then Scoped(symbols, removeExtraValDefn(params, rest)) - else block - - let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() - assert ctor is FunDefn - let params = new Set(ctor.params.flat().map(_.sym)) - let ctorBody = removeExtraValDefn(params, ctor.body) - - decl + owner.name + printer.showParamList(paramList) - + if extendsClause == "" then "" else (" extends " + extendsClause) - + if cache.length == 0 then "" else " with" - + indent("\n" + printer.showBlock(ctorBody)) - + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().sort().join("\n")) \ No newline at end of file + mkClassFromMap(classSymb, ctx.valDefnCtx, Some(ps)) + else throw Error("instrumented method is not a FunDefn") \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 35a9560094..e82308a087 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -38,23 +38,7 @@ Test."test2_gen"(mkDyn()) print(Test."cache$Test") //│ > module Test with //│ > () -//│ > fun test() = 20 //│ > fun f_Lit2_Lit2(x, y) = 4 -//│ > fun fib_Lit4(n) = 3 -//│ > fun fib_Lit3(n) = 2 -//│ > fun fib_Lit2(n) = 1 -//│ > fun fib_Lit1(n) = 1 -//│ > fun pyth_Lit2_Lit4(x, y) = 20 -//│ > fun test2(n) = -//│ > let {dyn, tmp10} -//│ > dyn = pyth_Dyn_Lit2(n, 2) -//│ > tmp10 = *(dyn, 2) -//│ > fib(tmp10) -//│ > fun pyth_Dyn_Lit2(x, y) = -//│ > let {tmp6, tmp7} -//│ > tmp6 = NonStaged.sq(x) -//│ > tmp7 = 4 -//│ > tmp6 + tmp7 //│ > fun fib(n) = //│ > let {n1, tmp2, tmp3, tmp4, tmp5} //│ > if n is @@ -67,6 +51,22 @@ print(Test."cache$Test") //│ > tmp4 = n1 - 2 //│ > tmp5 = fib(tmp4) //│ > tmp3 + tmp5 +//│ > fun fib_Lit1(n) = 1 +//│ > fun fib_Lit2(n) = 1 +//│ > fun fib_Lit3(n) = 2 +//│ > fun fib_Lit4(n) = 3 +//│ > fun pyth_Dyn_Lit2(x, y) = +//│ > let {tmp6, tmp7} +//│ > tmp6 = NonStaged.sq(x) +//│ > tmp7 = 4 +//│ > tmp6 + tmp7 +//│ > fun pyth_Lit2_Lit4(x, y) = 20 +//│ > fun test() = 20 +//│ > fun test2(n) = +//│ > let {dyn, tmp10} +//│ > dyn = pyth_Dyn_Lit2(n, 2) +//│ > tmp10 = *(dyn, 2) +//│ > fib(tmp10) class C(val x) @@ -84,14 +84,10 @@ TestIf."test_gen"() print(TestIf."cache$TestIf") //│ > module TestIf with //│ > () -//│ > fun test() = "else" -//│ > fun f_C_Lit2(x) = -//│ > let {arg_C_0_} -//│ > arg_C_0_ = x.x -//│ > fun f_C_Lit3(x) = -//│ > let {arg_C_0_} -//│ > arg_C_0_ = x.x +//│ > fun f_C_Lit2(x) = "C(2)" +//│ > fun f_C_Lit3(x) = "C" //│ > fun f_Lit2(x) = "else" +//│ > fun test() = "else" class C(val n) staged module TestIf2 with @@ -112,26 +108,19 @@ TestIf2."test3_gen"() print(TestIf2."cache$TestIf2") //│ > module TestIf2 with //│ > () -//│ > fun test() = -//│ > let {tmp1} -//│ > tmp1 = C(2) -//│ > f_C_Lit2(tmp1) -//│ > fun f_C_Lit2(x) = +//│ > fun f_C_Dyn(x) = //│ > let {y, tmp} //│ > y = x.n //│ > tmp = () //│ > y + 1 +//│ > fun f_C_Lit2(x) = 3 +//│ > fun f_Lit0(x) = 1 +//│ > fun test() = 3 //│ > fun test2(dyn) = //│ > let {tmp2} //│ > tmp2 = C(dyn) //│ > f_C_Dyn(tmp2) -//│ > fun f_C_Dyn(x) = -//│ > let {y, tmp} -//│ > y = x.n -//│ > tmp = () -//│ > y + 1 //│ > fun test3() = 1 -//│ > fun f_Lit0(x) = 1 staged module LinearAlgebra with fun _dot(v1, v2, n, acc) = @@ -145,12 +134,6 @@ LinearAlgebra."test_gen"(mkDyn()) print(LinearAlgebra."cache$LinearAlgebra") //│ > module LinearAlgebra with //│ > () -//│ > fun test(x) = -//│ > let {tmp3, tmp4} -//│ > tmp3 = [x, 1, 2] -//│ > tmp4 = [3, 4, 1] -//│ > dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) -//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false @@ -176,6 +159,12 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = true //│ > acc +//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) +//│ > fun test(x) = +//│ > let {tmp3, tmp4} +//│ > tmp3 = [x, 1, 2] +//│ > tmp4 = [3, 4, 1] +//│ > dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) staged class L1(val y) with fun call(x) = x + 2 + y @@ -192,13 +181,13 @@ staged module M with fun test(b) = let y = twice(new L1(1), 5) let m = pick(new L2(2), new L3(3), b) - // twice(m, 5) + twice(m, 5) M."test_gen"(mkLit(true)) -//│ = ["test_Littrue", {Dyn()}] +//│ = ["test_Littrue", {Lit(9)}] M."test_gen"(mkLit(false)) -//│ = ["test_Litfalse", {Dyn()}] +//│ = ["test_Litfalse", {Lit(29)}] M."test_gen"(mkDyn()) //│ = ["test", {Dyn()}] @@ -206,33 +195,23 @@ M."test_gen"(mkDyn()) print(M."cache$M") //│ > module M with //│ > () -//│ > fun test_Littrue(b) = -//│ > let {y1, m, tmp1, tmp2, tmp3, obj_3} -//│ > tmp1 = new L1(1) -//│ > y1 = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > obj_3 = new L2(2) -//│ > m = obj_3 -//│ > () -//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 -//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y, b) = -//│ > let {obj_2} -//│ > obj_2 = new L2(2) -//│ > obj_2 -//│ > fun test_Litfalse(b) = -//│ > let {y1, m, tmp1, tmp2, tmp3, obj_6} -//│ > tmp1 = new L1(1) -//│ > y1 = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > obj_6 = new L3(3) -//│ > m = obj_6 -//│ > () +//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > let {obj_7, obj_8} +//│ > if b is +//│ > true then +//│ > obj_7 = new L2(2) +//│ > obj_7 +//│ > else +//│ > obj_8 = new L3(3) +//│ > obj_8 //│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y, b) = //│ > let {obj_5} //│ > obj_5 = new L3(3) //│ > obj_5 +//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y, b) = +//│ > let {obj_2} +//│ > obj_2 = new L2(2) +//│ > obj_2 //│ > fun test(b) = //│ > let {y1, m, tmp1, tmp2, tmp3} //│ > tmp1 = new L1(1) @@ -240,30 +219,43 @@ print(M."cache$M") //│ > tmp2 = new L2(2) //│ > tmp3 = new L3(3) //│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) -//│ > () -//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = -//│ > let {obj_7, obj_8} -//│ > if b is -//│ > true then -//│ > obj_7 = new L2(2) -//│ > obj_7 -//│ > else -//│ > obj_8 = new L3(3) -//│ > obj_8 +//│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) +//│ > fun test_Litfalse(b) = 29 +//│ > fun test_Littrue(b) = 9 +//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 +//│ > fun twice_L2_Lit2_Lit5(f, x) = 9 +//│ > fun twice_L3_Lit3_Lit5(f, x) = 29 +//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = +//│ > let {tmp} +//│ > if f is +//│ > L2 then +//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > L3 then +//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(y) with -//│ > val y = y +//│ > () //│ > fun call_L1_Lit1_dot_Lit5(x) = 8 //│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with -//│ > val y = y -//│ > +//│ > () +//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 +//│ > fun call_L2_Lit2_dot_Lit7(x) = 9 +//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y //│ > class L3(y) with -//│ > val y = y -//│ > +//│ > () +//│ > fun call_L3_Lit3_dot_Lit13(x) = 29 +//│ > fun call_L3_Lit3_dot_Lit5(x) = 13 +//│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = +//│ > let {tmp1} +//│ > tmp1 = *(x, 2) +//│ > tmp1 + y staged class A(val x: Int) with fun f(y: Int) = x + y @@ -287,10 +279,10 @@ print(TestThis."cache$TestThis") print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with -//│ > val x = x +//│ > () //│ > fun f_A_Lit1_dot_Lit1(y) = 2 //│ > class B(x) with -//│ > val x = x +//│ > () //│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 staged class B(val x, val y) @@ -306,22 +298,3 @@ M."test_gen"() M."test2_gen"() //│ = ["test2", {Lit(1)}] - -staged class Circle(val radius) with - fun area() = 3.14 * radius * radius - -staged class Square(val side) with - fun area() = side * side - -staged module TestMethodCall with - fun pick(b) = if b then Circle(1) else Square(10) - fun test(b) = pick(b).area() - -TestMethodCall."test_gen"(mkDyn()) -//│ = ["test", {Lit(100),Lit(3.14)}] - -print of - Circle.class."class$cache$Circle" -//│ > class Circle(radius) with -//│ > val radius = radius -//│ > fun area_Circle_Lit1_dot_() = 3.14 From ab3b9ce603266c95d01d3b145a4adebf0e78a959 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Sat, 18 Apr 2026 14:47:14 +0800 Subject: [PATCH 554/654] Support multiple generation --- .../codegen/ReflectionInstrumenter.scala | 16 ++++--- .../src/test/mlscript-compile/Block.mls | 15 +++++++ .../mlscript-compile/SpecializeHelpers.mls | 2 +- .../staging/out/CombinedModule.mls | 45 +++++++++++++++++++ .../staging/out/SimpleStagedExample.mls | 20 ++++----- .../mlscript/block-staging/GenerateMult.mls | 33 ++++++++++++++ 6 files changed, 114 insertions(+), 17 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 6e095efa9a..cb6770a54f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -428,10 +428,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => Define(ValDefn(generatorMapTsym, generatorMapSym, map)(N), rest) - def genOutputBody(sourceSym: VarSymbol, psym: VarSymbol) = - val options = Record(false, Ls(RcdArg(S(toValue("indent")), toValue(true)))) - - call(State.shapeSetSymbol.asPath.selSN("mkDyn"), Nil, isMlsFun = true, symName = "tmp_dyn"): dynVal => + val propFunDef = + val sym = BlockMemberSymbol("propagate", Nil) + val params = PlainParamList(Nil) + val body = call(State.shapeSetSymbol.asPath.selSN("mkDyn"), Nil, isMlsFun = true, symName = "tmp_dyn"): dynVal => def callGenCont(rest: Block) = generatorMethods.foldRight(rest)((gen, rest) => val genPath = modSym.asPath.selSN(gen.sym.nme) @@ -440,8 +440,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ((args, k) => call(_, args, true, "gen_call")(k)) (genPath) ) - callGenCont(call(blockMod("Printer").selSN("class").selSN("default").selSN("codegen"), toValue(modSym.nme) :: cachePath :: sourceSym.asPath :: psym.asPath :: Nil, true, "tmp")(_ => End())) + callGenCont(End()) + FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, body)(false, N, Visibility.Public) + def genOutputBody(sourceSym: VarSymbol, psym: VarSymbol) = + call(modSym.asPath.selSN(propFunDef.sym.nme), Nil, true, "tmp")(_ => + call(blockMod("codegen"), toValue(modSym.nme) :: cachePath :: sourceSym.asPath :: psym.asPath :: Nil, true, "tmp")(_ => End())) val entryFunDef = val sym = BlockMemberSymbol("generate", Nil) val sourceSym = VarSymbol(Ident("source")) @@ -449,7 +453,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val params = PlainParamList(Param.simple(sourceSym) :: Param.simple(psym) :: Nil) FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, genOutputBody(sourceSym, psym))(false, N, Visibility.Public) - (entryFunDef, stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(b))) + (entryFunDef, propFunDef :: stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(b))) override def applyObjBody(companion: ClsLikeBody) = companion.isym.defn match // staged modules diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 67168cff5c..de5bafd039 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -241,5 +241,20 @@ fun codegen(name, cache, source, file) = fs.writeFileSync(fullpath, "", "utf8") let originData = fs.readFileSync(fullpath, "utf8") let newData = code + if newData != originData do + fs.writeFileSync(fullpath, newData, "utf8") + +fun generateAll(name, file, ...modules) = + let fullpath = path.join of process.cwd(), file + if not fs.existsSync(fullpath) do + fs.mkdirSync(path.dirname(fullpath), recursive: true) + fs.writeFileSync(fullpath, "", "utf8") + let code = fold((res, p) => if p is + [mod, name, source] then + mod.propagate() + [res.0 + "import \"" + source + "\"\n", res.1 + "open " + name + "\n", res.2 + indent(mod.("cache$" + name).toString()) + "\n"] + )(["", "", ""], ...modules) + let originData = fs.readFileSync(fullpath, "utf8") + let newData = code.0 + "\n" + code.1 + "\n" + "module " + name + " with" + indent("\n" + code.2) if newData != originData do fs.writeFileSync(fullpath, newData, "utf8") \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a6a366023a..08a9989e30 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -161,7 +161,7 @@ fun sov(v): ShapeSet = let argsMap = new Map() if not (paramsOpt is None) do meta.2.forEach((n, _, _) => argsMap.set(n, sov(v.(n)))) - mkClassFromMap(classSymbol, argsMap) + mkClassFromMap(classSymbol, argsMap, None) // FIXME else throw Error("unknown value from sov", v.toString()) // shape of path diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls new file mode 100644 index 0000000000..d4f89750ab --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -0,0 +1,45 @@ +import "../SimpleStagedExample.mls" +import "../LinkingGeneratedClasses.mls" + +open SimpleStagedExample +open LinkingGeneratedClasses + +module CombinedModule with + module SimpleStagedExample with + () + fun f(x, y) = x + y + fun f_Lit2_Lit3(x, y) = 5 + fun fib(n) = + let {n1, tmp, tmp1, tmp2, tmp3} + if n is + 1 then 1 + 2 then 1 + else + n1 = n + tmp = n1 - 1 + tmp1 = fib(tmp) + tmp2 = n1 - 2 + tmp3 = fib(tmp2) + tmp1 + tmp3 + fun fib_Lit1(n) = 1 + fun fib_Lit10(n) = 55 + fun fib_Lit2(n) = 1 + fun fib_Lit3(n) = 2 + fun fib_Lit4(n) = 3 + fun fib_Lit5(n) = 5 + fun fib_Lit6(n) = 8 + fun fib_Lit7(n) = 13 + fun fib_Lit8(n) = 21 + fun fib_Lit9(n) = 34 + fun foo() = 60 + module LinkingGeneratedClasses with + class D + fun test1 = + let {obj_1} + obj_1 = new C + obj_1 + fun test2 = + let {obj_2} + obj_2 = new D + obj_2 + \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 18f53d561c..ccc8d53f88 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -3,6 +3,7 @@ open SimpleStagedExample module SimpleStagedExample with () fun f(x, y) = x + y + fun f_Lit2_Lit3(x, y) = 5 fun fib(n) = let {n1, tmp, tmp1, tmp2, tmp3} if n is @@ -15,15 +16,14 @@ module SimpleStagedExample with tmp2 = n1 - 2 tmp3 = fib(tmp2) tmp1 + tmp3 - fun foo() = 60 - fun f_Lit2_Lit3(x, y) = 5 + fun fib_Lit1(n) = 1 fun fib_Lit10(n) = 55 - fun fib_Lit9(n) = 34 - fun fib_Lit8(n) = 21 - fun fib_Lit7(n) = 13 - fun fib_Lit6(n) = 8 - fun fib_Lit5(n) = 5 - fun fib_Lit4(n) = 3 - fun fib_Lit3(n) = 2 fun fib_Lit2(n) = 1 - fun fib_Lit1(n) = 1 \ No newline at end of file + fun fib_Lit3(n) = 2 + fun fib_Lit4(n) = 3 + fun fib_Lit5(n) = 5 + fun fib_Lit6(n) = 8 + fun fib_Lit7(n) = 13 + fun fib_Lit8(n) = 21 + fun fib_Lit9(n) = 34 + fun foo() = 60 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls new file mode 100644 index 0000000000..4ee7728e17 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls @@ -0,0 +1,33 @@ +:js +:staging +:noModuleCheck + +import "../../mlscript-compile/staging/SimpleStagedExample.mls" +import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" +import "../../mlscript-compile/Block.mls" + + +Block.generateAll("CombinedModule", "./hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls", [SimpleStagedExample, "SimpleStagedExample", "../SimpleStagedExample.mls"], [LinkingGeneratedClasses, "LinkingGeneratedClasses", "../LinkingGeneratedClasses.mls"]) + + +import "../../mlscript-compile/staging/out/CombinedModule.mls" +open CombinedModule + + +SimpleStagedExample.foo() +//│ = 60 + +:expect 6 +SimpleStagedExample.f(1, 5) +//│ = 6 + +:expect 5 +SimpleStagedExample.fib(5) +//│ = 5 + +:fixme +LinkingGeneratedClasses.test1 +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. + +LinkingGeneratedClasses.test2 +//│ = D From e6eb83e7c049ef265a8b0553feb8ba6b927911d5 Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 20 Apr 2026 20:30:57 +0800 Subject: [PATCH 555/654] fix makeClassFromMap and some cleanup --- .../src/test/mlscript-compile/ShapeSet.mls | 8 +- .../mlscript-compile/SpecializeHelpers.mls | 41 +++++----- .../test/mlscript/block-staging/ShapeProp.mls | 74 +++++-------------- 3 files changed, 41 insertions(+), 82 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 84707a1a62..156abdbd31 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -4,6 +4,7 @@ import "./Option.mls" import "./Predef.mls" import "./Shape.mls" import "./StrOps.mls" +import "./Runtime.mls" open Block {ConcreteClassSymbol, Path, Symbol, Param} open Shape {Dyn, Lit, Arr, Class} @@ -74,10 +75,9 @@ fun mkClassFromMap(sym: ConcreteClassSymbol, paramsMap: Map[String, ShapeSet], p let entries = [...paramsMap.entries()] let keys = entries.map(a => let s = Symbol(a.0) - if psOpt is Some(pss) then + if psOpt is Some(pss) then let found = pss.flat().find(p => p.sym.name === a.0) - if found is undefined then - Param(None, s) + if found is Runtime.Unit then Param(None, s) else found else Param(None, s) ) @@ -136,7 +136,7 @@ fun val2path(v, allocs) = let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map(Block.Arg(_))), Block.End()) let fullBlock = foldl((b, acc) => Block.concat(b, acc))(tupAssign, ...blocks) [fullBlock, Block.ValueRef(tupSym)] - else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then + else if not(v is undefined) and not (v is null) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then let meta = v.constructor.(Symbols.definitionMetadata) let clsName = meta.1 // class may have no parameters diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 08a9989e30..b409a3f530 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -26,6 +26,19 @@ fun getCacheName(name, isClass) = fun getActualClass(c) = if not (c."class" is undefined) then c.class else c +fun getStagedClassInfo(c) = + let actualClass = getActualClass(c) + let clsName = actualClass.(Symbols.definitionMetadata).1 + [actualClass, clsName] + +fun getClassGenMap(c) = + let info = getStagedClassInfo(c) + info.0.(getGenMapName(info.1, true)) + +fun getClassCache(c) = + let info = getStagedClassInfo(c) + info.0.(getCacheName(info.1, true)) + fun wrapScoped(symbols, block) = if symbols.length is 0 then block else if block is Scoped(oldSymbols, rest) then Scoped([...symbols, ...oldSymbols], rest) @@ -78,7 +91,7 @@ module Ctx with class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with val printer = Printer(Some(owner)) fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None - // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions + // this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions fun setFun(k, v) = cache.set(k, v); v fun toString() = let decl = if owner is @@ -188,10 +201,7 @@ fun sop(ctx, p): ShapeSet = if ctx.get(p) is ValueRef(l) then mkDyn() fun isStagedClass(c) = - let actualClass = getActualClass(c) - let clsName = actualClass.(Symbols.definitionMetadata).1 - let genMapName = getGenMapName(clsName, true) - not (actualClass.(genMapName) is undefined) + not (getClassGenMap(c) is undefined) // split a shapeset of class symbols into known ones and unknown ones fun fsplit(pss) = @@ -222,10 +232,7 @@ fun sor(ctx, r) = if r is else throw Error("Instantiate with non-ClassSymbol in shape propagation: " + cls.toString()) let argsShape = args.map(a => sop(ctx, a.value)) isStagedClass(clsSymb.value) and - let actualClass = getActualClass(clsSymb.value) - let clsName = clsSymb.name - let cacheName = getCacheName(clsName, true) - let cache = actualClass.(cacheName) + let cache = getClassCache(clsSymb.value) not (cache is undefined) then let res = SpecializeHelpers.specializeCtor(clsSymb, argsShape, ctx.clearCtx) [End(), r, res] @@ -245,10 +252,8 @@ fun sor(ctx, r) = if r is [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] // FIXME ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class isStagedClass(clsSymb.value) then - let actualClass = getActualClass(clsSymb.value) - let clsName = actualClass.(Symbols.definitionMetadata).1 - let cacheName = getCacheName(clsName, true) - if not (actualClass.(cacheName) is undefined) then + let cache = getClassCache(clsSymb.value) + if not (cache is undefined) then let res = SpecializeHelpers.specializeCtor(clsSymb, argShapes, ctx.clearCtx) [End(), r, res] else throw Error("class is staged but cache not found") @@ -316,10 +321,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = let entry = [...knownMap.entries()].0 let C_i = entry.0 let ss_i = entry.1 - let actualClass = getActualClass(C_i.value) - let clsName = actualClass.(Symbols.definitionMetadata).1 - let genMapName = getGenMapName(clsName, true) - let genMap = actualClass.(genMapName) + let genMap = getClassGenMap(C_i.value) let f_gen = genMap.get(f) let generated = f_gen(ss_i)(...argShapes) let retSym = generated.0 @@ -341,10 +343,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = let armsRet = [...knownMap.entries()].map(entry => let C_i = entry.0 let ss_i = entry.1 - let actualClass = getActualClass(C_i.value) - let clsName = actualClass.(Symbols.definitionMetadata).1 - let genMapName = getGenMapName(clsName, true) - let genMap = actualClass.(genMapName) + let genMap = getClassGenMap(C_i.value) let f_gen = genMap.get(f) let generated = f_gen(ss_i)(...argShapes) let retSym = generated.0 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e82308a087..b0428b9a02 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -175,7 +175,7 @@ staged class L3(val y) with class L4(val y) with fun call(x) = x + y -staged module M with +staged module TestDispatching with fun twice(f, x) = f.call(f.call(x)) fun pick(x, y, b) = if b then x else y fun test(b) = @@ -183,58 +183,17 @@ staged module M with let m = pick(new L2(2), new L3(3), b) twice(m, 5) -M."test_gen"(mkLit(true)) +TestDispatching."test_gen"(mkLit(true)) //│ = ["test_Littrue", {Lit(9)}] -M."test_gen"(mkLit(false)) +TestDispatching."test_gen"(mkLit(false)) //│ = ["test_Litfalse", {Lit(29)}] -M."test_gen"(mkDyn()) +TestDispatching."test_gen"(mkDyn()) //│ = ["test", {Dyn()}] -print(M."cache$M") -//│ > module M with -//│ > () -//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = -//│ > let {obj_7, obj_8} -//│ > if b is -//│ > true then -//│ > obj_7 = new L2(2) -//│ > obj_7 -//│ > else -//│ > obj_8 = new L3(3) -//│ > obj_8 -//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y, b) = -//│ > let {obj_5} -//│ > obj_5 = new L3(3) -//│ > obj_5 -//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y, b) = -//│ > let {obj_2} -//│ > obj_2 = new L2(2) -//│ > obj_2 -//│ > fun test(b) = -//│ > let {y1, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new L1(1) -//│ > y1 = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) -//│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) -//│ > fun test_Litfalse(b) = 29 -//│ > fun test_Littrue(b) = 9 -//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 -//│ > fun twice_L2_Lit2_Lit5(f, x) = 9 -//│ > fun twice_L3_Lit3_Lit5(f, x) = 29 -//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = -//│ > let {tmp} -//│ > if f is -//│ > L2 then -//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) -//│ > L3 then -//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) -//│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +print(TestDispatching."cache$M") +//│ > undefined print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") @@ -263,7 +222,7 @@ staged class B(val x: Int) with fun f(y: A) = x + y.f(x) staged module TestThis with - fun test2(y) = B(1).x + y // FIXME + fun test2(y) = B(1).x + y fun test(x) = B(x).f(A(1)) TestThis."test2_gen"(mkLit(1)) @@ -285,16 +244,17 @@ print(B.class."class$cache$B") //│ > () //│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 -staged class B(val x, val y) +staged class B(val x, val y) with + val z = x + y staged class D(val x, val y) extends B(x + 1, x + 2) -staged module M with - fun test() = new D(1, 2).y - fun test2() = new D(1, 2).x - -M."test_gen"() -//│ = ["test", {Lit(2)}] +staged module TestInheritance with + fun test() = + let d = D(1, 2) + if d is + B then d.z + else "not B" -M."test2_gen"() -//│ = ["test2", {Lit(1)}] +TestInheritance."test_gen"() +//│ = ["test", {Lit(5)}] From e9e3d3ef8248b087d9f1bbd26c027d7041921b11 Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 20 Apr 2026 20:38:40 +0800 Subject: [PATCH 556/654] update diff test --- .../test/mlscript/block-staging/Syntax.mls | 21 ++++++++++--------- .../codegen/FirstClassFunctionTransform.mls | 4 ++-- .../src/test/mlscript/codegen/Spreads.mls | 4 ++-- .../src/test/mlscript/lifter/ClassInFun.mls | 2 +- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 17a65bfd3c..fc482241a3 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -17,12 +17,12 @@ staged fun f() = 0 :js :sir -:staging // TODO: this is only used to import Block, the printout is undesired +:staging staged module A //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let A⁰, symbolMap, tmp, tmp1, tmp2; -//│ set tmp = new globalThis⁰.Map﹖(); -//│ set tmp1 = new globalThis⁰.Map﹖(); +//│ set tmp = new globalThis⁰.this.Map﹖(); +//│ set tmp1 = new globalThis⁰.this.Map﹖(); //│ set tmp2 = new Block⁰.SymbolMap﹖(tmp, tmp1); //│ set symbolMap = tmp2; //│ define A⁰ as class A¹ @@ -31,18 +31,18 @@ staged module A //│ let tmp3, tmp4, sym, tmp5, tmp6, tmp7; //│ set sym = Block⁰.ModuleSymbol﹖("A", A²); //│ set tmp5 = symbolMap.checkMap﹖("moduleMap", A², sym); -//│ set tmp6 = new globalThis⁰.Map﹖(); +//│ set tmp6 = new globalThis⁰.this.Map﹖(); //│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp5, tmp6); //│ define cache$A⁰ as val cache$A¹ = tmp7; //│ set tmp3 = []; -//│ set tmp4 = new globalThis⁰.Map﹖(tmp3); +//│ set tmp4 = new globalThis⁰.this.Map﹖(tmp3); //│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp4; //│ end //│ } //│ method generate⁰ = fun generate¹(source, path) { -//│ let tmp_dyn, tmp3; -//│ set tmp_dyn = ShapeSet⁰.mkDyn﹖(); -//│ set tmp3 = Block⁰.Printer﹖.class﹖.default﹖.codegen﹖("A", A².cache$A﹖, source, path); +//│ let tmp3, tmp4; +//│ set tmp3 = A².this.propagate﹖(); +//│ set tmp4 = Block⁰.codegen﹖("A", A².this.cache$A﹖, source, path); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { @@ -54,6 +54,7 @@ staged module A //│ set tmp5 = Block⁰.FunDefn﹖(sym, tmp4, end); //│ return tmp5 //│ } +//│ method propagate⁰ = fun propagate¹() { let tmp_dyn; set tmp_dyn = ShapeSet⁰.mkDyn﹖(); end } //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— @@ -67,8 +68,8 @@ fun g(@static x) = x :e fun h(@dynamic @static x) = x //│ ╔══[COMPILATION ERROR] At most one reflection constraint can be added for each parameter. -//│ ║ l.68: fun h(@dynamic @static x) = x +//│ ║ l.69: fun h(@dynamic @static x) = x //│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Name not found: x -//│ ║ l.68: fun h(@dynamic @static x) = x +//│ ║ l.69: fun h(@dynamic @static x) = x //│ ╙── ^ diff --git a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls index 1dddac3a50..fa9de109d3 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls @@ -370,7 +370,7 @@ foo.Foo#x :ge foo.f(0) //│ ╔══[COMPILATION ERROR] Cannot determine if f is a function object. -//│ ║ l.386: foo.f(0) +//│ ║ l.371: foo.f(0) //│ ╙── ^^^^^ //│ = 1 @@ -388,7 +388,7 @@ foo.Foo#f(0) :ge foo.x(0) //│ ╔══[COMPILATION ERROR] Cannot determine if x is a function object. -//│ ║ l.404: foo.x(0) +//│ ║ l.389: foo.x(0) //│ ╙── ^^^^^ diff --git a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls index 08d53037dd..2d569d272d 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls @@ -58,7 +58,7 @@ foo(0, ...a) data class A(...r) let x = new A(1, 2, 3) x.r -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1315': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1318': mismatched param list lengths List() vs List(term:A/r) //│ ╟── The compilation result may be incorrect. //│ ╙── This is a compiler bug; please report it to the maintainers. //│ ═══[RUNTIME ERROR] Error: Access to required field 'r' yielded 'undefined' @@ -70,7 +70,7 @@ x.r data class A(...r) with fun getR = r new A(1, 2, 3).getR -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1315': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1318': mismatched param list lengths List() vs List(term:A/r) //│ ╟── The compilation result may be incorrect. //│ ╙── This is a compiler bug; please report it to the maintainers. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index f49fb57de4..7ab7486b11 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -246,7 +246,7 @@ fun f(x) = let res = f(0) res.a res.b -//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1315': mismatched param list lengths List() vs List(term:A/r) +//│ ╔══[INTERNAL ERROR] Compiler reached an unexpected state at 'Elaborator.scala:1318': mismatched param list lengths List() vs List(term:A/r) //│ ╟── The compilation result may be incorrect. //│ ╙── This is a compiler bug; please report it to the maintainers. //│ ═══[RUNTIME ERROR] ReferenceError: r is not defined From a083a30acefb134a318bdcddb6c02ec75fc0a670 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 21 Apr 2026 10:24:56 +0800 Subject: [PATCH 557/654] sop on one static operand of builtin --- .../mlscript-compile/SpecializeHelpers.mls | 42 ++++++++++++------- .../test/mlscript/block-staging/ShapeProp.mls | 21 ++++++---- 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index b409a3f530..5f63178922 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -265,22 +265,32 @@ fun sor(ctx, r) = if r is "!" then lit(not l) "-" then lit(-l) "+" then lit(+l) - [x, y] and sop(ctx, x.value).values() is [Shape.Lit(l1)] and sop(ctx, y.value).values() is [Shape.Lit(l2)] and name is - "+" then lit(l1 + l2) - "-" then lit(l1 - l2) - "*" then lit(l1 * l2) - "/" then lit(l1 / l2) - "%" then lit(l1 % l2) - "==" then lit(l1 == l2) - "!=" then lit(l1 != l2) - "<" then lit(l1 < l2) // TODO: technically if one shape is {1, 2} and another shape is {3, 4} we can still do partial evaluation - "<=" then lit(l1 <= l2) - ">" then lit(l1 > l2) - ">=" then lit(l1 >= l2) - "===" then lit(l1 === l2) - "!==" then lit(l1 !== l2) - "&&" then lit(l1 && l2) - "||" then lit(l1 || l2) + [x, y] and + let vx = sop(ctx, x.value).values() + let vy = sop(ctx, y.value).values() + vx is [Shape.Lit(l1)] and vy is [Shape.Lit(l2)] and + name is + "+" then lit(l1 + l2) + "-" then lit(l1 - l2) + "*" then lit(l1 * l2) + "/" then lit(l1 / l2) + "%" then lit(l1 % l2) + "==" then lit(l1 == l2) + "!=" then lit(l1 != l2) + "<" then lit(l1 < l2) // TODO: technically if one shape is {1, 2} and another shape is {3, 4} we can still do partial evaluation + "<=" then lit(l1 <= l2) + ">" then lit(l1 > l2) + ">=" then lit(l1 >= l2) + "===" then lit(l1 === l2) + "!==" then lit(l1 !== l2) + "&&" then lit(l1 && l2) + "||" then lit(l1 || l2) + else [End(), r, mkDyn()] + else if vx is [Shape.Lit(l1)] then + [End(), Call(f, [Arg(ValueLit(l1)), y]), mkDyn()] + else if vy is [Shape.Lit(l2)] then + [End(), Call(f, [x, Arg(ValueLit(l2))]), mkDyn()] + else [End(), r, mkDyn()] else [End(), r, mkDyn()] Select(ValueRef(ModuleSymbol(name, value)), Symbol(fld)) and let mapPropName = getGenMapName(name, false) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index b0428b9a02..bd5679d28a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -59,7 +59,7 @@ print(Test."cache$Test") //│ > let {tmp6, tmp7} //│ > tmp6 = NonStaged.sq(x) //│ > tmp7 = 4 -//│ > tmp6 + tmp7 +//│ > tmp6 + 4 //│ > fun pyth_Lit2_Lit4(x, y) = 20 //│ > fun test() = 20 //│ > fun test2(n) = @@ -138,22 +138,22 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 1 -//│ > tmp1 = *(v1.(n), v2.(n)) -//│ > tmp2 = tmp1 + acc +//│ > tmp1 = *(v1.(n), 3) +//│ > tmp2 = tmp1 + 0 //│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 2 //│ > tmp1 = 4 -//│ > tmp2 = tmp1 + acc +//│ > tmp2 = 4 + acc //│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 3 //│ > tmp1 = 2 -//│ > tmp2 = tmp1 + acc +//│ > tmp2 = 2 + acc //│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} @@ -206,7 +206,7 @@ print(L3.class."class$cache$L3") //│ > () //│ > fun call_L2_Lit2_dot_Lit5(x) = 7 //│ > fun call_L2_Lit2_dot_Lit7(x) = 9 -//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + y +//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + 2 //│ > class L3(y) with //│ > () //│ > fun call_L3_Lit3_dot_Lit13(x) = 29 @@ -214,7 +214,7 @@ print(L3.class."class$cache$L3") //│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = //│ > let {tmp1} //│ > tmp1 = *(x, 2) -//│ > tmp1 + y +//│ > tmp1 + 3 staged class A(val x: Int) with fun f(y: Int) = x + y @@ -258,3 +258,10 @@ staged module TestInheritance with TestInheritance."test_gen"() //│ = ["test", {Lit(5)}] + +staged module NonTermination with + fun f(x, y) = if y is + 1 then 0 + else f(x, y + 1) + +// NonTermination."f_gen"(mkDyn(), mkLit(0)) From 20ea9aa8c6bcb092f7a710847c09214e2c9b694c Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 21 Apr 2026 13:56:10 +0800 Subject: [PATCH 558/654] refactoring of sor --- .../src/test/mlscript-compile/ShapeSet.mls | 55 +++- .../mlscript-compile/SpecializeHelpers.mls | 265 +++++++++--------- .../test/mlscript/block-staging/ShapeProp.mls | 124 +++++--- 3 files changed, 273 insertions(+), 171 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 156abdbd31..2baec217f0 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -89,12 +89,63 @@ fun mkClassFromMap(sym: ConcreteClassSymbol, paramsMap: Map[String, ShapeSet], p .map(Class(newSym, _)) |> liftMany -// helper functions - fun filterSet(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) fun restSet(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.rest(_, p)) +fun isFalseShape(s: ShapeSet) = s.values().length is 1 and s.values().0 is Lit(l) and l is false +fun isTrueShape(s: ShapeSet) = s.values().length is 1 and s.values().0 is Lit(l) and l is true + +fun binOpSet(op: Str, s1: ShapeSet, s2: ShapeSet) = + if + op is + "&&" and + isFalseShape(s1) then mkLit(false) + isFalseShape(s2) then mkLit(true) + "||" and + isTrueShape(s1) then mkLit(true) + isTrueShape(s2) then mkLit(true) + s1.isDyn() then mkDyn() + s2.isDyn() then mkDyn() + else + let pairs = prod([s1.values(), s2.values()]) + let res = pairs.map(pair => + if pair.0 is Lit(l1) and pair.1 is Lit(l2) and op is + "+" then Lit(l1 + l2) + "-" then Lit(l1 - l2) + "*" then Lit(l1 * l2) + "/" then Lit(l1 / l2) + "%" then Lit(l1 % l2) + "==" then Lit(l1 == l2) + "!=" then Lit(l1 != l2) + "<" then Lit(l1 < l2) + "<=" then Lit(l1 <= l2) + ">" then Lit(l1 > l2) + ">=" then Lit(l1 >= l2) + "===" then Lit(l1 === l2) + "!==" then Lit(l1 !== l2) + "&&" then Lit(l1 && l2) + "||" then Lit(l1 || l2) + else Dyn() + ) + if res.some(_ is Dyn) then mkDyn() + else + let st = liftMany(res) + let isBoolOp = if op is + "==" then true + "!=" then true + "<" then true + "<=" then true + ">" then true + ">=" then true + "===" then true + "!==" then true + "&&" then true + "||" then true + else false + if isBoolOp and st.values().length > 1 then mkDyn() + else st + fun selSet(s1: ShapeSet, s2: ShapeSet) = prod([s1.values(), s2.values()]) .flatMap(pair => Shape.sel(pair.0, pair.1)) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 5f63178922..a1a0c8f840 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -55,11 +55,11 @@ fun showCtxPath(p) = if p is // FIXME ValueLit(lit) then "Lit(" + lit.toString() + ")" class Ctx( - // ctx tracks shapes of variables during shape prop + // ctx tracks shapes of variables val ctx: Map[String, ShapeSet], - // valDefnCtx tracks fields defined by ValDefn during shape prop of constructor + // valDefnCtx tracks fields defined by ValDefn val valDefnCtx: Map[String, ShapeSet] - // allocs tracks the new variables allocated during shape prop + // allocs tracks the new variables allocated val allocs: Array[Block.Symbol], // thisShape stores the shapeset of this, e.g., C1(1) U C1(2) val thisShape: Option[ShapeSet], @@ -157,25 +157,26 @@ module FunCache with // shape of value fun sov(v): ShapeSet = - if typeof(v) is - "number" then mkLit(v) - "string" then mkLit(v) - "boolean" then mkLit(v) - else if Array.isArray(v) then - mkArr(v.map(sov)) - else if not (v is undefined) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then - let meta = v.constructor.(Symbols.definitionMetadata) - let clsName = meta.1 - // if class field is not public, then definitionMetadata in the corresponding field is null - let paramsOpt = if meta.length < 3 - then None - else Some(meta.2.map(p => if p is null then Symbol("") else Symbol(p))) - let classSymbol = ConcreteClassSymbol(clsName, v.constructor, paramsOpt, []) - let argsMap = new Map() - if not (paramsOpt is None) do - meta.2.forEach((n, _, _) => argsMap.set(n, sov(v.(n)))) - mkClassFromMap(classSymbol, argsMap, None) // FIXME - else throw Error("unknown value from sov", v.toString()) + if + typeof(v) is + "number" then mkLit(v) + "string" then mkLit(v) + "boolean" then mkLit(v) + Array.isArray(v) then + mkArr(v.map(sov)) + not (v is undefined) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then + let meta = v.constructor.(Symbols.definitionMetadata) + let clsName = meta.1 + // if class field is not public, then definitionMetadata in the corresponding field is null + let paramsOpt = if meta.length < 3 + then None + else Some(meta.2.map(p => if p is null then Symbol("") else Symbol(p))) + let classSymbol = ConcreteClassSymbol(clsName, v.constructor, paramsOpt, []) + let argsMap = new Map() + if not (paramsOpt is None) do + meta.2.forEach((n, _, _) => argsMap.set(n, sov(v.(n)))) + mkClassFromMap(classSymbol, argsMap, None) // FIXME + else throw Error("unknown value from sov", v.toString()) // shape of path fun sop(ctx, p): ShapeSet = if ctx.get(p) is @@ -204,6 +205,8 @@ fun isStagedClass(c) = not (getClassGenMap(c) is undefined) // split a shapeset of class symbols into known ones and unknown ones +class SplitResult(val knownMap: Map[ConcreteClassSymbol, ShapeSet], val unkShape: ShapeSet) + fun fsplit(pss) = let knownMap = new Map() let unkShape = foldl((acc, s) => if s is @@ -213,151 +216,143 @@ fun fsplit(pss) = acc else union(acc, mkDyn()) )(mkBot(), ...pss.values()) - [knownMap, unkShape] + SplitResult(knownMap, unkShape) fun lit(l) = [End(), ValueLit(l), mkLit(l)] +fun sorInstantiate(ctx, r, cls, args) = + let clsSymb = if cls is + ValueRef(symb) and symb is ConcreteClassSymbol then symb // class defined globally + Select(_, symb) and symb is ConcreteClassSymbol then symb // class defined in a module + else throw Error("Instantiate with non-ClassSymbol in shape propagation: " + cls.toString()) + let argsShape = args.map(a => sop(ctx, a.value)) + if isStagedClass(clsSymb.value) then + let cache = getClassCache(clsSymb.value) + if not (cache is undefined) then + let res = SpecializeHelpers.specializeCtor(clsSymb, argsShape, ctx.clearCtx) + [End(), r, res] + else throw Error("cache not found in staged class") + else [End(), r, mkClass(clsSymb, argsShape)] + +fun sorBuiltinOp(ctx, r, f, name, args) = if args is + [x] and sop(ctx, x.value).values() is [Shape.Lit(l)] and name is + "!" then lit(not l) + "-" then lit(-l) + "+" then lit(+l) + [x, y] then + let s1 = sop(ctx, x.value) + let s2 = sop(ctx, y.value) + let bs = binOpSet(name, s1, s2) + if staticSet(bs) then lit(valOfSet(bs)) + else + let evaledArgs = args.map(a => sor(ctx, a.value)) + let fullBlk = foldl((acc, e) => concat(acc, e.0))(End(), ...evaledArgs) + let newArgs = evaledArgs.map(e => Arg(if e.1 is Path then e.1 else throw Error("expected path"))) + let newArgsWithLit = + if s1.values() is [Shape.Lit(l)] then [Arg(ValueLit(l)), newArgs.1] + else if s2.values() is [Shape.Lit(l)] then [newArgs.0, Arg(ValueLit(l))] + else newArgs + [fullBlk, Call(f, newArgsWithLit), bs] + else + let evaledArgs = args.map(a => sor(ctx, a.value)) + let fullBlk = foldl((acc, e) => concat(acc, e.0))(End(), ...evaledArgs) + let newArgs = evaledArgs.map(e => Arg(if e.1 is Path then e.1 else throw Error("expected path"))) + [fullBlk, Call(f, newArgs), mkDyn()] + +fun sorCall(ctx, r, f, args, argShapes) = if f is + Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) // runtime.Tuple.get is generated by the compiler in the IR + and args is [Arg(scrut), Arg(litArg)] then + let recovered = DynSelect(scrut, litArg, false) + [End(), recovered, sop(ctx, recovered)] + Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then + throw Error("runtime.Tuple.slice not handled in shape propagation") + Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module + [End(), r, mkClass(clsSymb, argShapes)] // FIXME + ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class + isStagedClass(clsSymb.value) and + let cache = getClassCache(clsSymb.value) + not (cache is undefined) then + let res = SpecializeHelpers.specializeCtor(clsSymb, argShapes, ctx.clearCtx) + [End(), r, res] + else throw Error("class is staged but cache not found") + else [End(), r, mkClass(clsSymb, argShapes)] + ValueRef(symb) then sorBuiltinOp(ctx, r, f, symb.name, args) // built-in or top-level + Select(ValueRef(ModuleSymbol(name, value)), Symbol(fld)) and + let mapPropName = getGenMapName(name, false) + let cachePropName = getCacheName(name, false) + let genMap = value.(mapPropName) + not (genMap is undefined) and + let f_gen = genMap.get(fld) + not (f_gen is Runtime.Unit) and // staged function + let res = f_gen(...argShapes) + staticSet(res.1) then + let v2p = val2path(valOfSet(res.1), ctx.allocs) + [v2p.0, v2p.1, res.1] + else + [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), Symbol(res.0)), args), res.1] + else + throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") + argShapes.every(staticSet) then // non staged function and params known + let f_imp = value.(fld) + let evaluated = f_imp(...argShapes.map(valOfSet)) + let evaluated_path = val2path(evaluated, ctx.allocs) + [evaluated_path.0, evaluated_path.1, sov(evaluated)] + else + [End(), r, mkDyn()] // non staged function and some params unknown + else throw Error("unknown call in sor: " + r.toString()) + // shape of result: return [blk, res, s] // where blk is the block needed to construct the result res (End() if not needed) and s is the shape fun sor(ctx, r) = if r is Path and let s = sop(ctx, r) - // If a path has a statically known shape, then just replace it with the known value staticSet(s) and val2path(valOfSet(s), ctx.allocs) is [blk, res] then [blk, res, s] else [End(), r, s] - Instantiate(cls, args) and - let clsSymb = if cls is - ValueRef(symb) and symb is ConcreteClassSymbol then symb // class defined globally - Select(_, symb) and symb is ConcreteClassSymbol then symb // class defined in a module - else throw Error("Instantiate with non-ClassSymbol in shape propagation: " + cls.toString()) - let argsShape = args.map(a => sop(ctx, a.value)) - isStagedClass(clsSymb.value) and - let cache = getClassCache(clsSymb.value) - not (cache is undefined) then - let res = SpecializeHelpers.specializeCtor(clsSymb, argsShape, ctx.clearCtx) - [End(), r, res] - else throw Error("cache not found in staged class") - else [End(), r, mkClass(clsSymb, argsShape)] + Instantiate(cls, args) then sorInstantiate(ctx, r, cls, args) Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] - Call(f, args) and - let argShapes = args.map((a, _, _) => sop(ctx, a.value)) - f is - Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) // runtime.Tuple.get is generated by the compiler in the IR - and args is [Arg(scrut), Arg(litArg)] then - let recovered = DynSelect(scrut, litArg, false) - [End(), recovered, sop(ctx, recovered)] - Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then - throw Error("runtime.Tuple.slice not handled in shape propagation") - Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module - [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] // FIXME - ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class - isStagedClass(clsSymb.value) then - let cache = getClassCache(clsSymb.value) - if not (cache is undefined) then - let res = SpecializeHelpers.specializeCtor(clsSymb, argShapes, ctx.clearCtx) - [End(), r, res] - else throw Error("class is staged but cache not found") - else [End(), r, mkClass(clsSymb, argShapes)] - ValueRef(symb) and // built-in or top-level - let name = symb.name - args is - [x] and sop(ctx, x.value).values() is [Shape.Lit(l)] and name is - "!" then lit(not l) - "-" then lit(-l) - "+" then lit(+l) - [x, y] and - let vx = sop(ctx, x.value).values() - let vy = sop(ctx, y.value).values() - vx is [Shape.Lit(l1)] and vy is [Shape.Lit(l2)] and - name is - "+" then lit(l1 + l2) - "-" then lit(l1 - l2) - "*" then lit(l1 * l2) - "/" then lit(l1 / l2) - "%" then lit(l1 % l2) - "==" then lit(l1 == l2) - "!=" then lit(l1 != l2) - "<" then lit(l1 < l2) // TODO: technically if one shape is {1, 2} and another shape is {3, 4} we can still do partial evaluation - "<=" then lit(l1 <= l2) - ">" then lit(l1 > l2) - ">=" then lit(l1 >= l2) - "===" then lit(l1 === l2) - "!==" then lit(l1 !== l2) - "&&" then lit(l1 && l2) - "||" then lit(l1 || l2) - else [End(), r, mkDyn()] - else if vx is [Shape.Lit(l1)] then - [End(), Call(f, [Arg(ValueLit(l1)), y]), mkDyn()] - else if vy is [Shape.Lit(l2)] then - [End(), Call(f, [x, Arg(ValueLit(l2))]), mkDyn()] - else [End(), r, mkDyn()] - else [End(), r, mkDyn()] - Select(ValueRef(ModuleSymbol(name, value)), Symbol(fld)) and - let mapPropName = getGenMapName(name, false) - let cachePropName = getCacheName(name, false) - let genMap = value.(mapPropName) - not (genMap is undefined) and - let f_gen = genMap.get(fld) - not (f_gen is Runtime.Unit) then // staged function - let res = f_gen(...argShapes) - if staticSet(res.1) then - let v2p = val2path(valOfSet(res.1), ctx.allocs) - [v2p.0, v2p.1, res.1] - else - [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), Symbol(res.0)), args), res.1] - else - throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") - argShapes.every(staticSet) then // non staged function and params known - let f_imp = value.(fld) - let evaluated = f_imp(...argShapes.map(valOfSet)) - let evaluated_path = val2path(evaluated, ctx.allocs) - [evaluated_path.0, evaluated_path.1, sov(evaluated)] - else - [End(), r, mkDyn()] // non staged function and some params unknown - else throw Error("unknown call in sor: " + r.toString()) + Call(f, args) then sorCall(ctx, r, f, args, args.map((a, _, _) => sop(ctx, a.value))) else throw Error("unknown result in sor: " + r.toString()) fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = let pss = sop(ctx, ValueRef(symb)) let argShapes = args.map(a => sop(ctx, a.value)) - let splitted = fsplit(pss) - let knownMap = splitted.0 - let unkShape = splitted.1 + let splitRes = fsplit(pss) + let knownMap = splitRes.knownMap + let unkShape = splitRes.unkShape + let knownMapArr = [...knownMap.entries()] let isRet = xOpt is None if knownMap.size is + 0 and + let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) + isRet then + [Return(dfltMatch, if implctOpt is Some(i) then i else false), mkDyn()] + else + let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") + [Assign(x, dfltMatch, End()), mkDyn()] 1 and unkShape.isEmpty() and // If the object is certainly a known class, generate the generated method call directly without pattern matching - let entry = [...knownMap.entries()].0 - let C_i = entry.0 - let ss_i = entry.1 + let C_i = knownMapArr.0.0 + let ss_i = knownMapArr.0.1 let genMap = getClassGenMap(C_i.value) let f_gen = genMap.get(f) - let generated = f_gen(ss_i)(...argShapes) - let retSym = generated.0 - let retShape = generated.1 + let ret = f_gen(ss_i)(...argShapes) + let retSym = ret.0 + let retShape = ret.1 let callRes = Call(Select(ValueRef(symb), Symbol(retSym)), args) isRet then - [concat(End(), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] - else - let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - [concat(End(), Assign(x, callRes, End())), retShape] - 0 and - let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) - isRet then - [concat(End(), Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] + [Return(callRes, if implctOpt is Some(i) then i else false), retShape] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - [concat(End(), Assign(x, dfltMatch, End())), mkDyn()] + [Assign(x, callRes, End()), retShape] else - let armsRet = [...knownMap.entries()].map(entry => + let armsRet = knownMapArr.map(entry => let C_i = entry.0 let ss_i = entry.1 let genMap = getClassGenMap(C_i.value) let f_gen = genMap.get(f) - let generated = f_gen(ss_i)(...argShapes) - let retSym = generated.0 - let retShape = generated.1 + let retSym = f_gen(ss_i)(...argShapes).0 + let retShape = f_gen(ss_i)(...argShapes).1 let callRes = Call(Select(ValueRef(symb), Symbol(retSym)), args) if isRet then [Arm(Cls(C_i, ValueRef(symb)), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index bd5679d28a..a8f758a7b1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -16,7 +16,7 @@ staged module Staged with 2 then 1 n then fib(n - 1) + fib(n - 2) -staged module Test with +staged module Simple with fun f(x, y) = x + y + 1 - 1 fun fib(n) = if n is 1 then 1 @@ -33,10 +33,10 @@ staged module Test with let dyn = pyth(n, 2) fib(dyn * 2) -Test."test_gen"() -Test."test2_gen"(mkDyn()) -print(Test."cache$Test") -//│ > module Test with +Simple."test_gen"() +Simple."test2_gen"(mkDyn()) +print(Simple."cache$Simple") +//│ > module Simple with //│ > () //│ > fun f_Lit2_Lit2(x, y) = 4 //│ > fun fib(n) = @@ -70,7 +70,7 @@ print(Test."cache$Test") class C(val x) -staged module TestIf with +staged module If with fun f(x) = if x is C(2) then "C(2)" C then "C" @@ -80,9 +80,9 @@ staged module TestIf with f(C(3)) f(2) -TestIf."test_gen"() -print(TestIf."cache$TestIf") -//│ > module TestIf with +If."test_gen"() +print(If."cache$If") +//│ > module If with //│ > () //│ > fun f_C_Lit2(x) = "C(2)" //│ > fun f_C_Lit3(x) = "C" @@ -90,7 +90,7 @@ print(TestIf."cache$TestIf") //│ > fun test() = "else" class C(val n) -staged module TestIf2 with +staged module If2 with fun f(x) = let y if x is C then @@ -102,11 +102,11 @@ staged module TestIf2 with fun test2(dyn) = f(C(dyn)) fun test3() = f(0) -TestIf2."test_gen"() -TestIf2."test2_gen"(mkDyn()) -TestIf2."test3_gen"() -print(TestIf2."cache$TestIf2") -//│ > module TestIf2 with +If2."test_gen"() +If2."test2_gen"(mkDyn()) +If2."test3_gen"() +print(If2."cache$If2") +//│ > module If2 with //│ > () //│ > fun f_C_Dyn(x) = //│ > let {y, tmp} @@ -175,7 +175,7 @@ staged class L3(val y) with class L4(val y) with fun call(x) = x + y -staged module TestDispatching with +staged module Dispatching with fun twice(f, x) = f.call(f.call(x)) fun pick(x, y, b) = if b then x else y fun test(b) = @@ -183,17 +183,58 @@ staged module TestDispatching with let m = pick(new L2(2), new L3(3), b) twice(m, 5) -TestDispatching."test_gen"(mkLit(true)) +Dispatching."test_gen"(mkLit(true)) //│ = ["test_Littrue", {Lit(9)}] -TestDispatching."test_gen"(mkLit(false)) +Dispatching."test_gen"(mkLit(false)) //│ = ["test_Litfalse", {Lit(29)}] -TestDispatching."test_gen"(mkDyn()) -//│ = ["test", {Dyn()}] +Dispatching."test_gen"(mkDyn()) +//│ = ["test", {Lit(15),Lit(17),Lit(29),Lit(9)}] -print(TestDispatching."cache$M") -//│ > undefined +print(Dispatching."cache$Dispatching") +//│ > module Dispatching with +//│ > () +//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > let {obj_7, obj_8} +//│ > if b is +//│ > true then +//│ > obj_7 = new L2(2) +//│ > obj_7 +//│ > else +//│ > obj_8 = new L3(3) +//│ > obj_8 +//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y, b) = +//│ > let {obj_5} +//│ > obj_5 = new L3(3) +//│ > obj_5 +//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y, b) = +//│ > let {obj_2} +//│ > obj_2 = new L2(2) +//│ > obj_2 +//│ > fun test(b) = +//│ > let {y1, m, tmp1, tmp2, tmp3} +//│ > tmp1 = new L1(1) +//│ > y1 = 11 +//│ > tmp2 = new L2(2) +//│ > tmp3 = new L3(3) +//│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) +//│ > fun test_Litfalse(b) = 29 +//│ > fun test_Littrue(b) = 9 +//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 +//│ > fun twice_L2_Lit2_Lit5(f, x) = 9 +//│ > fun twice_L3_Lit3_Lit5(f, x) = 29 +//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = +//│ > let {tmp} +//│ > if f is +//│ > L2 then +//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > L3 then +//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > if f is +//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") @@ -221,18 +262,14 @@ staged class A(val x: Int) with staged class B(val x: Int) with fun f(y: A) = x + y.f(x) -staged module TestThis with - fun test2(y) = B(1).x + y +staged module This with fun test(x) = B(x).f(A(1)) + fun test2(y) = B(1).x + y -TestThis."test2_gen"(mkLit(1)) -//│ = ["test2_Lit1", {Lit(2)}] - -TestThis."test_gen"(mkLit(1)) -print(TestThis."cache$TestThis") -//│ > module TestThis with +This."test_gen"(mkLit(1)) +print(This."cache$This") +//│ > module This with //│ > () -//│ > fun test2_Lit1(y) = 2 //│ > fun test_Lit1(x) = 3 print(A.class."class$cache$A") @@ -249,19 +286,38 @@ staged class B(val x, val y) with staged class D(val x, val y) extends B(x + 1, x + 2) -staged module TestInheritance with +staged module Inheritance with fun test() = let d = D(1, 2) if d is B then d.z else "not B" -TestInheritance."test_gen"() +Inheritance."test_gen"() //│ = ["test", {Lit(5)}] staged module NonTermination with - fun f(x, y) = if y is + fun f(x, y) = if y is 1 then 0 else f(x, y + 1) +:fixme // NonTermination."f_gen"(mkDyn(), mkLit(0)) + +fun g(x, y) = x + y + +staged module GlobalFunction with + fun test(x) = g(x, x) + +GlobalFunction."test_gen"(union(mkLit(1), mkLit(2))) +//│ = ["test_Union_Lit1_Lit2_end", {Dyn()}] + +staged module Comparison with + fun test(x) = x < 5 + +Comparison."test_gen"(union(mkLit(3), mkLit(4))) +//│ = ["test_Union_Lit3_Lit4_end", {Lit(true)}] + +Comparison."test_gen"(union(mkLit(4), mkLit(6))) +//│ = ["test_Union_Lit4_Lit6_end", {Dyn()}] + From 8f952e64798c3ae980637872800c891f20022c96 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Tue, 21 Apr 2026 14:15:14 +0800 Subject: [PATCH 559/654] Fix escaping characters --- .../scala/hkmc2/codegen/ReflectionInstrumenter.scala | 8 +++++++- .../mlscript-compile/staging/SimpleStagedExample.mls | 2 ++ .../staging/out/LinkingGeneratedClasses.mls | 12 ++++++------ .../staging/out/SimpleStagedExample.mls | 6 +++++- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index cb6770a54f..213fe91e87 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -193,6 +193,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S dfltStaged: (dflt, ctx) => blockCtor("Match", Ls(x, arms, dflt, e), symName)(k(_, ctx)) + private def desugarEscaping(l: Value.Lit) = l.lit match + case s: Tree.StrLit => + val desugard = s.idStr + Value.Lit(Tree.StrLit(desugard.substring(1, desugard.length() - 1))) + case _ => l + // transformations of Block def transformPath(p: Path)(using ctx: Context)(k: (Path, Context) => Block): Block = @@ -203,7 +209,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformSymbol(disamb.getOrElse(l)): (sym, ctx) => blockCtor("ValueRef", Ls(sym), "var")(k(_, ctx)) case l: Value.Lit => - blockCtor("ValueLit", Ls(l), "lit")(k(_, ctx)) + blockCtor("ValueLit", Ls(desugarEscaping(l)), "lit")(k(_, ctx)) case s @ Select(p, Tree.Ident(name)) => transformPath(p): (x, ctx) => s.symbol match diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls index 7f389d8e4d..027c923a7a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls @@ -6,3 +6,5 @@ staged module SimpleStagedExample with n then fib(n - 1) + fib(n - 2) fun foo() = f(2, 3) + fib(10) + fun spaces() = ["\t", "\n", "\r"] + diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 0a03ff6ffe..39a2663ae8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -3,10 +3,10 @@ open LinkingGeneratedClasses module LinkingGeneratedClasses with class D fun test1 = - let {obj_1} - obj_1 = new C - obj_1 - fun test2 = let {obj_2} - obj_2 = new D - obj_2 \ No newline at end of file + obj_2 = new C + obj_2 + fun test2 = + let {obj_3} + obj_3 = new D + obj_3 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index ccc8d53f88..a4708a534a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -26,4 +26,8 @@ module SimpleStagedExample with fun fib_Lit7(n) = 13 fun fib_Lit8(n) = 21 fun fib_Lit9(n) = 34 - fun foo() = 60 \ No newline at end of file + fun foo() = 60 + fun spaces() = + let {tup_1} + tup_1 = ["\t", "\n", "\r"] + tup_1 \ No newline at end of file From e50996bb8a21ab8dd2213b19cff6b395b5c21efa Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Wed, 22 Apr 2026 13:17:05 +0800 Subject: [PATCH 560/654] WIP: Improve benchmarking --- .../src/test/mlscript-compile/Block.mls | 4 +- .../mlscript-compile/NaiveTransform3D.mls | 67 +- .../mlscript-compile/SpecializeHelpers.mls | 11 +- .../mlscript-compile/staging/Transform3D.mls | 69 +- .../staging/benchmark/NaiveTest.mls | 2 +- .../staging/benchmark/StagedTest.mls | 2 +- .../staging/out/CombinedModule.mls | 5 + .../staging/out/LinkingGeneratedClasses.mls | 1 + .../staging/out/SimpleStagedExample.mls | 1 + .../staging/out/Transform3D.mls | 2356 +++++++++++------ 10 files changed, 1585 insertions(+), 933 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index de5bafd039..ce6eb93ee7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -240,7 +240,7 @@ fun codegen(name, cache, source, file) = fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") let originData = fs.readFileSync(fullpath, "utf8") - let newData = code + let newData = "#config(noFreeze: true)\n" + code if newData != originData do fs.writeFileSync(fullpath, newData, "utf8") @@ -255,6 +255,6 @@ fun generateAll(name, file, ...modules) = [res.0 + "import \"" + source + "\"\n", res.1 + "open " + name + "\n", res.2 + indent(mod.("cache$" + name).toString()) + "\n"] )(["", "", ""], ...modules) let originData = fs.readFileSync(fullpath, "utf8") - let newData = code.0 + "\n" + code.1 + "\n" + "module " + name + " with" + indent("\n" + code.2) + let newData = "#config(noFreeze: true)\n" + code.0 + "\n" + code.1 + "\n" + "module " + name + " with" + indent("\n" + code.2) if newData != originData do fs.writeFileSync(fullpath, newData, "utf8") \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls index e1775ee943..37a9b924cc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls @@ -1,3 +1,5 @@ +#config(noFreeze: true) + module NaiveTransform3D with fun iter(sum, x, y, colX, i, j, k) = if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) @@ -85,63 +87,56 @@ module NaiveTransform3D with // iter([], 0) fun transform(dx, dy, dz) = - update( - update( + update of + update of update(ident(4), 0, 3, dx), 1, 3, dy - ), 2, 3, dz - ) + , 2, 3, dz fun scale(sx, sy, sz) = - update( - update( + update of + update of update(ident(4), 0, 0, sx), 1, 1, sy - ), 2, 2, sz - ) + , 2, 2, sz fun rotateX(angle) = let s = Math.sin(angle) let c = Math.cos(angle) - update( - update( - update( + update of + update of + update of update(ident(4), 1, 1, c), 1, 2, -s - ), 2, 1, s - ), 2, 2, c - ) + , 2, 1, s + , 2, 2, c fun rotateY(angle) = let s = Math.sin(angle) let c = Math.cos(angle) - update( - update( - update( + update of + update of + update of update(ident(4), 0, 0, c), 0, 2, s - ), 2, 0, -s - ), 2, 2, c - ) + , 2, 0, -s + , 2, 2, c fun rotateZ(angle) = let s = Math.sin(angle) let c = Math.cos(angle) - update( - update( - update( + update of + update of + update of update(ident(4), 0, 0, c), 0, 1, -s - ), 1, 0, s - ), 1, 1, c - ) + , 1, 0, s + , 1, 1, c fun model(local, position, scaling, rotation) = - let rot = multiply( - rotateZ(rotation.2), multiply( - rotateY(rotation.1), multiply( + let rot = multiply of + rotateZ(rotation.2), multiply of + rotateY(rotation.1), multiply of rotateX(rotation.0), ident(4) - ) - ) - ) - let res = multiply( - transform(position.0, position.1, position.2), multiply( + let res = multiply of + transform(position.0, position.1, position.2), multiply of rot, multiply(scale(scaling.0, scaling.1, scaling.2), [[local.0], [local.1], [local.2], [1]]) - ) - ) [res.0, res.1, res.2] + + fun model0(local) = + model(local, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0]) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a1a0c8f840..5e07f013c3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -268,6 +268,15 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is throw Error("runtime.Tuple.slice not handled in shape propagation") Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module [End(), r, mkClass(clsSymb, argShapes)] // FIXME + Select(p, Symbol("concat")) then // TODO: remove these special checks + if sop(ctx, p).values() is [Shape.Arr(arr)] and args is [e] and sop(ctx, e.value) is [Shape.Arr(arr2)] then + [End(), r, mkArr(arr.concat(arr2))] + else + [End(), r, mkDyn()] + Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _)), Symbol("sin")) then + [End(), r, mkDyn()] // TODO: evaluate if the parameter is static + Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _)), Symbol("cos")) then + [End(), r, mkDyn()] // TODO: evaluate if the parameter is static ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class isStagedClass(clsSymb.value) and let cache = getClassCache(clsSymb.value) @@ -444,7 +453,7 @@ fun propStub(ctx, body) = fun buildShapeName(s: Shape): Str = if s is Dyn then "Dyn" Lit(lit) and lit is Str then "Str" + lit - Lit(lit) then "Lit" + lit.toString() + Lit(lit) then "Lit" + lit.toString().replace(".", "_p_") Arr(shapes) then "Arr_" + shapes.map(buildShapeName).join("_") + "_end" Class(sym, params) and params.length is 0 then sym.name diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls index 9d3a3c3ec4..7eadf53285 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls @@ -1,3 +1,5 @@ +#config(noFreeze: true) + staged module Transform3D with fun iter(sum, x, y, colX, i, j, k) = if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) @@ -44,64 +46,57 @@ staged module Transform3D with iterUpdate([], m, row, col, i, j, v, row) fun transform(dx, dy, dz) = - update( - update( + update of + update of update(ident(4), 0, 3, dx), 1, 3, dy - ), 2, 3, dz - ) + , 2, 3, dz fun scale(sx, sy, sz) = - update( - update( + update of + update of update(ident(4), 0, 0, sx), 1, 1, sy - ), 2, 2, sz - ) + , 2, 2, sz fun rotateX(angle) = let s = Math.sin(angle) let c = Math.cos(angle) - update( - update( - update( + update of + update of + update of update(ident(4), 1, 1, c), 1, 2, -s - ), 2, 1, s - ), 2, 2, c - ) + , 2, 1, s + , 2, 2, c fun rotateY(angle) = let s = Math.sin(angle) let c = Math.cos(angle) - update( - update( - update( + update of + update of + update of update(ident(4), 0, 0, c), 0, 2, s - ), 2, 0, -s - ), 2, 2, c - ) + , 2, 0, -s + , 2, 2, c fun rotateZ(angle) = let s = Math.sin(angle) let c = Math.cos(angle) - update( - update( - update( + update of + update of + update of update(ident(4), 0, 0, c), 0, 1, -s - ), 1, 0, s - ), 1, 1, c - ) + , 1, 0, s + , 1, 1, c fun model(local, position, scaling, rotation) = - let rot = multiply( - rotateZ(rotation.2), multiply( - rotateY(rotation.1), multiply( + let rot = multiply of + rotateZ(rotation.2), multiply of + rotateY(rotation.1), multiply of rotateX(rotation.0), ident(4) - ) - ) - ) - let res = multiply( - transform(position.0, position.1, position.2), multiply( + let res = multiply of + transform(position.0, position.1, position.2), multiply of rot, multiply(scale(scaling.0, scaling.1, scaling.2), [[local.0], [local.1], [local.2], [1]]) - ) - ) - [res.0, res.1, res.2] \ No newline at end of file + [res.0, res.1, res.2] + + fun model0(local) = + model(local, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0]) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls index 68c69abfd7..2c55239b30 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls @@ -13,7 +13,7 @@ let coords = text.trim().split("\n").map(line => let begin = globalThis.process.hrtime() -coords.map(coord => NaiveTransform3D.model(coord, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0])) +coords.map(coord => NaiveTransform3D.model0(coord)) let diff = globalThis.process.hrtime(begin) let diffTime = diff.0 * 1000000000 + diff.1 console.log("time: " + diffTime) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls index c64c251e2a..e25375f0f5 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls @@ -13,7 +13,7 @@ let coords = text.trim().split("\n").map(line => let begin = globalThis.process.hrtime() -coords.map(coord => Transform3D.model(coord, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0])) +coords.map(coord => Transform3D.model0(coord)) let diff = globalThis.process.hrtime(begin) let diffTime = diff.0 * 1000000000 + diff.1 console.log("time: " + diffTime) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index d4f89750ab..349498c5ca 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -1,3 +1,4 @@ +#config(noFreeze: true) import "../SimpleStagedExample.mls" import "../LinkingGeneratedClasses.mls" @@ -32,6 +33,10 @@ module CombinedModule with fun fib_Lit8(n) = 21 fun fib_Lit9(n) = 34 fun foo() = 60 + fun spaces() = + let {tup_3} + tup_3 = ["\t", "\n", "\r"] + tup_3 module LinkingGeneratedClasses with class D fun test1 = diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 39a2663ae8..94f887ec9a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,3 +1,4 @@ +#config(noFreeze: true) import "../LinkingGeneratedClasses.mls" open LinkingGeneratedClasses module LinkingGeneratedClasses with diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index a4708a534a..81c170aabb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,3 +1,4 @@ +#config(noFreeze: true) import "../SimpleStagedExample.mls" open SimpleStagedExample module SimpleStagedExample with diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index d81dc72bd1..49b6db2afd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -1,70 +1,8 @@ +#config(noFreeze: true) import "../Transform3D.mls" open Transform3D module Transform3D with () - fun iter(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter(tmp3, x, y, colX, i, j, tmp4) - else sum - fun iterCol(vec, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = ===(j, 0) - if scrut1 is - true then vec - else - tmp5 = colY - j - tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) - tmp7 = [tmp6] - tmp8 = vec.concat(tmp7) - tmp9 = j - 1 - iterCol(tmp8, x, y, colX, colY, i, tmp9) - fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter(tmp3, x, y, colX, i, j, tmp4) - else 0 - fun iterRow(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} - scrut2 = ===(i, 0) - if scrut2 is - true then m - else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow(tmp14, x, y, rowX, colX, colY, tmp15) - fun iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_1} - scrut1 = ===(j, 0) - if scrut1 is - true then - tup_1 = [] - tup_1 - else - tmp5 = colY - j - tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) - tmp7 = [tmp6] - tmp8 = vec.concat(tmp7) - tmp9 = j - 1 - iterCol(tmp8, x, y, colX, colY, i, tmp9) fun genID(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = ===(j, 0) @@ -86,19 +24,6 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = j - 1 genID(tmp19, w, i, tmp20) - fun iterID(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = ===(i, 0) - if scrut5 is - true then m - else - tmp21 = [] - tmp22 = w - i - tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = i - 1 - iterID(tmp25, w, tmp26) fun genID_Arr__end_Dyn_Dyn_Dyn(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20, tup_2} scrut3 = ===(j, 0) @@ -122,164 +47,6 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = j - 1 genID(tmp19, w, i, tmp20) - fun updateVec(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp35 = row - i' - scrut9 = ===(i, tmp35) - if scrut9 is - true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) - tmp41 = i' - 1 - iterUpdate(tmp40, m, row, col, i, j, v, tmp41) - else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_3} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_3 = [] - tup_3 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec(tmp33, m, col, j, v, i', tmp34) - fun multiply(x, y) = - let {rowX1, colX3, rowY, colY2, tmp46} - rowX1 = x.length - colX3 = x.0.length - rowY = y.length - colY2 = y.0.length - tmp46 = [] - iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) - fun iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_4} - scrut2 = ===(i, 0) - if scrut2 is - true then - tup_4 = [] - tup_4 - else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow(tmp14, x, y, rowX, colX, colY, tmp15) - fun ident(w) = - let {tmp47} - tmp47 = [] - iterID_Arr__end_Dyn_Dyn(tmp47, w, w) - fun iterID_Arr__end_Dyn_Dyn(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tup_5} - scrut5 = ===(i, 0) - if scrut5 is - true then - tup_5 = [] - tup_5 - else - tmp21 = [] - tmp22 = w - i - tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = i - 1 - iterID(tmp25, w, tmp26) - fun update(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_6} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_6 = [] - tup_6 - else - tmp35 = row - i' - scrut9 = ===(i, tmp35) - if scrut9 is - true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) - tmp41 = i' - 1 - iterUpdate(tmp40, m, row, col, i, j, v, tmp41) - else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate(tmp44, m, row, col, i, j, v, tmp45) - fun transform(dx, dy, dz) = - let {tmp49, tmp50, tmp51} - tmp49 = ident_Lit4(4) - tmp50 = update_Dyn_Lit0_Lit3_Dyn(tmp49, 0, 3, dx) - tmp51 = update_Dyn_Lit1_Lit3_Dyn(tmp50, 1, 3, dy) - update_Dyn_Lit2_Lit3_Dyn(tmp51, 2, 3, dz) - fun ident_Lit4(w) = - let {tmp47} - tmp47 = [] - iterID_Arr__end_Lit4_Lit4(tmp47, w, w) - fun iterID_Arr__end_Lit4_Lit4(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 0 - tmp23 = genID_Arr__end_Lit4_Lit0_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 3 - iterID_Dyn_Lit4_Lit3(tmp25, w, tmp26) fun genID_Arr__end_Lit4_Lit0_Lit4(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false @@ -290,71 +57,51 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = 3 genID_Dyn_Lit4_Lit0_Lit3(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit0_Lit3(v, w, i, j) = + fun genID_Arr__end_Lit4_Lit1_Lit4(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 1 + tmp16 = 0 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit0_Lit2(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit0_Lit2(v, w, i, j) = + tmp20 = 3 + genID_Dyn_Lit4_Lit1_Lit3(tmp19, w, i, tmp20) + fun genID_Arr__end_Lit4_Lit2_Lit4(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 2 + tmp16 = 0 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 1 - genID_Dyn_Lit4_Lit0_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit0_Lit1(v, w, i, j) = + tmp20 = 3 + genID_Dyn_Lit4_Lit2_Lit3(tmp19, w, i, tmp20) + fun genID_Arr__end_Lit4_Lit3_Lit4(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 3 + tmp16 = 0 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit0_Lit0(tmp19, w, i, tmp20) + tmp20 = 3 + genID_Dyn_Lit4_Lit3_Lit3(tmp19, w, i, tmp20) fun genID_Dyn_Lit4_Lit0_Lit0(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = true v - fun iterID_Dyn_Lit4_Lit3(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 1 - tmp23 = genID_Arr__end_Lit4_Lit1_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 2 - iterID_Dyn_Lit4_Lit2(tmp25, w, tmp26) - fun genID_Arr__end_Lit4_Lit1_Lit4(v, w, i, j) = + fun genID_Dyn_Lit4_Lit0_Lit1(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 0 + tmp16 = 3 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit1_Lit3(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit1_Lit3(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 1 - scrut4 = true - tmp17 = 1 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit1_Lit2(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit1_Lit2(v, w, i, j) = + tmp20 = 0 + genID_Dyn_Lit4_Lit0_Lit0(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit0_Lit2(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false tmp16 = 2 @@ -363,61 +110,55 @@ module Transform3D with tmp18 = [tmp17] tmp19 = v.concat(tmp18) tmp20 = 1 - genID_Dyn_Lit4_Lit1_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit1_Lit1(v, w, i, j) = + genID_Dyn_Lit4_Lit0_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit0_Lit3(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 3 + tmp16 = 1 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit1_Lit0(tmp19, w, i, tmp20) + tmp20 = 2 + genID_Dyn_Lit4_Lit0_Lit2(tmp19, w, i, tmp20) fun genID_Dyn_Lit4_Lit1_Lit0(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = true v - fun iterID_Dyn_Lit4_Lit2(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 2 - tmp23 = genID_Arr__end_Lit4_Lit2_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 1 - iterID_Dyn_Lit4_Lit1(tmp25, w, tmp26) - fun genID_Arr__end_Lit4_Lit2_Lit4(v, w, i, j) = + fun genID_Dyn_Lit4_Lit1_Lit1(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 0 + tmp16 = 3 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit2_Lit3(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit2_Lit3(v, w, i, j) = + tmp20 = 0 + genID_Dyn_Lit4_Lit1_Lit0(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit1_Lit2(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 1 + tmp16 = 2 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit2_Lit2(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit2_Lit2(v, w, i, j) = + tmp20 = 1 + genID_Dyn_Lit4_Lit1_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit1_Lit3(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 2 + tmp16 = 1 scrut4 = true tmp17 = 1 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 1 - genID_Dyn_Lit4_Lit2_Lit1(tmp19, w, i, tmp20) + tmp20 = 2 + genID_Dyn_Lit4_Lit1_Lit2(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit2_Lit0(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + v fun genID_Dyn_Lit4_Lit2_Lit1(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false @@ -428,31 +169,17 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = 0 genID_Dyn_Lit4_Lit2_Lit0(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit2_Lit0(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = true - v - fun iterID_Dyn_Lit4_Lit1(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 3 - tmp23 = genID_Arr__end_Lit4_Lit3_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 0 - iterID_Dyn_Lit4_Lit0(tmp25, w, tmp26) - fun genID_Arr__end_Lit4_Lit3_Lit4(v, w, i, j) = + fun genID_Dyn_Lit4_Lit2_Lit2(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 0 - scrut4 = false - tmp17 = 0 + tmp16 = 2 + scrut4 = true + tmp17 = 1 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit3_Lit3(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit3_Lit3(v, w, i, j) = + tmp20 = 1 + genID_Dyn_Lit4_Lit2_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit2_Lit3(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false tmp16 = 1 @@ -461,7 +188,21 @@ module Transform3D with tmp18 = [tmp17] tmp19 = v.concat(tmp18) tmp20 = 2 - genID_Dyn_Lit4_Lit3_Lit2(tmp19, w, i, tmp20) + genID_Dyn_Lit4_Lit2_Lit2(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit3_Lit0(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + v + fun genID_Dyn_Lit4_Lit3_Lit1(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 3 + scrut4 = true + tmp17 = 1 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 0 + genID_Dyn_Lit4_Lit3_Lit0(tmp19, w, i, tmp20) fun genID_Dyn_Lit4_Lit3_Lit2(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false @@ -472,98 +213,204 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = 1 genID_Dyn_Lit4_Lit3_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit3_Lit1(v, w, i, j) = + fun genID_Dyn_Lit4_Lit3_Lit3(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 3 - scrut4 = true - tmp17 = 1 + tmp16 = 1 + scrut4 = false + tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit3_Lit0(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit3_Lit0(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = true - v - fun iterID_Dyn_Lit4_Lit0(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = true - m - fun update_Dyn_Lit0_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_7} - scrut8 = ===(i', 0) - if scrut8 is + tmp20 = 2 + genID_Dyn_Lit4_Lit3_Lit2(tmp19, w, i, tmp20) + fun ident(w) = + let {tmp47} + tmp47 = [] + iterID_Arr__end_Dyn_Dyn(tmp47, w, w) + fun ident_Lit4(w) = + let {tmp47} + tmp47 = [] + iterID_Arr__end_Lit4_Lit4(tmp47, w, w) + fun iter(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is true then - tup_7 = [] - tup_7 + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iterCol(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = ===(j, 0) + if scrut1 is + true then vec else - tmp35 = row - i' - scrut9 = ===(i, tmp35) - if scrut9 is - true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) - else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_8} - scrut6 = ===(j', 0) - if scrut6 is + tmp5 = colY - j + tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) + tmp7 = [tmp6] + tmp8 = vec.concat(tmp7) + tmp9 = j - 1 + iterCol(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 0 + tmp6 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp5, colX) + tmp7 = [tmp6] + tmp8 = vec.concat(tmp7) + tmp9 = 0 + iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_1} + scrut1 = ===(j, 0) + if scrut1 is true then - tup_8 = [] - tup_8 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec + tup_1 = [] + tup_1 else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + tmp5 = colY - j + tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) + tmp7 = [tmp6] + tmp8 = vec.concat(tmp7) + tmp9 = j - 1 + iterCol(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = true + vec + fun iterID(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = ===(i, 0) + if scrut5 is + true then m + else + tmp21 = [] + tmp22 = w - i + tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = i - 1 + iterID(tmp25, w, tmp26) + fun iterID_Arr__end_Dyn_Dyn(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tup_5} + scrut5 = ===(i, 0) + if scrut5 is + true then + tup_5 = [] + tup_5 + else + tmp21 = [] + tmp22 = w - i + tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = i - 1 + iterID(tmp25, w, tmp26) + fun iterID_Arr__end_Lit4_Lit4(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 0 + tmp23 = genID_Arr__end_Lit4_Lit0_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 3 + iterID_Dyn_Lit4_Lit3(tmp25, w, tmp26) + fun iterID_Dyn_Lit4_Lit0(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = true + m + fun iterID_Dyn_Lit4_Lit1(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 3 + tmp23 = genID_Arr__end_Lit4_Lit3_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 0 + iterID_Dyn_Lit4_Lit0(tmp25, w, tmp26) + fun iterID_Dyn_Lit4_Lit2(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 2 + tmp23 = genID_Arr__end_Lit4_Lit2_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 1 + iterID_Dyn_Lit4_Lit1(tmp25, w, tmp26) + fun iterID_Dyn_Lit4_Lit3(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 1 + tmp23 = genID_Arr__end_Lit4_Lit1_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 2 + iterID_Dyn_Lit4_Lit2(tmp25, w, tmp26) + fun iterRow(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_23} + scrut2 = ===(i, 0) + if scrut2 is + true then + tup_23 = [] + tup_23 + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_4} + scrut2 = ===(i, 0) + if scrut2 is + true then + tup_4 = [] + tup_4 + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterUpdate(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is @@ -575,30 +422,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit1_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_9} + iterUpdate(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_6} scrut8 = ===(i', 0) if scrut8 is true then - tup_9 = [] - tup_9 + tup_6 = [] + tup_6 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -606,181 +447,177 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + iterUpdate(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_11} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_11 = [] + tup_11 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(0, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit2_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_10} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_30} scrut8 = ===(i', 0) if scrut8 is true then - tup_10 = [] - tup_10 + tup_30 = [] + tup_30 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(0, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_21} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_21 = [] + tup_21 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(0, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun scale(sx, sy, sz) = - let {tmp52, tmp53, tmp54} - tmp52 = ident_Lit4(4) - tmp53 = update_Dyn_Lit0_Lit0_Dyn(tmp52, 0, 0, sx) - tmp54 = update_Dyn_Lit1_Lit1_Dyn(tmp53, 1, 1, sy) - update_Dyn_Lit2_Lit2_Dyn(tmp54, 2, 2, sz) - fun update_Dyn_Lit0_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_11} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_19} scrut8 = ===(i', 0) if scrut8 is true then - tup_11 = [] - tup_11 + tup_19 = [] + tup_19 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(0, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_12} - scrut6 = ===(j', 0) - if scrut6 is + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_7} + scrut8 = ===(i', 0) + if scrut8 is true then - tup_12 = [] - tup_12 + tup_7 = [] + tup_7 else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is + tmp35 = row - i' + scrut9 = ===(0, tmp35) + if scrut9 is true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_24} + scrut8 = ===(i', 0) + if scrut8 is + true then + tup_24 = [] + tup_24 else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is + tmp35 = row - i' + scrut9 = ===(0, tmp35) + if scrut9 is true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp40, m, row, col, i, j, v, tmp41) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_22} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_22 = [] + tup_22 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(1, tmp35) if scrut9 is true then tmp36 = [] @@ -789,19 +626,13 @@ module Transform3D with tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit1_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_13} scrut8 = ===(i', 0) @@ -811,7 +642,7 @@ module Transform3D with tup_13 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(1, tmp35) if scrut9 is true then tmp36 = [] @@ -827,87 +658,41 @@ module Transform3D with tmp44 = res.concat(tmp43) tmp45 = i' - 1 iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_14} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_14 = [] - tup_14 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_32} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_32 = [] + tup_32 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(1, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit2_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_15} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_17} scrut8 = ===(i', 0) if scrut8 is true then - tup_15 = [] - tup_15 + tup_17 = [] + tup_17 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(1, tmp35) if scrut9 is true then tmp36 = [] @@ -916,148 +701,88 @@ module Transform3D with tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_16} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_16 = [] - tup_16 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_9} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_9 = [] + tup_9 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(1, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun rotateX(angle) = - let {s, c, tmp55, tmp56, tmp57, tmp58, tmp59} - s = globalThis.Math.sin(angle) - c = globalThis.Math.cos(angle) - tmp55 = ident_Lit4(4) - tmp56 = update_Dyn_Lit1_Lit1_Dyn(tmp55, 1, 1, c) - tmp57 = -(s) - tmp58 = update_Dyn_Lit1_Lit2_Dyn(tmp56, 1, 2, tmp57) - tmp59 = update_Dyn_Lit2_Lit1_Dyn(tmp58, 2, 1, s) - update_Dyn_Lit2_Lit2_Dyn(tmp59, 2, 2, c) - fun update_Dyn_Lit1_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_17} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_26} scrut8 = ===(i', 0) if scrut8 is true then - tup_17 = [] - tup_17 + tup_26 = [] + tup_26 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(1, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_20} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_20 = [] + tup_20 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(2, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit2_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_18} scrut8 = ===(i', 0) @@ -1067,7 +792,7 @@ module Transform3D with tup_18 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(2, tmp35) if scrut9 is true then tmp36 = [] @@ -1083,132 +808,114 @@ module Transform3D with tmp44 = res.concat(tmp43) tmp45 = i' - 1 iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_15} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_15 = [] + tup_15 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(2, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun rotateY(angle) = - let {s1, c1, tmp60, tmp61, tmp62, tmp63, tmp64} - s1 = globalThis.Math.sin(angle) - c1 = globalThis.Math.cos(angle) - tmp60 = ident_Lit4(4) - tmp61 = update_Dyn_Lit0_Lit0_Dyn(tmp60, 0, 0, c1) - tmp62 = update_Dyn_Lit0_Lit2_Dyn(tmp61, 0, 2, s1) - tmp63 = -(s1) - tmp64 = update_Dyn_Lit2_Lit0_Dyn(tmp62, 2, 0, tmp63) - update_Dyn_Lit2_Lit2_Dyn(tmp64, 2, 2, c1) - fun update_Dyn_Lit0_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_19} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_34} scrut8 = ===(i', 0) if scrut8 is true then - tup_19 = [] - tup_19 + tup_34 = [] + tup_34 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(2, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_10} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_10 = [] + tup_10 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(2, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit2_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_20} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_28} scrut8 = ===(i', 0) if scrut8 is true then - tup_20 = [] - tup_20 + tup_28 = [] + tup_28 else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(2, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is true then res else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(0, tmp35) if scrut9 is true then tmp36 = [] @@ -1217,54 +924,36 @@ module Transform3D with tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun rotateZ(angle) = - let {s2, c2, tmp65, tmp66, tmp67, tmp68, tmp69} - s2 = globalThis.Math.sin(angle) - c2 = globalThis.Math.cos(angle) - tmp65 = ident_Lit4(4) - tmp66 = update_Dyn_Lit0_Lit0_Dyn(tmp65, 0, 0, c2) - tmp67 = -(s2) - tmp68 = update_Dyn_Lit0_Lit1_Dyn(tmp66, 0, 1, tmp67) - tmp69 = update_Dyn_Lit1_Lit0_Dyn(tmp68, 1, 0, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp69, 1, 1, c2) - fun update_Dyn_Lit0_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_21} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is - true then - tup_21 = [] - tup_21 + true then res else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(0, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp44, m, row, col, i, j, v, tmp45) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) @@ -1272,7 +961,7 @@ module Transform3D with true then res else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(0, tmp35) if scrut9 is true then tmp36 = [] @@ -1288,37 +977,75 @@ module Transform3D with tmp44 = res.concat(tmp43) tmp45 = i' - 1 iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit1_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_22} + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is - true then - tup_22 = [] - tup_22 + true then res else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(0, tmp35) if scrut9 is true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(0, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(0, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp44, m, row, col, i, j, v, tmp45) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) @@ -1326,7 +1053,7 @@ module Transform3D with true then res else tmp35 = row - i' - scrut9 = ===(i, tmp35) + scrut9 = ===(1, tmp35) if scrut9 is true then tmp36 = [] @@ -1342,96 +1069,1015 @@ module Transform3D with tmp44 = res.concat(tmp43) tmp45 = i' - 1 iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun model(local, position, scaling, rotation) = - let {rot, res1, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84} - tmp70 = rotateZ(rotation.2) - tmp71 = rotateY(rotation.1) - tmp72 = rotateX(rotation.0) - tmp73 = ident_Lit4(4) - tmp74 = multiply(tmp72, tmp73) - tmp75 = multiply(tmp71, tmp74) - rot = multiply(tmp70, tmp75) - tmp76 = transform(position.0, position.1, position.2) - tmp77 = scale(scaling.0, scaling.1, scaling.2) - tmp78 = [local.0] - tmp79 = [local.1] - tmp80 = [local.2] - tmp81 = [1] - tmp82 = [tmp78, tmp79, tmp80, tmp81] - tmp83 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp77, tmp82) - tmp84 = multiply(rot, tmp83) - res1 = multiply(tmp76, tmp84) - [res1.0, res1.1, res1.2] - fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = - let {rowX1, colX3, rowY, colY2, tmp46} - rowX1 = x.length - colX3 = x.0.length - rowY = 4 - colY2 = 1 - tmp46 = [] - iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) - fun iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_23} - scrut2 = ===(i, 0) - if scrut2 is - true then - tup_23 = [] - tup_23 - else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) - fun iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(vec, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = false - tmp5 = 0 - tmp6 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp5, colX) - tmp7 = [tmp6] - tmp8 = vec.concat(tmp7) - tmp9 = 0 - iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) - fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) - else 0 - fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) - else sum - fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(vec, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = true - vec - fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} - scrut2 = ===(i, 0) - if scrut2 is - true then m + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) \ No newline at end of file + tmp35 = row - i' + scrut9 = ===(1, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(1, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(1, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(1, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(1, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(2, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(2, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(2, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(2, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(2, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(2, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + else 0 + fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = k - 1 + iter(tmp3, x, y, colX, i, j, tmp4) + else 0 + fun model(local, position, scaling, rotation) = + let {rot, res1, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84} + tmp70 = rotateZ(rotation.2) + tmp71 = rotateY(rotation.1) + tmp72 = rotateX(rotation.0) + tmp73 = ident_Lit4(4) + tmp74 = multiply(tmp72, tmp73) + tmp75 = multiply(tmp71, tmp74) + rot = multiply(tmp70, tmp75) + tmp76 = transform(position.0, position.1, position.2) + tmp77 = scale(scaling.0, scaling.1, scaling.2) + tmp78 = [local.0] + tmp79 = [local.1] + tmp80 = [local.2] + tmp81 = [1] + tmp82 = [tmp78, tmp79, tmp80, tmp81] + tmp83 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp77, tmp82) + tmp84 = multiply(rot, tmp83) + res1 = multiply(tmp76, tmp84) + [res1.0, res1.1, res1.2] + fun model0(local) = + let {tmp85, tmp86, tmp87, tmp88} + tmp85 = [11, 4, 51] + tmp86 = [0.4, 0.19, 0.19] + tmp87 = 2.51327412 + tmp88 = [tmp87, 3.1415926535, 0] + model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, tmp85, tmp86, tmp88) + fun model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, position, scaling, rotation) = + let {rot, res1, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84} + tmp70 = rotateZ_Lit0(rotation.2) + tmp71 = rotateY_Lit3_p_1415926535(rotation.1) + tmp72 = rotateX_Lit2_p_51327412(rotation.0) + tmp73 = ident_Lit4(4) + tmp74 = multiply(tmp72, tmp73) + tmp75 = multiply(tmp71, tmp74) + rot = multiply(tmp70, tmp75) + tmp76 = transform_Lit11_Lit4_Lit51(position.0, position.1, position.2) + tmp77 = scale_Lit0_p_4_Lit0_p_19_Lit0_p_19(scaling.0, scaling.1, scaling.2) + tmp78 = [local.0] + tmp79 = [local.1] + tmp80 = [local.2] + tmp81 = [1] + tmp82 = [tmp78, tmp79, tmp80, tmp81] + tmp83 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp77, tmp82) + tmp84 = multiply(rot, tmp83) + res1 = multiply(tmp76, tmp84) + [res1.0, res1.1, res1.2] + fun multiply(x, y) = + let {rowX1, colX3, rowY, colY2, tmp46} + rowX1 = x.length + colX3 = x.0.length + rowY = y.length + colY2 = y.0.length + tmp46 = [] + iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) + fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = + let {rowX1, colX3, rowY, colY2, tmp46} + rowX1 = x.length + colX3 = x.0.length + rowY = 4 + colY2 = 1 + tmp46 = [] + iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) + fun rotateX(angle) = + let {s, c, tmp55, tmp56, tmp57, tmp58, tmp59} + s = globalThis.Math.sin(angle) + c = globalThis.Math.cos(angle) + tmp55 = ident_Lit4(4) + tmp56 = update_Dyn_Lit1_Lit1_Dyn(tmp55, 1, 1, c) + tmp57 = -(s) + tmp58 = update_Dyn_Lit1_Lit2_Dyn(tmp56, 1, 2, tmp57) + tmp59 = update_Dyn_Lit2_Lit1_Dyn(tmp58, 2, 1, s) + update_Dyn_Lit2_Lit2_Dyn(tmp59, 2, 2, c) + fun rotateX_Lit2_p_51327412(angle) = + let {s, c, tmp55, tmp56, tmp57, tmp58, tmp59} + s = globalThis.Math.sin(angle) + c = globalThis.Math.cos(angle) + tmp55 = ident_Lit4(4) + tmp56 = update_Dyn_Lit1_Lit1_Dyn(tmp55, 1, 1, c) + tmp57 = -(s) + tmp58 = update_Dyn_Lit1_Lit2_Dyn(tmp56, 1, 2, tmp57) + tmp59 = update_Dyn_Lit2_Lit1_Dyn(tmp58, 2, 1, s) + update_Dyn_Lit2_Lit2_Dyn(tmp59, 2, 2, c) + fun rotateY(angle) = + let {s1, c1, tmp60, tmp61, tmp62, tmp63, tmp64} + s1 = globalThis.Math.sin(angle) + c1 = globalThis.Math.cos(angle) + tmp60 = ident_Lit4(4) + tmp61 = update_Dyn_Lit0_Lit0_Dyn(tmp60, 0, 0, c1) + tmp62 = update_Dyn_Lit0_Lit2_Dyn(tmp61, 0, 2, s1) + tmp63 = -(s1) + tmp64 = update_Dyn_Lit2_Lit0_Dyn(tmp62, 2, 0, tmp63) + update_Dyn_Lit2_Lit2_Dyn(tmp64, 2, 2, c1) + fun rotateY_Lit3_p_1415926535(angle) = + let {s1, c1, tmp60, tmp61, tmp62, tmp63, tmp64} + s1 = globalThis.Math.sin(angle) + c1 = globalThis.Math.cos(angle) + tmp60 = ident_Lit4(4) + tmp61 = update_Dyn_Lit0_Lit0_Dyn(tmp60, 0, 0, c1) + tmp62 = update_Dyn_Lit0_Lit2_Dyn(tmp61, 0, 2, s1) + tmp63 = -(s1) + tmp64 = update_Dyn_Lit2_Lit0_Dyn(tmp62, 2, 0, tmp63) + update_Dyn_Lit2_Lit2_Dyn(tmp64, 2, 2, c1) + fun rotateZ(angle) = + let {s2, c2, tmp65, tmp66, tmp67, tmp68, tmp69} + s2 = globalThis.Math.sin(angle) + c2 = globalThis.Math.cos(angle) + tmp65 = ident_Lit4(4) + tmp66 = update_Dyn_Lit0_Lit0_Dyn(tmp65, 0, 0, c2) + tmp67 = -(s2) + tmp68 = update_Dyn_Lit0_Lit1_Dyn(tmp66, 0, 1, tmp67) + tmp69 = update_Dyn_Lit1_Lit0_Dyn(tmp68, 1, 0, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp69, 1, 1, c2) + fun rotateZ_Lit0(angle) = + let {s2, c2, tmp65, tmp66, tmp67, tmp68, tmp69} + s2 = globalThis.Math.sin(angle) + c2 = globalThis.Math.cos(angle) + tmp65 = ident_Lit4(4) + tmp66 = update_Dyn_Lit0_Lit0_Dyn(tmp65, 0, 0, c2) + tmp67 = -(s2) + tmp68 = update_Dyn_Lit0_Lit1_Dyn(tmp66, 0, 1, tmp67) + tmp69 = update_Dyn_Lit1_Lit0_Dyn(tmp68, 1, 0, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp69, 1, 1, c2) + fun scale(sx, sy, sz) = + let {tmp52, tmp53, tmp54} + tmp52 = ident_Lit4(4) + tmp53 = update_Dyn_Lit0_Lit0_Dyn(tmp52, 0, 0, sx) + tmp54 = update_Dyn_Lit1_Lit1_Dyn(tmp53, 1, 1, sy) + update_Dyn_Lit2_Lit2_Dyn(tmp54, 2, 2, sz) + fun scale_Lit0_p_4_Lit0_p_19_Lit0_p_19(sx, sy, sz) = + let {tmp52, tmp53, tmp54} + tmp52 = ident_Lit4(4) + tmp53 = update_Dyn_Lit0_Lit0_Lit0_p_4(tmp52, 0, 0, sx) + tmp54 = update_Dyn_Lit1_Lit1_Lit0_p_19(tmp53, 1, 1, sy) + update_Dyn_Lit2_Lit2_Lit0_p_19(tmp54, 2, 2, sz) + fun transform(dx, dy, dz) = + let {tmp49, tmp50, tmp51} + tmp49 = ident_Lit4(4) + tmp50 = update_Dyn_Lit0_Lit3_Dyn(tmp49, 0, 3, dx) + tmp51 = update_Dyn_Lit1_Lit3_Dyn(tmp50, 1, 3, dy) + update_Dyn_Lit2_Lit3_Dyn(tmp51, 2, 3, dz) + fun transform_Lit11_Lit4_Lit51(dx, dy, dz) = + let {tmp49, tmp50, tmp51} + tmp49 = ident_Lit4(4) + tmp50 = update_Dyn_Lit0_Lit3_Lit11(tmp49, 0, 3, dx) + tmp51 = update_Dyn_Lit1_Lit3_Lit4(tmp50, 1, 3, dy) + update_Dyn_Lit2_Lit3_Lit51(tmp51, 2, 3, dz) + fun update(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun updateVec(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_3} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_3 = [] + tup_3 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_12} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_12 = [] + tup_12 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 0) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_31} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_31 = [] + tup_31 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 0) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_14} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_14 = [] + tup_14 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 1) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_33} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_33 = [] + tup_33 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 1) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_16} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_16 = [] + tup_16 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 2) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_35} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_35 = [] + tup_35 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 2) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_8} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_8 = [] + tup_8 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 3) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_25} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_25 = [] + tup_25 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 3) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_27} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_27 = [] + tup_27 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 3) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_29} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_29 = [] + tup_29 + else + tmp27 = col - j' + scrut7 = ===(tmp27, 3) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 0) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 0) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 1) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 1) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 2) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 2) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 3) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 3) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 3) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, 3) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun update_Dyn_Lit0_Lit0_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit0_Lit0_Lit0_p_4(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit0_Lit1_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit0_Lit2_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit0_Lit3_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit0_Lit3_Lit11(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit0_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit1_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit1_Lit0_p_19(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit2_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit3_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit3_Lit4(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit0_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit1_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit2_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit2_Lit0_p_19(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit3_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit3_Lit51(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp48, m, row1, col2, i, j, v, row1) \ No newline at end of file From 2610c0e014053c347b915541e3159be238df4c03 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 23 Apr 2026 10:56:48 +0800 Subject: [PATCH 561/654] adjust symbol and codegen --- .../codegen/ReflectionInstrumenter.scala | 9 ++- .../src/main/scala/hkmc2/syntax/Tree.scala | 2 - .../src/test/mlscript-compile/Block.mls | 20 ++++-- .../mlscript-compile/SpecializeHelpers.mls | 70 +------------------ .../staging/ImportingFiles.mls | 7 ++ .../staging/LinkingGeneratedClasses.mls | 2 + .../staging/out/ImportingFiles.mls | 8 +++ .../staging/out/LinkingGeneratedClasses.mls | 17 +++-- .../staging/out/SimpleStagedExample.mls | 23 +++--- .../test/mlscript/block-staging/Generate.mls | 31 +++++--- .../test/mlscript/block-staging/PrintCode.mls | 4 +- .../block-staging/ShapeSetHelpers.mls | 54 +++++++++----- .../test/mlscript/block-staging/Syntax.mls | 2 +- 13 files changed, 123 insertions(+), 126 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/ImportingFiles.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 6e095efa9a..81f3c0de84 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -60,10 +60,9 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = // transform Block to Block IR so that it can be instrumented in mlscript class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(SymbolSubst.Id): - // TODO: there could be a fresh scope per function body, instead of a single one for the entire program val scope = Scope.empty(Scope.Cfg.default) // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes - val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() + val defnMap = HashMap[DefinitionSymbol[?], ClsLikeDefn]() var symbolMapSym: Opt[Symbol] = N // helpers for constructing Block @@ -159,9 +158,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformParamsOpt(paramsOpt): (paramsOpt, ctx) => auxParams.map(ps => ctx => transformParamList(ps)(using ctx)).chainContext: (auxParams, ctx) => tuple(auxParams): auxParams => - blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap("classMap", path, _, ctx)) + blockCtor("ConcreteClassSymbol", Ls(toValue(newName), path, paramsOpt, auxParams), symName)(checkMap("classMap", path, _, ctx)) case _: ModuleOrObjectSymbol => - blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap("moduleMap", path, _, stagingCtx)) + blockCtor("ModuleSymbol", Ls(toValue(newName), path), symName)(checkMap("moduleMap", path, _, stagingCtx)) case _ => blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) @@ -440,7 +439,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ((args, k) => call(_, args, true, "gen_call")(k)) (genPath) ) - callGenCont(call(blockMod("Printer").selSN("class").selSN("default").selSN("codegen"), toValue(modSym.nme) :: cachePath :: sourceSym.asPath :: psym.asPath :: Nil, true, "tmp")(_ => End())) + callGenCont(call(blockMod("codegen"), toValue(modSym.nme) :: cachePath :: sourceSym.asPath :: psym.asPath :: Nil, true, "tmp")(_ => End())) val entryFunDef = val sym = BlockMemberSymbol("generate", Nil) diff --git a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala index b0bc7cd847..56cef154b2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala @@ -324,14 +324,12 @@ enum Tree extends AutoLocated: go(inner, flags, modifiers + Ins) // fun f(@dynamic <...>) case Annotated(Ident("dynamic"), inner) => - println(flags) if flags.reflConstraint.isDefined then L: ErrorReport: msg"At most one reflection constraint can be added for each parameter." -> t.toLoc :: Nil else go(inner, flags.copy(reflConstraint = S(ReflectionConstraint.Dynamic)), modifiers) // fun f(@static <...>) case Annotated(Ident("static"), inner) => - println(flags) if flags.reflConstraint.isDefined then L: ErrorReport: msg"At most one reflection constraint can be added for each parameter." -> t.toLoc :: Nil diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 7e0326f2b7..b762bbeb28 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -113,7 +113,7 @@ fun concat(b1: Block, b2: Block) = if b1 is fun indent(s: Str) = s.replaceAll("\n", "\n ") // we write .map(f(_)) instead of .map(f) here because of method debinding, see https://github.com/hkust-taco/mlscript/issues/450 -class Printer(val owner: Opt[Class]) with +class Printer(val owner: Opt[Symbol]) with fun showLiteral(l: Literal) = if l is undefined then "undefined" @@ -121,7 +121,13 @@ class Printer(val owner: Opt[Class]) with Str then "\"" + l.toString() + "\"" else l.toString() - fun showSymbol(s: Symbol) = s.name.replaceAll("$", "_") + fun showDefnSymbol(s: Symbol) = + s.name.replaceAll("$", "_") + + fun showSymbol(s: Symbol) = + if s is + ModuleSymbol | ConcreteClassSymbol and owner is Some(owner) then owner.name + ".\"" + s.name + "\"" + else s.name.replaceAll("$", "_") fun showPath(p: Path): Str = if p is @@ -150,7 +156,9 @@ class Printer(val owner: Opt[Class]) with ValueRef(Symbol("+")) then showArg(lhs) + " + " + showArg(rhs) ValueRef(Symbol("-")) then showArg(lhs) + " - " + showArg(rhs) else showPath(fun_) + "(" + showArgs(args) + ")" - Instantiate(cls, args) then "new " + showPath(cls) + (if args.length != 0 then "(" + showArgs(args) + ")" else "") + Instantiate(cls, args) then + let prefix = if cls is ValueRef(ClassSymbol) and owner is Some(owner) then "new! " + showPath(cls) else "new " + showPath(cls) + prefix + (if args.length != 0 then "(" + showArgs(args) + ")" else "") Tuple(elems) then "[" + showArgs(elems) + "]" _ then "" @@ -180,10 +188,10 @@ class Printer(val owner: Opt[Class]) with fun showDefn(d: Defn): Str = if d is FunDefn(sym, ps, body) then - "fun " + showSymbol(sym) + showParamList(ps) + " =" + + "fun " + showDefnSymbol(sym) + showParamList(ps) + " =" + (if body is Return | End then " " else "\n ") + indent(showBlock(body)) ClsLikeDefn(sym, methods, _) then - "class " + showSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams(_)).join("") + "data class " + showDefnSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams(_)).join("") + indent((if methods is [] then "" else " with\n") + methods.map(showDefn(_)).join("\n")) // TODO: used to represent assignments in constructors, which still need some adjustments ValDefn(owner, sym, rhs) then @@ -235,7 +243,7 @@ module Printer with fun codegen(name, cache, source, file) = let fullpath = path.join of process.cwd(), file - let code = "import \"" + source + "\"\nopen " + name + "\n" + indent(cache.toString()) + let code = "import \"" + source + "\"\n" + indent(cache.toString()) if not fs.existsSync(fullpath) do fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 446c43fe2f..a522f1b896 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -133,14 +133,14 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() assert ctor is FunDefn - let params = new Set(ctor.params.flat()) + let params = new Set(ctor.params.flat().map(_.sym)) let ctorBody = removeExtraValDefn(params, ctor.body) decl + owner.name + printer.showParamList(paramList) + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" + indent("\n" + printer.showBlock(ctorBody)) - + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().join("\n")) + + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().sort().join("\n")) module FunCache with fun empty(owner) = FunCache(owner, new Map()) @@ -379,7 +379,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = fun prop(ctx, b) = if b is End() then [b, mkBot()] Return(Call(Select(ValueRef(symb), Symbol(f)), args), implct) and not (symb is ModuleSymbol) and not (f is "concat") then // TODO[later]: Ref -> Path, remove special checks - dispatchMethodCall(ctx, None, Some(implct), symb, f, args, End()) + dispatchMethodCall(ctx, None, Some(implct), symb, f, args) Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then [concat(blk, Return(r1, implct)), s1] Scoped(symbols, rest) then @@ -521,67 +521,3 @@ fun specializeCtor(classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], c else throw Error("ctor not found in staged class") mkClassFromMap(classSymb, ctx.valDefnCtx) else throw Error("instrumented method is not a FunDefn") - -class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with - val printer = Printer(Some(owner)) - fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None - // NOTE: this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions - fun setFun(k, v) = cache.set(k, v); v - fun toString() = - let decl = if owner is - ConcreteClassSymbol then "class " - ModuleSymbol then "module " - let runtimeClass = if owner is - ConcreteClassSymbol(_, _, Some, _) then owner.value.class - else owner.value - - val paramList = if owner is - ConcreteClassSymbol and owner.paramsOpt is - Some(ps) then [ps, ...owner.auxParams] - else owner.auxParams - ModuleSymbol then [] - - // process preCtor: inline temp variable when printing - class InlinePrinter(ctx: Map[Symbol, String]) extends Printer(Some(owner)) with - fun showPath(p) = if p is - ValueRef(s) and ctx.has(s) then ctx.get(s) - Select(qual, name) then showPath(qual) + "." + this.showSymbol(name) - DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" - DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" - ValueRef(s) then this.showSymbol(s) - ValueLit(lit) then this.showLiteral(lit) - - fun inlineResult(ctx: Map[Result, String])(r) = InlinePrinter(ctx).showResult(r) - - fun inlineAssigments(ctx: Map[Symbol, String])(b) = if b is - Return(res, implct) then inlineResult(ctx)(res) - Scoped(_, rest) then inlineAssigments(ctx)(rest) - Assign(lhs, rhs, rest) then inlineAssigments(ctx.set(lhs, inlineResult(ctx)(rhs)))(rest) - End then "" - else throw Error("unexpected Block type in constructor: " + b.toString()) - - let extendsClause = if owner is ConcreteClassSymbol then - let preCtor = runtimeClass."preCtor$_instr"().body - assert preCtor is Block.Block - inlineAssigments(new Map())(preCtor) - else "" - - // process ctor: remove ValDefn of parameters defined in paramsOpt - fun removeExtraValDefn(params, block) = if block is - Define(ValDefn(Some, sym, ValueRef(rhs)), rest) and params.has(rhs) then removeExtraValDefn(params, rest) - Match(scrut, arms, dflt, rest) then Match(scrut, arms, dflt, removeExtraValDefn(params, rest)) - Assign(lhs, rhs, rest) then Assign(lhs, rhs, removeExtraValDefn(params, rest)) - Define(defn, rest) then Define(defn, removeExtraValDefn(params, rest)) - Scoped(symbols, rest) then Scoped(symbols, removeExtraValDefn(params, rest)) - else block - - let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() - assert ctor is FunDefn - let params = new Set(ctor.params.flat().map(_.sym)) - let ctorBody = removeExtraValDefn(params, ctor.body) - - decl + owner.name + printer.showParamList(paramList) - + if extendsClause == "" then "" else (" extends " + extendsClause) - + if cache.length == 0 then "" else " with" - + indent("\n" + printer.showBlock(ctorBody)) - + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().sort().join("\n")) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/ImportingFiles.mls b/hkmc2/shared/src/test/mlscript-compile/staging/ImportingFiles.mls new file mode 100644 index 0000000000..18a0a37d75 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/ImportingFiles.mls @@ -0,0 +1,7 @@ +import "./SimpleStagedExample.mls" +import "./StagedClass.mls" + +staged module ImportingFiles with + fun f() = SimpleStagedExample.fib(8) // what about importing classes? + fun g(x) = (new StagedClass(x)).f(1, 2) + val a = StagedClass \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls index 01191dec11..7d7a693ba3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls @@ -5,6 +5,8 @@ staged module LinkingGeneratedClasses with class D fun test1 = new C fun test2 = new D + fun f() = x => x + fun g() = x => x + 2 // staged module LinkingGeneratedClasses with // class Test // val privateTest = Test diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls new file mode 100644 index 0000000000..0520a9b575 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls @@ -0,0 +1,8 @@ +import "../ImportingFiles.mjs" +module ImportingFiles with + val a = ImportingFiles."StagedClass" + fun f() = 21 + fun g(x) = + let {tmp} + tmp = new! ImportingFiles."StagedClass"(x) + tmp.f_StagedClass_Dyn_dot_Lit1_Lit2(1, 2) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 0a03ff6ffe..49cd965ae3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,12 +1,19 @@ -import "../LinkingGeneratedClasses.mls" -open LinkingGeneratedClasses +import "../LinkingGeneratedClasses.mjs" module LinkingGeneratedClasses with - class D + data class D + fun f() = + let {obj_4} + obj_4 = new! LinkingGeneratedClasses."Function$" + obj_4 + fun g() = + let {obj_6} + obj_6 = new! LinkingGeneratedClasses."Function$1" + obj_6 fun test1 = let {obj_1} - obj_1 = new C + obj_1 = new! LinkingGeneratedClasses."C" obj_1 fun test2 = let {obj_2} - obj_2 = new D + obj_2 = new! LinkingGeneratedClasses."D" obj_2 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 18f53d561c..f579b048a1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,8 +1,8 @@ -import "../SimpleStagedExample.mls" -open SimpleStagedExample +import "../SimpleStagedExample.mjs" module SimpleStagedExample with () fun f(x, y) = x + y + fun f_Lit2_Lit3(x, y) = 5 fun fib(n) = let {n1, tmp, tmp1, tmp2, tmp3} if n is @@ -15,15 +15,14 @@ module SimpleStagedExample with tmp2 = n1 - 2 tmp3 = fib(tmp2) tmp1 + tmp3 - fun foo() = 60 - fun f_Lit2_Lit3(x, y) = 5 + fun fib_Lit1(n) = 1 fun fib_Lit10(n) = 55 - fun fib_Lit9(n) = 34 - fun fib_Lit8(n) = 21 - fun fib_Lit7(n) = 13 - fun fib_Lit6(n) = 8 - fun fib_Lit5(n) = 5 - fun fib_Lit4(n) = 3 - fun fib_Lit3(n) = 2 fun fib_Lit2(n) = 1 - fun fib_Lit1(n) = 1 \ No newline at end of file + fun fib_Lit3(n) = 2 + fun fib_Lit4(n) = 3 + fun fib_Lit5(n) = 5 + fun fib_Lit6(n) = 8 + fun fib_Lit7(n) = 13 + fun fib_Lit8(n) = 21 + fun fib_Lit9(n) = 34 + fun foo() = 60 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 7345a21cf4..debc085118 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -2,12 +2,12 @@ :staging :noModuleCheck -import "../../mlscript-compile/staging/SimpleStagedExample.mls" - +fun gen(M, name) = + M."generate"("../" + name + ".mjs", "./hkmc2/shared/src/test/mlscript-compile/staging/out/" + name + ".mls") -SimpleStagedExample."generate"("../SimpleStagedExample.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls") +import "../../mlscript-compile/staging/SimpleStagedExample.mls" -// console.log(SimpleStagedExample."cache$SimpleStagedExample".toString()) +gen(SimpleStagedExample, "SimpleStagedExample") import "../../mlscript-compile/staging/out/SimpleStagedExample.mls" @@ -20,6 +20,7 @@ SimpleStagedExample.foo() SimpleStagedExample.f(1, 5) //│ = 6 + :expect 5 SimpleStagedExample.fib(5) //│ = 5 @@ -27,15 +28,29 @@ SimpleStagedExample.fib(5) import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" - -LinkingGeneratedClasses."generate"("../LinkingGeneratedClasses.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls") +gen(LinkingGeneratedClasses, "LinkingGeneratedClasses") import "../../mlscript-compile/staging/out/LinkingGeneratedClasses.mls" -:fixme LinkingGeneratedClasses.test1 -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ = C LinkingGeneratedClasses.test2 //│ = D +:expect 3 +LinkingGeneratedClasses.f().call(3) +//│ = 3 + +:expect 5 +LinkingGeneratedClasses.g().call(3) +//│ = 5 + +import "../../mlscript-compile/staging/StagedClass.mls" + +// module wasn't staged alongside class +gen(StagedClass."class", "StagedClass") + +import "../../mlscript-compile/staging/ImportingFiles.mls" + +gen(ImportingFiles, "ImportingFiles") diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index e818ff00b3..4d15f5c5b7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -55,9 +55,9 @@ printCode(f) printCode(ClsLikeDefn(dSym, [f], [])) printCode(ClsLikeDefn(bSym, [], [])) //│ > fun f(x) = 1 -//│ > class D(x)(y) with +//│ > data class D(x)(y) with //│ > fun f(x) = 1 -//│ > class B +//│ > data class B printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), Return(ValueRef(Symbol("x")), true)))) //│ > let {x, y} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 9bc0f222a9..4d15a3ab73 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -131,7 +131,7 @@ open SpecializeHelpers { Ctx, sop, sor, prop } let ctx = Ctx.empty() let x = ValueRef(Symbol("x")) -//│ ctx = Ctx(Map(0) {}, [], None, {}) +//│ ctx = Ctx(Map(0) {}, Map(0) {}, Map(0) {}, [], None) //│ x = ValueRef(Symbol("x")) ctx.add(x, mkLit(1)) @@ -154,9 +154,10 @@ ctx2.get(y) //│ = Some({Lit("a"),Lit("b")}) //│ ctx2 = Ctx( //│ Map(2) {"Symbol(x)" => {Lit(1),Lit(2)}, "Symbol(y)" => {Lit("a"),Lit("b")}}, +//│ Map(0) {}, +//│ Map(0) {}, //│ [], -//│ None, -//│ {} +//│ None //│ ) ctx.get(y) @@ -193,9 +194,10 @@ sop(ctx, selPath) //│ Map(1) { //│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []), [Lit("pass")])} //│ }, +//│ Map(0) {}, +//│ Map(0) {}, //│ [], -//│ None, -//│ {} +//│ None //│ ) //│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") @@ -211,20 +213,35 @@ sor(Ctx.empty(), tup) //│ ] //│ tup = Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]) -let c = ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), []) +class C(val p) +let c = ConcreteClassSymbol("C", C, Some([Symbol("p")]), []) let inst = Instantiate(ValueRef(c), [Arg(ValueLit(123))]) sor(Ctx.empty(), inst) //│ = [ //│ End(), //│ Instantiate( -//│ ValueRef(ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), [])), +//│ ValueRef( +//│ ConcreteClassSymbol( +//│ "C", +//│ fun C { class: class C }, +//│ Some([Symbol("p")]), +//│ [] +//│ ) +//│ ), //│ [Arg(ValueLit(123))] //│ ), -//│ {Class(ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), []), [Lit(123)])} +//│ {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("p")]), []), [Lit(123)])} //│ ] -//│ c = ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), []) +//│ c = ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("p")]), []) //│ inst = Instantiate( -//│ ValueRef(ConcreteClassSymbol("C", undefined, Some([Symbol("p")]), [])), +//│ ValueRef( +//│ ConcreteClassSymbol( +//│ "C", +//│ fun C { class: class C }, +//│ Some([Symbol("p")]), +//│ [] +//│ ) +//│ ), //│ [Arg(ValueLit(123))] //│ ) @@ -352,7 +369,7 @@ module M with :ignore val MSym = ValueRef(ModuleSymbol("M", M)) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.353: val MSym = ValueRef(ModuleSymbol("M", M)) +//│ ║ l.370: val MSym = ValueRef(ModuleSymbol("M", M)) //│ ║ ^ //│ ╙── Module argument passed to a non-module parameter. //│ MSym = ValueRef(ModuleSymbol("M", class M)) @@ -375,9 +392,10 @@ val ctxXY = Ctx.empty() .add(ValueRef(y), mkLit(32)) //│ ctxXY = Ctx( //│ Map(2) {"Symbol(x)" => {Lit(10)}, "Symbol(y)" => {Lit(32)}}, +//│ Map(0) {}, +//│ Map(0) {}, //│ [], -//│ None, -//│ {} +//│ None //│ ) // x + y @@ -516,10 +534,10 @@ val res = prop(Ctx.empty(), nestedBlock) //│ {Lit(2)} //│ ] -val2path(1, mut []) +val2path(1, mut [], new Map()) //│ = [End(), ValueLit(1)] -val2path([1, 2, 3], mut []) +val2path([1, 2, 3], mut [], new Map()) //│ = [ //│ Assign( //│ Symbol("tup_1"), @@ -530,12 +548,12 @@ val2path([1, 2, 3], mut []) //│ ] class TestClass(val a, val b) -val2path(TestClass(1, 2), mut []) +val2path(TestClass(1, 2), mut [], new Map()) //│ = [ //│ Assign( //│ Symbol("obj_2"), //│ Instantiate( -//│ ValueRef(ConcreteClassSymbol("TestClass", undefined, None, [])), +//│ ValueRef(ConcreteClassSymbol((), undefined, None, [])), //│ [Arg(ValueLit(1)), Arg(ValueLit(2))] //│ ), //│ End() @@ -543,7 +561,7 @@ val2path(TestClass(1, 2), mut []) //│ ValueRef(Symbol("obj_2")) //│ ] -val2path(TestClass(1, [1,2]), mut []) +val2path(TestClass(1, [1,2]), mut [], new Map([[TestClass.class, "TestClass"]])) //│ = [ //│ Assign( //│ Symbol("tup_3"), diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 17a65bfd3c..d5f73ab9c5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -42,7 +42,7 @@ staged module A //│ method generate⁰ = fun generate¹(source, path) { //│ let tmp_dyn, tmp3; //│ set tmp_dyn = ShapeSet⁰.mkDyn﹖(); -//│ set tmp3 = Block⁰.Printer﹖.class﹖.default﹖.codegen﹖("A", A².cache$A﹖, source, path); +//│ set tmp3 = Block⁰.codegen﹖("A", A².cache$A﹖, source, path); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { From 8f9cef3dd83707ec1bce89ce620e0e0fa7e13be5 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 23 Apr 2026 11:09:21 +0800 Subject: [PATCH 562/654] Fix class generation --- .../src/test/mlscript-compile/Block.mls | 9 +- .../staging/SimpleStagedExample.mls | 12 + .../mlscript-compile/staging/Transform3D.mls | 6 +- .../staging/out/SimpleStagedExample.mls | 19 +- .../staging/out/Transform3D.mls | 1762 ++++++++--------- .../test/mlscript/block-staging/Generate.mls | 4 + 6 files changed, 924 insertions(+), 888 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index ce6eb93ee7..d33009a14a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -130,7 +130,9 @@ class Printer(val owner: Opt[Class]) with Select(qual, name) and // remove selection to owner for values defined within the owner qual is ValueRef(sym) and owner is Some(owner) and sym == owner then showSymbol(name) // TODO: check if we should use `==` here - else showPath(qual) + "." + showSymbol(name) + qual is ValueRef(sym) and sym is ClassSymbol then "this." + showSymbol(name) + else + showPath(qual) + "." + showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" ValueRef(l) then showSymbol(l) @@ -169,9 +171,12 @@ class Printer(val owner: Opt[Class]) with // do not print constraints to next stage "(" + pl.map(p => showSymbol(p.sym)).join(", ") + ")" + fun showCtorParams(pl: ParamList) = + "(" + pl.map(p => "val " + showSymbol(p.sym)).join(", ") + ")" + fun showParamsOpt(p) = if p is - Some(s) then showParams(s) + Some(s) then showCtorParams(s) None then "" fun showParamList(ps: Array[ParamList]) = diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls index 027c923a7a..39882a0bbe 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls @@ -1,3 +1,5 @@ +#config(noFreeze: true) + staged module SimpleStagedExample with fun f(x, y) = x + y fun fib(n) = if n is @@ -7,4 +9,14 @@ staged module SimpleStagedExample with fun foo() = f(2, 3) + fib(10) fun spaces() = ["\t", "\n", "\r"] + class Bar(val x) with + fun bar() = x + class Foo(val x) with + fun foo(b) = + if b is + 1 then x.bar() + 1 + 2 then x.bar() + 2 + else x.bar() + fun baz() = Foo(Bar(1)).foo(1) + diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls index 7eadf53285..c1de334187 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls @@ -23,13 +23,11 @@ staged module Transform3D with fun updateVec(vec, m, col, j, v, i', j') = if j' === 0 then vec - else if col - j' === j then updateVec(vec.concat([v]), m, col, j, v, i', j' - 1) - else updateVec(vec.concat([m.(i').(col - j')]), m, col, j, v, i', j' - 1) + else updateVec(if col - j' === j then vec.concat([v]) else vec.concat([m.(i').(col - j')]), m, col, j, v, i', j' - 1) fun iterUpdate(res, m, row, col, i, j, v, i') = if i' === 0 then res - else if i === row - i' then iterUpdate(res.concat([updateVec([], m, col, j, v, row - i', col)]), m, row, col, i, j, v, i' - 1) - else iterUpdate(res.concat([m.(row - i')]), m, row, col, i, j, v, i' - 1) + else iterUpdate(if i === row - i' then res.concat([updateVec([], m, col, j, v, row - i', col)]) else res.concat([m.(row - i')]), m, row, col, i, j, v, i' - 1) fun multiply(x, y) = let rowX = x.length diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 81c170aabb..769b7050bb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -2,7 +2,24 @@ import "../SimpleStagedExample.mls" open SimpleStagedExample module SimpleStagedExample with - () + class Bar(val x) with + fun bar() = this.x + class Foo(val x) with + fun foo(b) = + let {tmp8, tmp9} + if b is + 1 then + tmp8 = this.x.bar() + tmp8 + 1 + 2 then + tmp9 = this.x.bar() + tmp9 + 2 + else this.x.bar() + fun baz() = + let {tmp6, tmp7} + tmp6 = Bar(1) + tmp7 = Foo(tmp6) + tmp7.foo(1) fun f(x, y) = x + y fun f_Lit2_Lit3(x, y) = 5 fun fib(n) = diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 49b6db2afd..2a517db718 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -224,13 +224,13 @@ module Transform3D with tmp20 = 2 genID_Dyn_Lit4_Lit3_Lit2(tmp19, w, i, tmp20) fun ident(w) = - let {tmp47} - tmp47 = [] - iterID_Arr__end_Dyn_Dyn(tmp47, w, w) + let {tmp43} + tmp43 = [] + iterID_Arr__end_Dyn_Dyn(tmp43, w, w) fun ident_Lit4(w) = - let {tmp47} - tmp47 = [] - iterID_Arr__end_Lit4_Lit4(tmp47, w, w) + let {tmp43} + tmp43 = [] + iterID_Arr__end_Lit4_Lit4(tmp43, w, w) fun iter(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -411,917 +411,917 @@ module Transform3D with tmp15 = i - 1 iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) fun iterUpdate(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(i, tmp35) + tmp33 = row - i' + scrut9 = ===(i, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_6} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_6} scrut8 = ===(i', 0) if scrut8 is true then tup_6 = [] tup_6 else - tmp35 = row - i' - scrut9 = ===(i, tmp35) + tmp33 = row - i' + scrut9 = ===(i, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_11} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_11} scrut8 = ===(i', 0) if scrut8 is true then tup_11 = [] tup_11 else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_30} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_30} scrut8 = ===(i', 0) if scrut8 is true then tup_30 = [] tup_30 else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_21} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_21} scrut8 = ===(i', 0) if scrut8 is true then tup_21 = [] tup_21 else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_19} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_19} scrut8 = ===(i', 0) if scrut8 is true then tup_19 = [] tup_19 else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_7} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_7} scrut8 = ===(i', 0) if scrut8 is true then tup_7 = [] tup_7 else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_24} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_24} scrut8 = ===(i', 0) if scrut8 is true then tup_24 = [] tup_24 else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_22} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_22} scrut8 = ===(i', 0) if scrut8 is true then tup_22 = [] tup_22 else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_13} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_13} scrut8 = ===(i', 0) if scrut8 is true then tup_13 = [] tup_13 else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_32} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_32} scrut8 = ===(i', 0) if scrut8 is true then tup_32 = [] tup_32 else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_17} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_17} scrut8 = ===(i', 0) if scrut8 is true then tup_17 = [] tup_17 else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_9} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_9} scrut8 = ===(i', 0) if scrut8 is true then tup_9 = [] tup_9 else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_26} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_26} scrut8 = ===(i', 0) if scrut8 is true then tup_26 = [] tup_26 else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_20} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_20} scrut8 = ===(i', 0) if scrut8 is true then tup_20 = [] tup_20 else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_18} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_18} scrut8 = ===(i', 0) if scrut8 is true then tup_18 = [] tup_18 else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_15} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_15} scrut8 = ===(i', 0) if scrut8 is true then tup_15 = [] tup_15 else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_34} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_34} scrut8 = ===(i', 0) if scrut8 is true then tup_34 = [] tup_34 else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_10} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_10} scrut8 = ===(i', 0) if scrut8 is true then tup_10 = [] tup_10 else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_28} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_28} scrut8 = ===(i', 0) if scrut8 is true then tup_28 = [] tup_28 else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(0, tmp35) + tmp33 = row - i' + scrut9 = ===(0, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(1, tmp35) + tmp33 = row - i' + scrut9 = ===(1, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) if scrut8 is true then res else - tmp35 = row - i' - scrut9 = ===(2, tmp35) + tmp33 = row - i' + scrut9 = ===(2, tmp33) if scrut9 is true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) + tmp34 = [] + tmp35 = row - i' + tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) + tmp37 = [tmp36] + tmp38 = res.concat(tmp37) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp44, m, row, col, i, j, v, tmp45) + tmp39 = row - i' + tmp40 = [m.(tmp39)] + tmp38 = res.concat(tmp40) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -1359,160 +1359,160 @@ module Transform3D with iter(tmp3, x, y, colX, i, j, tmp4) else 0 fun model(local, position, scaling, rotation) = - let {rot, res1, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84} - tmp70 = rotateZ(rotation.2) - tmp71 = rotateY(rotation.1) - tmp72 = rotateX(rotation.0) - tmp73 = ident_Lit4(4) - tmp74 = multiply(tmp72, tmp73) - tmp75 = multiply(tmp71, tmp74) - rot = multiply(tmp70, tmp75) - tmp76 = transform(position.0, position.1, position.2) - tmp77 = scale(scaling.0, scaling.1, scaling.2) - tmp78 = [local.0] - tmp79 = [local.1] - tmp80 = [local.2] - tmp81 = [1] - tmp82 = [tmp78, tmp79, tmp80, tmp81] - tmp83 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp77, tmp82) - tmp84 = multiply(rot, tmp83) - res1 = multiply(tmp76, tmp84) + let {rot, res1, tmp66, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80} + tmp66 = rotateZ(rotation.2) + tmp67 = rotateY(rotation.1) + tmp68 = rotateX(rotation.0) + tmp69 = ident_Lit4(4) + tmp70 = multiply(tmp68, tmp69) + tmp71 = multiply(tmp67, tmp70) + rot = multiply(tmp66, tmp71) + tmp72 = transform(position.0, position.1, position.2) + tmp73 = scale(scaling.0, scaling.1, scaling.2) + tmp74 = [local.0] + tmp75 = [local.1] + tmp76 = [local.2] + tmp77 = [1] + tmp78 = [tmp74, tmp75, tmp76, tmp77] + tmp79 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp73, tmp78) + tmp80 = multiply(rot, tmp79) + res1 = multiply(tmp72, tmp80) [res1.0, res1.1, res1.2] fun model0(local) = - let {tmp85, tmp86, tmp87, tmp88} - tmp85 = [11, 4, 51] - tmp86 = [0.4, 0.19, 0.19] - tmp87 = 2.51327412 - tmp88 = [tmp87, 3.1415926535, 0] - model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, tmp85, tmp86, tmp88) + let {tmp81, tmp82, tmp83, tmp84} + tmp81 = [11, 4, 51] + tmp82 = [0.4, 0.19, 0.19] + tmp83 = 2.51327412 + tmp84 = [tmp83, 3.1415926535, 0] + model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, tmp81, tmp82, tmp84) fun model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, position, scaling, rotation) = - let {rot, res1, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84} - tmp70 = rotateZ_Lit0(rotation.2) - tmp71 = rotateY_Lit3_p_1415926535(rotation.1) - tmp72 = rotateX_Lit2_p_51327412(rotation.0) - tmp73 = ident_Lit4(4) - tmp74 = multiply(tmp72, tmp73) - tmp75 = multiply(tmp71, tmp74) - rot = multiply(tmp70, tmp75) - tmp76 = transform_Lit11_Lit4_Lit51(position.0, position.1, position.2) - tmp77 = scale_Lit0_p_4_Lit0_p_19_Lit0_p_19(scaling.0, scaling.1, scaling.2) - tmp78 = [local.0] - tmp79 = [local.1] - tmp80 = [local.2] - tmp81 = [1] - tmp82 = [tmp78, tmp79, tmp80, tmp81] - tmp83 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp77, tmp82) - tmp84 = multiply(rot, tmp83) - res1 = multiply(tmp76, tmp84) + let {rot, res1, tmp66, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80} + tmp66 = rotateZ_Lit0(rotation.2) + tmp67 = rotateY_Lit3_p_1415926535(rotation.1) + tmp68 = rotateX_Lit2_p_51327412(rotation.0) + tmp69 = ident_Lit4(4) + tmp70 = multiply(tmp68, tmp69) + tmp71 = multiply(tmp67, tmp70) + rot = multiply(tmp66, tmp71) + tmp72 = transform_Lit11_Lit4_Lit51(position.0, position.1, position.2) + tmp73 = scale_Lit0_p_4_Lit0_p_19_Lit0_p_19(scaling.0, scaling.1, scaling.2) + tmp74 = [local.0] + tmp75 = [local.1] + tmp76 = [local.2] + tmp77 = [1] + tmp78 = [tmp74, tmp75, tmp76, tmp77] + tmp79 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp73, tmp78) + tmp80 = multiply(rot, tmp79) + res1 = multiply(tmp72, tmp80) [res1.0, res1.1, res1.2] fun multiply(x, y) = - let {rowX1, colX3, rowY, colY2, tmp46} + let {rowX1, colX3, rowY, colY2, tmp42} rowX1 = x.length colX3 = x.0.length rowY = y.length colY2 = y.0.length - tmp46 = [] - iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) + tmp42 = [] + iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp42, x, y, rowX1, colX3, colY2, rowX1) fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = - let {rowX1, colX3, rowY, colY2, tmp46} + let {rowX1, colX3, rowY, colY2, tmp42} rowX1 = x.length colX3 = x.0.length rowY = 4 colY2 = 1 - tmp46 = [] - iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) + tmp42 = [] + iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp42, x, y, rowX1, colX3, colY2, rowX1) fun rotateX(angle) = - let {s, c, tmp55, tmp56, tmp57, tmp58, tmp59} + let {s, c, tmp51, tmp52, tmp53, tmp54, tmp55} s = globalThis.Math.sin(angle) c = globalThis.Math.cos(angle) - tmp55 = ident_Lit4(4) - tmp56 = update_Dyn_Lit1_Lit1_Dyn(tmp55, 1, 1, c) - tmp57 = -(s) - tmp58 = update_Dyn_Lit1_Lit2_Dyn(tmp56, 1, 2, tmp57) - tmp59 = update_Dyn_Lit2_Lit1_Dyn(tmp58, 2, 1, s) - update_Dyn_Lit2_Lit2_Dyn(tmp59, 2, 2, c) + tmp51 = ident_Lit4(4) + tmp52 = update_Dyn_Lit1_Lit1_Dyn(tmp51, 1, 1, c) + tmp53 = -(s) + tmp54 = update_Dyn_Lit1_Lit2_Dyn(tmp52, 1, 2, tmp53) + tmp55 = update_Dyn_Lit2_Lit1_Dyn(tmp54, 2, 1, s) + update_Dyn_Lit2_Lit2_Dyn(tmp55, 2, 2, c) fun rotateX_Lit2_p_51327412(angle) = - let {s, c, tmp55, tmp56, tmp57, tmp58, tmp59} + let {s, c, tmp51, tmp52, tmp53, tmp54, tmp55} s = globalThis.Math.sin(angle) c = globalThis.Math.cos(angle) - tmp55 = ident_Lit4(4) - tmp56 = update_Dyn_Lit1_Lit1_Dyn(tmp55, 1, 1, c) - tmp57 = -(s) - tmp58 = update_Dyn_Lit1_Lit2_Dyn(tmp56, 1, 2, tmp57) - tmp59 = update_Dyn_Lit2_Lit1_Dyn(tmp58, 2, 1, s) - update_Dyn_Lit2_Lit2_Dyn(tmp59, 2, 2, c) + tmp51 = ident_Lit4(4) + tmp52 = update_Dyn_Lit1_Lit1_Dyn(tmp51, 1, 1, c) + tmp53 = -(s) + tmp54 = update_Dyn_Lit1_Lit2_Dyn(tmp52, 1, 2, tmp53) + tmp55 = update_Dyn_Lit2_Lit1_Dyn(tmp54, 2, 1, s) + update_Dyn_Lit2_Lit2_Dyn(tmp55, 2, 2, c) fun rotateY(angle) = - let {s1, c1, tmp60, tmp61, tmp62, tmp63, tmp64} + let {s1, c1, tmp56, tmp57, tmp58, tmp59, tmp60} s1 = globalThis.Math.sin(angle) c1 = globalThis.Math.cos(angle) - tmp60 = ident_Lit4(4) - tmp61 = update_Dyn_Lit0_Lit0_Dyn(tmp60, 0, 0, c1) - tmp62 = update_Dyn_Lit0_Lit2_Dyn(tmp61, 0, 2, s1) - tmp63 = -(s1) - tmp64 = update_Dyn_Lit2_Lit0_Dyn(tmp62, 2, 0, tmp63) - update_Dyn_Lit2_Lit2_Dyn(tmp64, 2, 2, c1) + tmp56 = ident_Lit4(4) + tmp57 = update_Dyn_Lit0_Lit0_Dyn(tmp56, 0, 0, c1) + tmp58 = update_Dyn_Lit0_Lit2_Dyn(tmp57, 0, 2, s1) + tmp59 = -(s1) + tmp60 = update_Dyn_Lit2_Lit0_Dyn(tmp58, 2, 0, tmp59) + update_Dyn_Lit2_Lit2_Dyn(tmp60, 2, 2, c1) fun rotateY_Lit3_p_1415926535(angle) = - let {s1, c1, tmp60, tmp61, tmp62, tmp63, tmp64} + let {s1, c1, tmp56, tmp57, tmp58, tmp59, tmp60} s1 = globalThis.Math.sin(angle) c1 = globalThis.Math.cos(angle) - tmp60 = ident_Lit4(4) - tmp61 = update_Dyn_Lit0_Lit0_Dyn(tmp60, 0, 0, c1) - tmp62 = update_Dyn_Lit0_Lit2_Dyn(tmp61, 0, 2, s1) - tmp63 = -(s1) - tmp64 = update_Dyn_Lit2_Lit0_Dyn(tmp62, 2, 0, tmp63) - update_Dyn_Lit2_Lit2_Dyn(tmp64, 2, 2, c1) + tmp56 = ident_Lit4(4) + tmp57 = update_Dyn_Lit0_Lit0_Dyn(tmp56, 0, 0, c1) + tmp58 = update_Dyn_Lit0_Lit2_Dyn(tmp57, 0, 2, s1) + tmp59 = -(s1) + tmp60 = update_Dyn_Lit2_Lit0_Dyn(tmp58, 2, 0, tmp59) + update_Dyn_Lit2_Lit2_Dyn(tmp60, 2, 2, c1) fun rotateZ(angle) = - let {s2, c2, tmp65, tmp66, tmp67, tmp68, tmp69} + let {s2, c2, tmp61, tmp62, tmp63, tmp64, tmp65} s2 = globalThis.Math.sin(angle) c2 = globalThis.Math.cos(angle) - tmp65 = ident_Lit4(4) - tmp66 = update_Dyn_Lit0_Lit0_Dyn(tmp65, 0, 0, c2) - tmp67 = -(s2) - tmp68 = update_Dyn_Lit0_Lit1_Dyn(tmp66, 0, 1, tmp67) - tmp69 = update_Dyn_Lit1_Lit0_Dyn(tmp68, 1, 0, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp69, 1, 1, c2) + tmp61 = ident_Lit4(4) + tmp62 = update_Dyn_Lit0_Lit0_Dyn(tmp61, 0, 0, c2) + tmp63 = -(s2) + tmp64 = update_Dyn_Lit0_Lit1_Dyn(tmp62, 0, 1, tmp63) + tmp65 = update_Dyn_Lit1_Lit0_Dyn(tmp64, 1, 0, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp65, 1, 1, c2) fun rotateZ_Lit0(angle) = - let {s2, c2, tmp65, tmp66, tmp67, tmp68, tmp69} + let {s2, c2, tmp61, tmp62, tmp63, tmp64, tmp65} s2 = globalThis.Math.sin(angle) c2 = globalThis.Math.cos(angle) - tmp65 = ident_Lit4(4) - tmp66 = update_Dyn_Lit0_Lit0_Dyn(tmp65, 0, 0, c2) - tmp67 = -(s2) - tmp68 = update_Dyn_Lit0_Lit1_Dyn(tmp66, 0, 1, tmp67) - tmp69 = update_Dyn_Lit1_Lit0_Dyn(tmp68, 1, 0, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp69, 1, 1, c2) + tmp61 = ident_Lit4(4) + tmp62 = update_Dyn_Lit0_Lit0_Dyn(tmp61, 0, 0, c2) + tmp63 = -(s2) + tmp64 = update_Dyn_Lit0_Lit1_Dyn(tmp62, 0, 1, tmp63) + tmp65 = update_Dyn_Lit1_Lit0_Dyn(tmp64, 1, 0, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp65, 1, 1, c2) fun scale(sx, sy, sz) = - let {tmp52, tmp53, tmp54} - tmp52 = ident_Lit4(4) - tmp53 = update_Dyn_Lit0_Lit0_Dyn(tmp52, 0, 0, sx) - tmp54 = update_Dyn_Lit1_Lit1_Dyn(tmp53, 1, 1, sy) - update_Dyn_Lit2_Lit2_Dyn(tmp54, 2, 2, sz) + let {tmp48, tmp49, tmp50} + tmp48 = ident_Lit4(4) + tmp49 = update_Dyn_Lit0_Lit0_Dyn(tmp48, 0, 0, sx) + tmp50 = update_Dyn_Lit1_Lit1_Dyn(tmp49, 1, 1, sy) + update_Dyn_Lit2_Lit2_Dyn(tmp50, 2, 2, sz) fun scale_Lit0_p_4_Lit0_p_19_Lit0_p_19(sx, sy, sz) = - let {tmp52, tmp53, tmp54} - tmp52 = ident_Lit4(4) - tmp53 = update_Dyn_Lit0_Lit0_Lit0_p_4(tmp52, 0, 0, sx) - tmp54 = update_Dyn_Lit1_Lit1_Lit0_p_19(tmp53, 1, 1, sy) - update_Dyn_Lit2_Lit2_Lit0_p_19(tmp54, 2, 2, sz) + let {tmp48, tmp49, tmp50} + tmp48 = ident_Lit4(4) + tmp49 = update_Dyn_Lit0_Lit0_Lit0_p_4(tmp48, 0, 0, sx) + tmp50 = update_Dyn_Lit1_Lit1_Lit0_p_19(tmp49, 1, 1, sy) + update_Dyn_Lit2_Lit2_Lit0_p_19(tmp50, 2, 2, sz) fun transform(dx, dy, dz) = - let {tmp49, tmp50, tmp51} - tmp49 = ident_Lit4(4) - tmp50 = update_Dyn_Lit0_Lit3_Dyn(tmp49, 0, 3, dx) - tmp51 = update_Dyn_Lit1_Lit3_Dyn(tmp50, 1, 3, dy) - update_Dyn_Lit2_Lit3_Dyn(tmp51, 2, 3, dz) + let {tmp45, tmp46, tmp47} + tmp45 = ident_Lit4(4) + tmp46 = update_Dyn_Lit0_Lit3_Dyn(tmp45, 0, 3, dx) + tmp47 = update_Dyn_Lit1_Lit3_Dyn(tmp46, 1, 3, dy) + update_Dyn_Lit2_Lit3_Dyn(tmp47, 2, 3, dz) fun transform_Lit11_Lit4_Lit51(dx, dy, dz) = - let {tmp49, tmp50, tmp51} - tmp49 = ident_Lit4(4) - tmp50 = update_Dyn_Lit0_Lit3_Lit11(tmp49, 0, 3, dx) - tmp51 = update_Dyn_Lit1_Lit3_Lit4(tmp50, 1, 3, dy) - update_Dyn_Lit2_Lit3_Lit51(tmp51, 2, 3, dz) + let {tmp45, tmp46, tmp47} + tmp45 = ident_Lit4(4) + tmp46 = update_Dyn_Lit0_Lit3_Lit11(tmp45, 0, 3, dx) + tmp47 = update_Dyn_Lit1_Lit3_Lit4(tmp46, 1, 3, dy) + update_Dyn_Lit2_Lit3_Lit51(tmp47, 2, 3, dz) fun update(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun updateVec(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1523,16 +1523,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_3} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_3} scrut6 = ===(j', 0) if scrut6 is true then @@ -1545,16 +1545,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_12} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_12} scrut6 = ===(j', 0) if scrut6 is true then @@ -1567,16 +1567,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_31} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_31} scrut6 = ===(j', 0) if scrut6 is true then @@ -1589,16 +1589,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_14} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_14} scrut6 = ===(j', 0) if scrut6 is true then @@ -1611,16 +1611,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_33} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_33} scrut6 = ===(j', 0) if scrut6 is true then @@ -1633,16 +1633,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_16} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_16} scrut6 = ===(j', 0) if scrut6 is true then @@ -1655,16 +1655,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_35} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_35} scrut6 = ===(j', 0) if scrut6 is true then @@ -1677,16 +1677,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_8} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_8} scrut6 = ===(j', 0) if scrut6 is true then @@ -1699,16 +1699,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_25} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_25} scrut6 = ===(j', 0) if scrut6 is true then @@ -1721,16 +1721,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_27} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_27} scrut6 = ===(j', 0) if scrut6 is true then @@ -1743,16 +1743,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_29} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_29} scrut6 = ===(j', 0) if scrut6 is true then @@ -1765,16 +1765,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1785,16 +1785,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1805,16 +1805,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1825,16 +1825,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1845,16 +1845,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1865,16 +1865,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1885,16 +1885,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1905,16 +1905,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1925,16 +1925,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1945,16 +1945,16 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) if scrut6 is true then vec @@ -1965,119 +1965,119 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + tmp30 = col - j' + tmp31 = [m.(i').(tmp30)] + tmp29 = vec.concat(tmp31) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun update_Dyn_Lit0_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit0_Lit0_Lit0_p_4(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit0_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit0_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit0_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit0_Lit3_Lit11(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit1_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit1_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit1_Lit1_Lit0_p_19(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit1_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit1_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit1_Lit3_Lit4(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit2_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit2_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit2_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit2_Lit2_Lit0_p_19(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit2_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) fun update_Dyn_Lit2_Lit3_Lit51(m, i, j, v) = - let {row1, col2, tmp48} + let {row1, col2, tmp44} row1 = m.length col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp48, m, row1, col2, i, j, v, row1) \ No newline at end of file + tmp44 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp44, m, row1, col2, i, j, v, row1) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 7345a21cf4..9fa8a911a6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -25,6 +25,10 @@ SimpleStagedExample.fib(5) //│ = 5 +SimpleStagedExample.baz() +//│ = 2 + + import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" From a33a7058463422fd61da0acca95b7c05d6171cfa Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 23 Apr 2026 13:56:36 +0800 Subject: [PATCH 563/654] WIP: collect assigned names for symbols --- .../codegen/ReflectionInstrumenter.scala | 50 ++++++++++++++--- .../src/test/mlscript-compile/ShapeSet.mls | 14 +++-- .../mlscript-compile/SpecializeHelpers.mls | 54 ++++++++++++++----- 3 files changed, 95 insertions(+), 23 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 81f3c0de84..e56f334ac4 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -62,8 +62,11 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(SymbolSubst.Id): val scope = Scope.empty(Scope.Cfg.default) // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes - val defnMap = HashMap[DefinitionSymbol[?], ClsLikeDefn]() + val defnMap = HashMap[DefinitionSymbol[? <: ClassLikeDef], ClsLikeDefn]() var symbolMapSym: Opt[Symbol] = N + + def getDefn(l: DefinitionSymbol[? <: ClassLikeDef]) = + l.defn.orElse(defnMap.get(l)).get // helpers for constructing Block @@ -447,8 +450,39 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val psym = VarSymbol(Ident("path")) val params = PlainParamList(Param.simple(sourceSym) :: Param.simple(psym) :: Nil) FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, genOutputBody(sourceSym, psym))(false, N, Visibility.Public) + + // grab all defn seen so far + // TODO: this could be reduced to only contain all the symbols used within the module + val previousStageValues = + scope.getBindings.collect({ + case b @ (m: ModuleOrObjectSymbol, _) if m != State.unitSymbol => b + case b @ (c: ClassSymbol, _) if !ctx.builtins.virtualClasses(c) => b + }).map((key, nme) => + val tsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(nme)) + val sym = BlockMemberSymbol(nme, Nil) + + val goodKey = key.asInstanceOf[DefinitionSymbol[ModuleOrObjectDef | ClassDef]] + val defn = goodKey.defn.orElse(defnMap.get(goodKey)).getOrElse(throw new Exception(s"Cannot find definition of ${goodKey}")) + val bsym = defn match + case l: ModuleOrObjectDef => l.bsym + case l: ClassDef => l.bsym + case l: ClsLikeDefn => l.sym + val owner = defn match + case l: (ModuleOrObjectDef | ClassDef) => l.owner.map(_.asPath) // is this sufficient? what to do for nested modules? + case l: ClsLikeDefn => l.owner.map(_.asPath) + val path = owner match + case S(owner) => owner.sel(Tree.Ident(bsym.nme), goodKey) + case N => Value.Ref(bsym, S(goodKey)) + + (tsym, sym, path) + ) - (entryFunDef, stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(b))) + def previousStageDecl(b: Block) = + previousStageValues.foldRight(b)({case ((tsym, sym, key), acc) => + Define(ValDefn(tsym, sym, key)(N), acc) + }) + + (entryFunDef, stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(previousStageDecl(b)))) override def applyObjBody(companion: ClsLikeBody) = companion.isym.defn match // staged modules @@ -460,10 +494,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val cacheNme = "cache" + suffix val generatorMapNme = "generatorMap" + suffix val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(PlainParamList(Nil)), ctor)(false, N, Visibility.Public) - + val newCtorFun = stageCtor(ctorFun) val (entryFun, newMethods, cont) = stageMethods(companion.isym, modSym, false, cacheNme, generatorMapNme)(methods) + companion.copy( - methods = entryFun :: stageCtor(ctorFun) :: newMethods, + methods = entryFun :: newCtorFun :: newMethods, ctor = Begin(companion.ctor, cont(End())), ) case b => super.applyObjBody(companion) @@ -499,6 +534,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val preCtorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("preCtor$", Nil, false), Ls(PlainParamList(Nil)), preCtor)(false, N, Visibility.Public) val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("class$ctor$", Nil, false), ctorParams, ctor)(false, N, Visibility.Public) + val newPreCtorFun = stageMethod(preCtorFun) + val newCtorFun = stageCtor(ctorFun) val (entryFun, newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme)(methods) val (companionEntryFun, companionMethods) = companion.methods.partition(_.sym.nme == "generate") @@ -516,11 +553,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case _ => raise(ErrorReport(msg"There shouldn't be more than one entry function generated in a module." -> N :: Nil)) entryFun - + // used for staging classes inside modules val newCompanion = companion.copy( - // actually, the entry function should come from stageMethods - methods = combinedEntryFun :: stageMethod(preCtorFun) :: stageCtor(ctorFun) :: newMethods ++ companionMethods, + methods = combinedEntryFun :: newPreCtorFun :: newCtorFun :: newMethods ++ companionMethods, ctor = Begin(companion.ctor, cont(End())), ) val newClsLikeDefn = defn.copy(companion = S(newCompanion))(defn.configOverride) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 4720afa8ba..e27b5c885a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -116,11 +116,11 @@ fun freshId(prefix) = set idCounter = idCounter + 1 Block.Symbol(prefix + "_" + idCounter.toString()) -fun val2path(v, allocs) = +fun val2path(v, allocs, valueMap) = if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then [Block.End(), Block.ValueLit(v)] else if Array.isArray(v) then - let mapped = v.map(val2path(_, allocs)) + let mapped = v.map(val2path(_, allocs, valueMap)) let blocks = mapped.map(_.0) let paths = mapped.map(_.1) let tupSym = freshId("tup") @@ -129,14 +129,20 @@ fun val2path(v, allocs) = let fullBlock = foldl((b, acc) => Block.concat(b, acc))(tupAssign, ...blocks) [fullBlock, Block.ValueRef(tupSym)] else if v !== undefined and v !== null and v.constructor !== undefined and v.constructor.(Symbols.definitionMetadata) !== undefined then + // actually keep the scoped names let meta = v.constructor.(Symbols.definitionMetadata) - let clsName = meta.1 + // let clsName = meta.1 + let clsName = valueMap.get(v.constructor) + + // console.log(valueMap, v.constructor) + assert valueMap.has(v.constructor) + // console.log(v) // class may have no parameters let paramNames = if meta.2 is undefined then [] ps then ps let classSym = Block.ConcreteClassSymbol(clsName, undefined, None, []) // TODO: add correct Paramters to ConcreteClassSymbol - let mapped = paramNames.map((fld, _, _) => val2path(v.(fld), allocs)) + let mapped = paramNames.map((fld, _, _) => val2path(v.(fld), allocs, valueMap)) let blocks = mapped.map(_.0) let paths = mapped.map(_.1) let objSym = freshId("obj") diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a522f1b896..28e26fe435 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -46,6 +46,8 @@ fun showCtxPath(p) = if p is // FIXME class Ctx( // ctx tracks shapes of variables during shape prop val ctx: Map[String, ShapeSet], + // valueNameCtx tracks the assigned name of the pointer in the previous module for the current runtime value + val valueNameCtx: Map[Class, Str], // valDefnCtx tracks fields defined by ValDefn during shape prop of constructor val valDefnCtx: Map[String, ShapeSet] // allocs tracks the new variables allocated during shape prop @@ -58,11 +60,11 @@ class Ctx( if ctx.has(ps) then Some(ctx.get(ps)) else None fun getValDefn(name) = if valDefnCtx.has(name) then Some(valDefnCtx.get(name)) else None - fun clone = Ctx(new Map(ctx), new Map(valDefnCtx), allocs, thisShape) + fun clone = Ctx(new Map(ctx), valueNameCtx, new Map(valDefnCtx), allocs, thisShape) // For propagation of instantiation of derived class, // we need to keep track of fields defined in parent class, // which is stored in valDefnCtx - fun clearCtx = Ctx(new Map(), valDefnCtx, allocs, thisShape) + fun clearCtx = Ctx(new Map(), valueNameCtx, valDefnCtx, allocs, thisShape) fun add(path: Path, ss: ShapeSet) = let ps = showCtxPath(path) if ctx.has(ps) then @@ -70,12 +72,14 @@ class Ctx( else ctx.set(ps, ss) this + fun setValueName(c: ConcreteClassSymbol | ModuleSymbol, name: Str) = + valueNameCtx.set(c.value, name) // Later ValDefn (in derived class) shadows earlier ValDefn (in base class) fun addValDefn(ps: String, ss: ShapeSet) = valDefnCtx.set(ps, ss) this module Ctx with - fun empty() = Ctx(new Map(), new Map(), mut [], None) + fun empty() = Ctx(new Map(), new Map(), new Map(), mut [], None) class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with val printer = Printer(Some(owner)) @@ -135,11 +139,11 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any assert ctor is FunDefn let params = new Set(ctor.params.flat().map(_.sym)) let ctorBody = removeExtraValDefn(params, ctor.body) - + decl + owner.name + printer.showParamList(paramList) + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" - + indent("\n" + printer.showBlock(ctorBody)) + + indent("\n" + printer.showBlock(ctorBody)) // TODO: we can skip printing ctor that are just End() + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().sort().join("\n")) module FunCache with @@ -217,7 +221,7 @@ fun sor(ctx, r) = if r is Path and let s = sop(ctx, r) // If a path has a statically known shape, then just replace it with the known value - staticSet(s) and val2path(valOfSet(s), ctx.allocs) is [blk, res] then [blk, res, s] + staticSet(s) and val2path(valOfSet(s), ctx.allocs, ctx.valueNameCtx) is [blk, res] then [blk, res, s] else [End(), r, s] Instantiate(cls, args) and let clsSymb = if cls is @@ -245,6 +249,15 @@ fun sor(ctx, r) = if r is [End(), recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") + Select(p, Symbol("concat")) then + if sop(ctx, p).values() is [Shape.Arr(arr)] and args is [e] and sop(ctx, e.value) is [Shape.Arr(arr2)] then + [End(), r, mkArr(arr.concat(arr2))] + else + [End(), r, mkDyn()] + Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _)), Symbol("sin")) then + [End(), r, mkDyn()] // TODO: evaluate if the parameter is static + Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _)), Symbol("cos")) then + [End(), r, mkDyn()] // TODO: evaluate if the parameter is static Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module [End(), r, mkClass(clsSymb, args.map(a => sop(ctx, a.value)))] // FIXME ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class @@ -290,7 +303,7 @@ fun sor(ctx, r) = if r is not (f_gen is Runtime.Unit) then // staged function let res = f_gen(...argShapes) if staticSet(res.1) then - let v2p = val2path(valOfSet(res.1), ctx.allocs) + let v2p = val2path(valOfSet(res.1), ctx.allocs, ctx.valueNameCtx) [v2p.0, v2p.1, res.1] else [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), Symbol(res.0)), args), res.1] @@ -299,7 +312,7 @@ fun sor(ctx, r) = if r is argShapes.every(staticSet) then // non staged function and params known let f_imp = value.(fld) let evaluated = f_imp(...argShapes.map(valOfSet)) - let evaluated_path = val2path(evaluated, ctx.allocs) + let evaluated_path = val2path(evaluated, ctx.allocs, ctx.valueNameCtx) [evaluated_path.0, evaluated_path.1, sov(evaluated)] else [End(), r, mkDyn()] // non staged function and some params unknown @@ -385,7 +398,7 @@ fun prop(ctx, b) = if b is Scoped(symbols, rest) then symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] - let newCtx = Ctx(new Map(ctx.ctx), ctx.valDefnCtx, newAllocs, ctx.thisShape) + let newCtx = Ctx(new Map(ctx.ctx), ctx.valueNameCtx, ctx.valDefnCtx, newAllocs, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) then @@ -467,6 +480,15 @@ fun specializeName(funName, isMethod, ps, shapes) = if mappedShapes.every(_.every(_.isDyn())) then funName else funName + "_" + mappedShapes.map(pss => pss.map(buildShapeSetName).join("_")).join("_dot_") +// abuse Printer for structural induction +// to do this properly you would need only add the definitions as you go through the tree +class ValueCollection(defn: Map[Class, Str]) extends Printer(None) with + fun showSymbol(s) = + if s is + ConcreteClassSymbol | ModuleSymbol then defn.set(getActualClass(s.value), s.name) + else () + "" + fun specialize(cache: FunCache, funName, dflt, shapes) = let defn = dflt() if defn is FunDefn(Symbol(_), ps, body) then @@ -476,11 +498,13 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = Some(x) then [x.0.sym.name, x.1] None then let paramShapes = if isMethod then shapes.slice(1) else shapes + let ctx = if isMethod then let clsSymb = cache.owner - Ctx(new Map(), new Map(), mut [], Some(shapes.(0).(0))) + Ctx(new Map(), new Map(), new Map(), mut [], Some(shapes.(0).(0))) else Ctx.empty() - if isMethod do ctx.add(ValueRef(Symbol("_this")), Some(shapes.(0).(0))) + + // console.log("checking", ctx.valueNameCtx, Printer.default.showBlock(body)) ps.forEach((p, i, _) => p.forEach((p2, j, _) => let shape = if p2.constraint is @@ -490,6 +514,12 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = ctx.add(ValueRef(p2.sym), shape) )) + // build map from all class/module symbols that are used within the body and the shape of the context + new ValueCollection(ctx.valueNameCtx).showBlock(body) + ctx.ctx.values() + .forEach(_.shapeset.values().filter(_ is Class) + .forEach(s => ctx.valueNameCtx.set(s.sym.value.class, s.sym.name))) + cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) let res = prop(ctx, body) @@ -499,7 +529,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let finalBody = if staticSet(actualRetShape) then let allocs = mut [] - let v2p = val2path(valOfSet(actualRetShape), allocs) + let v2p = val2path(valOfSet(actualRetShape), allocs, ctx.valueNameCtx) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) else bodyWithScoped let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, finalBody), actualRetShape]) From dbb52f3ad934a5fe37dfe40152bca28e593513a2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 23 Apr 2026 22:01:37 +0800 Subject: [PATCH 564/654] adjust symbol renaming/scope allocation again --- .../codegen/ReflectionInstrumenter.scala | 69 +- .../staging/LinkingGeneratedClasses.mls | 6 - .../staging/out/LinkingGeneratedClasses.mls | 10 +- .../staging/out/SimpleStagedExample.mls | 2 +- .../staging/out/Transform3D.mls | 1641 ++++++++--------- .../test/mlscript/block-staging/Generate.mls | 4 +- .../test/mlscript/block-staging/ShapeProp.mls | 149 +- .../block-staging/ShapeSetHelpers.mls | 4 +- .../mlscript/block-staging/StageSymbols.mls | 15 + 9 files changed, 959 insertions(+), 941 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e56f334ac4..28737e0823 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -60,6 +60,7 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = // transform Block to Block IR so that it can be instrumented in mlscript class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(SymbolSubst.Id): + // scope holds bindings of variables, and the ModuleOrObjectSymbol/ClassSymbols are later use for redirection val scope = Scope.empty(Scope.Cfg.default) // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes val defnMap = HashMap[DefinitionSymbol[? <: ClassLikeDef], ClsLikeDefn]() @@ -120,20 +121,21 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def checkMap(mapType: Str, key: Path, p: Path, ctx: Context) = if symbolMapSym is None then symbolMapSym = S(TempSymbol(N, "symbolMap")) call(symbolMapSym.get.asPath.selSN("checkMap"), Ls(toValue(mapType), key, p))(cachedK(_, ctx)) - // blockCall("checkMap", Ls(symbolMapSym.get, key, p))(cachedK(_, ctx)) stagingCtx.getCache(sym).map(cachedK(_, stagingCtx)).getOrElse: // add name to scope to avoid shadowing by other symbols - val newName = scope.allocateOrGetName(sym) val rename = sym match - case _ if preserveName => false + case _ if pOpt.isDefined => false + case _ if preserveName => scope.allocateOrGetName(sym); false // avoid name collision - case _: TempSymbol | _: VarSymbol => true + case _: TempSymbol | _: VarSymbol | _: BaseTypeSymbol => true // FIXME: there may be more types of symbols that need to be renamed during staging - case _: BaseTypeSymbol | _: BuiltinSymbol => false + case b: BlockMemberSymbol => + if !b.nameIsMeaningful then scope.allocateOrGetName(sym) + false + case _: BuiltinSymbol => false case t: TermSymbol if t.defn.exists(_.sym.asTrm.isDefined) && (t.k is syntax.Fun) => false case _ => false - val name = if rename then newName else sym.nme - // println(("symbol:", sym, name, stagingCtx)) + val name = if rename then scope.allocateOrGetName(sym) else sym.nme sym match case t: TermSymbol if t.defn.exists(_.sym.asClsOrMod.isDefined) => // no need to perform caching for redirecting call @@ -161,9 +163,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformParamsOpt(paramsOpt): (paramsOpt, ctx) => auxParams.map(ps => ctx => transformParamList(ps)(using ctx)).chainContext: (auxParams, ctx) => tuple(auxParams): auxParams => - blockCtor("ConcreteClassSymbol", Ls(toValue(newName), path, paramsOpt, auxParams), symName)(checkMap("classMap", path, _, ctx)) + blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap("classMap", path, _, ctx)) case _: ModuleOrObjectSymbol => - blockCtor("ModuleSymbol", Ls(toValue(newName), path), symName)(checkMap("moduleMap", path, _, stagingCtx)) + blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap("moduleMap", path, _, stagingCtx)) case _ => blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) @@ -454,27 +456,32 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // grab all defn seen so far // TODO: this could be reduced to only contain all the symbols used within the module val previousStageValues = - scope.getBindings.collect({ - case b @ (m: ModuleOrObjectSymbol, _) if m != State.unitSymbol => b - case b @ (c: ClassSymbol, _) if !ctx.builtins.virtualClasses(c) => b - }).map((key, nme) => - val tsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(nme)) - val sym = BlockMemberSymbol(nme, Nil) + scope.getBindings.collect[(DefinitionSymbol[? <: ModuleOrObjectDef | ClassDef], String)]({ + case (m: ModuleOrObjectSymbol, s) if m != State.unitSymbol && m != ownerSym => (m, s) + case (c: ClassSymbol, s) if !ctx.builtins.virtualClasses(c) && c != ownerSym => (c, s) + }).map((key, nme) => + val name = nme + "$" + scope.allocateOrGetName(ownerSym) + val tsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(name)) + val sym = BlockMemberSymbol(name, Nil) + + val goodKey = key - val goodKey = key.asInstanceOf[DefinitionSymbol[ModuleOrObjectDef | ClassDef]] - val defn = goodKey.defn.orElse(defnMap.get(goodKey)).getOrElse(throw new Exception(s"Cannot find definition of ${goodKey}")) - val bsym = defn match - case l: ModuleOrObjectDef => l.bsym - case l: ClassDef => l.bsym - case l: ClsLikeDefn => l.sym - val owner = defn match - case l: (ModuleOrObjectDef | ClassDef) => l.owner.map(_.asPath) // is this sufficient? what to do for nested modules? - case l: ClsLikeDefn => l.owner.map(_.asPath) - val path = owner match - case S(owner) => owner.sel(Tree.Ident(bsym.nme), goodKey) - case N => Value.Ref(bsym, S(goodKey)) - - (tsym, sym, path) + // reconstructs the Path from the top-level to the current symbol + def reconstruct(s: DefinitionSymbol[? <: ModuleOrObjectDef | ClassDef]): Path = + s.defn.orElse(defnMap.get(goodKey)) match + case S(defn) => + val owner: Option[InnerSymbol] = defn match + case l: (ModuleOrObjectDef | ClassDef) => l.owner + case l: ClsLikeDefn => l.owner + owner match + case S(owner: DefinitionSymbol[ModuleOrObjectDef | ClassDef]) => + reconstruct(owner).sel(Tree.Ident(s.nme), s) + case N => defn match + case l: (ModuleOrObjectDef | ClassDef) => Value.Ref(l.bsym, S(s)) + case l: ClsLikeDefn => Value.Ref(l.sym, S(s)) + case N => s.asPath + + (tsym, sym, reconstruct(goodKey)) ) def previousStageDecl(b: Block) = @@ -490,7 +497,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val (sym, ctor, methods) = (companion.isym, companion.ctor, companion.methods) // avoid name clash of cache and generator map for derived staged classes val modSym = sym - val suffix = "$" + sym.nme + val suffix = "$" + scope.allocateOrGetName(sym) val cacheNme = "cache" + suffix val generatorMapNme = "generatorMap" + suffix val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(PlainParamList(Nil)), ctor)(false, N, Visibility.Public) @@ -528,7 +535,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S (defn.sym, defn.ctor, ctorParams, defn.methods) val modSym = companion.isym - val suffix = "$" + sym.nme + val suffix = "$" + scope.allocateOrGetName(defn.isym) val cacheNme = "class$cache" + suffix val generatorMapNme = "class$generatorMap" + suffix diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls index 7d7a693ba3..45705e7307 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls @@ -7,9 +7,3 @@ staged module LinkingGeneratedClasses with fun test2 = new D fun f() = x => x fun g() = x => x + 2 -// staged module LinkingGeneratedClasses with -// class Test -// val privateTest = Test -// // this lambda get desugared, but the generated class cannot be reached from here? -// fun f() = x => x - diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 49cd965ae3..23fdd87c42 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -3,17 +3,17 @@ module LinkingGeneratedClasses with data class D fun f() = let {obj_4} - obj_4 = new! LinkingGeneratedClasses."Function$" + obj_4 = new! LinkingGeneratedClasses."Function$$LinkingGeneratedClasses" obj_4 fun g() = let {obj_6} - obj_6 = new! LinkingGeneratedClasses."Function$1" + obj_6 = new! LinkingGeneratedClasses."Function$1$LinkingGeneratedClasses" obj_6 fun test1 = let {obj_1} - obj_1 = new! LinkingGeneratedClasses."C" + obj_1 = new! LinkingGeneratedClasses."C$LinkingGeneratedClasses" obj_1 fun test2 = let {obj_2} - obj_2 = new! LinkingGeneratedClasses."D" - obj_2 \ No newline at end of file + obj_2 = new! LinkingGeneratedClasses."D$LinkingGeneratedClasses" + obj_2 diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index f579b048a1..79c7b4c4c7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -25,4 +25,4 @@ module SimpleStagedExample with fun fib_Lit7(n) = 13 fun fib_Lit8(n) = 21 fun fib_Lit9(n) = 34 - fun foo() = 60 \ No newline at end of file + fun foo() = 60 diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index d81dc72bd1..6b76b3c0fb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -1,70 +1,6 @@ import "../Transform3D.mls" -open Transform3D module Transform3D with () - fun iter(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter(tmp3, x, y, colX, i, j, tmp4) - else sum - fun iterCol(vec, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = ===(j, 0) - if scrut1 is - true then vec - else - tmp5 = colY - j - tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) - tmp7 = [tmp6] - tmp8 = vec.concat(tmp7) - tmp9 = j - 1 - iterCol(tmp8, x, y, colX, colY, i, tmp9) - fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter(tmp3, x, y, colX, i, j, tmp4) - else 0 - fun iterRow(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} - scrut2 = ===(i, 0) - if scrut2 is - true then m - else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow(tmp14, x, y, rowX, colX, colY, tmp15) - fun iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_1} - scrut1 = ===(j, 0) - if scrut1 is - true then - tup_1 = [] - tup_1 - else - tmp5 = colY - j - tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) - tmp7 = [tmp6] - tmp8 = vec.concat(tmp7) - tmp9 = j - 1 - iterCol(tmp8, x, y, colX, colY, i, tmp9) fun genID(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = ===(j, 0) @@ -86,19 +22,6 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = j - 1 genID(tmp19, w, i, tmp20) - fun iterID(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = ===(i, 0) - if scrut5 is - true then m - else - tmp21 = [] - tmp22 = w - i - tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = i - 1 - iterID(tmp25, w, tmp26) fun genID_Arr__end_Dyn_Dyn_Dyn(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20, tup_2} scrut3 = ===(j, 0) @@ -122,164 +45,6 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = j - 1 genID(tmp19, w, i, tmp20) - fun updateVec(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp35 = row - i' - scrut9 = ===(i, tmp35) - if scrut9 is - true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) - tmp41 = i' - 1 - iterUpdate(tmp40, m, row, col, i, j, v, tmp41) - else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_3} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_3 = [] - tup_3 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec(tmp33, m, col, j, v, i', tmp34) - fun multiply(x, y) = - let {rowX1, colX3, rowY, colY2, tmp46} - rowX1 = x.length - colX3 = x.0.length - rowY = y.length - colY2 = y.0.length - tmp46 = [] - iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) - fun iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_4} - scrut2 = ===(i, 0) - if scrut2 is - true then - tup_4 = [] - tup_4 - else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow(tmp14, x, y, rowX, colX, colY, tmp15) - fun ident(w) = - let {tmp47} - tmp47 = [] - iterID_Arr__end_Dyn_Dyn(tmp47, w, w) - fun iterID_Arr__end_Dyn_Dyn(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tup_5} - scrut5 = ===(i, 0) - if scrut5 is - true then - tup_5 = [] - tup_5 - else - tmp21 = [] - tmp22 = w - i - tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = i - 1 - iterID(tmp25, w, tmp26) - fun update(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_6} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_6 = [] - tup_6 - else - tmp35 = row - i' - scrut9 = ===(i, tmp35) - if scrut9 is - true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) - tmp41 = i' - 1 - iterUpdate(tmp40, m, row, col, i, j, v, tmp41) - else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate(tmp44, m, row, col, i, j, v, tmp45) - fun transform(dx, dy, dz) = - let {tmp49, tmp50, tmp51} - tmp49 = ident_Lit4(4) - tmp50 = update_Dyn_Lit0_Lit3_Dyn(tmp49, 0, 3, dx) - tmp51 = update_Dyn_Lit1_Lit3_Dyn(tmp50, 1, 3, dy) - update_Dyn_Lit2_Lit3_Dyn(tmp51, 2, 3, dz) - fun ident_Lit4(w) = - let {tmp47} - tmp47 = [] - iterID_Arr__end_Lit4_Lit4(tmp47, w, w) - fun iterID_Arr__end_Lit4_Lit4(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 0 - tmp23 = genID_Arr__end_Lit4_Lit0_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 3 - iterID_Dyn_Lit4_Lit3(tmp25, w, tmp26) fun genID_Arr__end_Lit4_Lit0_Lit4(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false @@ -290,71 +55,51 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = 3 genID_Dyn_Lit4_Lit0_Lit3(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit0_Lit3(v, w, i, j) = + fun genID_Arr__end_Lit4_Lit1_Lit4(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 1 + tmp16 = 0 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit0_Lit2(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit0_Lit2(v, w, i, j) = + tmp20 = 3 + genID_Dyn_Lit4_Lit1_Lit3(tmp19, w, i, tmp20) + fun genID_Arr__end_Lit4_Lit2_Lit4(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 2 + tmp16 = 0 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 1 - genID_Dyn_Lit4_Lit0_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit0_Lit1(v, w, i, j) = + tmp20 = 3 + genID_Dyn_Lit4_Lit2_Lit3(tmp19, w, i, tmp20) + fun genID_Arr__end_Lit4_Lit3_Lit4(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 3 + tmp16 = 0 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit0_Lit0(tmp19, w, i, tmp20) + tmp20 = 3 + genID_Dyn_Lit4_Lit3_Lit3(tmp19, w, i, tmp20) fun genID_Dyn_Lit4_Lit0_Lit0(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = true v - fun iterID_Dyn_Lit4_Lit3(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 1 - tmp23 = genID_Arr__end_Lit4_Lit1_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 2 - iterID_Dyn_Lit4_Lit2(tmp25, w, tmp26) - fun genID_Arr__end_Lit4_Lit1_Lit4(v, w, i, j) = + fun genID_Dyn_Lit4_Lit0_Lit1(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 0 + tmp16 = 3 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit1_Lit3(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit1_Lit3(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 1 - scrut4 = true - tmp17 = 1 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit1_Lit2(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit1_Lit2(v, w, i, j) = + tmp20 = 0 + genID_Dyn_Lit4_Lit0_Lit0(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit0_Lit2(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false tmp16 = 2 @@ -363,61 +108,55 @@ module Transform3D with tmp18 = [tmp17] tmp19 = v.concat(tmp18) tmp20 = 1 - genID_Dyn_Lit4_Lit1_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit1_Lit1(v, w, i, j) = + genID_Dyn_Lit4_Lit0_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit0_Lit3(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 3 + tmp16 = 1 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit1_Lit0(tmp19, w, i, tmp20) + tmp20 = 2 + genID_Dyn_Lit4_Lit0_Lit2(tmp19, w, i, tmp20) fun genID_Dyn_Lit4_Lit1_Lit0(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = true v - fun iterID_Dyn_Lit4_Lit2(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 2 - tmp23 = genID_Arr__end_Lit4_Lit2_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 1 - iterID_Dyn_Lit4_Lit1(tmp25, w, tmp26) - fun genID_Arr__end_Lit4_Lit2_Lit4(v, w, i, j) = + fun genID_Dyn_Lit4_Lit1_Lit1(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 0 + tmp16 = 3 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit2_Lit3(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit2_Lit3(v, w, i, j) = + tmp20 = 0 + genID_Dyn_Lit4_Lit1_Lit0(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit1_Lit2(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 1 + tmp16 = 2 scrut4 = false tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit2_Lit2(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit2_Lit2(v, w, i, j) = + tmp20 = 1 + genID_Dyn_Lit4_Lit1_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit1_Lit3(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 2 + tmp16 = 1 scrut4 = true tmp17 = 1 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 1 - genID_Dyn_Lit4_Lit2_Lit1(tmp19, w, i, tmp20) + tmp20 = 2 + genID_Dyn_Lit4_Lit1_Lit2(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit2_Lit0(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + v fun genID_Dyn_Lit4_Lit2_Lit1(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false @@ -428,31 +167,17 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = 0 genID_Dyn_Lit4_Lit2_Lit0(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit2_Lit0(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = true - v - fun iterID_Dyn_Lit4_Lit1(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 3 - tmp23 = genID_Arr__end_Lit4_Lit3_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 0 - iterID_Dyn_Lit4_Lit0(tmp25, w, tmp26) - fun genID_Arr__end_Lit4_Lit3_Lit4(v, w, i, j) = + fun genID_Dyn_Lit4_Lit2_Lit2(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 0 - scrut4 = false - tmp17 = 0 + tmp16 = 2 + scrut4 = true + tmp17 = 1 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit3_Lit3(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit3_Lit3(v, w, i, j) = + tmp20 = 1 + genID_Dyn_Lit4_Lit2_Lit1(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit2_Lit3(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false tmp16 = 1 @@ -461,7 +186,21 @@ module Transform3D with tmp18 = [tmp17] tmp19 = v.concat(tmp18) tmp20 = 2 - genID_Dyn_Lit4_Lit3_Lit2(tmp19, w, i, tmp20) + genID_Dyn_Lit4_Lit2_Lit2(tmp19, w, i, tmp20) + fun genID_Dyn_Lit4_Lit3_Lit0(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + v + fun genID_Dyn_Lit4_Lit3_Lit1(v, w, i, j) = + let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp16 = 3 + scrut4 = true + tmp17 = 1 + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = 0 + genID_Dyn_Lit4_Lit3_Lit0(tmp19, w, i, tmp20) fun genID_Dyn_Lit4_Lit3_Lit2(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false @@ -472,98 +211,204 @@ module Transform3D with tmp19 = v.concat(tmp18) tmp20 = 1 genID_Dyn_Lit4_Lit3_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit3_Lit1(v, w, i, j) = + fun genID_Dyn_Lit4_Lit3_Lit3(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false - tmp16 = 3 - scrut4 = true - tmp17 = 1 + tmp16 = 1 + scrut4 = false + tmp17 = 0 tmp18 = [tmp17] tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit3_Lit0(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit3_Lit0(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = true - v - fun iterID_Dyn_Lit4_Lit0(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = true - m - fun update_Dyn_Lit0_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_7} - scrut8 = ===(i', 0) - if scrut8 is + tmp20 = 2 + genID_Dyn_Lit4_Lit3_Lit2(tmp19, w, i, tmp20) + fun ident(w) = + let {tmp47} + tmp47 = [] + iterID_Arr__end_Dyn_Dyn(tmp47, w, w) + fun ident_Lit4(w) = + let {tmp47} + tmp47 = [] + iterID_Arr__end_Lit4_Lit4(tmp47, w, w) + fun iter(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is true then - tup_7 = [] - tup_7 + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iterCol(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = ===(j, 0) + if scrut1 is + true then vec else - tmp35 = row - i' - scrut9 = ===(i, tmp35) - if scrut9 is - true then - tmp36 = [] - tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) - tmp39 = [tmp38] - tmp40 = res.concat(tmp39) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) - else - tmp42 = row - i' - tmp43 = [m.(tmp42)] - tmp44 = res.concat(tmp43) - tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_8} - scrut6 = ===(j', 0) - if scrut6 is + tmp5 = colY - j + tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) + tmp7 = [tmp6] + tmp8 = vec.concat(tmp7) + tmp9 = j - 1 + iterCol(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 0 + tmp6 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp5, colX) + tmp7 = [tmp6] + tmp8 = vec.concat(tmp7) + tmp9 = 0 + iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_1} + scrut1 = ===(j, 0) + if scrut1 is true then - tup_8 = [] - tup_8 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec + tup_1 = [] + tup_1 else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + tmp5 = colY - j + tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) + tmp7 = [tmp6] + tmp8 = vec.concat(tmp7) + tmp9 = j - 1 + iterCol(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(vec, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = true + vec + fun iterID(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = ===(i, 0) + if scrut5 is + true then m + else + tmp21 = [] + tmp22 = w - i + tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = i - 1 + iterID(tmp25, w, tmp26) + fun iterID_Arr__end_Dyn_Dyn(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tup_5} + scrut5 = ===(i, 0) + if scrut5 is + true then + tup_5 = [] + tup_5 + else + tmp21 = [] + tmp22 = w - i + tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = i - 1 + iterID(tmp25, w, tmp26) + fun iterID_Arr__end_Lit4_Lit4(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 0 + tmp23 = genID_Arr__end_Lit4_Lit0_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 3 + iterID_Dyn_Lit4_Lit3(tmp25, w, tmp26) + fun iterID_Dyn_Lit4_Lit0(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = true + m + fun iterID_Dyn_Lit4_Lit1(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 3 + tmp23 = genID_Arr__end_Lit4_Lit3_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 0 + iterID_Dyn_Lit4_Lit0(tmp25, w, tmp26) + fun iterID_Dyn_Lit4_Lit2(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 2 + tmp23 = genID_Arr__end_Lit4_Lit2_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 1 + iterID_Dyn_Lit4_Lit1(tmp25, w, tmp26) + fun iterID_Dyn_Lit4_Lit3(m, w, i) = + let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} + scrut5 = false + tmp21 = [] + tmp22 = 1 + tmp23 = genID_Arr__end_Lit4_Lit1_Lit4(tmp21, w, tmp22, w) + tmp24 = [tmp23] + tmp25 = m.concat(tmp24) + tmp26 = 2 + iterID_Dyn_Lit4_Lit2(tmp25, w, tmp26) + fun iterRow(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_23} + scrut2 = ===(i, 0) + if scrut2 is + true then + tup_23 = [] + tup_23 + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_4} + scrut2 = ===(i, 0) + if scrut2 is + true then + tup_4 = [] + tup_4 + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp10 = [] + tmp11 = rowX - i + tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) + tmp13 = [tmp12] + tmp14 = m.concat(tmp13) + tmp15 = i - 1 + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) + fun iterUpdate(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is @@ -575,30 +420,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit1_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_9} + iterUpdate(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_6} scrut8 = ===(i', 0) if scrut8 is true then - tup_9 = [] - tup_9 + tup_6 = [] + tup_6 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -606,22 +445,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + iterUpdate(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_11} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_11 = [] + tup_11 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -629,30 +470,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit2_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_10} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_21} scrut8 = ===(i', 0) if scrut8 is true then - tup_10 = [] - tup_10 + tup_21 = [] + tup_21 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -660,22 +495,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_19} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_19 = [] + tup_19 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -683,36 +520,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun scale(sx, sy, sz) = - let {tmp52, tmp53, tmp54} - tmp52 = ident_Lit4(4) - tmp53 = update_Dyn_Lit0_Lit0_Dyn(tmp52, 0, 0, sx) - tmp54 = update_Dyn_Lit1_Lit1_Dyn(tmp53, 1, 1, sy) - update_Dyn_Lit2_Lit2_Dyn(tmp54, 2, 2, sz) - fun update_Dyn_Lit0_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_11} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_7} scrut8 = ===(i', 0) if scrut8 is true then - tup_11 = [] - tup_11 + tup_7 = [] + tup_7 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -720,64 +545,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_12} - scrut6 = ===(j', 0) - if scrut6 is + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_22} + scrut8 = ===(i', 0) + if scrut8 is true then - tup_12 = [] - tup_12 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} - scrut8 = ===(i', 0) - if scrut8 is - true then res + tup_22 = [] + tup_22 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -789,19 +574,13 @@ module Transform3D with tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit1_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_13} scrut8 = ===(i', 0) @@ -827,53 +606,13 @@ module Transform3D with tmp44 = res.concat(tmp43) tmp45 = i' - 1 iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_14} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_14 = [] - tup_14 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_17} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_17 = [] + tup_17 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -881,30 +620,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit2_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_15} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_9} scrut8 = ===(i', 0) if scrut8 is true then - tup_15 = [] - tup_15 + tup_9 = [] + tup_9 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -912,64 +645,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_16} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_16 = [] - tup_16 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - tmp30 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) - else - tmp31 = col - j' - tmp32 = [m.(i').(tmp31)] - tmp33 = vec.concat(tmp32) - tmp34 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_20} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_20 = [] + tup_20 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -977,40 +670,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun rotateX(angle) = - let {s, c, tmp55, tmp56, tmp57, tmp58, tmp59} - s = globalThis.Math.sin(angle) - c = globalThis.Math.cos(angle) - tmp55 = ident_Lit4(4) - tmp56 = update_Dyn_Lit1_Lit1_Dyn(tmp55, 1, 1, c) - tmp57 = -(s) - tmp58 = update_Dyn_Lit1_Lit2_Dyn(tmp56, 1, 2, tmp57) - tmp59 = update_Dyn_Lit2_Lit1_Dyn(tmp58, 2, 1, s) - update_Dyn_Lit2_Lit2_Dyn(tmp59, 2, 2, c) - fun update_Dyn_Lit1_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_17} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_18} scrut8 = ===(i', 0) if scrut8 is true then - tup_17 = [] - tup_17 + tup_18 = [] + tup_18 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -1018,22 +695,24 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_15} scrut8 = ===(i', 0) if scrut8 is - true then res + true then + tup_15 = [] + tup_15 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -1045,26 +724,20 @@ module Transform3D with tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit2_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_18} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_10} scrut8 = ===(i', 0) if scrut8 is true then - tup_18 = [] - tup_18 + tup_10 = [] + tup_10 else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -1072,18 +745,18 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is @@ -1095,40 +768,22 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun rotateY(angle) = - let {s1, c1, tmp60, tmp61, tmp62, tmp63, tmp64} - s1 = globalThis.Math.sin(angle) - c1 = globalThis.Math.cos(angle) - tmp60 = ident_Lit4(4) - tmp61 = update_Dyn_Lit0_Lit0_Dyn(tmp60, 0, 0, c1) - tmp62 = update_Dyn_Lit0_Lit2_Dyn(tmp61, 0, 2, s1) - tmp63 = -(s1) - tmp64 = update_Dyn_Lit2_Lit0_Dyn(tmp62, 2, 0, tmp63) - update_Dyn_Lit2_Lit2_Dyn(tmp64, 2, 2, c1) - fun update_Dyn_Lit0_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_19} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is - true then - tup_19 = [] - tup_19 + true then res else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -1136,17 +791,17 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) @@ -1170,19 +825,11 @@ module Transform3D with tmp44 = res.concat(tmp43) tmp45 = i' - 1 iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit2_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_20} + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is - true then - tup_20 = [] - tup_20 + true then res else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -1190,18 +837,18 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is @@ -1217,36 +864,18 @@ module Transform3D with tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun rotateZ(angle) = - let {s2, c2, tmp65, tmp66, tmp67, tmp68, tmp69} - s2 = globalThis.Math.sin(angle) - c2 = globalThis.Math.cos(angle) - tmp65 = ident_Lit4(4) - tmp66 = update_Dyn_Lit0_Lit0_Dyn(tmp65, 0, 0, c2) - tmp67 = -(s2) - tmp68 = update_Dyn_Lit0_Lit1_Dyn(tmp66, 0, 1, tmp67) - tmp69 = update_Dyn_Lit1_Lit0_Dyn(tmp68, 1, 0, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp69, 1, 1, c2) - fun update_Dyn_Lit0_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_21} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is - true then - tup_21 = [] - tup_21 + true then res else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -1258,14 +887,14 @@ module Transform3D with tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is @@ -1277,30 +906,22 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun update_Dyn_Lit1_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp48} - row1 = m.length - col2 = m.0.length - tmp48 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tup_22} + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is - true then - tup_22 = [] - tup_22 + true then res else tmp35 = row - i' scrut9 = ===(i, tmp35) @@ -1308,18 +929,18 @@ module Transform3D with true then tmp36 = [] tmp37 = row - i' - tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} scrut8 = ===(i', 0) if scrut8 is @@ -1335,13 +956,118 @@ module Transform3D with tmp39 = [tmp38] tmp40 = res.concat(tmp39) tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) else tmp42 = row - i' tmp43 = [m.(tmp42)] tmp44 = res.concat(tmp43) tmp45 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = + let {scrut8, scrut9, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45} + scrut8 = ===(i', 0) + if scrut8 is + true then res + else + tmp35 = row - i' + scrut9 = ===(i, tmp35) + if scrut9 is + true then + tmp36 = [] + tmp37 = row - i' + tmp38 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp36, m, col, j, v, tmp37, col) + tmp39 = [tmp38] + tmp40 = res.concat(tmp39) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp40, m, row, col, i, j, v, tmp41) + else + tmp42 = row - i' + tmp43 = [m.(tmp42)] + tmp44 = res.concat(tmp43) + tmp45 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row, col, i, j, v, tmp45) + fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + else 0 + fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter(tmp3, x, y, colX, i, j, tmp4) + else 0 fun model(local, position, scaling, rotation) = let {rot, res1, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84} tmp70 = rotateZ(rotation.2) @@ -1362,6 +1088,14 @@ module Transform3D with tmp84 = multiply(rot, tmp83) res1 = multiply(tmp76, tmp84) [res1.0, res1.1, res1.2] + fun multiply(x, y) = + let {rowX1, colX3, rowY, colY2, tmp46} + rowX1 = x.length + colX3 = x.0.length + rowY = y.length + colY2 = y.0.length + tmp46 = [] + iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = let {rowX1, colX3, rowY, colY2, tmp46} rowX1 = x.length @@ -1370,68 +1104,333 @@ module Transform3D with colY2 = 1 tmp46 = [] iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp46, x, y, rowX1, colX3, colY2, rowX1) - fun iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_23} - scrut2 = ===(i, 0) - if scrut2 is - true then - tup_23 = [] - tup_23 - else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) - fun iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(vec, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = false - tmp5 = 0 - tmp6 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp5, colX) - tmp7 = [tmp6] - tmp8 = vec.concat(tmp7) - tmp9 = 0 - iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) - fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) - else 0 - fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is + fun rotateX(angle) = + let {s, c, tmp55, tmp56, tmp57, tmp58, tmp59} + s = globalThis.Math.sin(angle) + c = globalThis.Math.cos(angle) + tmp55 = ident_Lit4(4) + tmp56 = update_Dyn_Lit1_Lit1_Dyn(tmp55, 1, 1, c) + tmp57 = -(s) + tmp58 = update_Dyn_Lit1_Lit2_Dyn(tmp56, 1, 2, tmp57) + tmp59 = update_Dyn_Lit2_Lit1_Dyn(tmp58, 2, 1, s) + update_Dyn_Lit2_Lit2_Dyn(tmp59, 2, 2, c) + fun rotateY(angle) = + let {s1, c1, tmp60, tmp61, tmp62, tmp63, tmp64} + s1 = globalThis.Math.sin(angle) + c1 = globalThis.Math.cos(angle) + tmp60 = ident_Lit4(4) + tmp61 = update_Dyn_Lit0_Lit0_Dyn(tmp60, 0, 0, c1) + tmp62 = update_Dyn_Lit0_Lit2_Dyn(tmp61, 0, 2, s1) + tmp63 = -(s1) + tmp64 = update_Dyn_Lit2_Lit0_Dyn(tmp62, 2, 0, tmp63) + update_Dyn_Lit2_Lit2_Dyn(tmp64, 2, 2, c1) + fun rotateZ(angle) = + let {s2, c2, tmp65, tmp66, tmp67, tmp68, tmp69} + s2 = globalThis.Math.sin(angle) + c2 = globalThis.Math.cos(angle) + tmp65 = ident_Lit4(4) + tmp66 = update_Dyn_Lit0_Lit0_Dyn(tmp65, 0, 0, c2) + tmp67 = -(s2) + tmp68 = update_Dyn_Lit0_Lit1_Dyn(tmp66, 0, 1, tmp67) + tmp69 = update_Dyn_Lit1_Lit0_Dyn(tmp68, 1, 0, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp69, 1, 1, c2) + fun scale(sx, sy, sz) = + let {tmp52, tmp53, tmp54} + tmp52 = ident_Lit4(4) + tmp53 = update_Dyn_Lit0_Lit0_Dyn(tmp52, 0, 0, sx) + tmp54 = update_Dyn_Lit1_Lit1_Dyn(tmp53, 1, 1, sy) + update_Dyn_Lit2_Lit2_Dyn(tmp54, 2, 2, sz) + fun transform(dx, dy, dz) = + let {tmp49, tmp50, tmp51} + tmp49 = ident_Lit4(4) + tmp50 = update_Dyn_Lit0_Lit3_Dyn(tmp49, 0, 3, dx) + tmp51 = update_Dyn_Lit1_Lit3_Dyn(tmp50, 1, 3, dy) + update_Dyn_Lit2_Lit3_Dyn(tmp51, 2, 3, dz) + fun update(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun updateVec(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_3} + scrut6 = ===(j', 0) + if scrut6 is true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) - else sum - fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(vec, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = true - vec - fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} - scrut2 = ===(i, 0) - if scrut2 is - true then m + tup_3 = [] + tup_3 else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) \ No newline at end of file + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_12} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_12 = [] + tup_12 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_14} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_14 = [] + tup_14 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_16} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_16 = [] + tup_16 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34, tup_8} + scrut6 = ===(j', 0) + if scrut6 is + true then + tup_8 = [] + tup_8 + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = + let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tmp33, tmp34} + scrut6 = ===(j', 0) + if scrut6 is + true then vec + else + tmp27 = col - j' + scrut7 = ===(tmp27, j) + if scrut7 is + true then + tmp28 = [v] + tmp29 = vec.concat(tmp28) + tmp30 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp30) + else + tmp31 = col - j' + tmp32 = [m.(i').(tmp31)] + tmp33 = vec.concat(tmp32) + tmp34 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp33, m, col, j, v, i', tmp34) + fun update_Dyn_Lit0_Lit0_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit0_Lit1_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit0_Lit2_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit0_Lit3_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit0_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit1_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit2_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit1_Lit3_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit0_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit1_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit2_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) + fun update_Dyn_Lit2_Lit3_Dyn(m, i, j, v) = + let {row1, col2, tmp48} + row1 = m.length + col2 = m.0.length + tmp48 = [] + iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp48, m, row1, col2, i, j, v, row1) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index debc085118..3f67fa9b3b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -32,9 +32,11 @@ gen(LinkingGeneratedClasses, "LinkingGeneratedClasses") import "../../mlscript-compile/staging/out/LinkingGeneratedClasses.mls" +:expect C LinkingGeneratedClasses.test1 //│ = C +:expect D LinkingGeneratedClasses.test2 //│ = D @@ -48,7 +50,7 @@ LinkingGeneratedClasses.g().call(3) import "../../mlscript-compile/staging/StagedClass.mls" -// module wasn't staged alongside class +// FIXME: module wasn't staged alongside class gen(StagedClass."class", "StagedClass") import "../../mlscript-compile/staging/ImportingFiles.mls" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 35a9560094..8b0bafe818 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -38,23 +38,7 @@ Test."test2_gen"(mkDyn()) print(Test."cache$Test") //│ > module Test with //│ > () -//│ > fun test() = 20 //│ > fun f_Lit2_Lit2(x, y) = 4 -//│ > fun fib_Lit4(n) = 3 -//│ > fun fib_Lit3(n) = 2 -//│ > fun fib_Lit2(n) = 1 -//│ > fun fib_Lit1(n) = 1 -//│ > fun pyth_Lit2_Lit4(x, y) = 20 -//│ > fun test2(n) = -//│ > let {dyn, tmp10} -//│ > dyn = pyth_Dyn_Lit2(n, 2) -//│ > tmp10 = *(dyn, 2) -//│ > fib(tmp10) -//│ > fun pyth_Dyn_Lit2(x, y) = -//│ > let {tmp6, tmp7} -//│ > tmp6 = NonStaged.sq(x) -//│ > tmp7 = 4 -//│ > tmp6 + tmp7 //│ > fun fib(n) = //│ > let {n1, tmp2, tmp3, tmp4, tmp5} //│ > if n is @@ -67,6 +51,22 @@ print(Test."cache$Test") //│ > tmp4 = n1 - 2 //│ > tmp5 = fib(tmp4) //│ > tmp3 + tmp5 +//│ > fun fib_Lit1(n) = 1 +//│ > fun fib_Lit2(n) = 1 +//│ > fun fib_Lit3(n) = 2 +//│ > fun fib_Lit4(n) = 3 +//│ > fun pyth_Dyn_Lit2(x, y) = +//│ > let {tmp6, tmp7} +//│ > tmp6 = Test."NonStaged".sq(x) +//│ > tmp7 = 4 +//│ > tmp6 + tmp7 +//│ > fun pyth_Lit2_Lit4(x, y) = 20 +//│ > fun test() = 20 +//│ > fun test2(n) = +//│ > let {dyn, tmp10} +//│ > dyn = pyth_Dyn_Lit2(n, 2) +//│ > tmp10 = *(dyn, 2) +//│ > fib(tmp10) class C(val x) @@ -84,7 +84,6 @@ TestIf."test_gen"() print(TestIf."cache$TestIf") //│ > module TestIf with //│ > () -//│ > fun test() = "else" //│ > fun f_C_Lit2(x) = //│ > let {arg_C_0_} //│ > arg_C_0_ = x.x @@ -92,6 +91,7 @@ print(TestIf."cache$TestIf") //│ > let {arg_C_0_} //│ > arg_C_0_ = x.x //│ > fun f_Lit2(x) = "else" +//│ > fun test() = "else" class C(val n) staged module TestIf2 with @@ -112,26 +112,26 @@ TestIf2."test3_gen"() print(TestIf2."cache$TestIf2") //│ > module TestIf2 with //│ > () -//│ > fun test() = -//│ > let {tmp1} -//│ > tmp1 = C(2) -//│ > f_C_Lit2(tmp1) -//│ > fun f_C_Lit2(x) = +//│ > fun f_C_Dyn(x) = //│ > let {y, tmp} //│ > y = x.n //│ > tmp = () //│ > y + 1 -//│ > fun test2(dyn) = -//│ > let {tmp2} -//│ > tmp2 = C(dyn) -//│ > f_C_Dyn(tmp2) -//│ > fun f_C_Dyn(x) = +//│ > fun f_C_Lit2(x) = //│ > let {y, tmp} //│ > y = x.n //│ > tmp = () //│ > y + 1 -//│ > fun test3() = 1 //│ > fun f_Lit0(x) = 1 +//│ > fun test() = +//│ > let {tmp1} +//│ > tmp1 = TestIf2."C"(2) +//│ > f_C_Lit2(tmp1) +//│ > fun test2(dyn) = +//│ > let {tmp2} +//│ > tmp2 = TestIf2."C"(dyn) +//│ > f_C_Dyn(tmp2) +//│ > fun test3() = 1 staged module LinearAlgebra with fun _dot(v1, v2, n, acc) = @@ -145,12 +145,6 @@ LinearAlgebra."test_gen"(mkDyn()) print(LinearAlgebra."cache$LinearAlgebra") //│ > module LinearAlgebra with //│ > () -//│ > fun test(x) = -//│ > let {tmp3, tmp4} -//│ > tmp3 = [x, 1, 2] -//│ > tmp4 = [3, 4, 1] -//│ > dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) -//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false @@ -176,6 +170,12 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = true //│ > acc +//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) +//│ > fun test(x) = +//│ > let {tmp3, tmp4} +//│ > tmp3 = [x, 1, 2] +//│ > tmp4 = [3, 4, 1] +//│ > dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) staged class L1(val y) with fun call(x) = x + 2 + y @@ -206,65 +206,66 @@ M."test_gen"(mkDyn()) print(M."cache$M") //│ > module M with //│ > () -//│ > fun test_Littrue(b) = -//│ > let {y1, m, tmp1, tmp2, tmp3, obj_3} -//│ > tmp1 = new L1(1) -//│ > y1 = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > obj_3 = new L2(2) -//│ > m = obj_3 -//│ > () -//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 +//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > let {obj_7, obj_8} +//│ > if b is +//│ > true then +//│ > obj_7 = new! M."L2"(2) +//│ > obj_7 +//│ > else +//│ > obj_8 = new! M."L3"(3) +//│ > obj_8 +//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y, b) = +//│ > let {obj_5} +//│ > obj_5 = new! M."L3"(3) +//│ > obj_5 //│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y, b) = //│ > let {obj_2} -//│ > obj_2 = new L2(2) +//│ > obj_2 = new! M."L2"(2) //│ > obj_2 +//│ > fun test(b) = +//│ > let {y1, m, tmp1, tmp2, tmp3} +//│ > tmp1 = new! M."L1"(1) +//│ > y1 = 11 +//│ > tmp2 = new! M."L2"(2) +//│ > tmp3 = new! M."L3"(3) +//│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > () //│ > fun test_Litfalse(b) = //│ > let {y1, m, tmp1, tmp2, tmp3, obj_6} -//│ > tmp1 = new L1(1) +//│ > tmp1 = new! M."L1"(1) //│ > y1 = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > obj_6 = new L3(3) +//│ > tmp2 = new! M."L2"(2) +//│ > tmp3 = new! M."L3"(3) +//│ > obj_6 = new! M."L3"(3) //│ > m = obj_6 //│ > () -//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y, b) = -//│ > let {obj_5} -//│ > obj_5 = new L3(3) -//│ > obj_5 -//│ > fun test(b) = -//│ > let {y1, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new L1(1) +//│ > fun test_Littrue(b) = +//│ > let {y1, m, tmp1, tmp2, tmp3, obj_3} +//│ > tmp1 = new! M."L1"(1) //│ > y1 = 11 -//│ > tmp2 = new L2(2) -//│ > tmp3 = new L3(3) -//│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > tmp2 = new! M."L2"(2) +//│ > tmp3 = new! M."L3"(3) +//│ > obj_3 = new! M."L2"(2) +//│ > m = obj_3 //│ > () -//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = -//│ > let {obj_7, obj_8} -//│ > if b is -//│ > true then -//│ > obj_7 = new L2(2) -//│ > obj_7 -//│ > else -//│ > obj_8 = new L3(3) -//│ > obj_8 +//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(y) with -//│ > val y = y +//│ > () //│ > fun call_L1_Lit1_dot_Lit5(x) = 8 //│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with -//│ > val y = y +//│ > () //│ > //│ > class L3(y) with -//│ > val y = y +//│ > () //│ > + staged class A(val x: Int) with fun f(y: Int) = x + y staged class B(val x: Int) with @@ -287,10 +288,10 @@ print(TestThis."cache$TestThis") print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with -//│ > val x = x +//│ > () //│ > fun f_A_Lit1_dot_Lit1(y) = 2 //│ > class B(x) with -//│ > val x = x +//│ > () //│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 staged class B(val x, val y) @@ -323,5 +324,5 @@ TestMethodCall."test_gen"(mkDyn()) print of Circle.class."class$cache$Circle" //│ > class Circle(radius) with -//│ > val radius = radius +//│ > () //│ > fun area_Circle_Lit1_dot_() = 3.14 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 4d15a3ab73..da536dcd56 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -548,12 +548,12 @@ val2path([1, 2, 3], mut [], new Map()) //│ ] class TestClass(val a, val b) -val2path(TestClass(1, 2), mut [], new Map()) +val2path(TestClass(1, 2), mut [], new Map([[TestClass.class, "TestClass"]])) //│ = [ //│ Assign( //│ Symbol("obj_2"), //│ Instantiate( -//│ ValueRef(ConcreteClassSymbol((), undefined, None, [])), +//│ ValueRef(ConcreteClassSymbol("TestClass", undefined, None, [])), //│ [Arg(ValueLit(1)), Arg(ValueLit(2))] //│ ), //│ End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 412f6b842d..dc084f1b87 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -56,3 +56,18 @@ staged module Shadowing with staged module RetUnit with fun f() = () +:fixme Array should be skipped for redirection +staged module M with + val a = Math.cos(1) is Array // doesn't handle Array +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Array' +//│ ╟── which references the symbol introduced here +//│ ║ l.110: declare class Array[T] +//│ ╙── ^^^^^^^^ +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Array' +//│ ╟── which references the symbol introduced here +//│ ║ l.110: declare class Array[T] +//│ ╙── ^^^^^^^^ +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Array' +//│ ╟── which references the symbol introduced here +//│ ║ l.110: declare class Array[T] +//│ ╙── ^^^^^^^^ From 6f64e05541cffc4a978d226c8869edf6db7f0a3f Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Fri, 24 Apr 2026 15:04:33 +0800 Subject: [PATCH 565/654] Improve pattern match codegen --- .../mlscript-compile/SpecializeHelpers.mls | 73 ++-- .../staging/SimpleStagedExample.mls | 4 + .../staging/out/CombinedModule.mls | 30 +- .../staging/out/SimpleStagedExample.mls | 21 +- .../staging/out/Transform3D.mls | 384 ++++++------------ 5 files changed, 223 insertions(+), 289 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 5e07f013c3..2003847ed4 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -74,6 +74,15 @@ class Ctx( // we need to keep track of fields defined in parent class, // which is stored in valDefnCtx fun clearCtx = Ctx(new Map(), valDefnCtx, allocs, thisShape) + fun sub(other: Ctx) = + let res = new Map() + fun otherIsBot(ps) = + if other.ctx.has(ps) then other.ctx.get(ps).isEmpty() else false + ctx.forEach((ss, ps, _) => + if not ss.isEmpty() and otherIsBot(ps) do + res.set(ps, ss) + ) + res fun add(path: Path, ss: ShapeSet) = let ps = showCtxPath(path) if ctx.has(ps) then @@ -412,38 +421,48 @@ fun prop(ctx, b) = if b is [concat(blk, Assign(x, r1, b2)), s2] Match(p, arms, dflt, restBlock) then let s = sop(ctx, p) + fun mergeAssigned(acc, assigned) = + assigned.forEach((ss, ps, _) => + if acc.has(ps) then + acc.set(ps, union(acc.get(ps), ss)) + else + acc.set(ps, ss) + ) + fun propBranch(body, branchShape) = + let branchCtx = ctx.clone + if not p is ValueLit do branchCtx.add(p, branchShape) + let res = prop(branchCtx, body) + [res.0, res.1, branchCtx.sub(ctx)] let filteredArms = foldl((r, arm) => let fs = filterSet(r.0, arm.cse) if fs.isEmpty() then r else - let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, fs) - let res = prop(branchCtx, concat(arm.body, restBlock)) - [restSet(r.0, arm.cse), union(r.1, res.1), [...r.2, Arm(arm.cse, res.0)]] - )([s, mkBot(), []], ...arms) + let res = propBranch(arm.body, fs) + mergeAssigned(r.3, res.2) + [restSet(r.0, arm.cse), union(r.1, res.1), [...r.2, Arm(arm.cse, res.0)], r.3] + )([s, mkBot(), [], new Map()], ...arms) + let dfltRes = if filteredArms.0.isEmpty() then [None, mkBot(), new Map()] else if dflt is + Some(d) then + let res = propBranch(d, filteredArms.0) + [Some(res.0), res.1, res.2] + else [None, mkBot(), new Map()] + mergeAssigned(filteredArms.3, dfltRes.2) + filteredArms.3.forEach((ss, ps, _) => + if ctx.ctx.has(ps) then + ctx.ctx.set(ps, union(ctx.ctx.get(ps), ss)) + else + ctx.ctx.set(ps, ss) + ) + let restRes = prop(ctx, restBlock) + let retShape = union(union(filteredArms.1, dfltRes.1), restRes.1) if filteredArms.2.length is - 0 and - filteredArms.0.isEmpty() then prop(ctx, restBlock) - else prop(ctx, concat(if dflt is Some(d) then d else End(), restBlock)) - 1 and - filteredArms.0.isEmpty() then - [filteredArms.2.0.body, filteredArms.1] - dflt is - Some(d) then - let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, filteredArms.0) - let newDflt = prop(branchCtx, concat(d, restBlock)) - [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] - else - [Match(p, filteredArms.2, None, End()), filteredArms.1] - n and dflt is - Some(d) then - let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, filteredArms.0) - let newDflt = prop(branchCtx, concat(d, restBlock)) - [Match(p, filteredArms.2, Some(newDflt.0), End()), union(filteredArms.1, newDflt.1)] - else - [Match(p, filteredArms.2, None, End()), filteredArms.1] + 0 then + if dfltRes.0 is + Some(d) then [concat(d, restRes.0), retShape] + else [restRes.0, restRes.1] + 1 and filteredArms.0.isEmpty() then + [concat(filteredArms.2.0.body, restRes.0), retShape] + else [Match(p, filteredArms.2, dfltRes.0, restRes.0), retShape] else [b, mkDyn()] // TODO: debug only; remove this diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls index 39882a0bbe..f2aa4b753b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls @@ -18,5 +18,9 @@ staged module SimpleStagedExample with 2 then x.bar() + 2 else x.bar() fun baz() = Foo(Bar(1)).foo(1) + fun foobar(x) = + let y = if x is 0 then 1 else 0 + let z = if y is Num then 0 else 1 + y + z diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index 349498c5ca..e194f317b2 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -7,7 +7,24 @@ open LinkingGeneratedClasses module CombinedModule with module SimpleStagedExample with - () + class Bar(val x) with + fun bar() = this.x + class Foo(val x) with + fun foo(b) = + let {tmp10, tmp11} + if b is + 1 then + tmp10 = this.x.bar() + tmp10 + 1 + 2 then + tmp11 = this.x.bar() + tmp11 + 2 + else this.x.bar() + fun baz() = + let {tmp6, tmp7} + tmp6 = Bar(1) + tmp7 = Foo(tmp6) + tmp7.foo(1) fun f(x, y) = x + y fun f_Lit2_Lit3(x, y) = 5 fun fib(n) = @@ -33,6 +50,17 @@ module CombinedModule with fun fib_Lit8(n) = 21 fun fib_Lit9(n) = 34 fun foo() = 60 + fun foobar(x) = + let {y1, z, tmp8, tmp9} + if x is + 0 then + tmp8 = 1 + else + tmp8 = 0 + y1 = tmp8 + tmp9 = 0 + z = 0 + y1 + 0 fun spaces() = let {tup_3} tup_3 = ["\t", "\n", "\r"] diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 769b7050bb..234224d4d1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -6,14 +6,14 @@ module SimpleStagedExample with fun bar() = this.x class Foo(val x) with fun foo(b) = - let {tmp8, tmp9} + let {tmp10, tmp11} if b is 1 then - tmp8 = this.x.bar() - tmp8 + 1 + tmp10 = this.x.bar() + tmp10 + 1 2 then - tmp9 = this.x.bar() - tmp9 + 2 + tmp11 = this.x.bar() + tmp11 + 2 else this.x.bar() fun baz() = let {tmp6, tmp7} @@ -45,6 +45,17 @@ module SimpleStagedExample with fun fib_Lit8(n) = 21 fun fib_Lit9(n) = 34 fun foo() = 60 + fun foobar(x) = + let {y1, z, tmp8, tmp9} + if x is + 0 then + tmp8 = 1 + else + tmp8 = 0 + y1 = tmp8 + tmp9 = 0 + z = 0 + y1 + 0 fun spaces() = let {tup_1} tup_1 = ["\t", "\n", "\r"] diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 2a517db718..0d18d4c54f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -14,16 +14,12 @@ module Transform3D with if scrut4 is true then tmp17 = 1 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = j - 1 - genID(tmp19, w, i, tmp20) else tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = j - 1 - genID(tmp19, w, i, tmp20) + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = j - 1 + genID(tmp19, w, i, tmp20) fun genID_Arr__end_Dyn_Dyn_Dyn(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20, tup_2} scrut3 = ===(j, 0) @@ -37,16 +33,12 @@ module Transform3D with if scrut4 is true then tmp17 = 1 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = j - 1 - genID(tmp19, w, i, tmp20) else tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = j - 1 - genID(tmp19, w, i, tmp20) + tmp18 = [tmp17] + tmp19 = v.concat(tmp18) + tmp20 = j - 1 + genID(tmp19, w, i, tmp20) fun genID_Arr__end_Lit4_Lit0_Lit4(v, w, i, j) = let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} scrut3 = false @@ -425,14 +417,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_6} scrut8 = ===(i', 0) @@ -450,14 +440,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_11} scrut8 = ===(i', 0) @@ -475,14 +463,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_30} scrut8 = ===(i', 0) @@ -500,14 +486,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_21} scrut8 = ===(i', 0) @@ -525,14 +509,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_19} scrut8 = ===(i', 0) @@ -550,14 +532,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_7} scrut8 = ===(i', 0) @@ -575,14 +555,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_24} scrut8 = ===(i', 0) @@ -600,14 +578,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_22} scrut8 = ===(i', 0) @@ -625,14 +601,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_13} scrut8 = ===(i', 0) @@ -650,14 +624,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_32} scrut8 = ===(i', 0) @@ -675,14 +647,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_17} scrut8 = ===(i', 0) @@ -700,14 +670,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_9} scrut8 = ===(i', 0) @@ -725,14 +693,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_26} scrut8 = ===(i', 0) @@ -750,14 +716,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_20} scrut8 = ===(i', 0) @@ -775,14 +739,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_18} scrut8 = ===(i', 0) @@ -800,14 +762,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_15} scrut8 = ===(i', 0) @@ -825,14 +785,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_34} scrut8 = ===(i', 0) @@ -850,14 +808,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_10} scrut8 = ===(i', 0) @@ -875,14 +831,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_28} scrut8 = ===(i', 0) @@ -900,14 +854,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -923,14 +875,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -946,14 +896,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -969,14 +917,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -992,14 +938,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1015,14 +959,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1038,14 +980,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1061,14 +1001,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1084,14 +1022,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1107,14 +1043,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1130,14 +1064,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1153,14 +1085,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1176,14 +1106,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1199,14 +1127,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1222,14 +1148,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1245,14 +1169,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1268,14 +1190,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1291,14 +1211,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(res, m, row, col, i, j, v, i') = let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} scrut8 = ===(i', 0) @@ -1314,14 +1232,12 @@ module Transform3D with tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) tmp37 = [tmp36] tmp38 = res.concat(tmp37) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) else tmp39 = row - i' tmp40 = [m.(tmp39)] tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) + tmp41 = i' - 1 + iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -1523,14 +1439,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_3} scrut6 = ===(j', 0) @@ -1545,14 +1459,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_12} scrut6 = ===(j', 0) @@ -1567,14 +1479,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_31} scrut6 = ===(j', 0) @@ -1589,14 +1499,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_14} scrut6 = ===(j', 0) @@ -1611,14 +1519,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_33} scrut6 = ===(j', 0) @@ -1633,14 +1539,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_16} scrut6 = ===(j', 0) @@ -1655,14 +1559,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_35} scrut6 = ===(j', 0) @@ -1677,14 +1579,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_8} scrut6 = ===(j', 0) @@ -1699,14 +1599,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_25} scrut6 = ===(j', 0) @@ -1721,14 +1619,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_27} scrut6 = ===(j', 0) @@ -1743,14 +1639,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_29} scrut6 = ===(j', 0) @@ -1765,14 +1659,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1785,14 +1677,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1805,14 +1695,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1825,14 +1713,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1845,14 +1731,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1865,14 +1749,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1885,14 +1767,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1905,14 +1785,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1925,14 +1803,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1945,14 +1821,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(vec, m, col, j, v, i', j') = let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} scrut6 = ===(j', 0) @@ -1965,14 +1839,12 @@ module Transform3D with true then tmp28 = [v] tmp29 = vec.concat(tmp28) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) else tmp30 = col - j' tmp31 = [m.(i').(tmp30)] tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) + tmp32 = j' - 1 + updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) fun update_Dyn_Lit0_Lit0_Dyn(m, i, j, v) = let {row1, col2, tmp44} row1 = m.length From be42894adb08155e6bc2888b230f36b027abfe58 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 24 Apr 2026 22:29:08 +0800 Subject: [PATCH 566/654] add redirect field to staged class/module symbol --- .../codegen/ReflectionInstrumenter.scala | 4 +- .../src/test/mlscript-compile/Block.mls | 12 +-- .../src/test/mlscript-compile/Shape.mls | 6 +- .../src/test/mlscript-compile/ShapeSet.mls | 8 +- .../mlscript-compile/SpecializeHelpers.mls | 20 ++-- .../staging/out/CombinedModule.mls | 47 ++++++--- .../staging/out/LinkingGeneratedClasses.mls | 8 +- .../shared/src/test/mlscript/ShapeSetTest.mls | 9 +- .../test/mlscript/block-staging/Generate.mls | 14 +++ .../test/mlscript/block-staging/PrintCode.mls | 6 +- .../block-staging/ShapeSetHelpers.mls | 96 ++++++++++++++----- .../test/mlscript/block-staging/Syntax.mls | 17 ++-- 12 files changed, 167 insertions(+), 80 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 7883be8cc8..eeab7508f0 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -163,9 +163,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformParamsOpt(paramsOpt): (paramsOpt, ctx) => auxParams.map(ps => ctx => transformParamList(ps)(using ctx)).chainContext: (auxParams, ctx) => tuple(auxParams): auxParams => - blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams), symName)(checkMap("classMap", path, _, ctx)) + blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams, toValue(rename)), symName)(checkMap("classMap", path, _, ctx)) case _: ModuleOrObjectSymbol => - blockCtor("ModuleSymbol", Ls(toValue(name), path), symName)(checkMap("moduleMap", path, _, stagingCtx)) + blockCtor("ModuleSymbol", Ls(toValue(name), path, toValue(rename)), symName)(checkMap("moduleMap", path, _, stagingCtx)) case _ => blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index fc5549889b..905ab0cf0d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -25,8 +25,8 @@ type ParamList = Array[Param] class Symbol(val name: Str) class ClassSymbol(val name: Str) extends Symbol(name) class VirtualClassSymbol(val name: Str) extends ClassSymbol(name) -class ConcreteClassSymbol(val name: Str, val value: Class, val paramsOpt: Opt[ParamList], val auxParams: Array[ParamList]) extends ClassSymbol(name) -class ModuleSymbol(val name: Str, val value: Class) extends Symbol(name) +class ConcreteClassSymbol(val name: Str, val value: Class, val paramsOpt: Opt[ParamList], val auxParams: Array[ParamList], val redirect: Bool) extends ClassSymbol(name) +class ModuleSymbol(val name: Str, val value: Class, val redirect: Bool) extends Symbol(name) class NoSymbol() extends Symbol("$no_symbol$") class Constraint with @@ -125,14 +125,14 @@ class Printer(val owner: Opt[Symbol]) with s.name.replaceAll("$", "_") fun showSymbol(s: Symbol) = - if s is - ModuleSymbol | ConcreteClassSymbol and owner is Some(owner) then owner.name + ".\"" + s.name + "\"" - else s.name.replaceAll("$", "_") + if s is ModuleSymbol | ConcreteClassSymbol and owner is Some(owner) and s.redirect + then owner.name + ".\"" + s.name + "$" + owner.name + "\"" + else s.name.replaceAll("$", "_") fun showPath(p: Path): Str = if p is // avoids needing to import the runtime module - Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" + Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit, _)) then "()" Select(qual, name) and // remove selection to owner for values defined within the owner qual is ValueRef(sym) and owner is Some(owner) and sym == owner then showSymbol(name) // TODO: check if we should use `==` here diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index 46f44da996..f880367ba8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -27,7 +27,7 @@ fun show(s: Shape) = fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is - [Class(ConcreteClassSymbol(_, _, paramsOpt, auxParams), params), Lit(n)] and n is Str and paramsOpt is Some(paramsSymb) and + [Class(ConcreteClassSymbol(_, _, paramsOpt, auxParams, _), params), Lit(n)] and n is Str and paramsOpt is Some(paramsSymb) and paramsSymb.map(_.sym.name).indexOf(n) is -1 then [] n then [params.(n)] @@ -69,7 +69,7 @@ fun filter(s: Shape, p: Case): Array[Shape] = [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [s] [Arr(ls), Block.Tup(n)] and ls.length == n then [s] [Class(c1, _), Block.Cls(c2, _)] and c1 is ConcreteClassSymbol and c2 is ConcreteClassSymbol and - c1.value == c2.value then [s] + c1 == c2 then [s] // TODO: is === possible? [Class(c1, _), Block.Cls(c2, _)] and c1 is ConcreteClassSymbol and c2 is ConcreteClassSymbol and isSubClassOf(c1.value, c2.value) then [s] [Dyn, _] then [silh(p)] @@ -81,7 +81,7 @@ fun rest(s: Shape, p: Case): Array[Shape] = [Lit(l), Block.Cls(c, _)] and isPrimitiveTypeOf(c, l) then [] [Arr(ls), Block.Tup(n)] and ls.length == n then [] [Class(c1, _), Block.Cls(c2, _)] and c1 is ConcreteClassSymbol and c2 is ConcreteClassSymbol and - c1.value == c2.value then [] + c1 == c2 then [] // TODO: is === possible? [Class(c1, _), Block.Cls(c2, _)] and c1 is ConcreteClassSymbol and c2 is ConcreteClassSymbol and isSubClassOf(c1.value, c2.value) then [] [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [s] diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index e7d5ded79c..4791ed1d45 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -71,7 +71,7 @@ fun mkClass(sym: ConcreteClassSymbol, params: Array[ShapeSet]) = |> liftMany fun mkClassFromMap(sym: ConcreteClassSymbol, paramsMap: Map[String, ShapeSet], psOpt: Option[Array[Array[Param]]]) = - if sym is ConcreteClassSymbol(name, value, paramsOpt, auxParams) then + if sym is ConcreteClassSymbol(name, value, paramsOpt, auxParams, redir) then let entries = [...paramsMap.entries()] let keys = entries.map(a => let s = Symbol(a.0) @@ -82,7 +82,7 @@ fun mkClassFromMap(sym: ConcreteClassSymbol, paramsMap: Map[String, ShapeSet], p else Param(None, s) ) let params = entries.map(_.1) - let newSym = ConcreteClassSymbol(name, value, Some(keys), auxParams) + let newSym = ConcreteClassSymbol(name, value, Some(keys), auxParams, redir) params .map(_.shapeset.values().toArray()) |> prod @@ -101,7 +101,7 @@ fun binOpSet(op: Str, s1: ShapeSet, s2: ShapeSet) = op is "&&" and isFalseShape(s1) then mkLit(false) - isFalseShape(s2) then mkLit(true) + isFalseShape(s2) then mkLit(false) "||" and isTrueShape(s1) then mkLit(true) isTrueShape(s2) then mkLit(true) @@ -162,7 +162,7 @@ fun valOf(s : Shape) = Dyn() then throw Error("valOf on Dyn") Lit(l) then l Arr(shapes) then shapes.map((x, _, _) => valOf(x)) - Class(ConcreteClassSymbol(name, value, paramsOpt, auxParams), params) then new! value(...params.map(valOf)) + Class(ConcreteClassSymbol(name, value, paramsOpt, auxParams, _), params) then new! value(...params.map(valOf)) else throw Error("Unknown shape: " + s) fun valOfSet(s : ShapeSet) = diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 67f4974521..fea7d7120a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -49,8 +49,8 @@ fun showCtxPath(p) = if p is // FIXME DynSelect(qual, fld, _) then showCtxPath(qual) + ".(" + showCtxPath(fld) + ")" ValueRef(l) and l is - ConcreteClassSymbol(n, v, _, _) then "ClassSymbol(" + n + ")" - ModuleSymbol(n, v) then "ModuleSymbol(" + n + ")" + ConcreteClassSymbol(n, v, _, _, _) then "ClassSymbol(" + n + ")" + ModuleSymbol(n, v, _) then "ModuleSymbol(" + n + ")" Symbol(n) then "Symbol(" + n + ")" else throw Error(l) ValueLit(lit) then "Lit(" + lit.toString() + ")" @@ -103,7 +103,7 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any ConcreteClassSymbol then "class " ModuleSymbol then "module " let runtimeClass = if owner is - ConcreteClassSymbol(_, _, Some, _) then owner.value.class + ConcreteClassSymbol(_, _, Some, _, _) then owner.value.class else owner.value val paramList = if owner is @@ -271,16 +271,16 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is [End(), recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") - Select(ValueRef(ModuleSymbol(name, value)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module + Select(ValueRef(ModuleSymbol(name, value, _)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module [End(), r, mkClass(clsSymb, argShapes)] // FIXME Select(p, Symbol("concat")) then // TODO: remove these special checks if sop(ctx, p).values() is [Shape.Arr(arr)] and args is [e] and sop(ctx, e.value) is [Shape.Arr(arr2)] then [End(), r, mkArr(arr.concat(arr2))] else [End(), r, mkDyn()] - Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _)), Symbol("sin")) then + Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _, _)), Symbol("sin")) then [End(), r, mkDyn()] // TODO: evaluate if the parameter is static - Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _)), Symbol("cos")) then + Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _, _)), Symbol("cos")) then [End(), r, mkDyn()] // TODO: evaluate if the parameter is static ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class isStagedClass(clsSymb.value) and @@ -291,7 +291,7 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is else throw Error("class is staged but cache not found") else [End(), r, mkClass(clsSymb, argShapes)] ValueRef(symb) then sorBuiltinOp(ctx, r, f, symb.name, args) // built-in or top-level - Select(ValueRef(ModuleSymbol(name, value)), Symbol(fld)) and + Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(fld)) and let mapPropName = getGenMapName(name, false) let cachePropName = getCacheName(name, false) let genMap = value.(mapPropName) @@ -303,7 +303,7 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is let v2p = val2path(valOfSet(res.1), ctx.allocs, ctx.valueNameCtx) [v2p.0, v2p.1, res.1] else - [End(), Call(Select(ValueRef(ModuleSymbol(name, value)), Symbol(res.0)), args), res.1] + [End(), Call(Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(res.0)), args), res.1] else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") argShapes.every(staticSet) then // non staged function and params known @@ -486,7 +486,7 @@ fun specializeName(funName, isMethod, ps, shapes) = class ValueCollection(defn: Map[Class, Str]) extends Printer(None) with fun showSymbol(s) = if s is - ConcreteClassSymbol | ModuleSymbol then defn.set(getActualClass(s.value), s.name) + ConcreteClassSymbol | ModuleSymbol then defn.set(getActualClass(s.value), s) else () "" @@ -523,7 +523,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = new ValueCollection(ctx.valueNameCtx).showBlock(body) ctx.ctx.values() .forEach(_.shapeset.values().filter(_ is Class) - .forEach(s => ctx.valueNameCtx.set(s.sym.value.class, s.sym.name))) + .forEach(s => ctx.valueNameCtx.set(getActualClass(s.sym.value), s.sym))) cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index 349498c5ca..9ec220a4ac 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -1,27 +1,44 @@ #config(noFreeze: true) -import "../SimpleStagedExample.mls" -import "../LinkingGeneratedClasses.mls" +import "../SimpleStagedExample.mjs" +import "../LinkingGeneratedClasses.mjs" open SimpleStagedExample open LinkingGeneratedClasses module CombinedModule with module SimpleStagedExample with - () + data class Bar(val x) with + fun bar() = this.x + data class Foo(val x) with + fun foo(b) = + let {tmp, tmp1} + if b is + 1 then + tmp = this.x.bar() + tmp + 1 + 2 then + tmp1 = this.x.bar() + tmp1 + 2 + else this.x.bar() + fun baz() = + let {tmp8, tmp9} + tmp8 = Bar(1) + tmp9 = Foo(tmp8) + tmp9.foo(1) fun f(x, y) = x + y fun f_Lit2_Lit3(x, y) = 5 fun fib(n) = - let {n1, tmp, tmp1, tmp2, tmp3} + let {n1, tmp2, tmp3, tmp4, tmp5} if n is 1 then 1 2 then 1 else n1 = n - tmp = n1 - 1 - tmp1 = fib(tmp) - tmp2 = n1 - 2 + tmp2 = n1 - 1 tmp3 = fib(tmp2) - tmp1 + tmp3 + tmp4 = n1 - 2 + tmp5 = fib(tmp4) + tmp3 + tmp5 fun fib_Lit1(n) = 1 fun fib_Lit10(n) = 55 fun fib_Lit2(n) = 1 @@ -38,13 +55,21 @@ module CombinedModule with tup_3 = ["\t", "\n", "\r"] tup_3 module LinkingGeneratedClasses with - class D + data class D + fun f() = + let {obj_5} + obj_5 = new! LinkingGeneratedClasses."Function$$LinkingGeneratedClasses" + obj_5 + fun g() = + let {obj_7} + obj_7 = new! LinkingGeneratedClasses."Function$1$LinkingGeneratedClasses" + obj_7 fun test1 = let {obj_1} - obj_1 = new C + obj_1 = new! LinkingGeneratedClasses."C$LinkingGeneratedClasses" obj_1 fun test2 = let {obj_2} - obj_2 = new D + obj_2 = new! D obj_2 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 83de98096b..578b9515ee 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -4,17 +4,17 @@ module LinkingGeneratedClasses with data class D fun f() = let {obj_5} - obj_5 = new + obj_5 = new! LinkingGeneratedClasses."Function$$LinkingGeneratedClasses" obj_5 fun g() = let {obj_7} - obj_7 = new + obj_7 = new! LinkingGeneratedClasses."Function$1$LinkingGeneratedClasses" obj_7 fun test1 = let {obj_2} - obj_2 = new + obj_2 = new! LinkingGeneratedClasses."C$LinkingGeneratedClasses" obj_2 fun test2 = let {obj_3} - obj_3 = new + obj_3 = new! D obj_3 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 60949b680c..94a5eaa175 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -31,12 +31,13 @@ mkArr([x, y]) //│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} class C(val a) -val clsSym = ConcreteClassSymbol("C", C, Some([Param(None, Symbol("a"))]), []) +val clsSym = ConcreteClassSymbol("C", C, Some([Param(None, Symbol("a"))]), [], false) //│ clsSym = ConcreteClassSymbol( //│ "C", //│ fun C { class: class C }, //│ Some([Param(None, Symbol("a"))]), -//│ [] +//│ [], +//│ false //│ ) :fixme @@ -44,11 +45,11 @@ let x = liftMany([Class(clsSym, [Lit(42)]), Arr([Lit(1), Lit("a")])]) let y = liftMany([Lit(1), Lit("a")]) selSet(x, y) //│ ═══[RUNTIME ERROR] Error: Array out of bound -//│ x = {Arr([Lit(1), Lit("a")]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), []), [Lit(42)])} +//│ x = {Arr([Lit(1), Lit("a")]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), [], false), [Lit(42)])} //│ y = {Lit("a"),Lit(1)} mkClass(clsSym, [mkLit(1)]) -//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), []), [Lit(1)])} +//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), [], false), [Lit(1)])} filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)])]), Tup(3)) //│ = {Arr([Lit(1), Lit(2), Lit(3)])} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 34dec0bb17..9f276092c0 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -52,11 +52,25 @@ LinkingGeneratedClasses.f().call(3) LinkingGeneratedClasses.g().call(3) //│ = 5 +:fixme import "../../mlscript-compile/staging/StagedClass.mls" +//│ /!!!\ Uncaught error: java.nio.file.NoSuchFileException: /home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls +:fixme // FIXME: module wasn't staged alongside class gen(StagedClass."class", "StagedClass") +//│ ╔══[COMPILATION ERROR] Name not found: StagedClass +//│ ║ l.61: gen(StagedClass."class", "StagedClass") +//│ ╙── ^^^^^^^^^^^ +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +:fixme import "../../mlscript-compile/staging/ImportingFiles.mls" +//│ /!!!\ Uncaught error: java.nio.file.NoSuchFileException: /home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls +:fixme gen(ImportingFiles, "ImportingFiles") +//│ ╔══[COMPILATION ERROR] Name not found: ImportingFiles +//│ ║ l.72: gen(ImportingFiles, "ImportingFiles") +//│ ╙── ^^^^^^^^^^^^^^ +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 4d15f5c5b7..22ebb0f7bf 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -34,8 +34,8 @@ printCode(DynSelect(ValueRef(Symbol("p")), ValueRef(Symbol("field")), false)) :silent class B class D(val x)(y) extends B -let bSym = ConcreteClassSymbol("B", B, None, []) -let dSym = ConcreteClassSymbol("D", D, Some([Param(None, Symbol("x"))]), [[Param(None, Symbol("y"))]]) +let bSym = ConcreteClassSymbol("B", B, None, [], false) +let dSym = ConcreteClassSymbol("D", D, Some([Param(None, Symbol("x"))]), [[Param(None, Symbol("y"))]], false) printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) printCode(Instantiate(ValueRef(dSym), [Arg(ValueLit(0))])) @@ -55,7 +55,7 @@ printCode(f) printCode(ClsLikeDefn(dSym, [f], [])) printCode(ClsLikeDefn(bSym, [], [])) //│ > fun f(x) = 1 -//│ > data class D(x)(y) with +//│ > data class D(val x)(y) with //│ > fun f(x) = 1 //│ > data class B diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index da536dcd56..add21f7b37 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -64,21 +64,26 @@ selSet(arrSp, mkLit(1)) selSet(mkDyn(), mkLit(5)) //│ = {Dyn()} +:silent +class A(val a, val b) +let aSym = ConcreteClassSymbol("A", A, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false) + :fixme -let a = Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")]) +let a = Class(aSym, [Lit(42), Lit("c")]) let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) selSet(x, liftMany([Lit("a"), Lit(2)])) //│ ═══[RUNTIME ERROR] Error: Array out of bound //│ a = Class( //│ ConcreteClassSymbol( //│ "A", -//│ undefined, +//│ fun A { class: class A }, //│ Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), -//│ [] +//│ [], +//│ false //│ ), //│ [Lit(42), Lit("c")] //│ ) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")]),Dyn()} +//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ConcreteClassSymbol("A", fun A { class: class A }, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false), [Lit(42), Lit("c")]),Dyn()} selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) //│ = {Lit(1)} @@ -101,7 +106,7 @@ filterSet(mkDyn(), Block.Tup(2)) //│ = {Arr([Dyn(), Dyn()])} let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()]), Arr([Lit(1), Lit(2), Lit(3)]), a]) -//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")]),Lit(1),Lit(null)} +//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ConcreteClassSymbol("A", fun A { class: class A }, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false), [Lit(42), Lit("c")]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match @@ -110,8 +115,8 @@ filterSet(filterShapes, Block.Lit(1)) assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) -filterSet(filterShapes, Block.Cls(Symbol("A"), undefined)) -//│ = {Class(ConcreteClassSymbol("A", undefined, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), []), [Lit(42), Lit("c")])} +filterSet(filterShapes, Block.Cls(aSym, undefined)) +//│ = {Class(ConcreteClassSymbol("A", fun A { class: class A }, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false), [Lit(42), Lit("c")])} filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) //│ = {Lit(1)} @@ -183,16 +188,16 @@ sop(Ctx.empty().add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) val x = Symbol("x") -val C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []) +val C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), [], false) val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) let ctx = Ctx.empty() ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ = {} -//│ C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []) +//│ C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), [], false) //│ ctx = Ctx( //│ Map(1) { -//│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), []), [Lit("pass")])} +//│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), [], false), [Lit("pass")])} //│ }, //│ Map(0) {}, //│ Map(0) {}, @@ -214,7 +219,7 @@ sor(Ctx.empty(), tup) //│ tup = Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]) class C(val p) -let c = ConcreteClassSymbol("C", C, Some([Symbol("p")]), []) +let c = ConcreteClassSymbol("C", C, Some([Symbol("p")]), [], false) let inst = Instantiate(ValueRef(c), [Arg(ValueLit(123))]) sor(Ctx.empty(), inst) //│ = [ @@ -225,21 +230,29 @@ sor(Ctx.empty(), inst) //│ "C", //│ fun C { class: class C }, //│ Some([Symbol("p")]), -//│ [] +//│ [], +//│ false //│ ) //│ ), //│ [Arg(ValueLit(123))] //│ ), -//│ {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("p")]), []), [Lit(123)])} +//│ {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("p")]), [], false), [Lit(123)])} //│ ] -//│ c = ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("p")]), []) +//│ c = ConcreteClassSymbol( +//│ "C", +//│ fun C { class: class C }, +//│ Some([Symbol("p")]), +//│ [], +//│ false +//│ ) //│ inst = Instantiate( //│ ValueRef( //│ ConcreteClassSymbol( //│ "C", //│ fun C { class: class C }, //│ Some([Symbol("p")]), -//│ [] +//│ [], +//│ false //│ ) //│ ), //│ [Arg(ValueLit(123))] @@ -367,23 +380,23 @@ module M with fun f(args) = 24 :ignore -val MSym = ValueRef(ModuleSymbol("M", M)) +val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.370: val MSym = ValueRef(ModuleSymbol("M", M)) +//│ ║ l.383: val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ║ ^ //│ ╙── Module argument passed to a non-module parameter. -//│ MSym = ValueRef(ModuleSymbol("M", class M)) +//│ MSym = ValueRef(ModuleSymbol("M", class M, false)) val fSym = Symbol("f") val fPath = Select(MSym, fSym) -//│ fPath = Select(ValueRef(ModuleSymbol("M", class M)), Symbol("f")) +//│ fPath = Select(ValueRef(ModuleSymbol("M", class M, false)), Symbol("f")) //│ fSym = Symbol("f") val callF = Call(fPath, [Arg(ValueLit(12))]) sor(Ctx.empty(), callF) //│ = [End(), ValueLit(24), {Lit(24)}] //│ callF = Call( -//│ Select(ValueRef(ModuleSymbol("M", class M)), Symbol("f")), +//│ Select(ValueRef(ModuleSymbol("M", class M, false)), Symbol("f")), //│ [Arg(ValueLit(12))] //│ ) @@ -548,12 +561,39 @@ val2path([1, 2, 3], mut [], new Map()) //│ ] class TestClass(val a, val b) -val2path(TestClass(1, 2), mut [], new Map([[TestClass.class, "TestClass"]])) +val sym = ConcreteClassSymbol("TestClass", TestClass, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false) +val map = new Map([[TestClass.class, sym]]) +//│ map = Map(1) { +//│ class TestClass => ConcreteClassSymbol( +//│ "TestClass", +//│ fun TestClass { class: class TestClass }, +//│ Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), +//│ [], +//│ false +//│ ) +//│ } +//│ sym = ConcreteClassSymbol( +//│ "TestClass", +//│ fun TestClass { class: class TestClass }, +//│ Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), +//│ [], +//│ false +//│ ) + +val2path(TestClass(1, 2), mut [], map) //│ = [ //│ Assign( //│ Symbol("obj_2"), //│ Instantiate( -//│ ValueRef(ConcreteClassSymbol("TestClass", undefined, None, [])), +//│ ValueRef( +//│ ConcreteClassSymbol( +//│ "TestClass", +//│ fun TestClass { class: class TestClass }, +//│ Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), +//│ [], +//│ false +//│ ) +//│ ), //│ [Arg(ValueLit(1)), Arg(ValueLit(2))] //│ ), //│ End() @@ -561,7 +601,7 @@ val2path(TestClass(1, 2), mut [], new Map([[TestClass.class, "TestClass"]])) //│ ValueRef(Symbol("obj_2")) //│ ] -val2path(TestClass(1, [1,2]), mut [], new Map([[TestClass.class, "TestClass"]])) +val2path(TestClass(1, [1,2]), mut [], map) //│ = [ //│ Assign( //│ Symbol("tup_3"), @@ -569,7 +609,15 @@ val2path(TestClass(1, [1,2]), mut [], new Map([[TestClass.class, "TestClass"]])) //│ Assign( //│ Symbol("obj_4"), //│ Instantiate( -//│ ValueRef(ConcreteClassSymbol("TestClass", undefined, None, [])), +//│ ValueRef( +//│ ConcreteClassSymbol( +//│ "TestClass", +//│ fun TestClass { class: class TestClass }, +//│ Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), +//│ [], +//│ false +//│ ) +//│ ), //│ [Arg(ValueLit(1)), Arg(ValueRef(Symbol("tup_3")))] //│ ), //│ End() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index fe571ee5ba..8afbe8b81b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -28,13 +28,12 @@ staged module A //│ define A⁰ as class A¹ //│ staged module A² { //│ constructor { -//│ let tmp3, tmp4, sym, tmp5, tmp6, tmp7, tmp8; -//│ set sym = Block⁰.ModuleSymbol﹖("A", A²); -//│ set tmp5 = sym(false); -//│ set tmp6 = symbolMap.checkMap﹖("moduleMap", A², tmp5); -//│ set tmp7 = new globalThis⁰.this.Map﹖(); -//│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp6, tmp7); -//│ define cache$A⁰ as val cache$A¹ = tmp8; +//│ let tmp3, tmp4, sym, tmp5, tmp6, tmp7; +//│ set sym = Block⁰.ModuleSymbol﹖("A", A², false); +//│ set tmp5 = symbolMap.checkMap﹖("moduleMap", A², sym); +//│ set tmp6 = new globalThis⁰.this.Map﹖(); +//│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp5, tmp6); +//│ define cache$A⁰ as val cache$A¹ = tmp7; //│ set tmp3 = []; //│ set tmp4 = new globalThis⁰.this.Map﹖(tmp3); //│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp4; @@ -69,8 +68,8 @@ fun g(@static x) = x :e fun h(@dynamic @static x) = x //│ ╔══[COMPILATION ERROR] At most one reflection constraint can be added for each parameter. -//│ ║ l.70: fun h(@dynamic @static x) = x +//│ ║ l.69: fun h(@dynamic @static x) = x //│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Name not found: x -//│ ║ l.70: fun h(@dynamic @static x) = x +//│ ║ l.69: fun h(@dynamic @static x) = x //│ ╙── ^ From 69f8387ec2b0c3aa6224e43b09148f1bbb467b5e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 24 Apr 2026 22:32:47 +0800 Subject: [PATCH 567/654] get class symbol from valueNameCtx --- .../shared/src/test/mlscript-compile/ShapeSet.mls | 10 +++------- .../test/mlscript-compile/SpecializeHelpers.mls | 15 +++++++-------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 4791ed1d45..20e80e564f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -189,17 +189,13 @@ fun val2path(v, allocs, valueMap) = [fullBlock, Block.ValueRef(tupSym)] else if not (v is undefined) and not (v is null) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then let meta = v.constructor.(Symbols.definitionMetadata) - // let clsName = meta.1 - let clsName = valueMap.get(v.constructor) - - // console.log(valueMap, v.constructor) assert valueMap.has(v.constructor) - // console.log(v) - // class may have no parameters + let classSym = valueMap.get(v.constructor) + let clsName = classSym.nme + let paramNames = if meta.2 is undefined then [] ps then ps - let classSym = Block.ConcreteClassSymbol(clsName, undefined, None, []) // TODO: add correct Paramters to ConcreteClassSymbol let mapped = paramNames.map((fld, _, _) => val2path(v.(fld), allocs, valueMap)) let blocks = mapped.map(_.0) let paths = mapped.map(_.1) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index fea7d7120a..c923619cf3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -59,7 +59,7 @@ class Ctx( // ctx tracks shapes of variables val ctx: Map[String, ShapeSet], // valueNameCtx tracks the assigned name of the pointer in the previous module for the current runtime value - val valueNameCtx: Map[Class, Str], + val valueNameCtx: Map[Class, ConcreteClassSymbol | ModuleSymbol], // valDefnCtx tracks fields defined by ValDefn during shape prop of constructor val valDefnCtx: Map[String, ShapeSet] // allocs tracks the new variables allocated @@ -84,8 +84,6 @@ class Ctx( else ctx.set(ps, ss) this - fun setValueName(c: ConcreteClassSymbol | ModuleSymbol, name: Str) = - valueNameCtx.set(c.value, name) // Later ValDefn (in derived class) shadows earlier ValDefn (in base class) fun addValDefn(ps: String, ss: ShapeSet) = valDefnCtx.set(ps, ss) @@ -161,14 +159,14 @@ module FunCache with fun empty(owner) = FunCache(owner, new Map()) // shape of value -fun sov(v): ShapeSet = +fun sov(v, valueMap): ShapeSet = if typeof(v) is "number" then mkLit(v) "string" then mkLit(v) "boolean" then mkLit(v) Array.isArray(v) then - mkArr(v.map(sov)) + mkArr(v.map(sov, valueMap)) not (v is undefined) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then let meta = v.constructor.(Symbols.definitionMetadata) let clsName = meta.1 @@ -176,10 +174,11 @@ fun sov(v): ShapeSet = let paramsOpt = if meta.length < 3 then None else Some(meta.2.map(p => if p is null then Symbol("") else Symbol(p))) - let classSymbol = ConcreteClassSymbol(clsName, v.constructor, paramsOpt, []) + assert valueMap.has(v.constructor) + let classSymbol = valueMap.get(v.constructor) let argsMap = new Map() if not (paramsOpt is None) do - meta.2.forEach((n, _, _) => argsMap.set(n, sov(v.(n)))) + meta.2.forEach((n, _, _) => argsMap.set(n, sov(v.(n), valueMap))) mkClassFromMap(classSymbol, argsMap, None) // FIXME else throw Error("unknown value from sov", v.toString()) @@ -310,7 +309,7 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is let f_imp = value.(fld) let evaluated = f_imp(...argShapes.map(valOfSet)) let evaluated_path = val2path(evaluated, ctx.allocs, ctx.valueNameCtx) - [evaluated_path.0, evaluated_path.1, sov(evaluated)] + [evaluated_path.0, evaluated_path.1, sov(evaluated, ctx.valueNameCtx)] else [End(), r, mkDyn()] // non staged function and some params unknown else throw Error("unknown call in sor: " + r.toString()) From 43bea8c9efef3c6c3310b712b1f8a8e0fcb71649 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 24 Apr 2026 22:33:06 +0800 Subject: [PATCH 568/654] rerun tests --- .../src/test/mlscript-compile/Predef.mjs | 130 +++++++------- .../src/test/mlscript-compile/Runtime.mjs | 87 +++++---- .../mlscript/block-staging/GenerateMult.mls | 6 +- .../test/mlscript/block-staging/ShapeProp.mls | 170 ++++++++---------- 4 files changed, 199 insertions(+), 194 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Predef.mjs b/hkmc2/shared/src/test/mlscript-compile/Predef.mjs index 2a14887516..48f1eaabee 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Predef.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Predef.mjs @@ -148,91 +148,99 @@ let Predef1; } static equals(a, b) { let scrut, scrut1, scrut2, ac, scrut3, md, scrut4, scrut5, scrut6, scrut7, scrut8, scrut9, scrut10, scrut11, lambda, lambda1, tmp, tmp1, tmp2; - scrut = a === b; - if (scrut === true) { - return true - } - if (a instanceof globalThis.Array) { - if (b instanceof globalThis.Array) { - scrut1 = a.length === b.length; - if (scrut1 === true) { - lambda = (undefined, function (a1, i) { - let tmp3; - tmp3 = runtime.safeCall(b.at(i)); - return Predef.equals(a1, tmp3) - }); - return runtime.safeCall(a.every(lambda)) + split_root$: { + split_1$: { + scrut = a === b; + if (scrut === true) { + return true } + if (a instanceof globalThis.Array) { + if (b instanceof globalThis.Array) { + scrut1 = a.length === b.length; + if (scrut1 === true) { + lambda = (undefined, function (a1, i) { + let tmp3; + tmp3 = runtime.safeCall(b.at(i)); + return Predef.equals(a1, tmp3) + }); + return runtime.safeCall(a.every(lambda)) + } + break split_1$; + } + break split_1$; + } + break split_1$; } - } - scrut2 = a !== undefined; - if (scrut2 === true) { - scrut11 = a !== null; - if (scrut11 === true) { - scrut10 = b !== undefined; - if (scrut10 === true) { - scrut9 = b !== null; - if (scrut9 === true) { - ac = a.constructor; - scrut3 = ac !== undefined; - if (scrut3 === true) { - scrut7 = ac === b.constructor; - if (scrut7 === true) { - md = ac[Predef.Symbols.definitionMetadata]; - scrut4 = md !== undefined; - if (scrut4 === true) { - lambda1 = (undefined, function (field) { - let scrut12, scrut13; - scrut12 = field !== null; - if (scrut12 === true) { - scrut13 = Predef.equals(a[field], b[field]); - if (scrut13 === true) { - return true + scrut2 = a !== undefined; + if (scrut2 === true) { + scrut11 = a !== null; + if (scrut11 === true) { + scrut10 = b !== undefined; + if (scrut10 === true) { + scrut9 = b !== null; + if (scrut9 === true) { + ac = a.constructor; + scrut3 = ac !== undefined; + if (scrut3 === true) { + scrut7 = ac === b.constructor; + if (scrut7 === true) { + md = ac[Predef.Symbols.definitionMetadata]; + scrut4 = md !== undefined; + if (scrut4 === true) { + lambda1 = (undefined, function (field) { + let scrut12, scrut13; + scrut12 = field !== null; + if (scrut12 === true) { + scrut13 = Predef.equals(a[field], b[field]); + if (scrut13 === true) { + return true + } + return false; } return false; + }); + scrut5 = runtime.safeCall(md[2].every(lambda1)); + if (scrut5 === true) { + tmp = true; + } else { + tmp = false; } - return false; - }); - scrut5 = runtime.safeCall(md[2].every(lambda1)); - if (scrut5 === true) { - tmp = true; } else { tmp = false; } - } else { - tmp = false; - } - scrut6 = tmp; - if (scrut6 === true) { - tmp1 = true; + scrut6 = tmp; + if (scrut6 === true) { + tmp1 = true; + } else { + tmp1 = false; + } } else { tmp1 = false; } } else { tmp1 = false; } - } else { - tmp1 = false; - } - scrut8 = tmp1; - if (scrut8 === true) { - tmp2 = true; + scrut8 = tmp1; + if (scrut8 === true) { + tmp2 = true; + } else { + tmp2 = false; + } } else { tmp2 = false; } - return tmp2 + } else { + tmp2 = false; } + } else { tmp2 = false; - return tmp2; } - tmp2 = false; - return tmp2; + return tmp2 } tmp2 = false; return tmp2; } - tmp2 = false; - return tmp2; + return runtime.Unit } static nequals(a, b) { let tmp; diff --git a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs index 7d3acfa797..3204841b56 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs @@ -650,17 +650,19 @@ let Runtime1; v = null; lbl: while (true) { let scrut, tmp2, tmp3, tmp4; - if (tr instanceof Runtime.EffectSig.class) { - scrut = tr.handler === Runtime.PrintStackEffect; - if (scrut === true) { - tmp2 = Runtime.showStackTrace("Stack Trace:", tr, debug, tr.handlerFun); - runtime.safeCall(globalThis.console.log(tmp2)); - Runtime.curEffect = null; - tmp3 = Runtime.resume(tr.contTrace); - tmp4 = runtime.safeCall(tmp3(runtime.Unit)); - v = tmp4; - tr = Runtime.curEffect; - continue lbl + split_root$: { + if (tr instanceof Runtime.EffectSig.class) { + scrut = tr.handler === Runtime.PrintStackEffect; + if (scrut === true) { + tmp2 = Runtime.showStackTrace("Stack Trace:", tr, debug, tr.handlerFun); + runtime.safeCall(globalThis.console.log(tmp2)); + Runtime.curEffect = null; + tmp3 = Runtime.resume(tr.contTrace); + tmp4 = runtime.safeCall(tmp3(runtime.Unit)); + v = tmp4; + tr = Runtime.curEffect; + continue lbl + } } } break; @@ -749,24 +751,23 @@ let Runtime1; if (atTail === true) { tmp = msg + "\n\tat tail position"; msg = tmp; - return msg } - return msg; + return msg } return msg; } static showFunctionContChain(cont, hl, vis, reps) { - let result, scrut, scrut1, scrut2, tmp, lambda, tmp1, tmp2, tmp3, tmp4; + let result, scrut, scrut1, scrut2, tmp, lambda, tmp1, tmp2, tmp3, tmp4, tmp5; if (cont instanceof Runtime.FunctionContFrame.class) { tmp = cont.constructor.name + "(pc="; result = tmp + cont.saved.at(1); lambda = (undefined, function (m, marker) { - let scrut3, tmp5, tmp6; + let scrut3, tmp6, tmp7; scrut3 = runtime.safeCall(m.has(cont)); if (scrut3 === true) { - tmp5 = ", " + marker; - tmp6 = result + tmp5; - result = tmp6; + tmp6 = ", " + marker; + tmp7 = result + tmp6; + result = tmp7; return runtime.Unit } return runtime.Unit; @@ -782,12 +783,13 @@ let Runtime1; } tmp2 = result + ", REPEAT"; result = tmp2; + tmp3 = runtime.Unit; } else { - runtime.safeCall(vis.add(cont)); + tmp3 = runtime.safeCall(vis.add(cont)); } - tmp3 = result + ") -> "; - tmp4 = Runtime.showFunctionContChain(cont.next, hl, vis, reps); - return tmp3 + tmp4 + tmp4 = result + ") -> "; + tmp5 = Runtime.showFunctionContChain(cont.next, hl, vis, reps); + return tmp4 + tmp5 } scrut2 = cont === null; if (scrut2 === true) { @@ -796,16 +798,16 @@ let Runtime1; return "(NOT CONT)"; } static showHandlerContChain(cont, hl, vis, reps) { - let result, scrut, scrut1, scrut2, lambda, tmp, tmp1, tmp2, tmp3; + let result, scrut, scrut1, scrut2, lambda, tmp, tmp1, tmp2, tmp3, tmp4; if (cont instanceof Runtime.HandlerContFrame.class) { result = cont.handler.constructor.name; lambda = (undefined, function (m, marker) { - let scrut3, tmp4, tmp5; + let scrut3, tmp5, tmp6; scrut3 = runtime.safeCall(m.has(cont)); if (scrut3 === true) { - tmp4 = ", " + marker; - tmp5 = result + tmp4; - result = tmp5; + tmp5 = ", " + marker; + tmp6 = result + tmp5; + result = tmp6; return runtime.Unit } return runtime.Unit; @@ -821,12 +823,13 @@ let Runtime1; } tmp1 = result + ", REPEAT"; result = tmp1; + tmp2 = runtime.Unit; } else { - runtime.safeCall(vis.add(cont)); + tmp2 = runtime.safeCall(vis.add(cont)); } - tmp2 = result + " -> "; - tmp3 = Runtime.showFunctionContChain(cont.next, hl, vis, reps); - return tmp2 + tmp3 + tmp3 = result + " -> "; + tmp4 = Runtime.showFunctionContChain(cont.next, hl, vis, reps); + return tmp3 + tmp4 } scrut2 = cont === null; if (scrut2 === true) { @@ -936,7 +939,7 @@ let Runtime1; } static handleEffects(cur) { lbl: while (true) { - let nxt, scrut; + let nxt, scrut, tmp; if (cur instanceof Runtime.EffectSig.class) { nxt = Runtime.handleEffect(cur); scrut = cur === nxt; @@ -945,22 +948,26 @@ let Runtime1; return null } cur = nxt; + tmp = runtime.Unit; continue lbl; } return cur; } + return runtime.Unit } static handleEffect(cur) { let prevHandlerFrame, scrut, handlerFrame, saved, tmp, old, scrut1, scrut2, scrut3, tmp1, tmp2, tmp3, tmp4; prevHandlerFrame = cur.contTrace; lbl: while (true) { let scrut4, scrut5; - scrut4 = prevHandlerFrame.nextHandler !== null; - if (scrut4 === true) { - scrut5 = prevHandlerFrame.nextHandler.handler !== cur.handler; - if (scrut5 === true) { - prevHandlerFrame = prevHandlerFrame.nextHandler; - continue lbl + split_root$: { + scrut4 = prevHandlerFrame.nextHandler !== null; + if (scrut4 === true) { + scrut5 = prevHandlerFrame.nextHandler.handler !== cur.handler; + if (scrut5 === true) { + prevHandlerFrame = prevHandlerFrame.nextHandler; + continue lbl + } } } break; @@ -1022,7 +1029,7 @@ let Runtime1; cont = contTrace.next; handlerCont = contTrace.nextHandler; lbl: while (true) { - let old, scrut, scrut1, scrut2, tmp, tmp1, tmp2; + let old, scrut, scrut1, scrut2, tmp, tmp1, tmp2, tmp3; if (cont instanceof Runtime.FunctionContFrame.class) { Runtime.curEffect = null; old = Runtime.stackDepth; @@ -1054,6 +1061,7 @@ let Runtime1; return value; } cont = cont.next; + tmp3 = runtime.Unit; continue lbl; } if (handlerCont instanceof Runtime.HandlerContFrame.class) { @@ -1063,6 +1071,7 @@ let Runtime1; } return value; } + return runtime.Unit } static checkDepth() { let scrut, tmp, tmp1; diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls index 4ee7728e17..5ee77b8e78 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls @@ -7,7 +7,7 @@ import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" import "../../mlscript-compile/Block.mls" -Block.generateAll("CombinedModule", "./hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls", [SimpleStagedExample, "SimpleStagedExample", "../SimpleStagedExample.mls"], [LinkingGeneratedClasses, "LinkingGeneratedClasses", "../LinkingGeneratedClasses.mls"]) +Block.generateAll("CombinedModule", "./hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls", [SimpleStagedExample, "SimpleStagedExample", "../SimpleStagedExample.mjs"], [LinkingGeneratedClasses, "LinkingGeneratedClasses", "../LinkingGeneratedClasses.mjs"]) import "../../mlscript-compile/staging/out/CombinedModule.mls" @@ -25,9 +25,9 @@ SimpleStagedExample.f(1, 5) SimpleStagedExample.fib(5) //│ = 5 -:fixme +:fixme we want to link to the previous stage, not the current LinkingGeneratedClasses.test1 -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. +//│ ═══[RUNTIME ERROR] TypeError: CombinedModule.LinkingGeneratedClasses.C$LinkingGeneratedClasses is not a constructor LinkingGeneratedClasses.test2 //│ = D diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 6458457cc2..e13f9d0f6c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -47,9 +47,9 @@ print(Simple."cache$Simple") //│ > else //│ > n1 = n //│ > tmp2 = n1 - 1 -//│ > tmp3 = .fib(tmp2) +//│ > tmp3 = fib(tmp2) //│ > tmp4 = n1 - 2 -//│ > tmp5 = .fib(tmp4) +//│ > tmp5 = fib(tmp4) //│ > tmp3 + tmp5 //│ > fun fib_Lit1(n) = 1 //│ > fun fib_Lit2(n) = 1 @@ -64,9 +64,9 @@ print(Simple."cache$Simple") //│ > fun test() = 20 //│ > fun test2(n) = //│ > let {dyn, tmp10} -//│ > dyn = .pyth_Dyn_Lit2(n, 2) +//│ > dyn = pyth_Dyn_Lit2(n, 2) //│ > tmp10 = *(dyn, 2) -//│ > .fib(tmp10) +//│ > fib(tmp10) class C(val x) @@ -119,7 +119,7 @@ print(If2."cache$If2") //│ > fun test2(dyn) = //│ > let {tmp2} //│ > tmp2 = If2."C$If2"(dyn) -//│ > .f_C_Dyn(tmp2) +//│ > f_C_Dyn(tmp2) //│ > fun test3() = 1 staged module LinearAlgebra with @@ -140,31 +140,31 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ > tmp = 1 //│ > tmp1 = *(v1.(n), 3) //│ > tmp2 = tmp1 + 0 -//│ > ._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) +//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 2 //│ > tmp1 = 4 //│ > tmp2 = 4 + acc -//│ > ._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) +//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 3 //│ > tmp1 = 2 //│ > tmp2 = 2 + acc -//│ > ._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) +//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) //│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = true //│ > acc -//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = ._dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) +//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) //│ > fun test(x) = //│ > let {tmp3, tmp4} //│ > tmp3 = [x, 1, 2] //│ > tmp4 = [3, 4, 1] -//│ > .dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) +//│ > dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) staged class L1(val y) with fun call(x) = x + 2 + y @@ -184,90 +184,78 @@ staged module Dispatching with twice(m, 5) Dispatching."test_gen"(mkLit(true)) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'class') -//│ at lambda3 (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2505:55) -//│ at Iterator.forEach () -//│ at lambda1 (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2507:43) -//│ at MapIterator.forEach () -//│ at SpecializeHelpers.specialize (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2509:33) -//│ at twice_gen (REPL50:1:8374) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:694:51) -//│ at SpecializeHelpers.sor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2071:30) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1113:53) -//│ at SpecializeHelpers.prop (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2305:30) +//│ = ["test_Littrue", {Lit(9)}] Dispatching."test_gen"(mkLit(false)) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'class') -//│ at lambda3 (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2505:55) -//│ at Iterator.forEach () -//│ at lambda1 (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2507:43) -//│ at MapIterator.forEach () -//│ at SpecializeHelpers.specialize (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2509:33) -//│ at twice_gen (REPL50:1:8374) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:694:51) -//│ at SpecializeHelpers.sor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2071:30) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1113:53) -//│ at SpecializeHelpers.prop (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2305:30) +//│ = ["test_Litfalse", {Lit(29)}] Dispatching."test_gen"(mkDyn()) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'class') -//│ at lambda3 (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2505:55) -//│ at Iterator.forEach () -//│ at lambda1 (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2507:43) -//│ at MapIterator.forEach () -//│ at SpecializeHelpers.specialize (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2509:33) -//│ at twice_gen (REPL50:1:8374) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:694:51) -//│ at SpecializeHelpers.sor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2071:30) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1113:53) -//│ at SpecializeHelpers.prop (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2305:30) +//│ = ["test", {Lit(15),Lit(17),Lit(29),Lit(9)}] print(Dispatching."cache$Dispatching") //│ > module Dispatching with //│ > () +//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > let {obj_7, obj_8} +//│ > if b is +//│ > true then +//│ > obj_7 = new! Dispatching."L2$Dispatching"(2) +//│ > obj_7 +//│ > else +//│ > obj_8 = new! Dispatching."L3$Dispatching"(3) +//│ > obj_8 +//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y, b) = +//│ > let {obj_5} +//│ > obj_5 = new! Dispatching."L3$Dispatching"(3) +//│ > obj_5 +//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y, b) = +//│ > let {obj_2} +//│ > obj_2 = new! Dispatching."L2$Dispatching"(2) +//│ > obj_2 //│ > fun test(b) = //│ > let {y1, m, tmp1, tmp2, tmp3} //│ > tmp1 = new! Dispatching."L1$Dispatching"(1) -//│ > y1 = twice(tmp1, 5) +//│ > y1 = 11 //│ > tmp2 = new! Dispatching."L2$Dispatching"(2) //│ > tmp3 = new! Dispatching."L3$Dispatching"(3) -//│ > m = pick(tmp2, tmp3, b) -//│ > twice(m, 5) -//│ > fun test_Litfalse(b) = -//│ > let {y1, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new! Dispatching."L1$Dispatching"(1) -//│ > y1 = twice(tmp1, 5) -//│ > tmp2 = new! Dispatching."L2$Dispatching"(2) -//│ > tmp3 = new! Dispatching."L3$Dispatching"(3) -//│ > m = pick(tmp2, tmp3, b) -//│ > twice(m, 5) -//│ > fun test_Littrue(b) = -//│ > let {y1, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new! Dispatching."L1$Dispatching"(1) -//│ > y1 = twice(tmp1, 5) -//│ > tmp2 = new! Dispatching."L2$Dispatching"(2) -//│ > tmp3 = new! Dispatching."L3$Dispatching"(3) -//│ > m = pick(tmp2, tmp3, b) -//│ > twice(m, 5) +//│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) +//│ > fun test_Litfalse(b) = 29 +//│ > fun test_Littrue(b) = 9 +//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 +//│ > fun twice_L2_Lit2_Lit5(f, x) = 9 +//│ > fun twice_L3_Lit3_Lit5(f, x) = 29 +//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = +//│ > let {tmp} +//│ > if f is +//│ > Dispatching."L2$Dispatching" then +//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > Dispatching."L3$Dispatching" then +//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > if f is +//│ > Dispatching."L2$Dispatching" then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > Dispatching."L3$Dispatching" then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(y) with //│ > () -//│ > +//│ > fun call_L1_Lit1_dot_Lit5(x) = 8 +//│ > fun call_L1_Lit1_dot_Lit8(x) = 11 //│ > class L2(y) with //│ > () -//│ > +//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 +//│ > fun call_L2_Lit2_dot_Lit7(x) = 9 +//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + 2 //│ > class L3(y) with //│ > () -//│ > +//│ > fun call_L3_Lit3_dot_Lit13(x) = 29 +//│ > fun call_L3_Lit3_dot_Lit5(x) = 13 +//│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = +//│ > let {tmp1} +//│ > tmp1 = *(x, 2) +//│ > tmp1 + 3 staged class A(val x: Int) with @@ -281,28 +269,18 @@ staged module This with This."test_gen"(mkLit(1)) print(This."cache$This") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'class') -//│ at SpecializeHelpers.getActualClass (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1526:14) -//│ at SpecializeHelpers.getStagedClassInfo (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1540:37) -//│ at SpecializeHelpers.getClassGenMap (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1549:30) -//│ at SpecializeHelpers.isStagedClass (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1883:31) -//│ at lambda (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1899:36) -//│ at file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/Rendering.mjs:148:35 -//│ at SpecializeHelpers.fsplit (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1920:33) -//│ at SpecializeHelpers.dispatchMethodCall (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2081:34) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:964:54) -//│ at SpecializeHelpers.prop (file:///home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2305:30) +//│ > module This with +//│ > () +//│ > fun test_Lit1(x) = 3 print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with //│ > () -//│ > +//│ > fun f_A_Lit1_dot_Lit1(y) = 2 //│ > class B(x) with //│ > () -//│ > +//│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 staged class B(val x, val y) with val z = x + y @@ -317,15 +295,16 @@ staged module Inheritance with else "not B" Inheritance."test_gen"() -//│ = ["test", {Lit("not B")}] +//│ = ["test", {Lit(5)}] staged module NonTermination with - fun f(x, y) = if y is - 1 then 0 + fun f(x, y) = if y + == x then 0 else f(x, y + 1) -:fixme -// NonTermination."f_gen"(mkDyn(), mkLit(0)) +:re +NonTermination."f_gen"(mkDyn(), mkLit(0)) +//│ ═══[RUNTIME ERROR] RangeError: Maximum call stack size exceeded fun g(x, y) = x + y @@ -343,3 +322,12 @@ Comparison."test_gen"(union(mkLit(3), mkLit(4))) Comparison."test_gen"(union(mkLit(4), mkLit(6))) //│ = ["test_Union_Lit4_Lit6_end", {Dyn()}] + +:fixme +class C +module Opaque with + fun f() = new C +staged module M with + fun f() = Opaque.f() +M."f_gen"() +//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:192) From 84936117053394f1457ff71262d42892913fc37b Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 24 Apr 2026 23:50:26 +0800 Subject: [PATCH 569/654] update test --- .../block-staging/ShapeSetHelpers.mls | 39 +++++-------------- 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index add21f7b37..72f5b12842 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -495,9 +495,9 @@ prop(Ctx.empty(), earlyRetBlock) //│ ) //│ ) +:silent val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Match(ValueRef(y), [Arm(Lit(true), Return(ValueLit(1), false))], Some(Return(ValueLit(2), false)), End()))], Some(Return(ValueLit(3), false)), Return(ValueLit(4), false))))) printCode(nestedBlock) -val res = prop(Ctx.empty(), nestedBlock) //│ > let {x, y} //│ > x = true //│ > y = false @@ -508,33 +508,8 @@ val res = prop(Ctx.empty(), nestedBlock) //│ > else 2 //│ > else 3 //│ > 4 -//│ nestedBlock = Scoped( -//│ [Symbol("x"), Symbol("y")], -//│ Assign( -//│ Symbol("x"), -//│ ValueLit(true), -//│ Assign( -//│ Symbol("y"), -//│ ValueLit(false), -//│ Match( -//│ ValueRef(Symbol("x")), -//│ [ -//│ Arm( -//│ Lit(true), -//│ Match( -//│ ValueRef(Symbol("y")), -//│ [Arm(Lit(true), Return(ValueLit(1), false))], -//│ Some(Return(ValueLit(2), false)), -//│ End() -//│ ) -//│ ) -//│ ], -//│ Some(Return(ValueLit(3), false)), -//│ Return(ValueLit(4), false) -//│ ) -//│ ) -//│ ) -//│ ) + +val res = prop(Ctx.empty(), nestedBlock) //│ res = [ //│ Scoped( //│ [Symbol("x"), Symbol("y")], @@ -544,9 +519,15 @@ val res = prop(Ctx.empty(), nestedBlock) //│ Assign(Symbol("y"), ValueLit(false), Return(ValueLit(2), false)) //│ ) //│ ), -//│ {Lit(2)} +//│ {Lit(2),Lit(4)} //│ ] +:fixme +:expect {Lit(2)} +res.1 +//│ ═══[RUNTIME ERROR] Expected: '{Lit(2)}', got: '{Lit(2),Lit(4)}' +//│ = {Lit(2),Lit(4)} + val2path(1, mut [], new Map()) //│ = [End(), ValueLit(1)] From 3943f6e495cf4df8edd8bc167d68a182f8660861 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 26 Apr 2026 13:23:23 +0800 Subject: [PATCH 570/654] make symbol map global this makes symbols unique across compilation units --- .../codegen/ReflectionInstrumenter.scala | 20 +-- .../src/test/mlscript-compile/Block.mls | 12 +- .../src/test/mlscript-compile/Predef.mjs | 130 ++++++++---------- .../src/test/mlscript-compile/Runtime.mjs | 119 +++++++++------- .../src/test/mlscript-compile/Runtime.mls | 17 +++ .../mlscript/block-staging/StageSymbols.mls | 29 +++- .../test/mlscript/block-staging/Syntax.mls | 42 +++--- 7 files changed, 196 insertions(+), 173 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index eeab7508f0..e34351cc2c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -64,7 +64,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val scope = Scope.empty(Scope.Cfg.default) // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes val defnMap = HashMap[DefinitionSymbol[? <: ClassLikeDef], ClsLikeDefn]() - var symbolMapSym: Opt[Symbol] = N def getDefn(l: DefinitionSymbol[? <: ClassLikeDef]) = l.defn.orElse(defnMap.get(l)).get @@ -119,8 +118,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def cachedK(p: Path, ctx: Context) = k(p, ctx.addCache(sym, p)) def checkMap(mapType: Str, key: Path, p: Path, ctx: Context) = - if symbolMapSym is None then symbolMapSym = S(TempSymbol(N, "symbolMap")) - call(symbolMapSym.get.asPath.selSN("checkMap"), Ls(toValue(mapType), key, p))(cachedK(_, ctx)) + call(State.runtimeSymbol.asPath.selSN("SymbolMap").selSN(mapType), Ls(key, p))(cachedK(_, ctx)) stagingCtx.getCache(sym).map(cachedK(_, stagingCtx)).getOrElse: // add name to scope to avoid shadowing by other symbols val rename = sym match @@ -143,7 +141,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case _: NoSymbol => blockCtor("NoSymbol", Nil, symName)(cachedK(_, stagingCtx)) case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => - blockCtor("VirtualClassSymbol", Ls(toValue(name)), symName)(checkMap("classMap", toValue(name), _, stagingCtx)) + blockCtor("VirtualClassSymbol", Ls(toValue(name)), symName)(checkMap("checkClassMap", toValue(name), _, stagingCtx)) case baseSym: BaseTypeSymbol => val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) @@ -163,9 +161,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformParamsOpt(paramsOpt): (paramsOpt, ctx) => auxParams.map(ps => ctx => transformParamList(ps)(using ctx)).chainContext: (auxParams, ctx) => tuple(auxParams): auxParams => - blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams, toValue(rename)), symName)(checkMap("classMap", path, _, ctx)) + blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams, toValue(rename)), symName)(checkMap("checkClassMap", path, _, ctx)) case _: ModuleOrObjectSymbol => - blockCtor("ModuleSymbol", Ls(toValue(name), path, toValue(rename)), symName)(checkMap("moduleMap", path, _, stagingCtx)) + blockCtor("ModuleSymbol", Ls(toValue(name), path, toValue(rename)), symName)(checkMap("checkModuleMap", path, _, stagingCtx)) case _ => blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) @@ -589,12 +587,4 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def apply(b: Block) = mkDefnMap(b) - val rest = applyBlock(b) - symbolMapSym match - case S(sym) => - val mapPath = State.globalThisSymbol.asPath.selSN("Map") - ctor(mapPath, Nil): map1 => - ctor(mapPath, Nil): map2 => - ctor(blockMod("SymbolMap"), Ls(map1, map2)): map => - Scoped(Set(sym), Assign(sym, map, rest)) - case N => rest + applyBlock(b) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 905ab0cf0d..e42420c6cd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -53,17 +53,7 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = ["Bool", b] and b is Bool then true else false -// TODO: move this to somewhere appropriate -// A staged class with no parameters has the same runtime value as its staged companion, this causes an unwated collision when creating a symbol for both the class and the module, -// so we need to split the map into the which type of symbol used. -class SymbolMap(val classMap: Map[Class, ClassSymbol], val moduleMap: Map[Class, ModuleSymbol]) with - fun checkMap(mapType: String, key: Class, value: ClassSymbol | ModuleSymbol) = - let map = this.(mapType) - let v = map.get(key) - if v is - Symbol then v - else map.set(key, value); value - +// TODO: spread parameters will be as another field to Arg class Arg(val value: Path) class Case with diff --git a/hkmc2/shared/src/test/mlscript-compile/Predef.mjs b/hkmc2/shared/src/test/mlscript-compile/Predef.mjs index 48f1eaabee..2a14887516 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Predef.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Predef.mjs @@ -148,99 +148,91 @@ let Predef1; } static equals(a, b) { let scrut, scrut1, scrut2, ac, scrut3, md, scrut4, scrut5, scrut6, scrut7, scrut8, scrut9, scrut10, scrut11, lambda, lambda1, tmp, tmp1, tmp2; - split_root$: { - split_1$: { - scrut = a === b; - if (scrut === true) { - return true - } - if (a instanceof globalThis.Array) { - if (b instanceof globalThis.Array) { - scrut1 = a.length === b.length; - if (scrut1 === true) { - lambda = (undefined, function (a1, i) { - let tmp3; - tmp3 = runtime.safeCall(b.at(i)); - return Predef.equals(a1, tmp3) - }); - return runtime.safeCall(a.every(lambda)) - } - break split_1$; - } - break split_1$; + scrut = a === b; + if (scrut === true) { + return true + } + if (a instanceof globalThis.Array) { + if (b instanceof globalThis.Array) { + scrut1 = a.length === b.length; + if (scrut1 === true) { + lambda = (undefined, function (a1, i) { + let tmp3; + tmp3 = runtime.safeCall(b.at(i)); + return Predef.equals(a1, tmp3) + }); + return runtime.safeCall(a.every(lambda)) } - break split_1$; } - scrut2 = a !== undefined; - if (scrut2 === true) { - scrut11 = a !== null; - if (scrut11 === true) { - scrut10 = b !== undefined; - if (scrut10 === true) { - scrut9 = b !== null; - if (scrut9 === true) { - ac = a.constructor; - scrut3 = ac !== undefined; - if (scrut3 === true) { - scrut7 = ac === b.constructor; - if (scrut7 === true) { - md = ac[Predef.Symbols.definitionMetadata]; - scrut4 = md !== undefined; - if (scrut4 === true) { - lambda1 = (undefined, function (field) { - let scrut12, scrut13; - scrut12 = field !== null; - if (scrut12 === true) { - scrut13 = Predef.equals(a[field], b[field]); - if (scrut13 === true) { - return true - } - return false; + } + scrut2 = a !== undefined; + if (scrut2 === true) { + scrut11 = a !== null; + if (scrut11 === true) { + scrut10 = b !== undefined; + if (scrut10 === true) { + scrut9 = b !== null; + if (scrut9 === true) { + ac = a.constructor; + scrut3 = ac !== undefined; + if (scrut3 === true) { + scrut7 = ac === b.constructor; + if (scrut7 === true) { + md = ac[Predef.Symbols.definitionMetadata]; + scrut4 = md !== undefined; + if (scrut4 === true) { + lambda1 = (undefined, function (field) { + let scrut12, scrut13; + scrut12 = field !== null; + if (scrut12 === true) { + scrut13 = Predef.equals(a[field], b[field]); + if (scrut13 === true) { + return true } return false; - }); - scrut5 = runtime.safeCall(md[2].every(lambda1)); - if (scrut5 === true) { - tmp = true; - } else { - tmp = false; } + return false; + }); + scrut5 = runtime.safeCall(md[2].every(lambda1)); + if (scrut5 === true) { + tmp = true; } else { tmp = false; } - scrut6 = tmp; - if (scrut6 === true) { - tmp1 = true; - } else { - tmp1 = false; - } + } else { + tmp = false; + } + scrut6 = tmp; + if (scrut6 === true) { + tmp1 = true; } else { tmp1 = false; } } else { tmp1 = false; } - scrut8 = tmp1; - if (scrut8 === true) { - tmp2 = true; - } else { - tmp2 = false; - } + } else { + tmp1 = false; + } + scrut8 = tmp1; + if (scrut8 === true) { + tmp2 = true; } else { tmp2 = false; } - } else { - tmp2 = false; + return tmp2 } - } else { tmp2 = false; + return tmp2; } - return tmp2 + tmp2 = false; + return tmp2; } tmp2 = false; return tmp2; } - return runtime.Unit + tmp2 = false; + return tmp2; } static nequals(a, b) { let tmp; diff --git a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs index 3204841b56..187bec4106 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs @@ -196,6 +196,38 @@ let Runtime1; toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Str"]; }); + (class SymbolMap { + static { + Runtime.SymbolMap = this + } + static { + let tmp1, tmp2; + tmp1 = globalThis.Object.freeze(new globalThis.Map()); + this.classMap = tmp1; + tmp2 = globalThis.Object.freeze(new globalThis.Map()); + this.moduleMap = tmp2; + } + static checkClassMap(key, value) { + let v, tmp1; + v = runtime.safeCall(SymbolMap.classMap.get(key)); + if (v instanceof Runtime.Unit.class) { + tmp1 = SymbolMap.classMap.set(key, value); + return (tmp1 , value) + } + return v; + } + static checkModuleMap(key, value) { + let v, tmp1; + v = runtime.safeCall(SymbolMap.moduleMap.get(key)); + if (v instanceof Runtime.Unit.class) { + tmp1 = SymbolMap.moduleMap.set(key, value); + return (tmp1 , value) + } + return v; + } + toString() { return runtime.render(this); } + static [definitionMetadata] = ["class", "SymbolMap"]; + }); this.render = Rendering.render; (class TraceLogger { static { @@ -650,19 +682,17 @@ let Runtime1; v = null; lbl: while (true) { let scrut, tmp2, tmp3, tmp4; - split_root$: { - if (tr instanceof Runtime.EffectSig.class) { - scrut = tr.handler === Runtime.PrintStackEffect; - if (scrut === true) { - tmp2 = Runtime.showStackTrace("Stack Trace:", tr, debug, tr.handlerFun); - runtime.safeCall(globalThis.console.log(tmp2)); - Runtime.curEffect = null; - tmp3 = Runtime.resume(tr.contTrace); - tmp4 = runtime.safeCall(tmp3(runtime.Unit)); - v = tmp4; - tr = Runtime.curEffect; - continue lbl - } + if (tr instanceof Runtime.EffectSig.class) { + scrut = tr.handler === Runtime.PrintStackEffect; + if (scrut === true) { + tmp2 = Runtime.showStackTrace("Stack Trace:", tr, debug, tr.handlerFun); + runtime.safeCall(globalThis.console.log(tmp2)); + Runtime.curEffect = null; + tmp3 = Runtime.resume(tr.contTrace); + tmp4 = runtime.safeCall(tmp3(runtime.Unit)); + v = tmp4; + tr = Runtime.curEffect; + continue lbl } } break; @@ -751,23 +781,24 @@ let Runtime1; if (atTail === true) { tmp = msg + "\n\tat tail position"; msg = tmp; + return msg } - return msg + return msg; } return msg; } static showFunctionContChain(cont, hl, vis, reps) { - let result, scrut, scrut1, scrut2, tmp, lambda, tmp1, tmp2, tmp3, tmp4, tmp5; + let result, scrut, scrut1, scrut2, tmp, lambda, tmp1, tmp2, tmp3, tmp4; if (cont instanceof Runtime.FunctionContFrame.class) { tmp = cont.constructor.name + "(pc="; result = tmp + cont.saved.at(1); lambda = (undefined, function (m, marker) { - let scrut3, tmp6, tmp7; + let scrut3, tmp5, tmp6; scrut3 = runtime.safeCall(m.has(cont)); if (scrut3 === true) { - tmp6 = ", " + marker; - tmp7 = result + tmp6; - result = tmp7; + tmp5 = ", " + marker; + tmp6 = result + tmp5; + result = tmp6; return runtime.Unit } return runtime.Unit; @@ -783,13 +814,12 @@ let Runtime1; } tmp2 = result + ", REPEAT"; result = tmp2; - tmp3 = runtime.Unit; } else { - tmp3 = runtime.safeCall(vis.add(cont)); + runtime.safeCall(vis.add(cont)); } - tmp4 = result + ") -> "; - tmp5 = Runtime.showFunctionContChain(cont.next, hl, vis, reps); - return tmp4 + tmp5 + tmp3 = result + ") -> "; + tmp4 = Runtime.showFunctionContChain(cont.next, hl, vis, reps); + return tmp3 + tmp4 } scrut2 = cont === null; if (scrut2 === true) { @@ -798,16 +828,16 @@ let Runtime1; return "(NOT CONT)"; } static showHandlerContChain(cont, hl, vis, reps) { - let result, scrut, scrut1, scrut2, lambda, tmp, tmp1, tmp2, tmp3, tmp4; + let result, scrut, scrut1, scrut2, lambda, tmp, tmp1, tmp2, tmp3; if (cont instanceof Runtime.HandlerContFrame.class) { result = cont.handler.constructor.name; lambda = (undefined, function (m, marker) { - let scrut3, tmp5, tmp6; + let scrut3, tmp4, tmp5; scrut3 = runtime.safeCall(m.has(cont)); if (scrut3 === true) { - tmp5 = ", " + marker; - tmp6 = result + tmp5; - result = tmp6; + tmp4 = ", " + marker; + tmp5 = result + tmp4; + result = tmp5; return runtime.Unit } return runtime.Unit; @@ -823,13 +853,12 @@ let Runtime1; } tmp1 = result + ", REPEAT"; result = tmp1; - tmp2 = runtime.Unit; } else { - tmp2 = runtime.safeCall(vis.add(cont)); + runtime.safeCall(vis.add(cont)); } - tmp3 = result + " -> "; - tmp4 = Runtime.showFunctionContChain(cont.next, hl, vis, reps); - return tmp3 + tmp4 + tmp2 = result + " -> "; + tmp3 = Runtime.showFunctionContChain(cont.next, hl, vis, reps); + return tmp2 + tmp3 } scrut2 = cont === null; if (scrut2 === true) { @@ -939,7 +968,7 @@ let Runtime1; } static handleEffects(cur) { lbl: while (true) { - let nxt, scrut, tmp; + let nxt, scrut; if (cur instanceof Runtime.EffectSig.class) { nxt = Runtime.handleEffect(cur); scrut = cur === nxt; @@ -948,26 +977,22 @@ let Runtime1; return null } cur = nxt; - tmp = runtime.Unit; continue lbl; } return cur; } - return runtime.Unit } static handleEffect(cur) { let prevHandlerFrame, scrut, handlerFrame, saved, tmp, old, scrut1, scrut2, scrut3, tmp1, tmp2, tmp3, tmp4; prevHandlerFrame = cur.contTrace; lbl: while (true) { let scrut4, scrut5; - split_root$: { - scrut4 = prevHandlerFrame.nextHandler !== null; - if (scrut4 === true) { - scrut5 = prevHandlerFrame.nextHandler.handler !== cur.handler; - if (scrut5 === true) { - prevHandlerFrame = prevHandlerFrame.nextHandler; - continue lbl - } + scrut4 = prevHandlerFrame.nextHandler !== null; + if (scrut4 === true) { + scrut5 = prevHandlerFrame.nextHandler.handler !== cur.handler; + if (scrut5 === true) { + prevHandlerFrame = prevHandlerFrame.nextHandler; + continue lbl } } break; @@ -1029,7 +1054,7 @@ let Runtime1; cont = contTrace.next; handlerCont = contTrace.nextHandler; lbl: while (true) { - let old, scrut, scrut1, scrut2, tmp, tmp1, tmp2, tmp3; + let old, scrut, scrut1, scrut2, tmp, tmp1, tmp2; if (cont instanceof Runtime.FunctionContFrame.class) { Runtime.curEffect = null; old = Runtime.stackDepth; @@ -1061,7 +1086,6 @@ let Runtime1; return value; } cont = cont.next; - tmp3 = runtime.Unit; continue lbl; } if (handlerCont instanceof Runtime.HandlerContFrame.class) { @@ -1071,7 +1095,6 @@ let Runtime1; } return value; } - return runtime.Unit } static checkDepth() { let scrut, tmp, tmp1; diff --git a/hkmc2/shared/src/test/mlscript-compile/Runtime.mls b/hkmc2/shared/src/test/mlscript-compile/Runtime.mls index 0974e5145f..8ac3910011 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Runtime.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Runtime.mls @@ -104,6 +104,23 @@ module Str with fun leave(string, n) = string.slice(n) +// TODO: to add annotations we would need to import Symbol definitions from Block.mls +// A staged class with no parameters has the same runtime value as its staged companion, this causes an unwated collision when creating a symbol for both the class and the module, +// so we need to split the map into the which type of symbol used. +module SymbolMap with + val classMap = new Map() + val moduleMap = new Map() + + fun checkClassMap(key: Class, value) = if + let v = classMap.get(key) + v is Unit then classMap.set(key, value); value + else v + + fun checkModuleMap(key: Class, value) = if + let v = moduleMap.get(key) + v is Unit then moduleMap.set(key, value); value + else v + // Re-export rendering functions val render = Rendering.render diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index dc084f1b87..f3dd114626 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -1,5 +1,6 @@ :js :staging +:noModuleCheck staged module M with class C with @@ -35,7 +36,7 @@ staged module M with staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.36: fun g()() = 1 +//│ ║ l.37: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ :ftc @@ -43,12 +44,10 @@ staged module M with fun f() = x => x fun g()() = 1 -// TODO: these need to be printed separately, somehow: -:noModuleCheck -let x = M."f_instr"().body.rest.rhs.cls.l.value -let y = M."g_instr"().body.rest.rhs.cls.l.value -//│ x = class Function$ -//│ y = class Function$ +:silent +let x = M."f_instr"().body.rest.rhs.cls.l +let y = M."g_instr"().body.rest.rhs.cls.l +assert x.name != y.name staged module Shadowing with fun f(x, x) = x @@ -56,6 +55,22 @@ staged module Shadowing with staged module RetUnit with fun f() = () +// should use same symbol across compilation units +import "../../mlscript-compile/Runtime.mls" +module M with + fun f() = 1 + +staged module One with + fun f() = M.f() + +staged module Two with + fun f() = M.f() + +:silent +let x = One."f_instr"().body.res._fun.qual.l +let y = Two."f_instr"().body.res._fun.qual.l +assert x === y + :fixme Array should be skipped for redirection staged module M with val a = Math.cos(1) is Array // doesn't handle Array diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 8afbe8b81b..44a60226dc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -20,39 +20,35 @@ staged fun f() = 0 :staging staged module A //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let A⁰, symbolMap, tmp, tmp1, tmp2; -//│ set tmp = new globalThis⁰.this.Map﹖(); -//│ set tmp1 = new globalThis⁰.this.Map﹖(); -//│ set tmp2 = new Block⁰.SymbolMap﹖(tmp, tmp1); -//│ set symbolMap = tmp2; +//│ let A⁰; //│ define A⁰ as class A¹ //│ staged module A² { //│ constructor { -//│ let tmp3, tmp4, sym, tmp5, tmp6, tmp7; +//│ let tmp, tmp1, sym, tmp2, tmp3, tmp4; //│ set sym = Block⁰.ModuleSymbol﹖("A", A², false); -//│ set tmp5 = symbolMap.checkMap﹖("moduleMap", A², sym); -//│ set tmp6 = new globalThis⁰.this.Map﹖(); -//│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp5, tmp6); -//│ define cache$A⁰ as val cache$A¹ = tmp7; -//│ set tmp3 = []; -//│ set tmp4 = new globalThis⁰.this.Map﹖(tmp3); -//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp4; +//│ set tmp2 = runtime⁰.SymbolMap﹖.checkModuleMap﹖(A², sym); +//│ set tmp3 = new globalThis⁰.this.Map﹖(); +//│ set tmp4 = new SpecializeHelpers⁰.FunCache﹖(tmp2, tmp3); +//│ define cache$A⁰ as val cache$A¹ = tmp4; +//│ set tmp = []; +//│ set tmp1 = new globalThis⁰.this.Map﹖(tmp); +//│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp1; //│ end //│ } //│ method generate⁰ = fun generate¹(source, path) { -//│ let tmp3, tmp4; -//│ set tmp3 = A².this.propagate﹖(); -//│ set tmp4 = Block⁰.codegen﹖("A", A².this.cache$A﹖, source, path); +//│ let tmp, tmp1; +//│ set tmp = A².this.propagate﹖(); +//│ set tmp1 = Block⁰.codegen﹖("A", A².this.cache$A﹖, source, path); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { -//│ let sym, tmp3, tmp4, end, tmp5; +//│ let sym, tmp, tmp1, end, tmp2; //│ set sym = Block⁰.Symbol﹖("ctor$"); -//│ set tmp3 = []; -//│ set tmp4 = [tmp3]; +//│ set tmp = []; +//│ set tmp1 = [tmp]; //│ set end = Block⁰.End﹖(); -//│ set tmp5 = Block⁰.FunDefn﹖(sym, tmp4, end); -//│ return tmp5 +//│ set tmp2 = Block⁰.FunDefn﹖(sym, tmp1, end); +//│ return tmp2 //│ } //│ method propagate⁰ = fun propagate¹() { let tmp_dyn; set tmp_dyn = ShapeSet⁰.mkDyn﹖(); end } //│ }; @@ -68,8 +64,8 @@ fun g(@static x) = x :e fun h(@dynamic @static x) = x //│ ╔══[COMPILATION ERROR] At most one reflection constraint can be added for each parameter. -//│ ║ l.69: fun h(@dynamic @static x) = x +//│ ║ l.65: fun h(@dynamic @static x) = x //│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Name not found: x -//│ ║ l.69: fun h(@dynamic @static x) = x +//│ ║ l.65: fun h(@dynamic @static x) = x //│ ╙── ^ From cfa50a2d73d107837e1b1f7771bb49f8857252e4 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 26 Apr 2026 19:53:47 +0800 Subject: [PATCH 571/654] fix this.x.f() --- .../mlscript-compile/SpecializeHelpers.mls | 49 ++++++++++++------- .../test/mlscript/block-staging/ShapeProp.mls | 28 +++++++++++ 2 files changed, 59 insertions(+), 18 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 2d2c1bb980..9424313966 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -18,6 +18,9 @@ let classGenMapPrefix = "class$generatorMap$" let moduleCachePrefix = "cache$" let classCachePrefix = "class$cache$" +fun isStagedClass(c) = + not (getClassGenMap(c) is undefined) + fun getGenMapName(name, isClass) = (if isClass then classGenMapPrefix else moduleGenMapPrefix) + name @@ -163,7 +166,6 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any + if cache.length == 0 then "" else " with" + indent("\n" + printer.showBlock(ctorBody)) // TODO: we can skip printing ctor that are just End() + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().sort().join("\n")) - module FunCache with fun empty(owner) = FunCache(owner, new Map()) @@ -214,8 +216,6 @@ fun sop(ctx, p): ShapeSet = if ctx.get(p) is ValueLit(lit) then mkLit(lit) ValueRef(l) then mkDyn() -fun isStagedClass(c) = - not (getClassGenMap(c) is undefined) // split a shapeset of class symbols into known ones and unknown ones class SplitResult(val knownMap: Map[ConcreteClassSymbol, ShapeSet], val unkShape: ShapeSet) @@ -335,8 +335,12 @@ fun sor(ctx, r) = if r is Call(f, args) then sorCall(ctx, r, f, args, args.map((a, _, _) => sop(ctx, a.value))) else throw Error("unknown result in sor: " + r.toString()) -fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = - let pss = sop(ctx, ValueRef(symb)) +// xOpt stores Some(path) if an Assign block's result is a method call, otherwise it stores None +// implctOpt stores an option of the implct field of return +// + +fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = + let pss = sop(ctx, p) let argShapes = args.map(a => sop(ctx, a.value)) let splitRes = fsplit(pss) let knownMap = splitRes.knownMap @@ -346,7 +350,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = if knownMap.size is 0 and - let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) + let dfltMatch = Call(Select(p, Symbol(f)), args) isRet then [Return(dfltMatch, if implctOpt is Some(i) then i else false), mkDyn()] else @@ -361,7 +365,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = let ret = f_gen(ss_i)(...argShapes) let retSym = ret.0 let retShape = ret.1 - let callRes = Call(Select(ValueRef(symb), Symbol(retSym)), args) + let callRes = Call(Select(p, Symbol(retSym)), args) isRet then [Return(callRes, if implctOpt is Some(i) then i else false), retShape] else @@ -375,17 +379,17 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = let f_gen = genMap.get(f) let retSym = f_gen(ss_i)(...argShapes).0 let retShape = f_gen(ss_i)(...argShapes).1 - let callRes = Call(Select(ValueRef(symb), Symbol(retSym)), args) + let callRes = Call(Select(p, Symbol(retSym)), args) if isRet then - [Arm(Cls(C_i, ValueRef(symb)), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] + [Arm(Cls(C_i, p), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") - [Arm(Cls(C_i, ValueRef(symb)), Assign(x, callRes, End())), retShape] + [Arm(Cls(C_i, p), Assign(x, callRes, End())), retShape] ) let armsAcc = armsRet.map(_.0) let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else - let dfltMatch = Call(Select(ValueRef(symb), Symbol(f)), args) + let dfltMatch = Call(Select(p, Symbol(f)), args) if isRet then [Some(Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] else @@ -394,14 +398,17 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, symb, f, args) = let matchBody = if knownMap.size is 1 and unkShape.isEmpty() then armsAcc.0.body else - Match(ValueRef(symb), armsAcc, dfltRet.0, End()) + Match(p, armsAcc, dfltRet.0, End()) let totalRetShape = union(totalStagedRetShape, dfltRet.1) [matchBody, totalRetShape] fun prop(ctx, b) = if b is End() then [b, mkBot()] - Return(Call(Select(ValueRef(symb), Symbol(f)), args), implct) and not (symb is ModuleSymbol) and not (f is "concat") then // TODO[later]: Ref -> Path, remove special checks - dispatchMethodCall(ctx, None, Some(implct), symb, f, args) + Return(Call(Select(p, Symbol(f)), args), implct) and not (f is "concat") and p is // TODO[later]: Ref -> Path, remove special checks + ValueRef(symb) and not symb is ModuleSymbol then + dispatchMethodCall(ctx, None, Some(implct), p, f, args) + Select(ValueRef(ConcreteClassSymbol), _) then + dispatchMethodCall(ctx, None, Some(implct), p, f, args) Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then [concat(blk, Return(r1, implct)), s1] Scoped(symbols, rest) then @@ -410,10 +417,15 @@ fun prop(ctx, b) = if b is let newCtx = Ctx(new Map(ctx.ctx), ctx.valueNameCtx, ctx.valDefnCtx, newAllocs, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] - Assign(x, Call(Select(ValueRef(symb), Symbol(f)), args), restBlock) and not (symb is ModuleSymbol) then - let res = dispatchMethodCall(ctx, Some(x), None, symb, f, args) - let b2 = prop(ctx.add(ValueRef(x), res.1), restBlock) - [concat(res.0, b2.0), b2.1] + Assign(x, Call(Select(p, Symbol(f)), args), restBlock) and p is + ValueRef(symb) and not (symb is ModuleSymbol) then + let res = dispatchMethodCall(ctx, Some(x), None, p, f, args) + let b2 = prop(ctx.add(ValueRef(x), res.1), restBlock) + [concat(res.0, b2.0), b2.1] + Select(ValueRef(ConcreteClassSymbol), _) then + let res = dispatchMethodCall(ctx, Some(x), None, p, f, args) + let b2 = prop(ctx.add(ValueRef(x), res.1), restBlock) + [concat(res.0, b2.0), b2.1] Define(ValDefn(opt, sym, rhs), restBlock) and sor(ctx, rhs) is [blk, r1, s1] and do ctx.addValDefn(sym.name, s1) @@ -514,6 +526,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = // so we need to read the constraints by running dflt() anyway // which prevent the possibilily of not running dflt when specialized function already exists in cache let defn = dflt() + // print(defn) if defn is FunDefn(Symbol(_), ps, body) then let isMethod = cache.owner is ConcreteClassSymbol let newName = specializeName(funName, isMethod, ps, shapes) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e13f9d0f6c..eccb545054 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -268,9 +268,11 @@ staged module This with fun test2(y) = B(1).x + y This."test_gen"(mkLit(1)) +This."test2_gen"(mkLit(1)) print(This."cache$This") //│ > module This with //│ > () +//│ > fun test2_Lit1(y) = 2 //│ > fun test_Lit1(x) = 3 print(A.class."class$cache$A") @@ -331,3 +333,29 @@ staged module M with fun f() = Opaque.f() M."f_gen"() //│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:192) + +staged class Bar(val x) with + fun bar() = x +staged class Foo(val x) with + fun foo(b) = + if b is + 1 then x.bar() + 1 + 2 then x.bar() + 2 + else x.bar() + +staged module SimpleStagedExample with + fun baz() = Foo(Bar(1)).foo(1) + fun foobar(x) = + let y = if x is 0 then 1 else 0 + let z = if y is Num then 0 else 1 + y + z + +SimpleStagedExample."baz_gen"() +//│ = ["baz", {Lit(2)}] + +SimpleStagedExample."cache$SimpleStagedExample" +//│ = module SimpleStagedExample with \ +//│ () \ +//│ fun baz() = 2 + +Foo."class$cache$Foo" From 6b29b818358d879af504377a6fabe67698a3d807 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 26 Apr 2026 20:09:27 +0800 Subject: [PATCH 572/654] remove an unused test --- .../src/test/mlscript/block-staging/ShapeProp.mls | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index eccb545054..1232947608 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -332,7 +332,7 @@ module Opaque with staged module M with fun f() = Opaque.f() M."f_gen"() -//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:192) +//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:197) staged class Bar(val x) with fun bar() = x @@ -345,17 +345,6 @@ staged class Foo(val x) with staged module SimpleStagedExample with fun baz() = Foo(Bar(1)).foo(1) - fun foobar(x) = - let y = if x is 0 then 1 else 0 - let z = if y is Num then 0 else 1 - y + z SimpleStagedExample."baz_gen"() //│ = ["baz", {Lit(2)}] - -SimpleStagedExample."cache$SimpleStagedExample" -//│ = module SimpleStagedExample with \ -//│ () \ -//│ fun baz() = 2 - -Foo."class$cache$Foo" From ab5f94ff9fd5481cebe555f8c911560f8a4b8599 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 26 Apr 2026 20:15:06 +0800 Subject: [PATCH 573/654] add a union(...s) for better readability and renamed binary union to union2 --- .../src/test/mlscript-compile/ShapeSet.mls | 6 +++- .../mlscript-compile/SpecializeHelpers.mls | 30 ++++++++++--------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 20e80e564f..319acb27cd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -39,11 +39,15 @@ fun lift(s: Shape) = ShapeSet(new Map([[s.hash(), s]])) fun liftMany(arr: Array[Shape]) = ShapeSet(new Map(arr.map(s => [s.hash(), s]))) -fun union(s1: ShapeSet, s2: ShapeSet) = +fun union2(s1: ShapeSet, s2: ShapeSet) = if s1.isDyn() then s1 else if s2.isDyn() then s2 else ShapeSet(new Map([...s1.shapeset, ...s2.shapeset])) +fun union(...s) = + if s.length is 0 then ShapeSet.empty + else s.reduce((acc, next) => union2(acc, next)) + fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.shapeset.entries().toArray()).flat())) fun prod(xs) = xs.reduce((a, b) => a.flatMap(d => b.map(e => [...d, e])), [[]]) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 9424313966..259f2c3645 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -92,7 +92,7 @@ class Ctx( fun add(path: Path, ss: ShapeSet) = let ps = showCtxPath(path) if ctx.has(ps) then - ctx.set(ps, union(ctx.get(ps), ss)) + ctx.set(ps, union2(ctx.get(ps), ss)) else ctx.set(ps, ss) this @@ -224,10 +224,10 @@ fun fsplit(pss) = let knownMap = new Map() let unkShape = foldl((acc, s) => if s is Class(sym, params) and isStagedClass(sym.value) then - if knownMap.has(sym) then do knownMap.set(sym, union(knownMap.get(sym), lift(s))) + if knownMap.has(sym) then do knownMap.set(sym, union2(knownMap.get(sym), lift(s))) else do knownMap.set(sym, lift(s)) acc - else union(acc, mkDyn()) + else union2(acc, mkDyn()) )(mkBot(), ...pss.values()) SplitResult(knownMap, unkShape) @@ -279,8 +279,6 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is [End(), recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") - Select(ValueRef(ModuleSymbol(name, value, _)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module - [End(), r, mkClass(clsSymb, argShapes)] // FIXME Select(p, Symbol("concat")) then // TODO: remove these special checks if sop(ctx, p).values() is [Shape.Arr(arr)] and args is [e] and sop(ctx, e.value) is [Shape.Arr(arr2)] then [End(), r, mkArr(arr.concat(arr2))] @@ -290,6 +288,9 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is [End(), r, mkDyn()] // TODO: evaluate if the parameter is static Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _, _)), Symbol("cos")) then [End(), r, mkDyn()] // TODO: evaluate if the parameter is static + + Select(ValueRef(ModuleSymbol(name, value, _)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module + [End(), r, mkClass(clsSymb, argShapes)] // FIXME ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class isStagedClass(clsSymb.value) and let cache = getClassCache(clsSymb.value) @@ -337,8 +338,9 @@ fun sor(ctx, r) = if r is // xOpt stores Some(path) if an Assign block's result is a method call, otherwise it stores None // implctOpt stores an option of the implct field of return -// - +// p is the path p in p.f() +// f is the symbol f in p.f() +// args are the arguments in p.f(args) fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = let pss = sop(ctx, p) let argShapes = args.map(a => sop(ctx, a.value)) @@ -387,7 +389,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = [Arm(Cls(C_i, p), Assign(x, callRes, End())), retShape] ) let armsAcc = armsRet.map(_.0) - let totalStagedRetShape = foldl((acc, x) => union(acc, x.1))(mkBot(), ...armsRet) + let totalStagedRetShape = foldl((acc, x) => union2(acc, x.1))(mkBot(), ...armsRet) let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else let dfltMatch = Call(Select(p, Symbol(f)), args) if isRet then @@ -399,7 +401,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = armsAcc.0.body else Match(p, armsAcc, dfltRet.0, End()) - let totalRetShape = union(totalStagedRetShape, dfltRet.1) + let totalRetShape = union2(totalStagedRetShape, dfltRet.1) [matchBody, totalRetShape] fun prop(ctx, b) = if b is @@ -417,7 +419,7 @@ fun prop(ctx, b) = if b is let newCtx = Ctx(new Map(ctx.ctx), ctx.valueNameCtx, ctx.valDefnCtx, newAllocs, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1] - Assign(x, Call(Select(p, Symbol(f)), args), restBlock) and p is + Assign(x, Call(Select(p, Symbol(f)), args), restBlock) and p is // TODO Can we deduplicate this? ValueRef(symb) and not (symb is ModuleSymbol) then let res = dispatchMethodCall(ctx, Some(x), None, p, f, args) let b2 = prop(ctx.add(ValueRef(x), res.1), restBlock) @@ -440,7 +442,7 @@ fun prop(ctx, b) = if b is fun mergeAssigned(acc, assigned) = assigned.forEach((ss, ps, _) => if acc.has(ps) then - acc.set(ps, union(acc.get(ps), ss)) + acc.set(ps, union2(acc.get(ps), ss)) else acc.set(ps, ss) ) @@ -455,7 +457,7 @@ fun prop(ctx, b) = if b is else let res = propBranch(arm.body, fs) mergeAssigned(r.3, res.2) - [restSet(r.0, arm.cse), union(r.1, res.1), [...r.2, Arm(arm.cse, res.0)], r.3] + [restSet(r.0, arm.cse), union2(r.1, res.1), [...r.2, Arm(arm.cse, res.0)], r.3] )([s, mkBot(), [], new Map()], ...arms) let dfltRes = if filteredArms.0.isEmpty() then [None, mkBot(), new Map()] else if dflt is Some(d) then @@ -465,12 +467,12 @@ fun prop(ctx, b) = if b is mergeAssigned(filteredArms.3, dfltRes.2) filteredArms.3.forEach((ss, ps, _) => if ctx.ctx.has(ps) then - ctx.ctx.set(ps, union(ctx.ctx.get(ps), ss)) + ctx.ctx.set(ps, union2(ctx.ctx.get(ps), ss)) else ctx.ctx.set(ps, ss) ) let restRes = prop(ctx, restBlock) - let retShape = union(union(filteredArms.1, dfltRes.1), restRes.1) + let retShape = union(filteredArms.1, dfltRes.1, restRes.1) if filteredArms.2.length is 0 then if dfltRes.0 is From f79dfd4c90a510033edba74d42e1ba9a91cd0dae Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 26 Apr 2026 20:15:17 +0800 Subject: [PATCH 574/654] add a test to union --- hkmc2/shared/src/test/mlscript/ShapeSetTest.mls | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 94a5eaa175..47e514654a 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -21,12 +21,15 @@ let y = liftMany([Arr([Lit(1)]), Arr([Lit(2)])]) //│ x = {Lit(1),Lit(2)} //│ y = {Arr([Lit(1)]),Arr([Lit(2)])} -union(x, y) +union2(x, y) //│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} -union(mkDyn(), x) +union2(mkDyn(), x) //│ = {Dyn()} +union(mkLit(1), mkLit(2), mkLit(3)) +//│ = {Lit(1),Lit(2),Lit(3)} + mkArr([x, y]) //│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} From ba40d2ed290d0dbf39b2981a03801b4080f713a3 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 26 Apr 2026 23:32:41 +0800 Subject: [PATCH 575/654] fix pattern matching --- .../mlscript-compile/SpecializeHelpers.mls | 59 ++++++++++--------- .../test/mlscript/block-staging/ShapeProp.mls | 46 ++++++++++----- .../block-staging/ShapeSetHelpers.mls | 30 +++++++--- 3 files changed, 85 insertions(+), 50 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 259f2c3645..d4941419ea 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -404,39 +404,40 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = let totalRetShape = union2(totalStagedRetShape, dfltRet.1) [matchBody, totalRetShape] +// [retBlock, retShape, canReachEnd] fun prop(ctx, b) = if b is - End() then [b, mkBot()] + End() then [b, mkBot(), true] Return(Call(Select(p, Symbol(f)), args), implct) and not (f is "concat") and p is // TODO[later]: Ref -> Path, remove special checks ValueRef(symb) and not symb is ModuleSymbol then - dispatchMethodCall(ctx, None, Some(implct), p, f, args) + [...dispatchMethodCall(ctx, None, Some(implct), p, f, args), false] Select(ValueRef(ConcreteClassSymbol), _) then - dispatchMethodCall(ctx, None, Some(implct), p, f, args) + [...dispatchMethodCall(ctx, None, Some(implct), p, f, args), false] Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then - [concat(blk, Return(r1, implct)), s1] + [concat(blk, Return(r1, implct)), s1, false] Scoped(symbols, rest) then - symbols.forEach((x, _, _) => ctx.add(ValueRef(x), mkBot())) + symbols.forEach(x => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] let newCtx = Ctx(new Map(ctx.ctx), ctx.valueNameCtx, ctx.valDefnCtx, newAllocs, ctx.thisShape) let res = prop(newCtx, rest) - [wrapScoped([...symbols, ...newAllocs], res.0), res.1] + [wrapScoped([...symbols, ...newAllocs], res.0), res.1, res.2] Assign(x, Call(Select(p, Symbol(f)), args), restBlock) and p is // TODO Can we deduplicate this? ValueRef(symb) and not (symb is ModuleSymbol) then let res = dispatchMethodCall(ctx, Some(x), None, p, f, args) let b2 = prop(ctx.add(ValueRef(x), res.1), restBlock) - [concat(res.0, b2.0), b2.1] + [concat(res.0, b2.0), b2.1, b2.2] Select(ValueRef(ConcreteClassSymbol), _) then let res = dispatchMethodCall(ctx, Some(x), None, p, f, args) let b2 = prop(ctx.add(ValueRef(x), res.1), restBlock) - [concat(res.0, b2.0), b2.1] + [concat(res.0, b2.0), b2.1, b2.2] Define(ValDefn(opt, sym, rhs), restBlock) and sor(ctx, rhs) is [blk, r1, s1] and do ctx.addValDefn(sym.name, s1) - prop(ctx, restBlock) is [b2, s2] then - [concat(blk, Define(ValDefn(opt, sym, r1), b2)), s2] + prop(ctx, restBlock) is [b2, s2, canReachEnd] then + [concat(blk, Define(ValDefn(opt, sym, r1), b2)), s2, canReachEnd] Assign(x, r, restBlock) and sor(ctx, r) is [blk, r1, s1] and - prop(ctx.add(ValueRef(x), s1), restBlock) is [b2, s2] then - [concat(blk, Assign(x, r1, b2)), s2] + prop(ctx.add(ValueRef(x), s1), restBlock) is [b2, s2, canReachEnd] then + [concat(blk, Assign(x, r1, b2)), s2, canReachEnd] Match(p, arms, dflt, restBlock) then let s = sop(ctx, p) fun mergeAssigned(acc, assigned) = @@ -450,20 +451,20 @@ fun prop(ctx, b) = if b is let branchCtx = ctx.clone if not p is ValueLit do branchCtx.add(p, branchShape) let res = prop(branchCtx, body) - [res.0, res.1, branchCtx.sub(ctx)] + [...res, branchCtx.sub(ctx)] let filteredArms = foldl((r, arm) => let fs = filterSet(r.0, arm.cse) if fs.isEmpty() then r else let res = propBranch(arm.body, fs) - mergeAssigned(r.3, res.2) - [restSet(r.0, arm.cse), union2(r.1, res.1), [...r.2, Arm(arm.cse, res.0)], r.3] - )([s, mkBot(), [], new Map()], ...arms) - let dfltRes = if filteredArms.0.isEmpty() then [None, mkBot(), new Map()] else if dflt is + mergeAssigned(r.3, res.3) + [restSet(r.0, arm.cse), union2(r.1, res.1), [...r.2, Arm(arm.cse, res.0)], r.3, r.4 || res.2] + )([s, mkBot(), [], new Map(), false], ...arms) + let dfltRes = if filteredArms.0.isEmpty() then [None, mkBot(), new Map(), None] else if dflt is Some(d) then let res = propBranch(d, filteredArms.0) - [Some(res.0), res.1, res.2] - else [None, mkBot(), new Map()] + [Some(res.0), res.1, res.3, Some(res.2)] + else [None, mkBot(), new Map(), None] mergeAssigned(filteredArms.3, dfltRes.2) filteredArms.3.forEach((ss, ps, _) => if ctx.ctx.has(ps) then @@ -471,17 +472,19 @@ fun prop(ctx, b) = if b is else ctx.ctx.set(ps, ss) ) + let canReachEnd = filteredArms.4 || (dfltRes.3 is Some(true)) let restRes = prop(ctx, restBlock) - let retShape = union(filteredArms.1, dfltRes.1, restRes.1) + let retShape = if canReachEnd then union(filteredArms.1, dfltRes.1, restRes.1) + else union(filteredArms.1, dfltRes.1) // every possible branch has a return, so the restBlock cannot be reached if filteredArms.2.length is - 0 then - if dfltRes.0 is - Some(d) then [concat(d, restRes.0), retShape] - else [restRes.0, restRes.1] - 1 and filteredArms.0.isEmpty() then - [concat(filteredArms.2.0.body, restRes.0), retShape] - else [Match(p, filteredArms.2, dfltRes.0, restRes.0), retShape] - else [b, mkDyn()] + 0 and + canReachEnd and dfltRes.0 is Some(d) then [concat(d, restRes.0), retShape, true] + not canReachEnd and dfltRes.0 is Some(d) and dfltRes.3 is Some(dcanReachEnd) then [d, retShape, dcanReachEnd] // the rest block is unreachable + else restRes // the else block is unreachable + 1 and dfltRes.0 is None then // the else block is unreachable + [concat(filteredArms.2.0.body, restRes.0), retShape, canReachEnd || restRes.2] + else [Match(p, filteredArms.2, dfltRes.0, restRes.0), retShape, canReachEnd || restRes.2] + else [b, mkDyn(), true] // TODO: debug only; remove this fun propStub(ctx, body) = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 1232947608..c4ed3a18e2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -30,7 +30,7 @@ staged module Simple with let two = Staged.fib(three) pyth(two, 4) fun test2(n) = - let dyn = pyth(n, 2) + let dyn = pyth(n, 2) fib(dyn * 2) Simple."test_gen"() @@ -72,22 +72,41 @@ class C(val x) staged module If with fun f(x) = if x is - C(2) then "C(2)" - C then "C" - else "else" + C(2) then "C(2) " + C then "C " + else "else " fun test() = - f(C(2)) - f(C(3)) - f(2) + f(C(2)) + f(C(3)) + f(2) + fun test2(x, y) = + if x is 1 and + y is 1 then + return 1 + else + 2 + else + 3 + 4 If."test_gen"() +//│ = ["test", {Lit("C(2) C else ")}] + +If."test2_gen"(mkLit(1), mkDyn()) +//│ = ["test2_Lit1_Dyn", {Lit(1),Lit(4)}] + print(If."cache$If") //│ > module If with //│ > () -//│ > fun f_C_Lit2(x) = "C(2)" -//│ > fun f_C_Lit3(x) = "C" -//│ > fun f_Lit2(x) = "else" -//│ > fun test() = "else" +//│ > fun f_C_Lit2(x) = "C(2) " +//│ > fun f_C_Lit3(x) = "C " +//│ > fun f_Lit2(x) = "else " +//│ > fun test() = "C(2) C else " +//│ > fun test2_Lit1_Dyn(x, y) = +//│ > let {tmp6} +//│ > if y is +//│ > 1 then 1 +//│ > else +//│ > tmp6 = 2 +//│ > 4 class C(val n) staged module If2 with @@ -305,8 +324,7 @@ staged module NonTermination with else f(x, y + 1) :re -NonTermination."f_gen"(mkDyn(), mkLit(0)) -//│ ═══[RUNTIME ERROR] RangeError: Maximum call stack size exceeded +// NonTermination."f_gen"(mkDyn(), mkLit(0)) fun g(x, y) = x + y @@ -332,7 +350,7 @@ module Opaque with staged module M with fun f() = Opaque.f() M."f_gen"() -//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:197) +//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:196) staged class Bar(val x) with fun bar() = x diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index add21f7b37..67e857d39c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -317,7 +317,8 @@ prop(Ctx.empty(), c) //│ [Symbol("x")], //│ Assign(Symbol("x"), ValueLit(2), Return(ValueLit(3), false)) //│ ), -//│ {Lit(3)} +//│ {Lit(3)}, +//│ false //│ ] //│ c = Scoped( //│ [Symbol("x")], @@ -336,12 +337,14 @@ prop(Ctx.empty(), c) let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(VirtualClassSymbol("Bool"), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1), false)), Arm(Lit(8), Return(ValueLit(2), false)), Arm(Cls(VirtualClassSymbol("Int"), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3), false))], Some(Return(ValueLit(0), false)), End()))) prop(Ctx.empty(), c) +//│ > false //│ = [ //│ Scoped( //│ [Symbol("x")], //│ Assign(Symbol("x"), ValueLit(9), Return(ValueLit(3), false)) //│ ), -//│ {Lit(3)} +//│ {Lit(3)}, +//│ false //│ ] //│ c = Scoped( //│ [Symbol("x")], @@ -382,7 +385,7 @@ module M with :ignore val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.383: val MSym = ValueRef(ModuleSymbol("M", M, false)) +//│ ║ l.386: val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ║ ^ //│ ╙── Module argument passed to a non-module parameter. //│ MSym = ValueRef(ModuleSymbol("M", class M, false)) @@ -416,7 +419,7 @@ val blockAdd = Return(Call(plus, [Arg(ValueRef(x)), Arg(ValueRef(y))]), false) printCode(blockAdd) prop(ctxXY, blockAdd) //│ > x + y -//│ = [Return(ValueLit(42), false), {Lit(42)}] +//│ = [Return(ValueLit(42), false), {Lit(42)}, false] //│ blockAdd = Return( //│ Call( //│ ValueRef(Symbol("+")), @@ -437,12 +440,14 @@ prop(Ctx.empty(), blockBranch) //│ > else //│ > z = 3 //│ > z +//│ > true //│ = [ //│ Scoped( //│ [Symbol("z")], //│ Assign(Symbol("z"), ValueLit(1), Return(ValueLit(1), false)) //│ ), -//│ {Lit(1)} +//│ {Lit(1)}, +//│ true //│ ] //│ blockBranch = Scoped( //│ [Symbol("z")], @@ -467,6 +472,7 @@ prop(Ctx.empty(), earlyRetBlock) //│ > false then //│ > y = 20 //│ > y +//│ > true //│ = [ //│ Scoped( //│ [Symbol("x"), Symbol("y")], @@ -476,7 +482,8 @@ prop(Ctx.empty(), earlyRetBlock) //│ Assign(Symbol("y"), ValueLit(20), Return(ValueLit(20), false)) //│ ) //│ ), -//│ {Lit(20)} +//│ {Lit(20)}, +//│ true //│ ] //│ earlyRetBlock = Scoped( //│ [Symbol("x"), Symbol("y")], @@ -496,8 +503,10 @@ prop(Ctx.empty(), earlyRetBlock) //│ ) val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Match(ValueRef(y), [Arm(Lit(true), Return(ValueLit(1), false))], Some(Return(ValueLit(2), false)), End()))], Some(Return(ValueLit(3), false)), Return(ValueLit(4), false))))) -printCode(nestedBlock) val res = prop(Ctx.empty(), nestedBlock) +printCode(nestedBlock) +printCode(res.0) +//│ > false //│ > let {x, y} //│ > x = true //│ > y = false @@ -508,6 +517,10 @@ val res = prop(Ctx.empty(), nestedBlock) //│ > else 2 //│ > else 3 //│ > 4 +//│ > let {x, y} +//│ > x = true +//│ > y = false +//│ > 2 //│ nestedBlock = Scoped( //│ [Symbol("x"), Symbol("y")], //│ Assign( @@ -544,7 +557,8 @@ val res = prop(Ctx.empty(), nestedBlock) //│ Assign(Symbol("y"), ValueLit(false), Return(ValueLit(2), false)) //│ ) //│ ), -//│ {Lit(2)} +//│ {Lit(2)}, +//│ false //│ ] val2path(1, mut [], new Map()) From f46b2475498beeb80241f6790a1110b827179b70 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 26 Apr 2026 23:44:18 +0800 Subject: [PATCH 576/654] update staged block printing --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 4 ++-- hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index e42420c6cd..01f4772043 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -200,8 +200,8 @@ class Printer(val owner: Opt[Symbol]) with + showResult(rhs) + showRestBlock(rest) Define(d, rest) then showDefn(d) + showRestBlock(rest) - Return(res, _) then - showResult(res) + Return(res, implct) then + (if implct then "return " else "") + showResult(res) Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" + indent("\n" + arms.map(showArm(_)).join("\n")) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 22ebb0f7bf..2ed2b290c1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -62,7 +62,7 @@ printCode(ClsLikeDefn(bSym, [], [])) printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), Return(ValueRef(Symbol("x")), true)))) //│ > let {x, y} //│ > x = 4.2 -//│ > x +//│ > return x printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2), false)), Arm(Cls(dSym, ValueRef(dSym)), Return(ValueLit(3), false))], Some(Return(ValueRef(Symbol("x")), false)), End())) //│ > if x is From d9824f5e3fbe347f240a21293c90d9b8581f71b8 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 26 Apr 2026 23:57:08 +0800 Subject: [PATCH 577/654] make staged classes in staged moduels work --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e34351cc2c..3ecce14033 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -512,7 +512,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S companion.copy( methods = entryFun :: newCtorFun :: newMethods, - ctor = Begin(companion.ctor, cont(End())), + ctor = Begin(applyBlock(companion.ctor), cont(End())), ) case b => super.applyObjBody(companion) @@ -572,7 +572,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S methods = combinedEntryFun :: newPreCtorFun :: newCtorFun :: newMethods ++ companionMethods, ctor = Begin(companion.ctor, cont(End())), ) - val newClsLikeDefn = defn.copy(companion = S(newCompanion))(defn.configOverride) + val newClsLikeDefn = defn.copy(companion = S(newCompanion), ctor = applyBlock(ctor))(defn.configOverride) Define(newClsLikeDefn, applyBlock(rest)) case b => super.applyBlock(b) From 9ef8876797c793cd35666f22c091f070bb7dc1da Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 27 Apr 2026 00:40:37 +0800 Subject: [PATCH 578/654] add a test --- .../test/mlscript/block-staging/ShapeProp.mls | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index c4ed3a18e2..87a440b339 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -276,6 +276,20 @@ print(L3.class."class$cache$L3") //│ > tmp1 = *(x, 2) //│ > tmp1 + 3 +staged class Bar(val x) with + fun bar() = x +staged class Foo(val x) with + fun foo(b) = + if b is + 1 then x.bar() + 1 + 2 then x.bar() + 2 + else x.bar() + +staged module Dispatching2 with + fun baz(b) = Foo(Bar(1)).foo(b) + +Dispatching2."baz_gen"(mkDyn()) +//│ = ["baz", {Lit(1),Lit(2),Lit(3)}] staged class A(val x: Int) with fun f(y: Int) = x + y @@ -331,8 +345,8 @@ fun g(x, y) = x + y staged module GlobalFunction with fun test(x) = g(x, x) -GlobalFunction."test_gen"(union(mkLit(1), mkLit(2))) -//│ = ["test_Union_Lit1_Lit2_end", {Dyn()}] +GlobalFunction."test_gen"(mkLit(1)) +//│ = ["test_Lit1", {Dyn()}] staged module Comparison with fun test(x) = x < 5 @@ -351,18 +365,3 @@ staged module M with fun f() = Opaque.f() M."f_gen"() //│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:196) - -staged class Bar(val x) with - fun bar() = x -staged class Foo(val x) with - fun foo(b) = - if b is - 1 then x.bar() + 1 - 2 then x.bar() + 2 - else x.bar() - -staged module SimpleStagedExample with - fun baz() = Foo(Bar(1)).foo(1) - -SimpleStagedExample."baz_gen"() -//│ = ["baz", {Lit(2)}] From 7a69235cb0d95b9ddb4543d6bf47e98a77dc2b47 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Mon, 27 Apr 2026 15:19:42 +0800 Subject: [PATCH 579/654] WIP: Continue to improve benchmarking and fix some minor problems --- .../src/test/mlscript-compile/Block.mls | 4 +- .../mlscript-compile/NaiveTransform3D.mls | 78 +- .../src/test/mlscript-compile/ShapeSet.mls | 3 +- .../mlscript-compile/SpecializeHelpers.mls | 16 +- .../mlscript-compile/staging/Transform3D.mls | 50 +- .../staging/out/Transform3D.mls | 2995 +++++++---------- .../block-staging/Transform3DTest.mls | 8 + 7 files changed, 1237 insertions(+), 1917 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 01f4772043..c37a8c86e3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -243,7 +243,7 @@ fun codegen(name, cache, source, file) = fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") let originData = fs.readFileSync(fullpath, "utf8") - let newData = "#config(noFreeze: true)\n" + code + let newData = "#config(noFreeze: true)\n" + "#config(noModuleCheck: true)\n" + code if newData != originData do fs.writeFileSync(fullpath, newData, "utf8") @@ -258,6 +258,6 @@ fun generateAll(name, file, ...modules) = [res.0 + "import \"" + source + "\"\n", res.1 + "open " + name + "\n", res.2 + indent(mod.("cache$" + name).toString()) + "\n"] )(["", "", ""], ...modules) let originData = fs.readFileSync(fullpath, "utf8") - let newData = "#config(noFreeze: true)\n" + code.0 + "\n" + code.1 + "\n" + "module " + name + " with" + indent("\n" + code.2) + let newData = "#config(noFreeze: true)\n" + "#config(noModuleCheck: true)\n" + code.0 + "\n" + code.1 + "\n" + "module " + name + " with" + indent("\n" + code.2) if newData != originData do fs.writeFileSync(fullpath, newData, "utf8") \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls index 37a9b924cc..c1f7e8052d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls @@ -1,44 +1,51 @@ #config(noFreeze: true) +module Mx with + fun init(len, dft) = globalThis.Array(len).fill(dft) + fun set1D(a, i, v) = + set a.(i) = v + a + fun set2D(m, i, j, v) = + set m.(i).(j) = v + m + module NaiveTransform3D with fun iter(sum, x, y, colX, i, j, k) = if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) else sum - fun iterCol(vec, x, y, colX, colY, i, j) = - if j === 0 then vec - else iterCol(vec.concat([iter of 0.0, x, y, colX, i, colY - j, colX]), x, y, colX, colY, i, j - 1) + fun iterCol(m, x, y, colX, colY, i, j) = + if j === 0 then m + else iterCol(Mx.set2D(m, i, colY - j, iter(0.0, x, y, colX, i, colY - j, colX)), x, y, colX, colY, i, j - 1) fun iterRow(m, x, y, rowX, colX, colY, i) = if i === 0 then m - else iterRow(m.concat([iterCol of [], x, y, colX, colY, rowX - i, colY]), x, y, rowX, colX, colY, i - 1) + else iterRow(iterCol(m, x, y, colX, colY, rowX - i, colY), x, y, rowX, colX, colY, i - 1) - fun genID(v, w, i, j) = - if j === 0 then v - else genID(v.concat([if i === w - j then 1.0 else 0.0]), w, i, j - 1) + fun iterInit(m, r, c, i) = + if i === 0 then m + else + iterInit(Mx.set1D(m, r - i, Mx.init(c, 0)), r, c, i - 1) fun iterID(m, w, i) = if i === 0 then m - else iterID(m.concat([genID([], w, w - i, w)]), w, i - 1) - - fun updateVec(vec, m, col, j, v, i', j') = - if j' === 0 then vec - else if col - j' === j then updateVec(vec.concat([v]), m, col, j, v, i', j' - 1) - else updateVec(vec.concat([m.(i').(col - j')]), m, col, j, v, i', j' - 1) - - fun iterUpdate(res, m, row, col, i, j, v, i') = - if i' === 0 then res - else if i === row - i' then iterUpdate(res.concat([updateVec([], m, col, j, v, row - i', col)]), m, row, col, i, j, v, i' - 1) - else iterUpdate(res.concat([m.(row - i')]), m, row, col, i, j, v, i' - 1) + else + iterID(Mx.set2D(m, w - i, w - i, 1), w, i - 1) // TODO: remove manual lifting above after we can stage them correctly + fun zeros(r, c) = + let m = Mx.init(r, []) + iterInit(m, r, c, r) + m + fun multiply(x, y) = let rowX = x.length let colX = x.0.length let rowY = y.length let colY = y.0.length - iterRow([], x, y, rowX, colX, colY, rowX) + let res = zeros(rowX, colY) + iterRow(res, x, y, rowX, colX, colY, rowX) // fun multiply(x, y) = // let rowX = x.length // let colX = x.0.length @@ -57,34 +64,11 @@ module NaiveTransform3D with // iterRow(m.concat([iterCol of [], 0]), i + 1) // iterRow([], 0) - fun ident(w) = iterID([], w, w) - // fun ident(w) = - // fun iter(m, i) = - // if i === w then m - // else - // fun gen(v, j) = - // if j === w then v - // else gen(v.concat(if i === j then 1.0 else 0.0), j + 1) - // iter(m.concat([gen([], 0)]), i + 1) - // iter([], 0) - - fun update(m, i, j, v) = - let row = m.length - let col = m.0.length - iterUpdate([], m, row, col, i, j, v, row) - // fun update(m, i, j, v) = - // let row = m.length - // let col = m.0.length - // fun iter(res, i') = - // if i' === row then res - // else if i === i' then - // fun iterVec(vec, j') = - // if j' === col then vec - // else if j' === j then iterVec(vec.concat(v), j' + 1) - // else iterVec(vec.concat(m.(i').(j')), j' + 1) - // iter(res.concat([iterVec([], 0)]), i' + 1) - // else iter(res.concat([m.(i')]), i' + 1) - // iter([], 0) + fun ident(w) = + let m = zeros(w, w) + iterID(m, w, w) + + fun update(m, i, j, v) = Mx.set2D(m, i, j, v) fun transform(dx, dy, dz) = update of diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 319acb27cd..28f34366cc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -185,11 +185,12 @@ fun val2path(v, allocs, valueMap) = else if Array.isArray(v) then let mapped = v.map(val2path(_, allocs, valueMap)) let blocks = mapped.map(_.0) + blocks.reverse() let paths = mapped.map(_.1) let tupSym = freshId("tup") allocs.push(tupSym) let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map(Block.Arg(_))), Block.End()) - let fullBlock = foldl((b, acc) => Block.concat(b, acc))(tupAssign, ...blocks) + let fullBlock = foldr((acc, b) => Block.concat(b, acc))(tupAssign, ...blocks) [fullBlock, Block.ValueRef(tupSym)] else if not (v is undefined) and not (v is null) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then let meta = v.constructor.(Symbols.definitionMetadata) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index d4941419ea..27fff10968 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -279,16 +279,6 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is [End(), recovered, sop(ctx, recovered)] Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") - Select(p, Symbol("concat")) then // TODO: remove these special checks - if sop(ctx, p).values() is [Shape.Arr(arr)] and args is [e] and sop(ctx, e.value) is [Shape.Arr(arr2)] then - [End(), r, mkArr(arr.concat(arr2))] - else - [End(), r, mkDyn()] - Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _, _)), Symbol("sin")) then - [End(), r, mkDyn()] // TODO: evaluate if the parameter is static - Select(Select(ValueRef(Symbol("globalThis")), ModuleSymbol("Math", _, _)), Symbol("cos")) then - [End(), r, mkDyn()] // TODO: evaluate if the parameter is static - Select(ValueRef(ModuleSymbol(name, value, _)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module [End(), r, mkClass(clsSymb, argShapes)] // FIXME ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class @@ -320,9 +310,9 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is let evaluated = f_imp(...argShapes.map(valOfSet)) let evaluated_path = val2path(evaluated, ctx.allocs, ctx.valueNameCtx) [evaluated_path.0, evaluated_path.1, sov(evaluated, ctx.valueNameCtx)] - else - [End(), r, mkDyn()] // non staged function and some params unknown - else throw Error("unknown call in sor: " + r.toString()) + else + [End(), r, mkDyn()] // non staged function and some params unknown + // else throw Error("unknown call in sor: " + r.toString()) // shape of result: return [blk, res, s] // where blk is the block needed to construct the result res (End() if not needed) and s is the shape diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls index c1de334187..97c3f6f182 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls @@ -1,47 +1,54 @@ #config(noFreeze: true) +module Mx with + fun init(len, dft) = globalThis.Array(len).fill(dft) + fun set1D(a, i, v) = + set a.(i) = v + a + fun set2D(m, i, j, v) = + set m.(i).(j) = v + m + staged module Transform3D with fun iter(sum, x, y, colX, i, j, k) = if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) else sum - fun iterCol(vec, x, y, colX, colY, i, j) = - if j === 0 then vec - else iterCol(vec.concat([iter of 0.0, x, y, colX, i, colY - j, colX]), x, y, colX, colY, i, j - 1) + fun iterCol(m, x, y, colX, colY, i, j) = + if j === 0 then m + else iterCol(Mx.set2D(m, i, colY - j, iter(0.0, x, y, colX, i, colY - j, colX)), x, y, colX, colY, i, j - 1) fun iterRow(m, x, y, rowX, colX, colY, i) = if i === 0 then m - else iterRow(m.concat([iterCol of [], x, y, colX, colY, rowX - i, colY]), x, y, rowX, colX, colY, i - 1) + else iterRow(iterCol(m, x, y, colX, colY, rowX - i, colY), x, y, rowX, colX, colY, i - 1) - fun genID(v, w, i, j) = - if j === 0 then v - else genID(v.concat([if i === w - j then 1.0 else 0.0]), w, i, j - 1) + fun iterInit(m, r, c, i) = + if i === 0 then m + else + iterInit(Mx.set1D(m, r - i, Mx.init(c, 0)), r, c, i - 1) fun iterID(m, w, i) = if i === 0 then m - else iterID(m.concat([genID([], w, w - i, w)]), w, i - 1) + else + iterID(Mx.set2D(m, w - i, w - i, 1), w, i - 1) - fun updateVec(vec, m, col, j, v, i', j') = - if j' === 0 then vec - else updateVec(if col - j' === j then vec.concat([v]) else vec.concat([m.(i').(col - j')]), m, col, j, v, i', j' - 1) - - fun iterUpdate(res, m, row, col, i, j, v, i') = - if i' === 0 then res - else iterUpdate(if i === row - i' then res.concat([updateVec([], m, col, j, v, row - i', col)]) else res.concat([m.(row - i')]), m, row, col, i, j, v, i' - 1) + fun zeros(r, c) = + let m = Mx.init(r, []) + iterInit(m, r, c, r) fun multiply(x, y) = let rowX = x.length let colX = x.0.length let rowY = y.length let colY = y.0.length - iterRow([], x, y, rowX, colX, colY, rowX) + let res = zeros(rowX, colY) + iterRow(res, x, y, rowX, colX, colY, rowX) - fun ident(w) = iterID([], w, w) + fun ident(w) = + let m = zeros(w, w) + iterID(m, w, w) - fun update(m, i, j, v) = - let row = m.length - let col = m.0.length - iterUpdate([], m, row, col, i, j, v, row) + fun update(m, i, j, v) = Mx.set2D(m, i, j, v) fun transform(dx, dy, dz) = update of @@ -85,7 +92,6 @@ staged module Transform3D with , 1, 0, s , 1, 1, c - fun model(local, position, scaling, rotation) = let rot = multiply of rotateZ(rotation.2), multiply of diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index d78477086a..f9ca46607d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -1,227 +1,20 @@ #config(noFreeze: true) +#config(noModuleCheck: true) import "../Transform3D.mls" module Transform3D with () - fun genID(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = ===(j, 0) - if scrut3 is - true then v - else - tmp16 = w - j - scrut4 = ===(i, tmp16) - if scrut4 is - true then - tmp17 = 1 - else - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = j - 1 - genID(tmp19, w, i, tmp20) - fun genID_Arr__end_Dyn_Dyn_Dyn(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20, tup_2} - scrut3 = ===(j, 0) - if scrut3 is - true then - tup_2 = [] - tup_2 - else - tmp16 = w - j - scrut4 = ===(i, tmp16) - if scrut4 is - true then - tmp17 = 1 - else - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = j - 1 - genID(tmp19, w, i, tmp20) - fun genID_Arr__end_Lit4_Lit0_Lit4(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 0 - scrut4 = true - tmp17 = 1 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit0_Lit3(tmp19, w, i, tmp20) - fun genID_Arr__end_Lit4_Lit1_Lit4(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 0 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit1_Lit3(tmp19, w, i, tmp20) - fun genID_Arr__end_Lit4_Lit2_Lit4(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 0 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit2_Lit3(tmp19, w, i, tmp20) - fun genID_Arr__end_Lit4_Lit3_Lit4(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 0 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 3 - genID_Dyn_Lit4_Lit3_Lit3(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit0_Lit0(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = true - v - fun genID_Dyn_Lit4_Lit0_Lit1(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 3 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit0_Lit0(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit0_Lit2(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 2 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 1 - genID_Dyn_Lit4_Lit0_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit0_Lit3(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 1 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit0_Lit2(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit1_Lit0(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = true - v - fun genID_Dyn_Lit4_Lit1_Lit1(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 3 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit1_Lit0(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit1_Lit2(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 2 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 1 - genID_Dyn_Lit4_Lit1_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit1_Lit3(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 1 - scrut4 = true - tmp17 = 1 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit1_Lit2(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit2_Lit0(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = true - v - fun genID_Dyn_Lit4_Lit2_Lit1(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 3 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit2_Lit0(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit2_Lit2(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 2 - scrut4 = true - tmp17 = 1 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 1 - genID_Dyn_Lit4_Lit2_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit2_Lit3(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 1 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit2_Lit2(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit3_Lit0(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = true - v - fun genID_Dyn_Lit4_Lit3_Lit1(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 3 - scrut4 = true - tmp17 = 1 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 0 - genID_Dyn_Lit4_Lit3_Lit0(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit3_Lit2(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 2 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 1 - genID_Dyn_Lit4_Lit3_Lit1(tmp19, w, i, tmp20) - fun genID_Dyn_Lit4_Lit3_Lit3(v, w, i, j) = - let {scrut3, scrut4, tmp16, tmp17, tmp18, tmp19, tmp20} - scrut3 = false - tmp16 = 1 - scrut4 = false - tmp17 = 0 - tmp18 = [tmp17] - tmp19 = v.concat(tmp18) - tmp20 = 2 - genID_Dyn_Lit4_Lit3_Lit2(tmp19, w, i, tmp20) fun ident(w) = - let {tmp43} - tmp43 = [] - iterID_Arr__end_Dyn_Dyn(tmp43, w, w) + let {m5} + m5 = zeros(w, w) + iterID(m5, w, w) fun ident_Lit4(w) = - let {tmp43} - tmp43 = [] - iterID_Arr__end_Lit4_Lit4(tmp43, w, w) + let {tup_170, tup_171, tup_172, tup_173, tup_174} + tup_170 = [1, 0, 0, 0] + tup_171 = [0, 1, 0, 0] + tup_172 = [0, 0, 1, 0] + tup_173 = [0, 0, 0, 1] + tup_174 = [tup_170, tup_171, tup_172, tup_173] + tup_174 fun iter(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -234,1010 +27,764 @@ module Transform3D with tmp4 = k - 1 iter(tmp3, x, y, colX, i, j, tmp4) else sum - fun iterCol(vec, x, y, colX, colY, i, j) = + fun iterCol(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is - true then vec + true then m else tmp5 = colY - j - tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) - tmp7 = [tmp6] - tmp8 = vec.concat(tmp7) + tmp6 = colY - j + tmp7 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) tmp9 = j - 1 iterCol(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(vec, x, y, colX, colY, i, j) = + fun iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 - tmp6 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp5, colX) - tmp7 = [tmp6] - tmp8 = vec.concat(tmp7) + tmp6 = 0 + tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) tmp9 = 0 - iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_1} + iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = true + m + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = true + m + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 0 + tmp6 = 0 + tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = 0 + iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = true + m + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 0 + tmp6 = 0 + tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = 0 + iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = true + m + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 0 + tmp6 = 0 + tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = 0 + iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is - true then - tup_1 = [] - tup_1 + true then m else tmp5 = colY - j - tmp6 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp5, colX) - tmp7 = [tmp6] - tmp8 = vec.concat(tmp7) + tmp6 = colY - j + tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) tmp9 = j - 1 - iterCol(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(vec, x, y, colX, colY, i, j) = + iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = ===(j, 0) + if scrut1 is + true then m + else + tmp5 = colY - j + tmp6 = colY - j + tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = j - 1 + iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = ===(j, 0) + if scrut1 is + true then m + else + tmp5 = colY - j + tmp6 = colY - j + tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = j - 1 + iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = ===(j, 0) + if scrut1 is + true then m + else + tmp5 = colY - j + tmp6 = colY - j + tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = j - 1 + iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = true + m + fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 0 + tmp6 = 0 + tmp7 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = 0 + iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true - vec + m + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 3 + tmp6 = 3 + tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = 0 + iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 2 + tmp6 = 2 + tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = 1 + iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 1 + tmp6 = 1 + tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = 2 + iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(tmp8, x, y, colX, colY, i, tmp9) + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, colY, i, j) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 0 + tmp6 = 0 + tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp6, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp9 = 3 + iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(tmp8, x, y, colX, colY, i, tmp9) fun iterID(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = ===(i, 0) - if scrut5 is + let {scrut4, tmp17, tmp18, tmp19, tmp20} + scrut4 = ===(i, 0) + if scrut4 is true then m else - tmp21 = [] - tmp22 = w - i - tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = i - 1 - iterID(tmp25, w, tmp26) - fun iterID_Arr__end_Dyn_Dyn(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tup_5} - scrut5 = ===(i, 0) - if scrut5 is - true then - tup_5 = [] - tup_5 + tmp17 = w - i + tmp18 = w - i + tmp19 = Transform3D."Mx$Transform3D".set2D(m, tmp17, tmp18, 1) + tmp20 = i - 1 + iterID(tmp19, w, tmp20) + fun iterID_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4(m, w, i) = + let {tup_160, tup_161, tup_162, tup_163, tup_164} + tup_160 = [1, 0, 0, 0] + tup_161 = [0, 1, 0, 0] + tup_162 = [0, 0, 1, 0] + tup_163 = [0, 0, 0, 1] + tup_164 = [tup_160, tup_161, tup_162, tup_163] + tup_164 + fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit3(m, w, i) = + let {tup_150, tup_151, tup_152, tup_153, tup_154} + tup_150 = [1, 0, 0, 0] + tup_151 = [0, 1, 0, 0] + tup_152 = [0, 0, 1, 0] + tup_153 = [0, 0, 0, 1] + tup_154 = [tup_150, tup_151, tup_152, tup_153] + tup_154 + fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit2(m, w, i) = + let {tup_140, tup_141, tup_142, tup_143, tup_144} + tup_140 = [1, 0, 0, 0] + tup_141 = [0, 1, 0, 0] + tup_142 = [0, 0, 1, 0] + tup_143 = [0, 0, 0, 1] + tup_144 = [tup_140, tup_141, tup_142, tup_143] + tup_144 + fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit1(m, w, i) = + let {tup_130, tup_131, tup_132, tup_133, tup_134} + tup_130 = [1, 0, 0, 0] + tup_131 = [0, 1, 0, 0] + tup_132 = [0, 0, 1, 0] + tup_133 = [0, 0, 0, 1] + tup_134 = [tup_130, tup_131, tup_132, tup_133] + tup_134 + fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit4_Lit0(m, w, i) = + let {tup_120, tup_121, tup_122, tup_123, tup_124} + tup_120 = [1, 0, 0, 0] + tup_121 = [0, 1, 0, 0] + tup_122 = [0, 0, 1, 0] + tup_123 = [0, 0, 0, 1] + tup_124 = [tup_120, tup_121, tup_122, tup_123] + tup_124 + fun iterInit(m, r, c, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16} + scrut3 = ===(i, 0) + if scrut3 is + true then m else - tmp21 = [] - tmp22 = w - i - tmp23 = genID_Arr__end_Dyn_Dyn_Dyn(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = i - 1 - iterID(tmp25, w, tmp26) - fun iterID_Arr__end_Lit4_Lit4(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 0 - tmp23 = genID_Arr__end_Lit4_Lit0_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 3 - iterID_Dyn_Lit4_Lit3(tmp25, w, tmp26) - fun iterID_Dyn_Lit4_Lit0(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = true + tmp13 = r - i + tmp14 = Transform3D."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp16 = i - 1 + iterInit(tmp15, r, c, tmp16) + fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4_Lit0(m, r, c, i) = + let {tup_35, tup_36, tup_37, tup_38, tup_39} + tup_35 = [0, 0, 0, 0] + tup_36 = [0, 0, 0, 0] + tup_37 = [0, 0, 0, 0] + tup_38 = [0, 0, 0, 0] + tup_39 = [tup_35, tup_36, tup_37, tup_38] + tup_39 + fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_end_Lit4_Lit4_Lit1(m, r, c, i) = + let {tup_45, tup_46, tup_47, tup_48, tup_49} + tup_45 = [0, 0, 0, 0] + tup_46 = [0, 0, 0, 0] + tup_47 = [0, 0, 0, 0] + tup_48 = [0, 0, 0, 0] + tup_49 = [tup_45, tup_46, tup_47, tup_48] + tup_49 + fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit4_Lit2(m, r, c, i) = + let {tup_55, tup_56, tup_57, tup_58, tup_59} + tup_55 = [0, 0, 0, 0] + tup_56 = [0, 0, 0, 0] + tup_57 = [0, 0, 0, 0] + tup_58 = [0, 0, 0, 0] + tup_59 = [tup_55, tup_56, tup_57, tup_58] + tup_59 + fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit3(m, r, c, i) = + let {tup_65, tup_66, tup_67, tup_68, tup_69} + tup_65 = [0, 0, 0, 0] + tup_66 = [0, 0, 0, 0] + tup_67 = [0, 0, 0, 0] + tup_68 = [0, 0, 0, 0] + tup_69 = [tup_65, tup_66, tup_67, tup_68] + tup_69 + fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Lit4_Lit1_Lit0(m, r, c, i) = + let {tup_381, tup_382, tup_383, tup_384, tup_385} + tup_381 = [0] + tup_382 = [0] + tup_383 = [0] + tup_384 = [0] + tup_385 = [tup_381, tup_382, tup_383, tup_384] + tup_385 + fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr__end_end_Lit4_Lit1_Lit1(m, r, c, i) = + let {tup_391, tup_392, tup_393, tup_394, tup_395} + tup_391 = [0] + tup_392 = [0] + tup_393 = [0] + tup_394 = [0] + tup_395 = [tup_391, tup_392, tup_393, tup_394] + tup_395 + fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit1_Lit2(m, r, c, i) = + let {tup_401, tup_402, tup_403, tup_404, tup_405} + tup_401 = [0] + tup_402 = [0] + tup_403 = [0] + tup_404 = [0] + tup_405 = [tup_401, tup_402, tup_403, tup_404] + tup_405 + fun iterInit_Arr_Arr_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit3(m, r, c, i) = + let {tup_411, tup_412, tup_413, tup_414, tup_415} + tup_411 = [0] + tup_412 = [0] + tup_413 = [0] + tup_414 = [0] + tup_415 = [tup_411, tup_412, tup_413, tup_414] + tup_415 + fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m, r, c, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16} + scrut3 = false + tmp13 = 0 + tmp14 = Transform3D."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp16 = 3 + iterInit_Dyn_Lit4_Dyn_Lit3(tmp15, r, c, tmp16) + fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit4(m, r, c, i) = + let {tup_421, tup_422, tup_423, tup_424, tup_425} + tup_421 = [0] + tup_422 = [0] + tup_423 = [0] + tup_424 = [0] + tup_425 = [tup_421, tup_422, tup_423, tup_424] + tup_425 + fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit4(m, r, c, i) = + let {tup_75, tup_76, tup_77, tup_78, tup_79} + tup_75 = [0, 0, 0, 0] + tup_76 = [0, 0, 0, 0] + tup_77 = [0, 0, 0, 0] + tup_78 = [0, 0, 0, 0] + tup_79 = [tup_75, tup_76, tup_77, tup_78] + tup_79 + fun iterInit_Dyn_Dyn_Lit1_Dyn(m, r, c, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_206} + scrut3 = ===(i, 0) + if scrut3 is + true then m + else + tmp13 = r - i + tup_206 = [0] + tmp14 = tup_206 + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp16 = i - 1 + iterInit_Dyn_Dyn_Lit1_Dyn(tmp15, r, c, tmp16) + fun iterInit_Dyn_Dyn_Lit4_Dyn(m, r, c, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_205} + scrut3 = ===(i, 0) + if scrut3 is + true then m + else + tmp13 = r - i + tup_205 = [0, 0, 0, 0] + tmp14 = tup_205 + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp16 = i - 1 + iterInit_Dyn_Dyn_Lit4_Dyn(tmp15, r, c, tmp16) + fun iterInit_Dyn_Lit4_Dyn_Lit0(m, r, c, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16} + scrut3 = true m - fun iterID_Dyn_Lit4_Lit1(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 3 - tmp23 = genID_Arr__end_Lit4_Lit3_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 0 - iterID_Dyn_Lit4_Lit0(tmp25, w, tmp26) - fun iterID_Dyn_Lit4_Lit2(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 2 - tmp23 = genID_Arr__end_Lit4_Lit2_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 1 - iterID_Dyn_Lit4_Lit1(tmp25, w, tmp26) - fun iterID_Dyn_Lit4_Lit3(m, w, i) = - let {scrut5, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26} - scrut5 = false - tmp21 = [] - tmp22 = 1 - tmp23 = genID_Arr__end_Lit4_Lit1_Lit4(tmp21, w, tmp22, w) - tmp24 = [tmp23] - tmp25 = m.concat(tmp24) - tmp26 = 2 - iterID_Dyn_Lit4_Lit2(tmp25, w, tmp26) + fun iterInit_Dyn_Lit4_Dyn_Lit1(m, r, c, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16} + scrut3 = false + tmp13 = 3 + tmp14 = Transform3D."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp16 = 0 + iterInit_Dyn_Lit4_Dyn_Lit0(tmp15, r, c, tmp16) + fun iterInit_Dyn_Lit4_Dyn_Lit2(m, r, c, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16} + scrut3 = false + tmp13 = 2 + tmp14 = Transform3D."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp16 = 1 + iterInit_Dyn_Lit4_Dyn_Lit1(tmp15, r, c, tmp16) + fun iterInit_Dyn_Lit4_Dyn_Lit3(m, r, c, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16} + scrut3 = false + tmp13 = 1 + tmp14 = Transform3D."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp16 = 2 + iterInit_Dyn_Lit4_Dyn_Lit2(tmp15, r, c, tmp16) fun iterRow(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} + let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) if scrut2 is true then m else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow(tmp14, x, y, rowX, colX, colY, tmp15) - fun iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_23} - scrut2 = ===(i, 0) - if scrut2 is - true then - tup_23 = [] - tup_23 - else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) - fun iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tup_4} + tmp10 = rowX - i + tmp11 = iterCol(m, x, y, colX, colY, tmp10, colY) + tmp12 = i - 1 + iterRow(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = false + tmp10 = 0 + tmp11 = iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp12 = 3 + iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = true + m + fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = false + tmp10 = 3 + tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp12 = 0 + iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = false + tmp10 = 2 + tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp12 = 1 + iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = false + tmp10 = 1 + tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp12 = 2 + iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = true + m + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = false + tmp10 = 3 + tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colX, colY, tmp10, colY) + tmp12 = 0 + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = false + tmp10 = 2 + tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colX, colY, tmp10, colY) + tmp12 = 1 + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = false + tmp10 = 1 + tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colX, colY, tmp10, colY) + tmp12 = 2 + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = false + tmp10 = 0 + tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colX, colY, tmp10, colY) + tmp12 = 3 + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) if scrut2 is - true then - tup_4 = [] - tup_4 + true then m else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow(tmp14, x, y, rowX, colX, colY, tmp15) - fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15} + tmp10 = rowX - i + tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp12 = i - 1 + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp11, x, y, rowX, colX, colY, tmp12) + fun iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) if scrut2 is true then m else - tmp10 = [] - tmp11 = rowX - i - tmp12 = iterCol_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(tmp10, x, y, colX, colY, tmp11, colY) - tmp13 = [tmp12] - tmp14 = m.concat(tmp13) - tmp15 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp14, x, y, rowX, colX, colY, tmp15) - fun iterUpdate(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(i, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_6} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_6 = [] - tup_6 - else - tmp33 = row - i' - scrut9 = ===(i, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_11} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_11 = [] - tup_11 - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_30} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_30 = [] - tup_30 - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_21} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_21 = [] - tup_21 - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_19} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_19 = [] - tup_19 - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_7} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_7 = [] - tup_7 - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_24} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_24 = [] - tup_24 - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_22} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_22 = [] - tup_22 - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_13} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_13 = [] - tup_13 - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_32} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_32 = [] - tup_32 - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_17} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_17 = [] - tup_17 - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_9} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_9 = [] - tup_9 - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_26} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_26 = [] - tup_26 - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_20} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_20 = [] - tup_20 - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_18} - scrut8 = ===(i', 0) - if scrut8 is - true then - tup_18 = [] - tup_18 - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_15} - scrut8 = ===(i', 0) - if scrut8 is + tmp10 = rowX - i + tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, colY, tmp10, colY) + tmp12 = i - 1 + iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(tmp11, x, y, rowX, colX, colY, tmp12) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = 0 + tmp3 = sum + 0 + tmp4 = 0 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = 0 + tmp3 = sum + 0 + tmp4 = 0 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(0.19, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = 0 + tmp3 = sum + 0 + tmp4 = 0 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = *(0.19, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = 1 + tmp3 = sum + 1 + tmp4 = 0 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = *(11, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 0 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = *(4, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 0 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(1, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = *(51, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 0 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = *(1, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = *(1, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 0 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) + fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is true then - tup_15 = [] - tup_15 - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_34} - scrut8 = ===(i', 0) - if scrut8 is + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is true then - tup_34 = [] - tup_34 - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_10} - scrut8 = ===(i', 0) - if scrut8 is + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is true then - tup_10 = [] - tup_10 - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41, tup_28} - scrut8 = ===(i', 0) - if scrut8 is + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is true then - tup_28 = [] - tup_28 - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(0, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(1, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(res, m, row, col, i, j, v, i') = - let {scrut8, scrut9, tmp33, tmp34, tmp35, tmp36, tmp37, tmp38, tmp39, tmp40, tmp41} - scrut8 = ===(i', 0) - if scrut8 is - true then res - else - tmp33 = row - i' - scrut9 = ===(2, tmp33) - if scrut9 is - true then - tmp34 = [] - tmp35 = row - i' - tmp36 = updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp34, m, col, j, v, tmp35, col) - tmp37 = [tmp36] - tmp38 = res.concat(tmp37) - else - tmp39 = row - i' - tmp40 = [m.(tmp39)] - tmp38 = res.concat(tmp40) - tmp41 = i' - 1 - iterUpdate_Dyn_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp38, m, row, col, i, j, v, tmp41) - fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, j, tmp4) + else sum + fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is @@ -1247,8 +794,80 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, j, tmp4) else sum + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 0 + tmp1 = 0 + tmp2 = *(0.4, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 0 + tmp1 = 0 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 0 + tmp1 = 0 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 0 + tmp1 = 0 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 0 + tmp1 = 0 + tmp2 = *(1, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 0 + tmp1 = 0 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 0 + tmp1 = 0 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 0 + tmp1 = 0 + tmp2 = *(0, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -1261,6 +880,54 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) else 0 + fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + else 0 + fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, j, tmp4) + else 0 + fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, j, tmp4) + else 0 + fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = k - 1 + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, j, tmp4) + else 0 fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -1274,681 +941,345 @@ module Transform3D with iter(tmp3, x, y, colX, i, j, tmp4) else 0 fun model(local, position, scaling, rotation) = - let {rot, res1, tmp66, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80} - tmp66 = rotateZ(rotation.2) - tmp67 = rotateY(rotation.1) - tmp68 = rotateX(rotation.0) - tmp69 = ident_Lit4(4) - tmp70 = multiply(tmp68, tmp69) - tmp71 = multiply(tmp67, tmp70) - rot = multiply(tmp66, tmp71) - tmp72 = transform(position.0, position.1, position.2) - tmp73 = scale(scaling.0, scaling.1, scaling.2) - tmp74 = [local.0] - tmp75 = [local.1] - tmp76 = [local.2] - tmp77 = [1] - tmp78 = [tmp74, tmp75, tmp76, tmp77] - tmp79 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp73, tmp78) - tmp80 = multiply(rot, tmp79) - res1 = multiply(tmp72, tmp80) + let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_200, tup_201, tup_202, tup_203, tup_204} + tmp43 = rotateZ(rotation.2) + tmp44 = rotateY(rotation.1) + tmp45 = rotateX(rotation.0) + tup_200 = [1, 0, 0, 0] + tup_201 = [0, 1, 0, 0] + tup_202 = [0, 0, 1, 0] + tup_203 = [0, 0, 0, 1] + tup_204 = [tup_200, tup_201, tup_202, tup_203] + tmp46 = tup_204 + tmp47 = multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(tmp45, tmp46) + tmp48 = multiply(tmp44, tmp47) + rot = multiply(tmp43, tmp48) + tmp49 = transform(position.0, position.1, position.2) + tmp50 = scale(scaling.0, scaling.1, scaling.2) + tmp51 = [local.0] + tmp52 = [local.1] + tmp53 = [local.2] + tmp54 = [1] + tmp55 = [tmp51, tmp52, tmp53, tmp54] + tmp56 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp50, tmp55) + tmp57 = multiply(rot, tmp56) + res1 = multiply(tmp49, tmp57) [res1.0, res1.1, res1.2] fun model0(local) = - let {tmp81, tmp82, tmp83, tmp84} - tmp81 = [11, 4, 51] - tmp82 = [0.4, 0.19, 0.19] - tmp83 = 2.51327412 - tmp84 = [tmp83, 3.1415926535, 0] - model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, tmp81, tmp82, tmp84) + let {tmp58, tmp59, tmp60, tmp61} + tmp58 = [11, 4, 51] + tmp59 = [0.4, 0.19, 0.19] + tmp60 = 2.51327412 + tmp61 = [tmp60, 3.1415926535, 0] + model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, tmp58, tmp59, tmp61) fun model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, position, scaling, rotation) = - let {rot, res1, tmp66, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80} - tmp66 = rotateZ_Lit0(rotation.2) - tmp67 = rotateY_Lit3_p_1415926535(rotation.1) - tmp68 = rotateX_Lit2_p_51327412(rotation.0) - tmp69 = ident_Lit4(4) - tmp70 = multiply(tmp68, tmp69) - tmp71 = multiply(tmp67, tmp70) - rot = multiply(tmp66, tmp71) - tmp72 = transform_Lit11_Lit4_Lit51(position.0, position.1, position.2) - tmp73 = scale_Lit0_p_4_Lit0_p_19_Lit0_p_19(scaling.0, scaling.1, scaling.2) - tmp74 = [local.0] - tmp75 = [local.1] - tmp76 = [local.2] - tmp77 = [1] - tmp78 = [tmp74, tmp75, tmp76, tmp77] - tmp79 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp73, tmp78) - tmp80 = multiply(rot, tmp79) - res1 = multiply(tmp72, tmp80) + let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_222, tup_223, tup_224, tup_225, tup_226, tup_282, tup_283, tup_284, tup_285, tup_286, tup_342, tup_343, tup_344, tup_345, tup_346} + tmp43 = rotateZ_Lit0(rotation.2) + tmp44 = rotateY_Lit3_p_1415926535(rotation.1) + tmp45 = rotateX_Lit2_p_51327412(rotation.0) + tup_222 = [1, 0, 0, 0] + tup_223 = [0, 1, 0, 0] + tup_224 = [0, 0, 1, 0] + tup_225 = [0, 0, 0, 1] + tup_226 = [tup_222, tup_223, tup_224, tup_225] + tmp46 = tup_226 + tmp47 = multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(tmp45, tmp46) + tmp48 = multiply(tmp44, tmp47) + rot = multiply(tmp43, tmp48) + tup_282 = [1, 0, 0, 11] + tup_283 = [0, 1, 0, 4] + tup_284 = [0, 0, 1, 51] + tup_285 = [0, 0, 0, 1] + tup_286 = [tup_282, tup_283, tup_284, tup_285] + tmp49 = tup_286 + tup_342 = [0.4, 0, 0, 0] + tup_343 = [0, 0.19, 0, 0] + tup_344 = [0, 0, 0.19, 0] + tup_345 = [0, 0, 0, 1] + tup_346 = [tup_342, tup_343, tup_344, tup_345] + tmp50 = tup_346 + tmp51 = [local.0] + tmp52 = [local.1] + tmp53 = [local.2] + tmp54 = [1] + tmp55 = [tmp51, tmp52, tmp53, tmp54] + tmp56 = multiply_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp50, tmp55) + tmp57 = multiply(rot, tmp56) + res1 = multiply_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn(tmp49, tmp57) [res1.0, res1.1, res1.2] fun multiply(x, y) = - let {rowX1, colX3, rowY, colY2, tmp42} + let {rowX1, colX3, rowY, colY2, res} rowX1 = x.length colX3 = x.0.length rowY = y.length colY2 = y.0.length - tmp42 = [] - iterRow_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp42, x, y, rowX1, colX3, colY2, rowX1) + res = zeros(rowX1, colY2) + iterRow(res, x, y, rowX1, colX3, colY2, rowX1) + fun multiply_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = + let {rowX1, colX3, rowY, colY2, res, tup_436, tup_437, tup_438, tup_439, tup_440} + rowX1 = 4 + colX3 = 4 + rowY = 4 + colY2 = 1 + tup_436 = [0] + tup_437 = [0] + tup_438 = [0] + tup_439 = [0] + tup_440 = [tup_436, tup_437, tup_438, tup_439] + res = tup_440 + iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(res, x, y, rowX1, colX3, colY2, rowX1) + fun multiply_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn(x, y) = + let {rowX1, colX3, rowY, colY2, res} + rowX1 = 4 + colX3 = 4 + rowY = y.length + colY2 = y.0.length + res = zeros_Lit4_Dyn(rowX1, colY2) + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(res, x, y, rowX1, colX3, colY2, rowX1) fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = - let {rowX1, colX3, rowY, colY2, tmp42} + let {rowX1, colX3, rowY, colY2, res} rowX1 = x.length colX3 = x.0.length rowY = 4 colY2 = 1 - tmp42 = [] - iterRow_Arr__end_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp42, x, y, rowX1, colX3, colY2, rowX1) + res = zeros_Dyn_Lit1(rowX1, colY2) + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(res, x, y, rowX1, colX3, colY2, rowX1) + fun multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(x, y) = + let {rowX1, colX3, rowY, colY2, res} + rowX1 = x.length + colX3 = x.0.length + rowY = 4 + colY2 = 4 + res = zeros_Dyn_Lit4(rowX1, colY2) + iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(res, x, y, rowX1, colX3, colY2, rowX1) fun rotateX(angle) = - let {s, c, tmp51, tmp52, tmp53, tmp54, tmp55} + let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_185, tup_186, tup_187, tup_188, tup_189} s = globalThis.Math.sin(angle) - c = globalThis.Math.cos(angle) - tmp51 = ident_Lit4(4) - tmp52 = update_Dyn_Lit1_Lit1_Dyn(tmp51, 1, 1, c) - tmp53 = -(s) - tmp54 = update_Dyn_Lit1_Lit2_Dyn(tmp52, 1, 2, tmp53) - tmp55 = update_Dyn_Lit2_Lit1_Dyn(tmp54, 2, 1, s) - update_Dyn_Lit2_Lit2_Dyn(tmp55, 2, 2, c) + c2 = globalThis.Math.cos(angle) + tup_185 = [1, 0, 0, 0] + tup_186 = [0, 1, 0, 0] + tup_187 = [0, 0, 1, 0] + tup_188 = [0, 0, 0, 1] + tup_189 = [tup_185, tup_186, tup_187, tup_188] + tmp28 = tup_189 + tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, 1, 1, c2) + tmp30 = -(s) + tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, 1, 2, tmp30) + tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, 2, 1, s) + update_Dyn_Lit2_Lit2_Dyn(tmp32, 2, 2, c2) fun rotateX_Lit2_p_51327412(angle) = - let {s, c, tmp51, tmp52, tmp53, tmp54, tmp55} + let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_217, tup_218, tup_219, tup_220, tup_221} s = globalThis.Math.sin(angle) - c = globalThis.Math.cos(angle) - tmp51 = ident_Lit4(4) - tmp52 = update_Dyn_Lit1_Lit1_Dyn(tmp51, 1, 1, c) - tmp53 = -(s) - tmp54 = update_Dyn_Lit1_Lit2_Dyn(tmp52, 1, 2, tmp53) - tmp55 = update_Dyn_Lit2_Lit1_Dyn(tmp54, 2, 1, s) - update_Dyn_Lit2_Lit2_Dyn(tmp55, 2, 2, c) + c2 = globalThis.Math.cos(angle) + tup_217 = [1, 0, 0, 0] + tup_218 = [0, 1, 0, 0] + tup_219 = [0, 0, 1, 0] + tup_220 = [0, 0, 0, 1] + tup_221 = [tup_217, tup_218, tup_219, tup_220] + tmp28 = tup_221 + tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, 1, 1, c2) + tmp30 = -(s) + tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, 1, 2, tmp30) + tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, 2, 1, s) + update_Dyn_Lit2_Lit2_Dyn(tmp32, 2, 2, c2) fun rotateY(angle) = - let {s1, c1, tmp56, tmp57, tmp58, tmp59, tmp60} + let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_190, tup_191, tup_192, tup_193, tup_194} s1 = globalThis.Math.sin(angle) - c1 = globalThis.Math.cos(angle) - tmp56 = ident_Lit4(4) - tmp57 = update_Dyn_Lit0_Lit0_Dyn(tmp56, 0, 0, c1) - tmp58 = update_Dyn_Lit0_Lit2_Dyn(tmp57, 0, 2, s1) - tmp59 = -(s1) - tmp60 = update_Dyn_Lit2_Lit0_Dyn(tmp58, 2, 0, tmp59) - update_Dyn_Lit2_Lit2_Dyn(tmp60, 2, 2, c1) + c3 = globalThis.Math.cos(angle) + tup_190 = [1, 0, 0, 0] + tup_191 = [0, 1, 0, 0] + tup_192 = [0, 0, 1, 0] + tup_193 = [0, 0, 0, 1] + tup_194 = [tup_190, tup_191, tup_192, tup_193] + tmp33 = tup_194 + tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, 0, 0, c3) + tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, 0, 2, s1) + tmp36 = -(s1) + tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, 2, 0, tmp36) + update_Dyn_Lit2_Lit2_Dyn(tmp37, 2, 2, c3) fun rotateY_Lit3_p_1415926535(angle) = - let {s1, c1, tmp56, tmp57, tmp58, tmp59, tmp60} + let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_212, tup_213, tup_214, tup_215, tup_216} s1 = globalThis.Math.sin(angle) - c1 = globalThis.Math.cos(angle) - tmp56 = ident_Lit4(4) - tmp57 = update_Dyn_Lit0_Lit0_Dyn(tmp56, 0, 0, c1) - tmp58 = update_Dyn_Lit0_Lit2_Dyn(tmp57, 0, 2, s1) - tmp59 = -(s1) - tmp60 = update_Dyn_Lit2_Lit0_Dyn(tmp58, 2, 0, tmp59) - update_Dyn_Lit2_Lit2_Dyn(tmp60, 2, 2, c1) + c3 = globalThis.Math.cos(angle) + tup_212 = [1, 0, 0, 0] + tup_213 = [0, 1, 0, 0] + tup_214 = [0, 0, 1, 0] + tup_215 = [0, 0, 0, 1] + tup_216 = [tup_212, tup_213, tup_214, tup_215] + tmp33 = tup_216 + tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, 0, 0, c3) + tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, 0, 2, s1) + tmp36 = -(s1) + tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, 2, 0, tmp36) + update_Dyn_Lit2_Lit2_Dyn(tmp37, 2, 2, c3) fun rotateZ(angle) = - let {s2, c2, tmp61, tmp62, tmp63, tmp64, tmp65} + let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_195, tup_196, tup_197, tup_198, tup_199} s2 = globalThis.Math.sin(angle) - c2 = globalThis.Math.cos(angle) - tmp61 = ident_Lit4(4) - tmp62 = update_Dyn_Lit0_Lit0_Dyn(tmp61, 0, 0, c2) - tmp63 = -(s2) - tmp64 = update_Dyn_Lit0_Lit1_Dyn(tmp62, 0, 1, tmp63) - tmp65 = update_Dyn_Lit1_Lit0_Dyn(tmp64, 1, 0, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp65, 1, 1, c2) + c4 = globalThis.Math.cos(angle) + tup_195 = [1, 0, 0, 0] + tup_196 = [0, 1, 0, 0] + tup_197 = [0, 0, 1, 0] + tup_198 = [0, 0, 0, 1] + tup_199 = [tup_195, tup_196, tup_197, tup_198] + tmp38 = tup_199 + tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, 0, 0, c4) + tmp40 = -(s2) + tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, 0, 1, tmp40) + tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, 1, 0, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp42, 1, 1, c4) fun rotateZ_Lit0(angle) = - let {s2, c2, tmp61, tmp62, tmp63, tmp64, tmp65} + let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_207, tup_208, tup_209, tup_210, tup_211} s2 = globalThis.Math.sin(angle) - c2 = globalThis.Math.cos(angle) - tmp61 = ident_Lit4(4) - tmp62 = update_Dyn_Lit0_Lit0_Dyn(tmp61, 0, 0, c2) - tmp63 = -(s2) - tmp64 = update_Dyn_Lit0_Lit1_Dyn(tmp62, 0, 1, tmp63) - tmp65 = update_Dyn_Lit1_Lit0_Dyn(tmp64, 1, 0, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp65, 1, 1, c2) + c4 = globalThis.Math.cos(angle) + tup_207 = [1, 0, 0, 0] + tup_208 = [0, 1, 0, 0] + tup_209 = [0, 0, 1, 0] + tup_210 = [0, 0, 0, 1] + tup_211 = [tup_207, tup_208, tup_209, tup_210] + tmp38 = tup_211 + tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, 0, 0, c4) + tmp40 = -(s2) + tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, 0, 1, tmp40) + tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, 1, 0, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp42, 1, 1, c4) fun scale(sx, sy, sz) = - let {tmp48, tmp49, tmp50} - tmp48 = ident_Lit4(4) - tmp49 = update_Dyn_Lit0_Lit0_Dyn(tmp48, 0, 0, sx) - tmp50 = update_Dyn_Lit1_Lit1_Dyn(tmp49, 1, 1, sy) - update_Dyn_Lit2_Lit2_Dyn(tmp50, 2, 2, sz) + let {tmp25, tmp26, tmp27, tup_180, tup_181, tup_182, tup_183, tup_184} + tup_180 = [1, 0, 0, 0] + tup_181 = [0, 1, 0, 0] + tup_182 = [0, 0, 1, 0] + tup_183 = [0, 0, 0, 1] + tup_184 = [tup_180, tup_181, tup_182, tup_183] + tmp25 = tup_184 + tmp26 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp25, 0, 0, sx) + tmp27 = update_Dyn_Lit1_Lit1_Dyn(tmp26, 1, 1, sy) + update_Dyn_Lit2_Lit2_Dyn(tmp27, 2, 2, sz) fun scale_Lit0_p_4_Lit0_p_19_Lit0_p_19(sx, sy, sz) = - let {tmp48, tmp49, tmp50} - tmp48 = ident_Lit4(4) - tmp49 = update_Dyn_Lit0_Lit0_Lit0_p_4(tmp48, 0, 0, sx) - tmp50 = update_Dyn_Lit1_Lit1_Lit0_p_19(tmp49, 1, 1, sy) - update_Dyn_Lit2_Lit2_Lit0_p_19(tmp50, 2, 2, sz) + let {tup_337, tup_338, tup_339, tup_340, tup_341} + tup_337 = [0.4, 0, 0, 0] + tup_338 = [0, 0.19, 0, 0] + tup_339 = [0, 0, 0.19, 0] + tup_340 = [0, 0, 0, 1] + tup_341 = [tup_337, tup_338, tup_339, tup_340] + tup_341 fun transform(dx, dy, dz) = - let {tmp45, tmp46, tmp47} - tmp45 = ident_Lit4(4) - tmp46 = update_Dyn_Lit0_Lit3_Dyn(tmp45, 0, 3, dx) - tmp47 = update_Dyn_Lit1_Lit3_Dyn(tmp46, 1, 3, dy) - update_Dyn_Lit2_Lit3_Dyn(tmp47, 2, 3, dz) + let {tmp22, tmp23, tmp24, tup_175, tup_176, tup_177, tup_178, tup_179} + tup_175 = [1, 0, 0, 0] + tup_176 = [0, 1, 0, 0] + tup_177 = [0, 0, 1, 0] + tup_178 = [0, 0, 0, 1] + tup_179 = [tup_175, tup_176, tup_177, tup_178] + tmp22 = tup_179 + tmp23 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(tmp22, 0, 3, dx) + tmp24 = update_Dyn_Lit1_Lit3_Dyn(tmp23, 1, 3, dy) + update_Dyn_Lit2_Lit3_Dyn(tmp24, 2, 3, dz) fun transform_Lit11_Lit4_Lit51(dx, dy, dz) = - let {tmp45, tmp46, tmp47} - tmp45 = ident_Lit4(4) - tmp46 = update_Dyn_Lit0_Lit3_Lit11(tmp45, 0, 3, dx) - tmp47 = update_Dyn_Lit1_Lit3_Lit4(tmp46, 1, 3, dy) - update_Dyn_Lit2_Lit3_Lit51(tmp47, 2, 3, dz) - fun update(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun updateVec(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_3} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_3 = [] - tup_3 - else - tmp27 = col - j' - scrut7 = ===(tmp27, j) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_12} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_12 = [] - tup_12 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 0) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_31} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_31 = [] - tup_31 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 0) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_14} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_14 = [] - tup_14 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 1) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_33} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_33 = [] - tup_33 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 1) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_16} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_16 = [] - tup_16 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 2) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_35} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_35 = [] - tup_35 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 2) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_8} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_8 = [] - tup_8 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 3) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_25} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_25 = [] - tup_25 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 3) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_27} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_27 = [] - tup_27 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 3) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Arr__end_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32, tup_29} - scrut6 = ===(j', 0) - if scrut6 is - true then - tup_29 = [] - tup_29 - else - tmp27 = col - j' - scrut7 = ===(tmp27, 3) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 0) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 0) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit0_Lit0_p_4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 1) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 1) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit1_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 2) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 2) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit2_Lit0_p_19_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 3) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Dyn_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 3) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit11_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 3) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit4_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(vec, m, col, j, v, i', j') = - let {scrut6, scrut7, tmp27, tmp28, tmp29, tmp30, tmp31, tmp32} - scrut6 = ===(j', 0) - if scrut6 is - true then vec - else - tmp27 = col - j' - scrut7 = ===(tmp27, 3) - if scrut7 is - true then - tmp28 = [v] - tmp29 = vec.concat(tmp28) - else - tmp30 = col - j' - tmp31 = [m.(i').(tmp30)] - tmp29 = vec.concat(tmp31) - tmp32 = j' - 1 - updateVec_Dyn_Dyn_Dyn_Lit3_Lit51_Dyn_Dyn(tmp29, m, col, j, v, i', tmp32) - fun update_Dyn_Lit0_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit0_Lit0_Lit0_p_4(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit0_Lit0_p_4_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit0_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit1_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit0_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit2_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit0_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit0_Lit3_Lit11(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit0_Lit3_Lit11_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit1_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit0_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit1_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit1_Lit1_Lit0_p_19(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit1_Lit0_p_19_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit1_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit2_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit1_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit1_Lit3_Lit4(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit1_Lit3_Lit4_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit2_Lit0_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit0_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit2_Lit1_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit1_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit2_Lit2_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit2_Lit2_Lit0_p_19(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit2_Lit0_p_19_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit2_Lit3_Dyn(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Dyn_Dyn(tmp44, m, row1, col2, i, j, v, row1) - fun update_Dyn_Lit2_Lit3_Lit51(m, i, j, v) = - let {row1, col2, tmp44} - row1 = m.length - col2 = m.0.length - tmp44 = [] - iterUpdate_Arr__end_Dyn_Dyn_Dyn_Lit2_Lit3_Lit51_Dyn(tmp44, m, row1, col2, i, j, v, row1) \ No newline at end of file + let {tup_277, tup_278, tup_279, tup_280, tup_281} + tup_277 = [1, 0, 0, 11] + tup_278 = [0, 1, 0, 4] + tup_279 = [0, 0, 1, 51] + tup_280 = [0, 0, 0, 1] + tup_281 = [tup_277, tup_278, tup_279, tup_280] + tup_281 + fun update(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit2_Lit0_p_19(m, i, j, v) = + let {tup_327, tup_328, tup_329, tup_330, tup_331} + tup_327 = [0.4, 0, 0, 0] + tup_328 = [0, 0.19, 0, 0] + tup_329 = [0, 0, 0.19, 0] + tup_330 = [0, 0, 0, 1] + tup_331 = [tup_327, tup_328, tup_329, tup_330] + tup_331 + fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Lit0_p_19(m, i, j, v) = + let {tup_312, tup_313, tup_314, tup_315, tup_316} + tup_312 = [0.4, 0, 0, 0] + tup_313 = [0, 0.19, 0, 0] + tup_314 = [0, 0, 1, 0] + tup_315 = [0, 0, 0, 1] + tup_316 = [tup_312, tup_313, tup_314, tup_315] + tup_316 + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Lit0_p_4(m, i, j, v) = + let {tup_297, tup_298, tup_299, tup_300, tup_301} + tup_297 = [0.4, 0, 0, 0] + tup_298 = [0, 1, 0, 0] + tup_299 = [0, 0, 1, 0] + tup_300 = [0, 0, 0, 1] + tup_301 = [tup_297, tup_298, tup_299, tup_300] + tup_301 + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Lit11(m, i, j, v) = + let {tup_237, tup_238, tup_239, tup_240, tup_241} + tup_237 = [1, 0, 0, 11] + tup_238 = [0, 1, 0, 0] + tup_239 = [0, 0, 1, 0] + tup_240 = [0, 0, 0, 1] + tup_241 = [tup_237, tup_238, tup_239, tup_240] + tup_241 + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit3_Lit4(m, i, j, v) = + let {tup_252, tup_253, tup_254, tup_255, tup_256} + tup_252 = [1, 0, 0, 11] + tup_253 = [0, 1, 0, 4] + tup_254 = [0, 0, 1, 0] + tup_255 = [0, 0, 0, 1] + tup_256 = [tup_252, tup_253, tup_254, tup_255] + tup_256 + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit3_Lit51(m, i, j, v) = + let {tup_267, tup_268, tup_269, tup_270, tup_271} + tup_267 = [1, 0, 0, 11] + tup_268 = [0, 1, 0, 4] + tup_269 = [0, 0, 1, 51] + tup_270 = [0, 0, 0, 1] + tup_271 = [tup_267, tup_268, tup_269, tup_270] + tup_271 + fun update_Dyn_Lit0_Lit1_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Dyn_Lit0_Lit2_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Dyn_Lit1_Lit0_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Dyn_Lit1_Lit1_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Dyn_Lit1_Lit2_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Dyn_Lit1_Lit3_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Dyn_Lit2_Lit0_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Dyn_Lit2_Lit1_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Dyn_Lit2_Lit2_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Dyn_Lit2_Lit3_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun zeros(r, c) = + let {m4, tmp21} + tmp21 = [] + m4 = Transform3D."Mx$Transform3D".init(r, tmp21) + iterInit(m4, r, c, r) + fun zeros_Dyn_Lit1(r, c) = + let {m4, tmp21} + tmp21 = [] + m4 = Transform3D."Mx$Transform3D".init(r, tmp21) + iterInit_Dyn_Dyn_Lit1_Dyn(m4, r, c, r) + fun zeros_Dyn_Lit4(r, c) = + let {m4, tmp21} + tmp21 = [] + m4 = Transform3D."Mx$Transform3D".init(r, tmp21) + iterInit_Dyn_Dyn_Lit4_Dyn(m4, r, c, r) + fun zeros_Lit4_Dyn(r, c) = + let {m4, tmp21, tup_441, tup_442, tup_443, tup_444, tup_445} + tmp21 = [] + tup_441 = [] + tup_442 = [] + tup_443 = [] + tup_444 = [] + tup_445 = [tup_441, tup_442, tup_443, tup_444] + m4 = tup_445 + iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m4, r, c, r) + fun zeros_Lit4_Lit1(r, c) = + let {tup_431, tup_432, tup_433, tup_434, tup_435} + tup_431 = [0] + tup_432 = [0] + tup_433 = [0] + tup_434 = [0] + tup_435 = [tup_431, tup_432, tup_433, tup_434] + tup_435 + fun zeros_Lit4_Lit4(r, c) = + let {tup_85, tup_86, tup_87, tup_88, tup_89} + tup_85 = [0, 0, 0, 0] + tup_86 = [0, 0, 0, 0] + tup_87 = [0, 0, 0, 0] + tup_88 = [0, 0, 0, 0] + tup_89 = [tup_85, tup_86, tup_87, tup_88] + tup_89 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls index f5d628445d..81c44cd747 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls @@ -60,6 +60,10 @@ NaiveTransform3D.model([[10], [0], [0]], [5, 0, 0], [0.5, 0.5, 0.5], [0, 0, 3.14 //│ = [[5.000000000224483], [5], [0]] +NaiveTransform3D.model0([[10], [0], [0]]) +//│ = [[7], [4], [50.99999999964083]] + + import "../../mlscript-compile/staging/Transform3D.mls" Transform3D."generate"("../Transform3D.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls") @@ -113,3 +117,7 @@ Transform3D.rotateZ(3.1415 / 2) Transform3D.model([[10], [0], [0]], [5, 0, 0], [0.5, 0.5, 0.5], [0, 0, 3.1415926535 / 2.0]) //│ = [[5.000000000224483], [5], [0]] + + +Transform3D.model0([[10], [0], [0]]) +//│ = [[7], [4], [50.99999999964083]] From 01f21fc17e372012612bc49c40d831df11706c55 Mon Sep 17 00:00:00 2001 From: TYeung Date: Mon, 27 Apr 2026 22:33:38 +0800 Subject: [PATCH 580/654] make naming consistent --- .../src/test/mlscript-compile/SpecializeHelpers.mls | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 27fff10968..8f9d2f07e5 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -306,10 +306,10 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") argShapes.every(staticSet) then // non staged function and params known - let f_imp = value.(fld) - let evaluated = f_imp(...argShapes.map(valOfSet)) - let evaluated_path = val2path(evaluated, ctx.allocs, ctx.valueNameCtx) - [evaluated_path.0, evaluated_path.1, sov(evaluated, ctx.valueNameCtx)] + let fimp = value.(fld) + let evaluated = fimp(...argShapes.map(valOfSet)) + let evaluatedPath = val2path(evaluated, ctx.allocs, ctx.valueNameCtx) + [evaluatedPath.0, evaluatedPath.1, sov(evaluated, ctx.valueNameCtx)] else [End(), r, mkDyn()] // non staged function and some params unknown // else throw Error("unknown call in sor: " + r.toString()) From ee0722325c19ae1b87f8d1e167b2b9fe1776ab06 Mon Sep 17 00:00:00 2001 From: TYeung Date: Tue, 28 Apr 2026 00:11:43 +0800 Subject: [PATCH 581/654] fix the map from runtime value to symbol Co-authored-by: Copilot --- .../src/test/mlscript-compile/SpecializeHelpers.mls | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 8f9d2f07e5..a7de62d4e6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -547,9 +547,15 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = // build map from all class/module symbols that are used within the body and the shape of the context new ValueCollection(ctx.valueNameCtx).showBlock(body) - ctx.ctx.values() - .forEach(_.shapeset.values().filter(_ is Class) - .forEach(s => ctx.valueNameCtx.set(getActualClass(s.sym.value), s.sym))) + fun collectClasses(s) = if s is + Class(sym, params) then + ctx.valueNameCtx.set(getActualClass(sym.value), sym) + params.forEach(collectClasses) + Arr(shapes) then + shapes.forEach(collectClasses) + else () + if ctx.thisShape is Some(ts) then ts.values().forEach(collectClasses) else () + ctx.ctx.values().forEach(_.values().forEach(collectClasses)) cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) From e1b8e09aae921402c516b0f709ff5a94b6fbe359 Mon Sep 17 00:00:00 2001 From: Ching Long Tin <26105652+ChingLongTin@users.noreply.github.com> Date: Tue, 28 Apr 2026 14:30:37 +0800 Subject: [PATCH 582/654] Update Syntax.mls --- hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 1d8e3a464a..4df36389cc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -65,6 +65,6 @@ staged module A //│ > SymbolMap { //│ > classMap: Map(0) {}, //│ > moduleMap: Map(1) { -//│ > [class A] { 'cache$A': [FunCache], 'generatorMap$A': Map(0) {} } => ModuleSymbol { name: 'A', value: [Function], redirect: undefined } +//│ > [class A] { 'cache$A': [FunCache], 'generatorMap$A': Map(0) {} } => ModuleSymbol { name: 'A', value: [Function] } //│ > } //│ > } From 60c42d1bb8f0949f44fd5ad57226195cbbd18681 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 29 Apr 2026 00:10:57 +0800 Subject: [PATCH 583/654] add some opt --- hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 28f34366cc..827cbcdefc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -99,6 +99,7 @@ fun restSet(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.rest(_, p)) fun isFalseShape(s: ShapeSet) = s.values().length is 1 and s.values().0 is Lit(l) and l is false fun isTrueShape(s: ShapeSet) = s.values().length is 1 and s.values().0 is Lit(l) and l is true +fun isZeroShape(s: ShapeSet) = s.values().length is 1 and s.values().0 is Lit(l) and l is 0 fun binOpSet(op: Str, s1: ShapeSet, s2: ShapeSet) = if @@ -109,6 +110,9 @@ fun binOpSet(op: Str, s1: ShapeSet, s2: ShapeSet) = "||" and isTrueShape(s1) then mkLit(true) isTrueShape(s2) then mkLit(true) + "*" and + isZeroShape(s1) then mkLit(0) // unsound if user writes 0 * "hello" => NaN + isZeroShape(s2) then mkLit(0) s1.isDyn() then mkDyn() s2.isDyn() then mkDyn() else From b28b2c4e1ae3de961a59f802b1d84f7207dd6a1f Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 29 Apr 2026 00:50:10 +0800 Subject: [PATCH 584/654] . --- hkmc2/shared/src/test/mlscript-compile/Runtime.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs index 348979e7f2..8f9cea6be1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs @@ -211,7 +211,7 @@ let Runtime1; let v, tmp1; v = runtime.safeCall(SymbolMap.classMap.get(key)); if (v instanceof Runtime.Unit.class) { - tmp1 = SymbolMap.classMap.set(key, value); + tmp1 = runtime.safeCall(SymbolMap.classMap.set(key, value)); return (tmp1 , value) } return v; @@ -220,7 +220,7 @@ let Runtime1; let v, tmp1; v = runtime.safeCall(SymbolMap.moduleMap.get(key)); if (v instanceof Runtime.Unit.class) { - tmp1 = SymbolMap.moduleMap.set(key, value); + tmp1 = runtime.safeCall(SymbolMap.moduleMap.set(key, value)); return (tmp1 , value) } return v; From 71168038de399c71db86b904c29c7b4e786bdc89 Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 29 Apr 2026 01:22:10 +0800 Subject: [PATCH 585/654] wip: print staged class cache --- .../src/test/mlscript-compile/Block.mls | 41 ++- .../mlscript-compile/SpecializeHelpers.mls | 45 +-- .../staging/SimpleStagedExample.mls | 4 +- .../staging/out/CombinedModule.mls | 12 + .../staging/out/LinkingGeneratedClasses.mls | 1 + .../staging/out/Transform3D.mls | 259 ++++++++---------- .../test/mlscript/block-staging/ShapeProp.mls | 44 ++- 7 files changed, 218 insertions(+), 188 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index c37a8c86e3..5ddcf207e1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -14,6 +14,38 @@ open Option module Block with... +module StagingUtility with + let moduleGenMapPrefix = "generatorMap$" + let classGenMapPrefix = "class$generatorMap$" + let moduleCachePrefix = "cache$" + let classCachePrefix = "class$cache$" + + fun isStagedClass(c) = + not (getClassGenMap(c) is undefined) + + fun getGenMapName(name, isClass) = + (if isClass then classGenMapPrefix else moduleGenMapPrefix) + name + + fun getCacheName(name, isClass) = + (if isClass then classCachePrefix else moduleCachePrefix) + name + + fun getActualClass(c) = if not (c."class" is undefined) then c.class else c + + fun getStagedClassInfo(c) = + let actualClass = getActualClass(c) + let clsName = actualClass.(Symbols.definitionMetadata).1 + [actualClass, clsName] + + fun getClassGenMap(c) = + let info = getStagedClassInfo(c) + info.0.(getGenMapName(info.1, true)) + + fun getClassCache(c) = + let info = getStagedClassInfo(c) + info.0.(getCacheName(info.1, true)) + +open StagingUtility {isStagedClass, getClassCache} + type Opt[A] = Option[A] // dependancies referenced in Block classes, referencing implementation in Term.mls @@ -139,6 +171,7 @@ class Printer(val owner: Opt[Symbol]) with fun showArgs(args: Array[Arg]) = args.map(showArg(_)).join(", ") + fun showResult(r: Result): Str = if r is Path then showPath(r) @@ -185,9 +218,11 @@ class Printer(val owner: Opt[Symbol]) with FunDefn(sym, ps, body) then "fun " + showDefnSymbol(sym) + showParamList(ps) + " =" + (if body is Return | End then " " else "\n ") + indent(showBlock(body)) - ClsLikeDefn(sym, methods, _) then - "data class " + showDefnSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams(_)).join("") - + indent((if methods is [] then "" else " with\n") + methods.map(showDefn(_)).join("\n")) + ClsLikeDefn(sym, methods, _) and sym is ConcreteClassSymbol(_, v, _, _, _) and + not isStagedClass(v) then + "data class " + showDefnSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams(_)).join("") + + indent((if methods is [] then "" else " with\n") + methods.map(showDefn(_)).join("\n")) + isStagedClass(v) then getClassCache(v) // TODO: used to represent assignments in constructors, which still need some adjustments ValDefn(owner, sym, rhs) then "val " + showSymbol(sym) + " = " + showPath(rhs) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a7de62d4e6..c4bff5f71e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -12,42 +12,12 @@ open Predef open ShapeSet module SpecializeHelpers with ... - -let moduleGenMapPrefix = "generatorMap$" -let classGenMapPrefix = "class$generatorMap$" -let moduleCachePrefix = "cache$" -let classCachePrefix = "class$cache$" - -fun isStagedClass(c) = - not (getClassGenMap(c) is undefined) - -fun getGenMapName(name, isClass) = - (if isClass then classGenMapPrefix else moduleGenMapPrefix) + name - -fun getCacheName(name, isClass) = - (if isClass then classCachePrefix else moduleCachePrefix) + name - -fun getActualClass(c) = if not (c."class" is undefined) then c.class else c - -fun getStagedClassInfo(c) = - let actualClass = getActualClass(c) - let clsName = actualClass.(Symbols.definitionMetadata).1 - [actualClass, clsName] - -fun getClassGenMap(c) = - let info = getStagedClassInfo(c) - info.0.(getGenMapName(info.1, true)) - -fun getClassCache(c) = - let info = getStagedClassInfo(c) - info.0.(getCacheName(info.1, true)) - fun wrapScoped(symbols, block) = if symbols.length is 0 then block else if block is Scoped(oldSymbols, rest) then Scoped([...symbols, ...oldSymbols], rest) else Scoped(symbols, block) -fun showCtxPath(p) = if p is // FIXME +fun showCtxPath(p) = if p is Select(qual, Symbol(name)) then showCtxPath(qual) + "." + name DynSelect(qual, fld, _) then showCtxPath(qual) + ".(" + showCtxPath(fld) + ")" ValueRef(l) and @@ -169,6 +139,8 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any module FunCache with fun empty(owner) = FunCache(owner, new Map()) +open StagingUtility + // shape of value fun sov(v, valueMap): ShapeSet = if @@ -196,11 +168,13 @@ fun sov(v, valueMap): ShapeSet = // shape of path fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s - else if p is - Select(ValueRef(clsSymb), Symbol(name)) and clsSymb is ClassSymbol and // variables defined in valdefn (for constructor propagation) + None and p is + Select(ValueRef(clsSymb), Symbol(name)) and clsSymb is ConcreteClassSymbol and // variables defined in valdefn (this is for constructor propagation only) ctx.getValDefn(name) is Some(s) then s + Select(Select(ValueRef(clsSymb), Symbol(name)), Symbol(name2)) and clsSymb is ConcreteClassSymbol and ctx.thisShape is Some(thisShape) then // this.name.name2 + selSet(selSet(thisShape, mkLit(name)), mkLit(name2)) Select(qual, Symbol(name)) and // object property - ctx.thisShape is Some(thisShape) then // staged class + ctx.thisShape is Some(thisShape) then // this.name selSet(thisShape, mkLit(name)) name is "length" and // special handle array .length let qualShape = sop(ctx, qual) @@ -233,6 +207,7 @@ fun fsplit(pss) = fun lit(l) = [End(), ValueLit(l), mkLit(l)] + fun sorInstantiate(ctx, r, cls, args) = let clsSymb = if cls is ValueRef(symb) and symb is ConcreteClassSymbol then symb // class defined globally @@ -281,7 +256,7 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is throw Error("runtime.Tuple.slice not handled in shape propagation") Select(ValueRef(ModuleSymbol(name, value, _)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module [End(), r, mkClass(clsSymb, argShapes)] // FIXME - ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // global class + ValueRef(clsSymb) and clsSymb is ConcreteClassSymbol and // top-level class isStagedClass(clsSymb.value) and let cache = getClassCache(clsSymb.value) not (cache is undefined) then diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls index f2aa4b753b..c52755ed6a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls @@ -9,9 +9,9 @@ staged module SimpleStagedExample with fun foo() = f(2, 3) + fib(10) fun spaces() = ["\t", "\n", "\r"] - class Bar(val x) with + staged class Bar(val x) with fun bar() = x - class Foo(val x) with + staged class Foo(val x) with fun foo(b) = if b is 1 then x.bar() + 1 diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index 9ec220a4ac..1a2cea34af 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -1,4 +1,5 @@ #config(noFreeze: true) +#config(noModuleCheck: true) import "../SimpleStagedExample.mjs" import "../LinkingGeneratedClasses.mjs" @@ -50,6 +51,17 @@ module CombinedModule with fun fib_Lit8(n) = 21 fun fib_Lit9(n) = 34 fun foo() = 60 + fun foobar(x) = + let {y1, z, tmp10, tmp11} + if x is + 0 then + tmp10 = 1 + else + tmp10 = 0 + y1 = tmp10 + tmp11 = 0 + z = 0 + y1 + 0 fun spaces() = let {tup_3} tup_3 = ["\t", "\n", "\r"] diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 578b9515ee..c7314c0afd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,4 +1,5 @@ #config(noFreeze: true) +#config(noModuleCheck: true) import "../LinkingGeneratedClasses.mjs" module LinkingGeneratedClasses with data class D diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index f9ca46607d..264a9a0a0f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -87,7 +87,7 @@ module Transform3D with scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(0, x, y, colX, i, tmp6, colX) + tmp7 = 1 tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) tmp9 = 0 iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(tmp8, x, y, colX, colY, i, tmp9) @@ -506,8 +506,8 @@ module Transform3D with scrut = true tmp = 2 tmp1 = 2 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 + tmp2 = 0 + tmp3 = sum + 0 tmp4 = 1 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(sum, x, y, colX, i, j, k) = @@ -515,8 +515,8 @@ module Transform3D with scrut = true tmp = 1 tmp1 = 1 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 + tmp2 = 0 + tmp3 = sum + 0 tmp4 = 2 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(sum, x, y, colX, i, j, k) = @@ -537,19 +537,10 @@ module Transform3D with scrut = true tmp = 2 tmp1 = 2 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 + tmp2 = 0 + tmp3 = sum + 0 tmp4 = 1 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = *(0.19, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 2 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false @@ -563,55 +554,6 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 0 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = *(0.19, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 1 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 2 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = false - sum - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = 1 - tmp3 = sum + 1 - tmp4 = 0 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 1 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 2 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false @@ -630,8 +572,8 @@ module Transform3D with scrut = true tmp = 2 tmp1 = 2 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 + tmp2 = 0 + tmp3 = sum + 0 tmp4 = 1 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(sum, x, y, colX, i, j, k) = @@ -639,8 +581,8 @@ module Transform3D with scrut = true tmp = 1 tmp1 = 1 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 + tmp2 = 0 + tmp3 = sum + 0 tmp4 = 2 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(sum, x, y, colX, i, j, k) = @@ -661,19 +603,10 @@ module Transform3D with scrut = true tmp = 2 tmp1 = 2 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 + tmp2 = 0 + tmp3 = sum + 0 tmp4 = 1 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = *(1, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 2 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false @@ -687,55 +620,10 @@ module Transform3D with tmp3 = sum + tmp2 tmp4 = 0 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = *(1, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 1 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 2 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = *(1, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 0 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 1 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = 2 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -805,33 +693,55 @@ module Transform3D with tmp3 = 0 + tmp2 tmp4 = 3 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(0.19, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 tmp1 = 0 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = 0 + tmp2 + tmp2 = 0 + tmp3 = 0 tmp4 = 3 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true - tmp = 0 - tmp1 = 0 - tmp2 = *(0, y.(tmp1).(j)) + tmp = 2 + tmp1 = 2 + tmp2 = *(0.19, y.(tmp1).(j)) tmp3 = 0 + tmp2 - tmp4 = 3 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(sum, x, y, colX, i, j, k) = + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = 0 + tmp3 = 0 + tmp4 = 2 + iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 tmp1 = 0 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = 0 + tmp2 + tmp2 = 0 + tmp3 = 0 tmp4 = 3 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) + iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(sum, x, y, colX, i, j, k) = 1 + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(sum, x, y, colX, i, j, k) = 1 + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(sum, x, y, colX, i, j, k) = 1 + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(sum, x, y, colX, i, j, k) = 1 fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true @@ -841,33 +751,87 @@ module Transform3D with tmp3 = 0 + tmp2 tmp4 = 3 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = *(1, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 2 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 tmp1 = 0 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = 0 + tmp2 + tmp2 = 0 + tmp3 = 0 tmp4 = 3 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = *(1, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 1 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = 0 + tmp3 = 0 + tmp4 = 2 + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 tmp1 = 0 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = 0 + tmp2 + tmp2 = 0 + tmp3 = 0 tmp4 = 3 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = *(1, y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = 0 + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = 0 + tmp3 = 0 + tmp4 = 1 + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 1 + tmp1 = 1 + tmp2 = 0 + tmp3 = 0 + tmp4 = 2 + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 tmp1 = 0 - tmp2 = *(0, y.(tmp1).(j)) - tmp3 = 0 + tmp2 + tmp2 = 0 + tmp3 = 0 tmp4 = 3 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -940,6 +904,7 @@ module Transform3D with tmp4 = k - 1 iter(tmp3, x, y, colX, i, j, tmp4) else 0 + fun iter_Lit1_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(sum, x, y, colX, i, j, k) = 1 fun model(local, position, scaling, rotation) = let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_200, tup_201, tup_202, tup_203, tup_204} tmp43 = rotateZ(rotation.2) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 87a440b339..b48dc167a5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -364,4 +364,46 @@ module Opaque with staged module M with fun f() = Opaque.f() M."f_gen"() -//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:196) +//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:201) + +staged module SimpleStagedExample with + staged class Bar with + fun bar() = hi() + staged class Foo(val x) with + fun foo(b) = + if b is + 1 then x.bar() + 1 + 2 then x.bar() + 2 + else x.bar() + fun hi() = 3 + fun baz() = Foo(Bar()).foo(1) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'class') +//│ at (REPL131:1:1034) +//│ at (REPL131:1:3082) +//│ at REPL131:1:18449 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) + +SimpleStagedExample."baz_gen"() +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'owner') +//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2663:23) +//│ at SimpleStagedExample.baz_gen (REPL131:1:18268) +//│ at REPL134:1:69 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) + +SimpleStagedExample."cache$SimpleStagedExample" From c522c3ff089e89e0de93b7dc8fb3a4df4606306d Mon Sep 17 00:00:00 2001 From: TYeung Date: Wed, 29 Apr 2026 14:05:38 +0800 Subject: [PATCH 586/654] add propagate Co-authored-by: Copilot --- .../codegen/ReflectionInstrumenter.scala | 23 ++- .../staging/out/CombinedModule.mls | 22 +-- .../staging/out/SimpleStagedExample.mls | 34 ++-- .../test/mlscript/block-staging/Generate.mls | 63 ++++++- .../mlscript/block-staging/GenerateMult.mls | 10 ++ .../test/mlscript/block-staging/ShapeProp.mls | 42 ----- .../mlscript/block-staging/StageSymbols.mls | 4 - .../block-staging/Transform3DTest.mls | 155 +++++++++++++++--- 8 files changed, 243 insertions(+), 110 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 3ecce14033..7377faec69 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -400,7 +400,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(new HashMap(), true)) - def stageMethods(ownerSym: DefinitionSymbol[?], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (FunDefn, Ls[FunDefn], Block => Block) = + def stageMethods(ownerSym: DefinitionSymbol[?], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str, nestedPropagates: Ls[Path])(methods: Ls[FunDefn]): (FunDefn, Ls[FunDefn], Block => Block) = // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol(cacheNme, Nil, true) val cacheTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(cacheNme)) @@ -448,7 +448,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ((args, k) => call(_, args, true, "gen_call")(k)) (genPath) ) - callGenCont(End()) + nestedPropagates.foldRight(callGenCont(End()))((path, rest) => + call(path.selSN("propagate"), Nil, isMlsFun = true, symName = "tmp")(_ => rest) + ) FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, body)(false, N, Visibility.Public) def genOutputBody(sourceSym: VarSymbol, psym: VarSymbol) = @@ -490,10 +492,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S (tsym, sym, reconstruct(key)) ) - def previousStageDecl(b: Block) = - previousStageValues.foldRight(b)({case ((tsym, sym, key), acc) => - Define(ValDefn(tsym, sym, key)(N), acc) - }) + // FIXME: Commented out so that SimpleStagedExample works without the ordering issue + def previousStageDecl(b: Block) = b + // previousStageValues.foldRight(b)({ case ((tsym, sym, key), acc) => b + // Define(ValDefn(tsym, sym, key)(N), acc) + // }) (entryFunDef, propFunDef :: stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(previousStageDecl(b)))) @@ -508,7 +511,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val generatorMapNme = "generatorMap" + suffix val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(PlainParamList(Nil)), ctor)(false, N, Visibility.Public) val newCtorFun = stageCtor(ctorFun) - val (entryFun, newMethods, cont) = stageMethods(companion.isym, modSym, false, cacheNme, generatorMapNme)(methods) + val nestedPropagates = defn.body.blk.stats.collect: + case cls: ClassDef if cls.hasStagedModifier.isDefined => + modSym.asPath.sel(Tree.Ident(cls.sym.nme), cls.sym) + + val (entryFun, newMethods, cont) = stageMethods(companion.isym, modSym, false, cacheNme, generatorMapNme, nestedPropagates)(methods) companion.copy( methods = entryFun :: newCtorFun :: newMethods, @@ -550,7 +557,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val newPreCtorFun = stageMethod(preCtorFun) val newCtorFun = stageCtor(ctorFun) - val (entryFun, newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme)(methods) + val (entryFun, newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme, Nil)(methods) val (companionEntryFun, companionMethods) = companion.methods.partition(_.sym.nme == "generate") val combinedEntryFun: FunDefn = companionEntryFun match case Nil => entryFun diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index 1a2cea34af..e07b86f0be 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -8,24 +8,24 @@ open LinkingGeneratedClasses module CombinedModule with module SimpleStagedExample with - data class Bar(val x) with - fun bar() = this.x - data class Foo(val x) with + class Bar(x) with + () + fun bar() = x + fun bar_Bar_Lit1_dot_() = 1 + class Foo(x) with + () fun foo(b) = let {tmp, tmp1} if b is 1 then - tmp = this.x.bar() + tmp = x.bar() tmp + 1 2 then - tmp1 = this.x.bar() + tmp1 = x.bar() tmp1 + 2 - else this.x.bar() - fun baz() = - let {tmp8, tmp9} - tmp8 = Bar(1) - tmp9 = Foo(tmp8) - tmp9.foo(1) + else x.bar() + fun foo_Foo_Bar_Lit1_dot_Lit1(b) = 2 + fun baz() = 2 fun f(x, y) = x + y fun f_Lit2_Lit3(x, y) = 5 fun fib(n) = diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 038b9db61f..42e89b2f66 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,24 +1,25 @@ #config(noFreeze: true) +#config(noModuleCheck: true) import "../SimpleStagedExample.mjs" module SimpleStagedExample with - data class Bar(val x) with - fun bar() = this.x - data class Foo(val x) with + class Bar(x) with + () + fun bar() = x + fun bar_Bar_Lit1_dot_() = 1 + class Foo(x) with + () fun foo(b) = let {tmp, tmp1} if b is 1 then - tmp = this.x.bar() + tmp = x.bar() tmp + 1 2 then - tmp1 = this.x.bar() + tmp1 = x.bar() tmp1 + 2 - else this.x.bar() - fun baz() = - let {tmp8, tmp9} - tmp8 = Bar(1) - tmp9 = Foo(tmp8) - tmp9.foo(1) + else x.bar() + fun foo_Foo_Bar_Lit1_dot_Lit1(b) = 2 + fun baz() = 2 fun f(x, y) = x + y fun f_Lit2_Lit3(x, y) = 5 fun fib(n) = @@ -44,6 +45,17 @@ module SimpleStagedExample with fun fib_Lit8(n) = 21 fun fib_Lit9(n) = 34 fun foo() = 60 + fun foobar(x) = + let {y1, z, tmp10, tmp11} + if x is + 0 then + tmp10 = 1 + else + tmp10 = 0 + y1 = tmp10 + tmp11 = 0 + z = 0 + y1 + 0 fun spaces() = let {tup_1} tup_1 = ["\t", "\n", "\r"] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 9f276092c0..87e4d9287e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -38,7 +38,22 @@ import "../../mlscript-compile/staging/out/LinkingGeneratedClasses.mls" :expect C LinkingGeneratedClasses.test1 -//│ = C +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: LinkingGeneratedClasses1.C$LinkingGeneratedClasses is not a constructor +//│ at get test1 (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mjs:31:14) +//│ at REPL47:1:46 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processIRBlock (JSBackendDiffMaker.scala:287) +//│ ═══[RUNTIME ERROR] Expected: 'C', got: 'undefined' :expect D LinkingGeneratedClasses.test2 @@ -46,31 +61,61 @@ LinkingGeneratedClasses.test2 :expect 3 LinkingGeneratedClasses.f().call(3) -//│ = 3 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: LinkingGeneratedClasses1.Function$$LinkingGeneratedClasses is not a constructor +//│ at LinkingGeneratedClasses.f (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mjs:21:14) +//│ at REPL53:1:64 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processIRBlock (JSBackendDiffMaker.scala:287) +//│ ═══[RUNTIME ERROR] Expected: '3', got: 'undefined' :expect 5 LinkingGeneratedClasses.g().call(3) -//│ = 5 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: LinkingGeneratedClasses1.Function$1$LinkingGeneratedClasses is not a constructor +//│ at LinkingGeneratedClasses.g (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mjs:26:14) +//│ at REPL56:1:66 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processIRBlock (JSBackendDiffMaker.scala:287) +//│ ═══[RUNTIME ERROR] Expected: '5', got: 'undefined' :fixme import "../../mlscript-compile/staging/StagedClass.mls" -//│ /!!!\ Uncaught error: java.nio.file.NoSuchFileException: /home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls +//│ /!!!\ Uncaught error: java.nio.file.NoSuchFileException: /Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls :fixme // FIXME: module wasn't staged alongside class gen(StagedClass."class", "StagedClass") //│ ╔══[COMPILATION ERROR] Name not found: StagedClass -//│ ║ l.61: gen(StagedClass."class", "StagedClass") -//│ ╙── ^^^^^^^^^^^ +//│ ║ l.106: gen(StagedClass."class", "StagedClass") +//│ ╙── ^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. :fixme import "../../mlscript-compile/staging/ImportingFiles.mls" -//│ /!!!\ Uncaught error: java.nio.file.NoSuchFileException: /home/hillo/Downloads/uni/fyp/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls +//│ /!!!\ Uncaught error: java.nio.file.NoSuchFileException: /Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/ImportingFiles.mls :fixme gen(ImportingFiles, "ImportingFiles") //│ ╔══[COMPILATION ERROR] Name not found: ImportingFiles -//│ ║ l.72: gen(ImportingFiles, "ImportingFiles") -//│ ╙── ^^^^^^^^^^^^^^ +//│ ║ l.117: gen(ImportingFiles, "ImportingFiles") +//│ ╙── ^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls index 5ee77b8e78..66086e16f6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls @@ -12,6 +12,16 @@ Block.generateAll("CombinedModule", "./hkmc2/shared/src/test/mlscript-compile/st import "../../mlscript-compile/staging/out/CombinedModule.mls" open CombinedModule +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: importedNames (Elaborator.scala:1069) +//│ ╔══[COMPILATION ERROR] Wildcard 'open' not supported for this kind of symbol. +//│ ║ l.5: open SimpleStagedExample +//│ ╙── ^^^^^^^^^^^^^^^^^^^ +//│ FAILURE: Unexpected compilation error +//│ FAILURE LOCATION: importedNames (Elaborator.scala:1069) +//│ ╔══[COMPILATION ERROR] Wildcard 'open' not supported for this kind of symbol. +//│ ║ l.6: open LinkingGeneratedClasses +//│ ╙── ^^^^^^^^^^^^^^^^^^^^^^^ SimpleStagedExample.foo() diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index b48dc167a5..a02889ae99 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -365,45 +365,3 @@ staged module M with fun f() = Opaque.f() M."f_gen"() //│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:201) - -staged module SimpleStagedExample with - staged class Bar with - fun bar() = hi() - staged class Foo(val x) with - fun foo(b) = - if b is - 1 then x.bar() + 1 - 2 then x.bar() + 2 - else x.bar() - fun hi() = 3 - fun baz() = Foo(Bar()).foo(1) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'class') -//│ at (REPL131:1:1034) -//│ at (REPL131:1:3082) -//│ at REPL131:1:18449 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) - -SimpleStagedExample."baz_gen"() -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'owner') -//│ at SpecializeHelpers.specialize (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2663:23) -//│ at SimpleStagedExample.baz_gen (REPL131:1:18268) -//│ at REPL134:1:69 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) - -SimpleStagedExample."cache$SimpleStagedExample" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index f3dd114626..c26a5a15dd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -82,7 +82,3 @@ staged module M with //│ ╟── which references the symbol introduced here //│ ║ l.110: declare class Array[T] //│ ╙── ^^^^^^^^ -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Array' -//│ ╟── which references the symbol introduced here -//│ ║ l.110: declare class Array[T] -//│ ╙── ^^^^^^^^ diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls index 81c44cd747..ec3bb6572f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls @@ -72,52 +72,157 @@ import "../../mlscript-compile/staging/out/Transform3D.mls" Transform3D.multiply of x, y -//│ = [[30, 24, 18], [84, 69, 54], [138, 114, 90]] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'init') +//│ at Transform3D.zeros (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2214:58) +//│ at Transform3D.multiply (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1523:23) +//│ at REPL61:1:52 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) Transform3D.ident(4) -//│ = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'init') +//│ at Transform3D.zeros (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2214:58) +//│ at Transform3D.ident (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:12:22) +//│ at REPL64:1:52 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) Transform3D.update(Transform3D.ident(3), 1, 2, 5) -//│ = [[1, 0, 0], [0, 1, 5], [0, 0, 1]] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'init') +//│ at Transform3D.zeros (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2214:58) +//│ at Transform3D.ident (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:12:22) +//│ at REPL67:1:56 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) Transform3D.transform(1, 2, 3) -//│ = [[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 3], [0, 0, 0, 1]] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') +//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2074:60) +//│ at Transform3D.transform (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1927:25) +//│ at REPL70:1:52 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) Transform3D.scale(2, 2, 2) -//│ = [[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 1]] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') +//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) +//│ at Transform3D.scale (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1856:25) +//│ at REPL73:1:52 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) Transform3D.rotateX(3.1415 / 2) -//│ = [ -//│ [1, 0, 0, 0], -//│ [0, 0.00004632679487995776, -0.999999998926914, 0], -//│ [0, 0.999999998926914, 0.00004632679487995776, 0], -//│ [0, 0, 0, 1] -//│ ] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') +//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2111:60) +//│ at Transform3D.rotateX (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1612:25) +//│ at REPL76:1:82 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) Transform3D.rotateY(3.1415 / 2) -//│ = [ -//│ [0.00004632679487995776, 0, 0.999999998926914, 0], -//│ [0, 1, 0, 0], -//│ [-0.999999998926914, 0, 0.00004632679487995776, 0], -//│ [0, 0, 0, 1] -//│ ] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') +//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) +//│ at Transform3D.rotateY (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1694:25) +//│ at REPL79:1:82 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) Transform3D.rotateZ(3.1415 / 2) -//│ = [ -//│ [0.00004632679487995776, -0.999999998926914, 0, 0], -//│ [0.999999998926914, 0.00004632679487995776, 0, 0], -//│ [0, 0, 1, 0], -//│ [0, 0, 0, 1] -//│ ] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') +//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) +//│ at Transform3D.rotateZ (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1776:25) +//│ at REPL82:1:82 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) Transform3D.model([[10], [0], [0]], [5, 0, 0], [0.5, 0.5, 0.5], [0, 0, 3.1415926535 / 2.0]) -//│ = [[5.000000000224483], [5], [0]] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') +//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) +//│ at Transform3D.rotateZ (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1776:25) +//│ at Transform3D.model (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1303:25) +//│ at REPL85:1:503 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) Transform3D.model0([[10], [0], [0]]) -//│ = [[7], [4], [50.99999999964083]] +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') +//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) +//│ at Transform3D.rotateZ_Lit0 (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1817:25) +//│ at Transform3D.model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1391:25) +//│ at Transform3D.model0 (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1387:24) +//│ at REPL88:1:278 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) From 0d6bbc09e634431d9acbcc2891a2b51b0896225b Mon Sep 17 00:00:00 2001 From: TYeung Date: Thu, 30 Apr 2026 13:33:17 +0800 Subject: [PATCH 587/654] optimization: remove parameters with Lit shape --- .../codegen/ReflectionInstrumenter.scala | 9 +- .../src/test/mlscript-compile/ShapeSet.mls | 1 + .../mlscript-compile/SpecializeHelpers.mls | 50 +- .../staging/benchmark/StagedTest.mls | 2 +- .../staging/benchmark/Transform3D.mls | 106 ++ .../staging/out/CombinedModule.mls | 24 +- .../staging/out/LinkingGeneratedClasses.mls | 26 +- .../staging/out/SimpleStagedExample.mls | 26 +- .../staging/out/Transform3D.mls | 1202 +++++++++-------- .../test/mlscript/block-staging/Generate.mls | 140 +- .../test/mlscript/block-staging/ShapeProp.mls | 122 +- .../mlscript/block-staging/SpecializeTest.mls | 6 +- .../block-staging/Transform3DTest.mls | 155 +-- 13 files changed, 1002 insertions(+), 867 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/benchmark/Transform3D.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 7377faec69..6a4db33c88 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -492,11 +492,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S (tsym, sym, reconstruct(key)) ) - // FIXME: Commented out so that SimpleStagedExample works without the ordering issue - def previousStageDecl(b: Block) = b - // previousStageValues.foldRight(b)({ case ((tsym, sym, key), acc) => b - // Define(ValDefn(tsym, sym, key)(N), acc) - // }) + def previousStageDecl(b: Block) = + previousStageValues.foldRight(b)({ case ((tsym, sym, key), acc) => b + Define(ValDefn(tsym, sym, key)(N), acc) + }) (entryFunDef, propFunDef :: stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(previousStageDecl(b)))) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 827cbcdefc..74b3b5f8cd 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -97,6 +97,7 @@ fun filterSet(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) fun restSet(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.rest(_, p)) +fun isLitShape(s: ShapeSet) = s.values().length is 1 and s.values().0 is Lit(l) fun isFalseShape(s: ShapeSet) = s.values().length is 1 and s.values().0 is Lit(l) and l is false fun isTrueShape(s: ShapeSet) = s.values().length is 1 and s.values().0 is Lit(l) and l is true fun isZeroShape(s: ShapeSet) = s.values().length is 1 and s.values().0 is Lit(l) and l is 0 diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index c4bff5f71e..5df6b235c8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -190,6 +190,15 @@ fun sop(ctx, p): ShapeSet = if ctx.get(p) is ValueLit(lit) then mkLit(lit) ValueRef(l) then mkDyn() +// This sub p.(n) to p.1 if n -> 1 +fun subLitPath(ctx, p) = if p is + DynSelect(qual, fld, b) then DynSelect(subLitPath(ctx, qual), subLitPath(ctx, fld), b) + Select(qual, name) then Select(subLitPath(ctx, qual), name) + ValueRef(_) and + let s = sop(ctx, p) + staticSet(s) and val2path(valOfSet(s), ctx.allocs, ctx.valueNameCtx) is [End(), res] then res + else p + // split a shapeset of class symbols into known ones and unknown ones class SplitResult(val knownMap: Map[ConcreteClassSymbol, ShapeSet], val unkShape: ShapeSet) @@ -277,7 +286,8 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is let v2p = val2path(valOfSet(res.1), ctx.allocs, ctx.valueNameCtx) [v2p.0, v2p.1, res.1] else - [End(), Call(Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(res.0)), args), res.1] + let filteredArgs = args.filter((_, i, _) => not res.2.(i)) + [End(), Call(Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(res.0)), filteredArgs), res.1] else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") argShapes.every(staticSet) then // non staged function and params known @@ -286,7 +296,10 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is let evaluatedPath = val2path(evaluated, ctx.allocs, ctx.valueNameCtx) [evaluatedPath.0, evaluatedPath.1, sov(evaluated, ctx.valueNameCtx)] else - [End(), r, mkDyn()] // non staged function and some params unknown + let evaledArgs = args.map(a => sor(ctx, a.value)) + let fullBlk = foldl((acc, e) => concat(acc, e.0))(End(), ...evaledArgs) + let newArgs = evaledArgs.map(e => Arg(if e.1 is Path then e.1 else throw Error("expected path"))) + [fullBlk, Call(f, newArgs), mkDyn()] // non staged function and some params unknown // else throw Error("unknown call in sor: " + r.toString()) // shape of result: return [blk, res, s] @@ -295,7 +308,7 @@ fun sor(ctx, r) = if r is Path and let s = sop(ctx, r) staticSet(s) and val2path(valOfSet(s), ctx.allocs, ctx.valueNameCtx) is [blk, res] then [blk, res, s] - else [End(), r, s] + else [End(), subLitPath(ctx, r), s] Instantiate(cls, args) then sorInstantiate(ctx, r, cls, args) Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] Call(f, args) then sorCall(ctx, r, f, args, args.map((a, _, _) => sop(ctx, a.value))) @@ -332,7 +345,8 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = let ret = f_gen(ss_i)(...argShapes) let retSym = ret.0 let retShape = ret.1 - let callRes = Call(Select(p, Symbol(retSym)), args) + let filteredArgs = args.filter((_, i, _) => not ret.2.(i)) + let callRes = Call(Select(p, Symbol(retSym)), filteredArgs) isRet then [Return(callRes, if implctOpt is Some(i) then i else false), retShape] else @@ -344,9 +358,11 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = let ss_i = entry.1 let genMap = getClassGenMap(C_i.value) let f_gen = genMap.get(f) - let retSym = f_gen(ss_i)(...argShapes).0 - let retShape = f_gen(ss_i)(...argShapes).1 - let callRes = Call(Select(p, Symbol(retSym)), args) + let retData = f_gen(ss_i)(...argShapes) + let retSym = retData.0 + let retShape = retData.1 + let filteredArgs = args.filter((_, i, _) => not retData.2.(i)) + let callRes = Call(Select(p, Symbol(retSym)), filteredArgs) if isRet then [Arm(Cls(C_i, p), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] else @@ -501,7 +517,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let isMethod = cache.owner is ConcreteClassSymbol let newName = specializeName(funName, isMethod, ps, shapes) if cache.getFun(newName) is - Some(x) then [x.0.sym.name, x.1] + Some(x) then [x.0.sym.name, x.1, x.2] None then let paramShapes = if isMethod then shapes.slice(1) else shapes @@ -532,7 +548,15 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = if ctx.thisShape is Some(ts) then ts.values().forEach(collectClasses) else () ctx.ctx.values().forEach(_.values().forEach(collectClasses)) - cache.setFun(newName, [FunDefn(Symbol(newName), ps, body), mkDyn()]) + // Compute litMask and newPs early so recursive calls use correct filtering + let litMask = ps.flatMap((p, i, _) => p.map((p2, j, _) => + not (p2.constraint is Some(Dynamic)) and isLitShape(paramShapes.(i).(j)) + )) + let newPs = ps.map((p, i, _) => p.filter((p2, j, _) => + not (not (p2.constraint is Some(Dynamic)) and isLitShape(paramShapes.(i).(j))) + )) + // Store placeholder with real litMask so recursive calls use correct filtering + cache.setFun(newName, [FunDefn(Symbol(newName), newPs, body), mkDyn(), litMask]) let res = prop(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) @@ -544,8 +568,12 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let v2p = val2path(valOfSet(actualRetShape), allocs, ctx.valueNameCtx) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) else bodyWithScoped - let entry = cache.setFun(newName, [FunDefn(Symbol(newName), ps, finalBody), actualRetShape]) - [entry.0.sym.name, entry.1] + + // Update cache with finalized body and actual return shape + let entry = cache.setFun(newName, [FunDefn(Symbol(newName), newPs, finalBody), actualRetShape, litMask]) + + + [entry.0.sym.name, entry.1, entry.2] else throw Error("instrumented function is not a FunDefn") // this builds the shape of an instantiation of class through shape propagation of constructor diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls index e25375f0f5..10ad3a2472 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls @@ -1,6 +1,6 @@ import "fs" -// import "./Transform3D.mjs" +// import "./Transform3D.mls" import "./../out/Transform3D.mls" let inputFile = "./random_coordinates.csv" diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/Transform3D.mls new file mode 100644 index 0000000000..802723c4e3 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/Transform3D.mls @@ -0,0 +1,106 @@ +#config(noFreeze: true) + +module Mx with + fun init(len, dft) = globalThis.Array(len).fill(dft) + fun set1D(a, i, v) = + set a.(i) = v + a + fun set2D(m, i, j, v) = + set m.(i).(j) = v + m + +module Transform3D with + fun iter(sum, x, y, colX, i, j, k) = + if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) + else sum + + fun iterCol(m, x, y, colX, colY, i, j) = + if j === 0 then m + else iterCol(Mx.set2D(m, i, colY - j, iter(0.0, x, y, colX, i, colY - j, colX)), x, y, colX, colY, i, j - 1) + + fun iterRow(m, x, y, rowX, colX, colY, i) = + if i === 0 then m + else iterRow(iterCol(m, x, y, colX, colY, rowX - i, colY), x, y, rowX, colX, colY, i - 1) + + fun iterInit(m, r, c, i) = + if i === 0 then m + else + iterInit(Mx.set1D(m, r - i, Mx.init(c, 0)), r, c, i - 1) + + fun iterID(m, w, i) = + if i === 0 then m + else + iterID(Mx.set2D(m, w - i, w - i, 1), w, i - 1) + + fun zeros(r, c) = + let m = Mx.init(r, []) + iterInit(m, r, c, r) + + fun multiply(x, y) = + let rowX = x.length + let colX = x.0.length + let rowY = y.length + let colY = y.0.length + let res = zeros(rowX, colY) + iterRow(res, x, y, rowX, colX, colY, rowX) + + fun ident(w) = + let m = zeros(w, w) + iterID(m, w, w) + + fun update(m, i, j, v) = Mx.set2D(m, i, j, v) + + fun transform(dx, dy, dz) = + update of + update of + update(ident(4), 0, 3, dx), 1, 3, dy + , 2, 3, dz + + fun scale(sx, sy, sz) = + update of + update of + update(ident(4), 0, 0, sx), 1, 1, sy + , 2, 2, sz + + fun rotateX(angle) = + let s = Math.sin(angle) + let c = Math.cos(angle) + update of + update of + update of + update(ident(4), 1, 1, c), 1, 2, -s + , 2, 1, s + , 2, 2, c + + fun rotateY(angle) = + let s = Math.sin(angle) + let c = Math.cos(angle) + update of + update of + update of + update(ident(4), 0, 0, c), 0, 2, s + , 2, 0, -s + , 2, 2, c + + fun rotateZ(angle) = + let s = Math.sin(angle) + let c = Math.cos(angle) + update of + update of + update of + update(ident(4), 0, 0, c), 0, 1, -s + , 1, 0, s + , 1, 1, c + + fun model(local, position, scaling, rotation) = + let rot = multiply of + rotateZ(rotation.2), multiply of + rotateY(rotation.1), multiply of + rotateX(rotation.0), ident(4) + let res = multiply of + transform(position.0, position.1, position.2), multiply of + rot, multiply(scale(scaling.0, scaling.1, scaling.2), [[local.0], [local.1], [local.2], [1]]) + [res.0, res.1, res.2] + + fun model0(local) = + model(local, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0]) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index e07b86f0be..637db5e7ca 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -24,10 +24,10 @@ module CombinedModule with tmp1 = x.bar() tmp1 + 2 else x.bar() - fun foo_Foo_Bar_Lit1_dot_Lit1(b) = 2 + fun foo_Foo_Bar_Lit1_dot_Lit1() = 2 fun baz() = 2 fun f(x, y) = x + y - fun f_Lit2_Lit3(x, y) = 5 + fun f_Lit2_Lit3() = 5 fun fib(n) = let {n1, tmp2, tmp3, tmp4, tmp5} if n is @@ -40,16 +40,16 @@ module CombinedModule with tmp4 = n1 - 2 tmp5 = fib(tmp4) tmp3 + tmp5 - fun fib_Lit1(n) = 1 - fun fib_Lit10(n) = 55 - fun fib_Lit2(n) = 1 - fun fib_Lit3(n) = 2 - fun fib_Lit4(n) = 3 - fun fib_Lit5(n) = 5 - fun fib_Lit6(n) = 8 - fun fib_Lit7(n) = 13 - fun fib_Lit8(n) = 21 - fun fib_Lit9(n) = 34 + fun fib_Lit1() = 1 + fun fib_Lit10() = 55 + fun fib_Lit2() = 1 + fun fib_Lit3() = 2 + fun fib_Lit4() = 3 + fun fib_Lit5() = 5 + fun fib_Lit6() = 8 + fun fib_Lit7() = 13 + fun fib_Lit8() = 21 + fun fib_Lit9() = 34 fun foo() = 60 fun foobar(x) = let {y1, z, tmp10, tmp11} diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index c7314c0afd..a8547ec2d7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,21 +1,21 @@ #config(noFreeze: true) #config(noModuleCheck: true) -import "../LinkingGeneratedClasses.mjs" +import "../LinkingGeneratedClasses.mls" module LinkingGeneratedClasses with data class D fun f() = - let {obj_5} - obj_5 = new! LinkingGeneratedClasses."Function$$LinkingGeneratedClasses" - obj_5 + let {obj_4} + obj_4 = new! LinkingGeneratedClasses."Function$$LinkingGeneratedClasses" + obj_4 fun g() = - let {obj_7} - obj_7 = new! LinkingGeneratedClasses."Function$1$LinkingGeneratedClasses" - obj_7 + let {obj_6} + obj_6 = new! LinkingGeneratedClasses."Function$1$LinkingGeneratedClasses" + obj_6 fun test1 = - let {obj_2} - obj_2 = new! LinkingGeneratedClasses."C$LinkingGeneratedClasses" - obj_2 + let {obj_1} + obj_1 = new! LinkingGeneratedClasses."C$LinkingGeneratedClasses" + obj_1 fun test2 = - let {obj_3} - obj_3 = new! D - obj_3 \ No newline at end of file + let {obj_2} + obj_2 = new! D + obj_2 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 42e89b2f66..c02d70a348 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,6 +1,6 @@ #config(noFreeze: true) #config(noModuleCheck: true) -import "../SimpleStagedExample.mjs" +import "../SimpleStagedExample.mls" module SimpleStagedExample with class Bar(x) with () @@ -18,10 +18,10 @@ module SimpleStagedExample with tmp1 = x.bar() tmp1 + 2 else x.bar() - fun foo_Foo_Bar_Lit1_dot_Lit1(b) = 2 + fun foo_Foo_Bar_Lit1_dot_Lit1() = 2 fun baz() = 2 fun f(x, y) = x + y - fun f_Lit2_Lit3(x, y) = 5 + fun f_Lit2_Lit3() = 5 fun fib(n) = let {n1, tmp2, tmp3, tmp4, tmp5} if n is @@ -34,16 +34,16 @@ module SimpleStagedExample with tmp4 = n1 - 2 tmp5 = fib(tmp4) tmp3 + tmp5 - fun fib_Lit1(n) = 1 - fun fib_Lit10(n) = 55 - fun fib_Lit2(n) = 1 - fun fib_Lit3(n) = 2 - fun fib_Lit4(n) = 3 - fun fib_Lit5(n) = 5 - fun fib_Lit6(n) = 8 - fun fib_Lit7(n) = 13 - fun fib_Lit8(n) = 21 - fun fib_Lit9(n) = 34 + fun fib_Lit1() = 1 + fun fib_Lit10() = 55 + fun fib_Lit2() = 1 + fun fib_Lit3() = 2 + fun fib_Lit4() = 3 + fun fib_Lit5() = 5 + fun fib_Lit6() = 8 + fun fib_Lit7() = 13 + fun fib_Lit8() = 21 + fun fib_Lit9() = 34 fun foo() = 60 fun foobar(x) = let {y1, z, tmp10, tmp11} diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 264a9a0a0f..6dfb521b09 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -7,14 +7,14 @@ module Transform3D with let {m5} m5 = zeros(w, w) iterID(m5, w, w) - fun ident_Lit4(w) = - let {tup_170, tup_171, tup_172, tup_173, tup_174} - tup_170 = [1, 0, 0, 0] - tup_171 = [0, 1, 0, 0] - tup_172 = [0, 0, 1, 0] - tup_173 = [0, 0, 0, 1] - tup_174 = [tup_170, tup_171, tup_172, tup_173] - tup_174 + fun ident_Lit4() = + let {tup_171, tup_172, tup_173, tup_174, tup_175} + tup_171 = [1, 0, 0, 0] + tup_172 = [0, 1, 0, 0] + tup_173 = [0, 0, 1, 0] + tup_174 = [0, 0, 0, 1] + tup_175 = [tup_171, tup_172, tup_173, tup_174] + tup_175 fun iter(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -35,63 +35,68 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(0, x, y, colX, i, tmp6, colX) + tmp7 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) tmp9 = j - 1 iterCol(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + fun iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_501, tup_502, tup_503, tup_504, tup_505} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(x, y) + tup_501 = [0] + tup_502 = [0] + tup_503 = [0] + tup_504 = [0] + tup_505 = [tup_501, tup_502, tup_503, tup_504] + tmp8 = Transform3D."Mx$Transform3D".set2D(tup_505, 0, 0, tmp7) tmp9 = 0 - iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp8, x, y) + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(m, x, y, colX, colY, i, j) = + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y, colX, colY, i, j) = + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(x, y) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, 0, tmp7) tmp9 = 0 - iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(tmp8, x, y) + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y, colX, colY, i, j) = + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(x, y) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, 0, tmp7) tmp9 = 0 - iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(tmp8, x, y) + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y, colX, colY, i, j) = + fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 tmp7 = 1 - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, 0, 1) tmp9 = 0 - iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(tmp8, x, y) + fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -99,11 +104,11 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(x, y, tmp6) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, 0, tmp5, tmp7) tmp9 = j - 1 - iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(tmp8, x, y, colY, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -111,11 +116,11 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(x, y, tmp6) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, tmp5, tmp7) tmp9 = j - 1 - iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(tmp8, x, y, colY, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -123,11 +128,11 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(x, y, tmp6) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, tmp5, tmp7) tmp9 = j - 1 - iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(tmp8, x, y, colY, tmp9) + fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -135,63 +140,63 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(x, y, tmp6) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, tmp5, tmp7) tmp9 = j - 1 - iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(tmp8, x, y, colY, tmp9) + fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, colY, i, j) = + fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 0 - iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, i) + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(m, x, y, colX, colY, i, j) = + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 3 tmp6 = 3 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(x, y, colX, i, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 3, tmp7) tmp9 = 0 - iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(tmp8, x, y, colX, i) + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 2 tmp6 = 2 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(x, y, colX, i, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 2, tmp7) tmp9 = 1 - iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(tmp8, x, y, colX, i) + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 1 tmp6 = 1 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(x, y, colX, i, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 1, tmp7) tmp9 = 2 - iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, colY, i, j) = + iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(tmp8, x, y, colX, i) + fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 3 - iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(tmp8, x, y, colX, colY, i, tmp9) + iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(tmp8, x, y, colX, i) fun iterID(m, w, i) = let {scrut4, tmp17, tmp18, tmp19, tmp20} scrut4 = ===(i, 0) @@ -203,46 +208,46 @@ module Transform3D with tmp19 = Transform3D."Mx$Transform3D".set2D(m, tmp17, tmp18, 1) tmp20 = i - 1 iterID(tmp19, w, tmp20) - fun iterID_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4(m, w, i) = - let {tup_160, tup_161, tup_162, tup_163, tup_164} - tup_160 = [1, 0, 0, 0] - tup_161 = [0, 1, 0, 0] - tup_162 = [0, 0, 1, 0] - tup_163 = [0, 0, 0, 1] - tup_164 = [tup_160, tup_161, tup_162, tup_163] - tup_164 - fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit3(m, w, i) = - let {tup_150, tup_151, tup_152, tup_153, tup_154} - tup_150 = [1, 0, 0, 0] - tup_151 = [0, 1, 0, 0] - tup_152 = [0, 0, 1, 0] - tup_153 = [0, 0, 0, 1] - tup_154 = [tup_150, tup_151, tup_152, tup_153] - tup_154 - fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit2(m, w, i) = - let {tup_140, tup_141, tup_142, tup_143, tup_144} - tup_140 = [1, 0, 0, 0] - tup_141 = [0, 1, 0, 0] - tup_142 = [0, 0, 1, 0] - tup_143 = [0, 0, 0, 1] - tup_144 = [tup_140, tup_141, tup_142, tup_143] - tup_144 - fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit1(m, w, i) = - let {tup_130, tup_131, tup_132, tup_133, tup_134} - tup_130 = [1, 0, 0, 0] - tup_131 = [0, 1, 0, 0] - tup_132 = [0, 0, 1, 0] - tup_133 = [0, 0, 0, 1] - tup_134 = [tup_130, tup_131, tup_132, tup_133] - tup_134 - fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit4_Lit0(m, w, i) = - let {tup_120, tup_121, tup_122, tup_123, tup_124} - tup_120 = [1, 0, 0, 0] - tup_121 = [0, 1, 0, 0] - tup_122 = [0, 0, 1, 0] - tup_123 = [0, 0, 0, 1] - tup_124 = [tup_120, tup_121, tup_122, tup_123] - tup_124 + fun iterID_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4(m) = + let {tup_161, tup_162, tup_163, tup_164, tup_165} + tup_161 = [1, 0, 0, 0] + tup_162 = [0, 1, 0, 0] + tup_163 = [0, 0, 1, 0] + tup_164 = [0, 0, 0, 1] + tup_165 = [tup_161, tup_162, tup_163, tup_164] + tup_165 + fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit3(m) = + let {tup_151, tup_152, tup_153, tup_154, tup_155} + tup_151 = [1, 0, 0, 0] + tup_152 = [0, 1, 0, 0] + tup_153 = [0, 0, 1, 0] + tup_154 = [0, 0, 0, 1] + tup_155 = [tup_151, tup_152, tup_153, tup_154] + tup_155 + fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit2(m) = + let {tup_141, tup_142, tup_143, tup_144, tup_145} + tup_141 = [1, 0, 0, 0] + tup_142 = [0, 1, 0, 0] + tup_143 = [0, 0, 1, 0] + tup_144 = [0, 0, 0, 1] + tup_145 = [tup_141, tup_142, tup_143, tup_144] + tup_145 + fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit1(m) = + let {tup_131, tup_132, tup_133, tup_134, tup_135} + tup_131 = [1, 0, 0, 0] + tup_132 = [0, 1, 0, 0] + tup_133 = [0, 0, 1, 0] + tup_134 = [0, 0, 0, 1] + tup_135 = [tup_131, tup_132, tup_133, tup_134] + tup_135 + fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit4_Lit0(m) = + let {tup_121, tup_122, tup_123, tup_124, tup_125} + tup_121 = [1, 0, 0, 0] + tup_122 = [0, 1, 0, 0] + tup_123 = [0, 0, 1, 0] + tup_124 = [0, 0, 0, 1] + tup_125 = [tup_121, tup_122, tup_123, tup_124] + tup_125 fun iterInit(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = ===(i, 0) @@ -254,146 +259,153 @@ module Transform3D with tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) tmp16 = i - 1 iterInit(tmp15, r, c, tmp16) - fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4_Lit0(m, r, c, i) = - let {tup_35, tup_36, tup_37, tup_38, tup_39} - tup_35 = [0, 0, 0, 0] + fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4_Lit0(m) = + let {tup_36, tup_37, tup_38, tup_39, tup_40} tup_36 = [0, 0, 0, 0] tup_37 = [0, 0, 0, 0] tup_38 = [0, 0, 0, 0] - tup_39 = [tup_35, tup_36, tup_37, tup_38] - tup_39 - fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_end_Lit4_Lit4_Lit1(m, r, c, i) = - let {tup_45, tup_46, tup_47, tup_48, tup_49} - tup_45 = [0, 0, 0, 0] + tup_39 = [0, 0, 0, 0] + tup_40 = [tup_36, tup_37, tup_38, tup_39] + tup_40 + fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_end_Lit4_Lit4_Lit1(m) = + let {tup_46, tup_47, tup_48, tup_49, tup_50} tup_46 = [0, 0, 0, 0] tup_47 = [0, 0, 0, 0] tup_48 = [0, 0, 0, 0] - tup_49 = [tup_45, tup_46, tup_47, tup_48] - tup_49 - fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit4_Lit2(m, r, c, i) = - let {tup_55, tup_56, tup_57, tup_58, tup_59} - tup_55 = [0, 0, 0, 0] + tup_49 = [0, 0, 0, 0] + tup_50 = [tup_46, tup_47, tup_48, tup_49] + tup_50 + fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit4_Lit2(m) = + let {tup_56, tup_57, tup_58, tup_59, tup_60} tup_56 = [0, 0, 0, 0] tup_57 = [0, 0, 0, 0] tup_58 = [0, 0, 0, 0] - tup_59 = [tup_55, tup_56, tup_57, tup_58] - tup_59 - fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit3(m, r, c, i) = - let {tup_65, tup_66, tup_67, tup_68, tup_69} - tup_65 = [0, 0, 0, 0] + tup_59 = [0, 0, 0, 0] + tup_60 = [tup_56, tup_57, tup_58, tup_59] + tup_60 + fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit3(m) = + let {tup_66, tup_67, tup_68, tup_69, tup_70} tup_66 = [0, 0, 0, 0] tup_67 = [0, 0, 0, 0] tup_68 = [0, 0, 0, 0] - tup_69 = [tup_65, tup_66, tup_67, tup_68] - tup_69 - fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Lit4_Lit1_Lit0(m, r, c, i) = - let {tup_381, tup_382, tup_383, tup_384, tup_385} - tup_381 = [0] - tup_382 = [0] - tup_383 = [0] - tup_384 = [0] - tup_385 = [tup_381, tup_382, tup_383, tup_384] - tup_385 - fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr__end_end_Lit4_Lit1_Lit1(m, r, c, i) = - let {tup_391, tup_392, tup_393, tup_394, tup_395} - tup_391 = [0] - tup_392 = [0] - tup_393 = [0] - tup_394 = [0] - tup_395 = [tup_391, tup_392, tup_393, tup_394] - tup_395 - fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit1_Lit2(m, r, c, i) = - let {tup_401, tup_402, tup_403, tup_404, tup_405} - tup_401 = [0] - tup_402 = [0] - tup_403 = [0] - tup_404 = [0] - tup_405 = [tup_401, tup_402, tup_403, tup_404] - tup_405 - fun iterInit_Arr_Arr_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit3(m, r, c, i) = - let {tup_411, tup_412, tup_413, tup_414, tup_415} - tup_411 = [0] - tup_412 = [0] - tup_413 = [0] - tup_414 = [0] - tup_415 = [tup_411, tup_412, tup_413, tup_414] - tup_415 - fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16} + tup_69 = [0, 0, 0, 0] + tup_70 = [tup_66, tup_67, tup_68, tup_69] + tup_70 + fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Lit4_Lit1_Lit0(m) = + let {tup_441, tup_442, tup_443, tup_444, tup_445} + tup_441 = [0] + tup_442 = [0] + tup_443 = [0] + tup_444 = [0] + tup_445 = [tup_441, tup_442, tup_443, tup_444] + tup_445 + fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr__end_end_Lit4_Lit1_Lit1(m) = + let {tup_451, tup_452, tup_453, tup_454, tup_455} + tup_451 = [0] + tup_452 = [0] + tup_453 = [0] + tup_454 = [0] + tup_455 = [tup_451, tup_452, tup_453, tup_454] + tup_455 + fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit1_Lit2(m) = + let {tup_461, tup_462, tup_463, tup_464, tup_465} + tup_461 = [0] + tup_462 = [0] + tup_463 = [0] + tup_464 = [0] + tup_465 = [tup_461, tup_462, tup_463, tup_464] + tup_465 + fun iterInit_Arr_Arr_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit3(m) = + let {tup_471, tup_472, tup_473, tup_474, tup_475} + tup_471 = [0] + tup_472 = [0] + tup_473 = [0] + tup_474 = [0] + tup_475 = [tup_471, tup_472, tup_473, tup_474] + tup_475 + fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m, c) = + let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_511, tup_512, tup_513, tup_514, tup_515} scrut3 = false tmp13 = 0 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tup_511 = [] + tup_512 = [] + tup_513 = [] + tup_514 = [] + tup_515 = [tup_511, tup_512, tup_513, tup_514] + tmp15 = Transform3D."Mx$Transform3D".set1D(tup_515, 0, tmp14) tmp16 = 3 - iterInit_Dyn_Lit4_Dyn_Lit3(tmp15, r, c, tmp16) - fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit4(m, r, c, i) = - let {tup_421, tup_422, tup_423, tup_424, tup_425} - tup_421 = [0] - tup_422 = [0] - tup_423 = [0] - tup_424 = [0] - tup_425 = [tup_421, tup_422, tup_423, tup_424] - tup_425 - fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit4(m, r, c, i) = - let {tup_75, tup_76, tup_77, tup_78, tup_79} - tup_75 = [0, 0, 0, 0] + iterInit_Dyn_Lit4_Dyn_Lit3(tmp15, c) + fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit4(m) = + let {tup_481, tup_482, tup_483, tup_484, tup_485} + tup_481 = [0] + tup_482 = [0] + tup_483 = [0] + tup_484 = [0] + tup_485 = [tup_481, tup_482, tup_483, tup_484] + tup_485 + fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit4(m) = + let {tup_76, tup_77, tup_78, tup_79, tup_80} tup_76 = [0, 0, 0, 0] tup_77 = [0, 0, 0, 0] tup_78 = [0, 0, 0, 0] - tup_79 = [tup_75, tup_76, tup_77, tup_78] - tup_79 - fun iterInit_Dyn_Dyn_Lit1_Dyn(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_206} + tup_79 = [0, 0, 0, 0] + tup_80 = [tup_76, tup_77, tup_78, tup_79] + tup_80 + fun iterInit_Dyn_Dyn_Lit1_Dyn(m, r, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_265, tup_266} scrut3 = ===(i, 0) if scrut3 is true then m else tmp13 = r - i - tup_206 = [0] - tmp14 = tup_206 - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tup_265 = [0] + tmp14 = tup_265 + tup_266 = [0] + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_266) tmp16 = i - 1 - iterInit_Dyn_Dyn_Lit1_Dyn(tmp15, r, c, tmp16) - fun iterInit_Dyn_Dyn_Lit4_Dyn(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_205} + iterInit_Dyn_Dyn_Lit1_Dyn(tmp15, r, tmp16) + fun iterInit_Dyn_Dyn_Lit4_Dyn(m, r, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_222, tup_223} scrut3 = ===(i, 0) if scrut3 is true then m else tmp13 = r - i - tup_205 = [0, 0, 0, 0] - tmp14 = tup_205 - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tup_222 = [0, 0, 0, 0] + tmp14 = tup_222 + tup_223 = [0, 0, 0, 0] + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_223) tmp16 = i - 1 - iterInit_Dyn_Dyn_Lit4_Dyn(tmp15, r, c, tmp16) - fun iterInit_Dyn_Lit4_Dyn_Lit0(m, r, c, i) = + iterInit_Dyn_Dyn_Lit4_Dyn(tmp15, r, tmp16) + fun iterInit_Dyn_Lit4_Dyn_Lit0(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = true m - fun iterInit_Dyn_Lit4_Dyn_Lit1(m, r, c, i) = + fun iterInit_Dyn_Lit4_Dyn_Lit1(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 3 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp15 = Transform3D."Mx$Transform3D".set1D(m, 3, tmp14) tmp16 = 0 - iterInit_Dyn_Lit4_Dyn_Lit0(tmp15, r, c, tmp16) - fun iterInit_Dyn_Lit4_Dyn_Lit2(m, r, c, i) = + iterInit_Dyn_Lit4_Dyn_Lit0(tmp15, c) + fun iterInit_Dyn_Lit4_Dyn_Lit2(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 2 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp15 = Transform3D."Mx$Transform3D".set1D(m, 2, tmp14) tmp16 = 1 - iterInit_Dyn_Lit4_Dyn_Lit1(tmp15, r, c, tmp16) - fun iterInit_Dyn_Lit4_Dyn_Lit3(m, r, c, i) = + iterInit_Dyn_Lit4_Dyn_Lit1(tmp15, c) + fun iterInit_Dyn_Lit4_Dyn_Lit3(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 1 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp15 = Transform3D."Mx$Transform3D".set1D(m, 1, tmp14) tmp16 = 2 - iterInit_Dyn_Lit4_Dyn_Lit2(tmp15, r, c, tmp16) + iterInit_Dyn_Lit4_Dyn_Lit2(tmp15, c) fun iterRow(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) @@ -404,95 +416,95 @@ module Transform3D with tmp11 = iterCol(m, x, y, colX, colY, tmp10, colY) tmp12 = i - 1 iterRow(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(m, x, y, rowX, colX, colY, i) = + fun iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 0 - tmp11 = iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y) tmp12 = 3 - iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(m, x, y, rowX, colX, colY, i) = + iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(tmp11, x, y) + fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = true m - fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(m, x, y, rowX, colX, colY, i) = + fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 3 - tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y) tmp12 = 0 - iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(m, x, y, rowX, colX, colY, i) = + iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(tmp11, x, y) + fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 2 - tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y) tmp12 = 1 - iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(m, x, y, rowX, colX, colY, i) = + iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(tmp11, x, y) + fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 1 - tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y) tmp12 = 2 - iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(m, x, y, rowX, colX, colY, i) = + iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(tmp11, x, y) + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = true m - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(m, x, y, rowX, colX, colY, i) = + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 3 - tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colY, colY) tmp12 = 0 - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(m, x, y, rowX, colX, colY, i) = + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(tmp11, x, y, colY) + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 2 - tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colY, colY) tmp12 = 1 - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(m, x, y, rowX, colX, colY, i) = + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(tmp11, x, y, colY) + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 1 - tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colY, colY) tmp12 = 2 - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(m, x, y, rowX, colX, colY, i) = + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(tmp11, x, y, colY) + fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 0 - tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colY, colY) tmp12 = 3 - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, colY, i) = + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(tmp11, x, y, colY) + fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) if scrut2 is true then m else tmp10 = rowX - i - tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, tmp10) tmp12 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(m, x, y, rowX, colX, colY, i) = + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp11, x, y, rowX, colX, tmp12) + fun iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(m, x, y, rowX, colX, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) if scrut2 is true then m else tmp10 = rowX - i - tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, colY, tmp10, colY) + tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, tmp10) tmp12 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(tmp11, x, y, rowX, colX, colY, tmp12) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(sum, x, y, colX, i, j, k) = + iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(tmp11, x, y, rowX, colX, tmp12) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(sum, x, y, colX, i, j, k) = + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -500,8 +512,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(tmp3, x, y) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -509,8 +521,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(tmp3, x, y) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -518,12 +530,12 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 2 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(tmp3, x, y) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(sum, x, y, colX, i, j, k) = + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -531,8 +543,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp3, x, y) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -540,12 +552,12 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(tmp3, x, y) + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(sum, x, y, colX, i, j, k) = + fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -553,21 +565,21 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(tmp3, x, y) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(sum, x, y, colX, i, j, k) = + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 tmp1 = 3 - tmp2 = *(11, y.(tmp1).(j)) + tmp2 = *(11, y.(3).(j)) tmp3 = sum + tmp2 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(tmp3, x, y, j) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -575,8 +587,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(tmp3, x, y, j) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -584,21 +596,21 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 2 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(tmp3, x, y, j) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(sum, x, y, colX, i, j, k) = + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 tmp1 = 3 - tmp2 = *(4, y.(tmp1).(j)) + tmp2 = *(4, y.(3).(j)) tmp3 = sum + tmp2 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(tmp3, x, y, j) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -606,103 +618,103 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(tmp3, x, y, j) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(sum, x, y, colX, i, j, k) = + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 tmp1 = 3 - tmp2 = *(51, y.(tmp1).(j)) + tmp2 = *(51, y.(3).(j)) tmp3 = sum + tmp2 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(tmp3, x, y, j) + fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_229, tup_230, tup_231, tup_232, tup_233} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(sum, x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_239, tup_240, tup_241, tup_242, tup_243} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(sum, x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_249, tup_250, tup_251, tup_252, tup_253} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(sum, x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_259, tup_260, tup_261, tup_262, tup_263} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(3)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(sum, x, y, colX, i, j, k) = + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 tmp1 = 0 - tmp2 = *(0.4, y.(tmp1).(j)) + tmp2 = *(0.4, y.(0).(0)) tmp3 = 0 + tmp2 tmp4 = 3 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(tmp3, x, y) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 tmp1 = 1 - tmp2 = *(0.19, y.(tmp1).(j)) + tmp2 = *(0.19, y.(1).(0)) tmp3 = 0 + tmp2 tmp4 = 2 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(tmp3, x, y) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -710,17 +722,17 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(x, y) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 tmp1 = 2 - tmp2 = *(0.19, y.(tmp1).(j)) + tmp2 = *(0.19, y.(2).(0)) tmp3 = 0 + tmp2 tmp4 = 1 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(tmp3, x, y) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -728,8 +740,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 2 - iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(x, y) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -737,30 +749,30 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(sum, x, y, colX, i, j, k) = 1 - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(sum, x, y, colX, i, j, k) = 1 - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(sum, x, y, colX, i, j, k) = 1 - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(sum, x, y, colX, i, j, k) = 1 - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(x, y) + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(x, y) = 1 + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(x, y) = 1 + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(x, y) = 1 + fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(x, y) = 1 + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 tmp1 = 0 - tmp2 = *(1, y.(tmp1).(j)) + tmp2 = *(1, y.(0).(j)) tmp3 = 0 + tmp2 tmp4 = 3 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(tmp3, x, y, j) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 tmp1 = 1 - tmp2 = *(1, y.(tmp1).(j)) + tmp2 = *(1, y.(1).(j)) tmp3 = 0 + tmp2 tmp4 = 2 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(tmp3, x, y, j) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -768,17 +780,17 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(x, y, j) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 tmp1 = 2 - tmp2 = *(1, y.(tmp1).(j)) + tmp2 = *(1, y.(2).(j)) tmp3 = 0 + tmp2 tmp4 = 1 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(tmp3, x, y, j) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -786,8 +798,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 2 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(x, y, j) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -795,17 +807,17 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(x, y, j) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 tmp1 = 3 - tmp2 = *(1, y.(tmp1).(j)) + tmp2 = *(1, y.(3).(j)) tmp3 = 0 + tmp2 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(sum, x, y, colX, i, j, k) = + iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(tmp3, x, y, j) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -813,8 +825,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 1 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(x, y, j) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -822,8 +834,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 2 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(x, y, j) + fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -831,68 +843,68 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(tmp3, x, y, colX, i, j, tmp4) - fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = + iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(x, y, j) + fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_224, tup_225, tup_226, tup_227, tup_228} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_234, tup_235, tup_236, tup_237, tup_238} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_244, tup_245, tup_246, tup_247, tup_248} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_254, tup_255, tup_256, tup_257, tup_258} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(3)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, j, tmp4) + iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(sum, x, y, colX, i, j, k) = + fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is @@ -904,18 +916,18 @@ module Transform3D with tmp4 = k - 1 iter(tmp3, x, y, colX, i, j, tmp4) else 0 - fun iter_Lit1_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(sum, x, y, colX, i, j, k) = 1 + fun iter_Lit1_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(x, y) = 1 fun model(local, position, scaling, rotation) = - let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_200, tup_201, tup_202, tup_203, tup_204} + let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_216, tup_217, tup_218, tup_219, tup_220} tmp43 = rotateZ(rotation.2) tmp44 = rotateY(rotation.1) tmp45 = rotateX(rotation.0) - tup_200 = [1, 0, 0, 0] - tup_201 = [0, 1, 0, 0] - tup_202 = [0, 0, 1, 0] - tup_203 = [0, 0, 0, 1] - tup_204 = [tup_200, tup_201, tup_202, tup_203] - tmp46 = tup_204 + tup_216 = [1, 0, 0, 0] + tup_217 = [0, 1, 0, 0] + tup_218 = [0, 0, 1, 0] + tup_219 = [0, 0, 0, 1] + tup_220 = [tup_216, tup_217, tup_218, tup_219] + tmp46 = tup_220 tmp47 = multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(tmp45, tmp46) tmp48 = multiply(tmp44, tmp47) rot = multiply(tmp43, tmp48) @@ -938,31 +950,31 @@ module Transform3D with tmp61 = [tmp60, 3.1415926535, 0] model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, tmp58, tmp59, tmp61) fun model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, position, scaling, rotation) = - let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_222, tup_223, tup_224, tup_225, tup_226, tup_282, tup_283, tup_284, tup_285, tup_286, tup_342, tup_343, tup_344, tup_345, tup_346} - tmp43 = rotateZ_Lit0(rotation.2) - tmp44 = rotateY_Lit3_p_1415926535(rotation.1) - tmp45 = rotateX_Lit2_p_51327412(rotation.0) - tup_222 = [1, 0, 0, 0] - tup_223 = [0, 1, 0, 0] - tup_224 = [0, 0, 1, 0] - tup_225 = [0, 0, 0, 1] - tup_226 = [tup_222, tup_223, tup_224, tup_225] - tmp46 = tup_226 + let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_282, tup_283, tup_284, tup_285, tup_286, tup_342, tup_343, tup_344, tup_345, tup_346, tup_402, tup_403, tup_404, tup_405, tup_406} + tmp43 = rotateZ_Lit0() + tmp44 = rotateY_Lit3_p_1415926535() + tmp45 = rotateX_Lit2_p_51327412() + tup_282 = [1, 0, 0, 0] + tup_283 = [0, 1, 0, 0] + tup_284 = [0, 0, 1, 0] + tup_285 = [0, 0, 0, 1] + tup_286 = [tup_282, tup_283, tup_284, tup_285] + tmp46 = tup_286 tmp47 = multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(tmp45, tmp46) tmp48 = multiply(tmp44, tmp47) rot = multiply(tmp43, tmp48) - tup_282 = [1, 0, 0, 11] - tup_283 = [0, 1, 0, 4] - tup_284 = [0, 0, 1, 51] - tup_285 = [0, 0, 0, 1] - tup_286 = [tup_282, tup_283, tup_284, tup_285] - tmp49 = tup_286 - tup_342 = [0.4, 0, 0, 0] - tup_343 = [0, 0.19, 0, 0] - tup_344 = [0, 0, 0.19, 0] + tup_342 = [1, 0, 0, 11] + tup_343 = [0, 1, 0, 4] + tup_344 = [0, 0, 1, 51] tup_345 = [0, 0, 0, 1] tup_346 = [tup_342, tup_343, tup_344, tup_345] - tmp50 = tup_346 + tmp49 = tup_346 + tup_402 = [0.4, 0, 0, 0] + tup_403 = [0, 0.19, 0, 0] + tup_404 = [0, 0, 0.19, 0] + tup_405 = [0, 0, 0, 1] + tup_406 = [tup_402, tup_403, tup_404, tup_405] + tmp50 = tup_406 tmp51 = [local.0] tmp52 = [local.1] tmp53 = [local.2] @@ -981,270 +993,294 @@ module Transform3D with res = zeros(rowX1, colY2) iterRow(res, x, y, rowX1, colX3, colY2, rowX1) fun multiply_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = - let {rowX1, colX3, rowY, colY2, res, tup_436, tup_437, tup_438, tup_439, tup_440} + let {rowX1, colX3, rowY, colY2, res, tup_496, tup_497, tup_498, tup_499, tup_500} rowX1 = 4 colX3 = 4 rowY = 4 colY2 = 1 - tup_436 = [0] - tup_437 = [0] - tup_438 = [0] - tup_439 = [0] - tup_440 = [tup_436, tup_437, tup_438, tup_439] - res = tup_440 - iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(res, x, y, rowX1, colX3, colY2, rowX1) + tup_496 = [0] + tup_497 = [0] + tup_498 = [0] + tup_499 = [0] + tup_500 = [tup_496, tup_497, tup_498, tup_499] + res = tup_500 + iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(res, x, y) fun multiply_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = 4 colX3 = 4 rowY = y.length colY2 = y.0.length - res = zeros_Lit4_Dyn(rowX1, colY2) - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(res, x, y, rowX1, colX3, colY2, rowX1) + res = zeros_Lit4_Dyn(colY2) + iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(res, x, y, colY2) fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = x.length colX3 = x.0.length rowY = 4 colY2 = 1 - res = zeros_Dyn_Lit1(rowX1, colY2) - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(res, x, y, rowX1, colX3, colY2, rowX1) + res = zeros_Dyn_Lit1(rowX1) + iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(res, x, y, rowX1, colX3, rowX1) fun multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = x.length colX3 = x.0.length rowY = 4 colY2 = 4 - res = zeros_Dyn_Lit4(rowX1, colY2) - iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(res, x, y, rowX1, colX3, colY2, rowX1) + res = zeros_Dyn_Lit4(rowX1) + iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(res, x, y, rowX1, colX3, rowX1) fun rotateX(angle) = - let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_185, tup_186, tup_187, tup_188, tup_189} + let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_196, tup_197, tup_198, tup_199, tup_200} s = globalThis.Math.sin(angle) c2 = globalThis.Math.cos(angle) - tup_185 = [1, 0, 0, 0] - tup_186 = [0, 1, 0, 0] - tup_187 = [0, 0, 1, 0] - tup_188 = [0, 0, 0, 1] - tup_189 = [tup_185, tup_186, tup_187, tup_188] - tmp28 = tup_189 - tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, 1, 1, c2) + tup_196 = [1, 0, 0, 0] + tup_197 = [0, 1, 0, 0] + tup_198 = [0, 0, 1, 0] + tup_199 = [0, 0, 0, 1] + tup_200 = [tup_196, tup_197, tup_198, tup_199] + tmp28 = tup_200 + tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, c2) tmp30 = -(s) - tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, 1, 2, tmp30) - tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, 2, 1, s) - update_Dyn_Lit2_Lit2_Dyn(tmp32, 2, 2, c2) - fun rotateX_Lit2_p_51327412(angle) = - let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_217, tup_218, tup_219, tup_220, tup_221} - s = globalThis.Math.sin(angle) - c2 = globalThis.Math.cos(angle) - tup_217 = [1, 0, 0, 0] - tup_218 = [0, 1, 0, 0] - tup_219 = [0, 0, 1, 0] - tup_220 = [0, 0, 0, 1] - tup_221 = [tup_217, tup_218, tup_219, tup_220] - tmp28 = tup_221 - tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, 1, 1, c2) + tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, tmp30) + tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, s) + update_Dyn_Lit2_Lit2_Dyn(tmp32, c2) + fun rotateX_Lit2_p_51327412() = + let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_277, tup_278, tup_279, tup_280, tup_281} + s = globalThis.Math.sin(2.51327412) + c2 = globalThis.Math.cos(2.51327412) + tup_277 = [1, 0, 0, 0] + tup_278 = [0, 1, 0, 0] + tup_279 = [0, 0, 1, 0] + tup_280 = [0, 0, 0, 1] + tup_281 = [tup_277, tup_278, tup_279, tup_280] + tmp28 = tup_281 + tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, c2) tmp30 = -(s) - tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, 1, 2, tmp30) - tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, 2, 1, s) - update_Dyn_Lit2_Lit2_Dyn(tmp32, 2, 2, c2) + tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, tmp30) + tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, s) + update_Dyn_Lit2_Lit2_Dyn(tmp32, c2) fun rotateY(angle) = - let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_190, tup_191, tup_192, tup_193, tup_194} + let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_206, tup_207, tup_208, tup_209, tup_210} s1 = globalThis.Math.sin(angle) c3 = globalThis.Math.cos(angle) - tup_190 = [1, 0, 0, 0] - tup_191 = [0, 1, 0, 0] - tup_192 = [0, 0, 1, 0] - tup_193 = [0, 0, 0, 1] - tup_194 = [tup_190, tup_191, tup_192, tup_193] - tmp33 = tup_194 - tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, 0, 0, c3) - tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, 0, 2, s1) + tup_206 = [1, 0, 0, 0] + tup_207 = [0, 1, 0, 0] + tup_208 = [0, 0, 1, 0] + tup_209 = [0, 0, 0, 1] + tup_210 = [tup_206, tup_207, tup_208, tup_209] + tmp33 = tup_210 + tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, c3) + tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, s1) tmp36 = -(s1) - tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, 2, 0, tmp36) - update_Dyn_Lit2_Lit2_Dyn(tmp37, 2, 2, c3) - fun rotateY_Lit3_p_1415926535(angle) = - let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_212, tup_213, tup_214, tup_215, tup_216} - s1 = globalThis.Math.sin(angle) - c3 = globalThis.Math.cos(angle) - tup_212 = [1, 0, 0, 0] - tup_213 = [0, 1, 0, 0] - tup_214 = [0, 0, 1, 0] - tup_215 = [0, 0, 0, 1] - tup_216 = [tup_212, tup_213, tup_214, tup_215] - tmp33 = tup_216 - tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, 0, 0, c3) - tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, 0, 2, s1) + tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, tmp36) + update_Dyn_Lit2_Lit2_Dyn(tmp37, c3) + fun rotateY_Lit3_p_1415926535() = + let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_272, tup_273, tup_274, tup_275, tup_276} + s1 = globalThis.Math.sin(3.1415926535) + c3 = globalThis.Math.cos(3.1415926535) + tup_272 = [1, 0, 0, 0] + tup_273 = [0, 1, 0, 0] + tup_274 = [0, 0, 1, 0] + tup_275 = [0, 0, 0, 1] + tup_276 = [tup_272, tup_273, tup_274, tup_275] + tmp33 = tup_276 + tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, c3) + tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, s1) tmp36 = -(s1) - tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, 2, 0, tmp36) - update_Dyn_Lit2_Lit2_Dyn(tmp37, 2, 2, c3) + tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, tmp36) + update_Dyn_Lit2_Lit2_Dyn(tmp37, c3) fun rotateZ(angle) = - let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_195, tup_196, tup_197, tup_198, tup_199} + let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_211, tup_212, tup_213, tup_214, tup_215} s2 = globalThis.Math.sin(angle) c4 = globalThis.Math.cos(angle) - tup_195 = [1, 0, 0, 0] - tup_196 = [0, 1, 0, 0] - tup_197 = [0, 0, 1, 0] - tup_198 = [0, 0, 0, 1] - tup_199 = [tup_195, tup_196, tup_197, tup_198] - tmp38 = tup_199 - tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, 0, 0, c4) + tup_211 = [1, 0, 0, 0] + tup_212 = [0, 1, 0, 0] + tup_213 = [0, 0, 1, 0] + tup_214 = [0, 0, 0, 1] + tup_215 = [tup_211, tup_212, tup_213, tup_214] + tmp38 = tup_215 + tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, c4) tmp40 = -(s2) - tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, 0, 1, tmp40) - tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, 1, 0, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp42, 1, 1, c4) - fun rotateZ_Lit0(angle) = - let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_207, tup_208, tup_209, tup_210, tup_211} - s2 = globalThis.Math.sin(angle) - c4 = globalThis.Math.cos(angle) - tup_207 = [1, 0, 0, 0] - tup_208 = [0, 1, 0, 0] - tup_209 = [0, 0, 1, 0] - tup_210 = [0, 0, 0, 1] - tup_211 = [tup_207, tup_208, tup_209, tup_210] - tmp38 = tup_211 - tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, 0, 0, c4) + tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, tmp40) + tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp42, c4) + fun rotateZ_Lit0() = + let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_267, tup_268, tup_269, tup_270, tup_271} + s2 = globalThis.Math.sin(0) + c4 = globalThis.Math.cos(0) + tup_267 = [1, 0, 0, 0] + tup_268 = [0, 1, 0, 0] + tup_269 = [0, 0, 1, 0] + tup_270 = [0, 0, 0, 1] + tup_271 = [tup_267, tup_268, tup_269, tup_270] + tmp38 = tup_271 + tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, c4) tmp40 = -(s2) - tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, 0, 1, tmp40) - tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, 1, 0, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp42, 1, 1, c4) + tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, tmp40) + tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp42, c4) fun scale(sx, sy, sz) = - let {tmp25, tmp26, tmp27, tup_180, tup_181, tup_182, tup_183, tup_184} - tup_180 = [1, 0, 0, 0] - tup_181 = [0, 1, 0, 0] - tup_182 = [0, 0, 1, 0] - tup_183 = [0, 0, 0, 1] - tup_184 = [tup_180, tup_181, tup_182, tup_183] - tmp25 = tup_184 - tmp26 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp25, 0, 0, sx) - tmp27 = update_Dyn_Lit1_Lit1_Dyn(tmp26, 1, 1, sy) - update_Dyn_Lit2_Lit2_Dyn(tmp27, 2, 2, sz) - fun scale_Lit0_p_4_Lit0_p_19_Lit0_p_19(sx, sy, sz) = + let {tmp25, tmp26, tmp27, tup_186, tup_187, tup_188, tup_189, tup_190} + tup_186 = [1, 0, 0, 0] + tup_187 = [0, 1, 0, 0] + tup_188 = [0, 0, 1, 0] + tup_189 = [0, 0, 0, 1] + tup_190 = [tup_186, tup_187, tup_188, tup_189] + tmp25 = tup_190 + tmp26 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp25, sx) + tmp27 = update_Dyn_Lit1_Lit1_Dyn(tmp26, sy) + update_Dyn_Lit2_Lit2_Dyn(tmp27, sz) + fun scale_Lit0_p_4_Lit0_p_19_Lit0_p_19() = + let {tup_397, tup_398, tup_399, tup_400, tup_401} + tup_397 = [0.4, 0, 0, 0] + tup_398 = [0, 0.19, 0, 0] + tup_399 = [0, 0, 0.19, 0] + tup_400 = [0, 0, 0, 1] + tup_401 = [tup_397, tup_398, tup_399, tup_400] + tup_401 + fun transform(dx, dy, dz) = + let {tmp22, tmp23, tmp24, tup_176, tup_177, tup_178, tup_179, tup_180} + tup_176 = [1, 0, 0, 0] + tup_177 = [0, 1, 0, 0] + tup_178 = [0, 0, 1, 0] + tup_179 = [0, 0, 0, 1] + tup_180 = [tup_176, tup_177, tup_178, tup_179] + tmp22 = tup_180 + tmp23 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(tmp22, dx) + tmp24 = update_Dyn_Lit1_Lit3_Dyn(tmp23, dy) + update_Dyn_Lit2_Lit3_Dyn(tmp24, dz) + fun transform_Lit11_Lit4_Lit51() = let {tup_337, tup_338, tup_339, tup_340, tup_341} - tup_337 = [0.4, 0, 0, 0] - tup_338 = [0, 0.19, 0, 0] - tup_339 = [0, 0, 0.19, 0] + tup_337 = [1, 0, 0, 11] + tup_338 = [0, 1, 0, 4] + tup_339 = [0, 0, 1, 51] tup_340 = [0, 0, 0, 1] tup_341 = [tup_337, tup_338, tup_339, tup_340] tup_341 - fun transform(dx, dy, dz) = - let {tmp22, tmp23, tmp24, tup_175, tup_176, tup_177, tup_178, tup_179} - tup_175 = [1, 0, 0, 0] - tup_176 = [0, 1, 0, 0] - tup_177 = [0, 0, 1, 0] - tup_178 = [0, 0, 0, 1] - tup_179 = [tup_175, tup_176, tup_177, tup_178] - tmp22 = tup_179 - tmp23 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(tmp22, 0, 3, dx) - tmp24 = update_Dyn_Lit1_Lit3_Dyn(tmp23, 1, 3, dy) - update_Dyn_Lit2_Lit3_Dyn(tmp24, 2, 3, dz) - fun transform_Lit11_Lit4_Lit51(dx, dy, dz) = - let {tup_277, tup_278, tup_279, tup_280, tup_281} - tup_277 = [1, 0, 0, 11] - tup_278 = [0, 1, 0, 4] - tup_279 = [0, 0, 1, 51] - tup_280 = [0, 0, 0, 1] - tup_281 = [tup_277, tup_278, tup_279, tup_280] - tup_281 fun update(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit2_Lit0_p_19(m, i, j, v) = - let {tup_327, tup_328, tup_329, tup_330, tup_331} - tup_327 = [0.4, 0, 0, 0] - tup_328 = [0, 0.19, 0, 0] - tup_329 = [0, 0, 0.19, 0] - tup_330 = [0, 0, 0, 1] - tup_331 = [tup_327, tup_328, tup_329, tup_330] - tup_331 - fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Lit0_p_19(m, i, j, v) = - let {tup_312, tup_313, tup_314, tup_315, tup_316} - tup_312 = [0.4, 0, 0, 0] - tup_313 = [0, 0.19, 0, 0] - tup_314 = [0, 0, 1, 0] - tup_315 = [0, 0, 0, 1] - tup_316 = [tup_312, tup_313, tup_314, tup_315] - tup_316 - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Lit0_p_4(m, i, j, v) = + fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit2_Lit0_p_19(m) = + let {tup_387, tup_388, tup_389, tup_390, tup_391} + tup_387 = [0.4, 0, 0, 0] + tup_388 = [0, 0.19, 0, 0] + tup_389 = [0, 0, 0.19, 0] + tup_390 = [0, 0, 0, 1] + tup_391 = [tup_387, tup_388, tup_389, tup_390] + tup_391 + fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Lit0_p_19(m) = + let {tup_372, tup_373, tup_374, tup_375, tup_376} + tup_372 = [0.4, 0, 0, 0] + tup_373 = [0, 0.19, 0, 0] + tup_374 = [0, 0, 1, 0] + tup_375 = [0, 0, 0, 1] + tup_376 = [tup_372, tup_373, tup_374, tup_375] + tup_376 + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(m, v) = + let {tup_191, tup_192, tup_193, tup_194, tup_195} + tup_191 = [1, 0, 0, 0] + tup_192 = [0, 1, 0, 0] + tup_193 = [0, 0, 1, 0] + tup_194 = [0, 0, 0, 1] + tup_195 = [tup_191, tup_192, tup_193, tup_194] + Transform3D."Mx$Transform3D".set2D(tup_195, 0, 0, v) + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Lit0_p_4(m) = + let {tup_357, tup_358, tup_359, tup_360, tup_361} + tup_357 = [0.4, 0, 0, 0] + tup_358 = [0, 1, 0, 0] + tup_359 = [0, 0, 1, 0] + tup_360 = [0, 0, 0, 1] + tup_361 = [tup_357, tup_358, tup_359, tup_360] + tup_361 + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(m, v) = + let {tup_181, tup_182, tup_183, tup_184, tup_185} + tup_181 = [1, 0, 0, 0] + tup_182 = [0, 1, 0, 0] + tup_183 = [0, 0, 1, 0] + tup_184 = [0, 0, 0, 1] + tup_185 = [tup_181, tup_182, tup_183, tup_184] + Transform3D."Mx$Transform3D".set2D(tup_185, 0, 3, v) + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Lit11(m) = let {tup_297, tup_298, tup_299, tup_300, tup_301} - tup_297 = [0.4, 0, 0, 0] + tup_297 = [1, 0, 0, 11] tup_298 = [0, 1, 0, 0] tup_299 = [0, 0, 1, 0] tup_300 = [0, 0, 0, 1] tup_301 = [tup_297, tup_298, tup_299, tup_300] tup_301 - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Lit11(m, i, j, v) = - let {tup_237, tup_238, tup_239, tup_240, tup_241} - tup_237 = [1, 0, 0, 11] - tup_238 = [0, 1, 0, 0] - tup_239 = [0, 0, 1, 0] - tup_240 = [0, 0, 0, 1] - tup_241 = [tup_237, tup_238, tup_239, tup_240] - tup_241 - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit3_Lit4(m, i, j, v) = - let {tup_252, tup_253, tup_254, tup_255, tup_256} - tup_252 = [1, 0, 0, 11] - tup_253 = [0, 1, 0, 4] - tup_254 = [0, 0, 1, 0] - tup_255 = [0, 0, 0, 1] - tup_256 = [tup_252, tup_253, tup_254, tup_255] - tup_256 - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit3_Lit51(m, i, j, v) = - let {tup_267, tup_268, tup_269, tup_270, tup_271} - tup_267 = [1, 0, 0, 11] - tup_268 = [0, 1, 0, 4] - tup_269 = [0, 0, 1, 51] - tup_270 = [0, 0, 0, 1] - tup_271 = [tup_267, tup_268, tup_269, tup_270] - tup_271 - fun update_Dyn_Lit0_Lit1_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Dyn_Lit0_Lit2_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Dyn_Lit1_Lit0_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Dyn_Lit1_Lit1_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Dyn_Lit1_Lit2_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Dyn_Lit1_Lit3_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Dyn_Lit2_Lit0_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Dyn_Lit2_Lit1_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Dyn_Lit2_Lit2_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Dyn_Lit2_Lit3_Dyn(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(m, v) = + let {tup_201, tup_202, tup_203, tup_204, tup_205} + tup_201 = [1, 0, 0, 0] + tup_202 = [0, 1, 0, 0] + tup_203 = [0, 0, 1, 0] + tup_204 = [0, 0, 0, 1] + tup_205 = [tup_201, tup_202, tup_203, tup_204] + Transform3D."Mx$Transform3D".set2D(tup_205, 1, 1, v) + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit3_Lit4(m) = + let {tup_312, tup_313, tup_314, tup_315, tup_316} + tup_312 = [1, 0, 0, 11] + tup_313 = [0, 1, 0, 4] + tup_314 = [0, 0, 1, 0] + tup_315 = [0, 0, 0, 1] + tup_316 = [tup_312, tup_313, tup_314, tup_315] + tup_316 + fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit3_Lit51(m) = + let {tup_327, tup_328, tup_329, tup_330, tup_331} + tup_327 = [1, 0, 0, 11] + tup_328 = [0, 1, 0, 4] + tup_329 = [0, 0, 1, 51] + tup_330 = [0, 0, 0, 1] + tup_331 = [tup_327, tup_328, tup_329, tup_330] + tup_331 + fun update_Dyn_Lit0_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 1, v) + fun update_Dyn_Lit0_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 2, v) + fun update_Dyn_Lit1_Lit0_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 0, v) + fun update_Dyn_Lit1_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 1, v) + fun update_Dyn_Lit1_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 2, v) + fun update_Dyn_Lit1_Lit3_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 3, v) + fun update_Dyn_Lit2_Lit0_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 0, v) + fun update_Dyn_Lit2_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 1, v) + fun update_Dyn_Lit2_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 2, v) + fun update_Dyn_Lit2_Lit3_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 3, v) fun zeros(r, c) = - let {m4, tmp21} + let {m4, tmp21, tup_1} tmp21 = [] - m4 = Transform3D."Mx$Transform3D".init(r, tmp21) + tup_1 = [] + m4 = Transform3D."Mx$Transform3D".init(r, tup_1) iterInit(m4, r, c, r) - fun zeros_Dyn_Lit1(r, c) = - let {m4, tmp21} + fun zeros_Dyn_Lit1(r) = + let {m4, tmp21, tup_264} tmp21 = [] - m4 = Transform3D."Mx$Transform3D".init(r, tmp21) - iterInit_Dyn_Dyn_Lit1_Dyn(m4, r, c, r) - fun zeros_Dyn_Lit4(r, c) = - let {m4, tmp21} + tup_264 = [] + m4 = Transform3D."Mx$Transform3D".init(r, tup_264) + iterInit_Dyn_Dyn_Lit1_Dyn(m4, r, r) + fun zeros_Dyn_Lit4(r) = + let {m4, tmp21, tup_221} tmp21 = [] - m4 = Transform3D."Mx$Transform3D".init(r, tmp21) - iterInit_Dyn_Dyn_Lit4_Dyn(m4, r, c, r) - fun zeros_Lit4_Dyn(r, c) = - let {m4, tmp21, tup_441, tup_442, tup_443, tup_444, tup_445} + tup_221 = [] + m4 = Transform3D."Mx$Transform3D".init(r, tup_221) + iterInit_Dyn_Dyn_Lit4_Dyn(m4, r, r) + fun zeros_Lit4_Dyn(c) = + let {m4, tmp21, tup_506, tup_507, tup_508, tup_509, tup_510} tmp21 = [] - tup_441 = [] - tup_442 = [] - tup_443 = [] - tup_444 = [] - tup_445 = [tup_441, tup_442, tup_443, tup_444] - m4 = tup_445 - iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m4, r, c, r) - fun zeros_Lit4_Lit1(r, c) = - let {tup_431, tup_432, tup_433, tup_434, tup_435} - tup_431 = [0] - tup_432 = [0] - tup_433 = [0] - tup_434 = [0] - tup_435 = [tup_431, tup_432, tup_433, tup_434] - tup_435 - fun zeros_Lit4_Lit4(r, c) = - let {tup_85, tup_86, tup_87, tup_88, tup_89} - tup_85 = [0, 0, 0, 0] + tup_506 = [] + tup_507 = [] + tup_508 = [] + tup_509 = [] + tup_510 = [tup_506, tup_507, tup_508, tup_509] + m4 = tup_510 + iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m4, c) + fun zeros_Lit4_Lit1() = + let {tup_491, tup_492, tup_493, tup_494, tup_495} + tup_491 = [0] + tup_492 = [0] + tup_493 = [0] + tup_494 = [0] + tup_495 = [tup_491, tup_492, tup_493, tup_494] + tup_495 + fun zeros_Lit4_Lit4() = + let {tup_86, tup_87, tup_88, tup_89, tup_90} tup_86 = [0, 0, 0, 0] tup_87 = [0, 0, 0, 0] tup_88 = [0, 0, 0, 0] - tup_89 = [tup_85, tup_86, tup_87, tup_88] - tup_89 \ No newline at end of file + tup_89 = [0, 0, 0, 0] + tup_90 = [tup_86, tup_87, tup_88, tup_89] + tup_90 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 87e4d9287e..2e15327675 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -3,46 +3,75 @@ :noModuleCheck fun gen(M, name) = - M."generate"("../" + name + ".mjs", "./hkmc2/shared/src/test/mlscript-compile/staging/out/" + name + ".mls") + M."generate"("../" + name + ".mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/" + name + ".mls") import "../../mlscript-compile/staging/SimpleStagedExample.mls" +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'class') +//│ at (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mjs:49:49) +//│ at (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mjs:147:15) +//│ at file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mjs:973:11 +//│ at ModuleJob.run (node:internal/modules/esm/module_job:274:25) +//│ at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:644:26) +//│ at async importModuleDynamicallyWrapper (node:internal/vm/module:436:15) +//│ at async REPL17:1:106 +//│ at async node:repl:640:29 gen(SimpleStagedExample, "SimpleStagedExample") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'generate') +//│ at gen (REPL14:1:298) +//│ at REPL20:1:38 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) import "../../mlscript-compile/staging/out/SimpleStagedExample.mls" - - +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'class') +//│ at (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mjs:49:49) +//│ at (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mjs:147:15) +//│ at file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mjs:973:11 +//│ at ModuleJob.run (node:internal/modules/esm/module_job:274:25) +//│ at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:644:26) +//│ at async importModuleDynamicallyWrapper (node:internal/vm/module:436:15) +//│ at async REPL17:1:106 +//│ at async node:repl:640:29 + +:expect 60 SimpleStagedExample.foo() -//│ = 60 +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'foo') +//│ at REPL26:1:59 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at REPLServer.defaultEval (node:repl:593:22) +//│ at bound (node:domain:433:15) +//│ at REPLServer.runBound [as eval] (node:domain:444:12) +//│ at REPLServer.onLine (node:repl:922:10) +//│ at REPLServer.emit (node:events:518:28) +//│ at REPLServer.emit (node:domain:489:12) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: processIRBlock (JSBackendDiffMaker.scala:287) +//│ ═══[RUNTIME ERROR] Expected: '60', got: 'undefined' :expect 6 SimpleStagedExample.f(1, 5) -//│ = 6 - - -:expect 5 -SimpleStagedExample.fib(5) -//│ = 5 - - -SimpleStagedExample.baz() -//│ = 2 - - -import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" - -gen(LinkingGeneratedClasses, "LinkingGeneratedClasses") - -import "../../mlscript-compile/staging/out/LinkingGeneratedClasses.mls" - -:expect C -LinkingGeneratedClasses.test1 //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: LinkingGeneratedClasses1.C$LinkingGeneratedClasses is not a constructor -//│ at get test1 (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mjs:31:14) -//│ at REPL47:1:46 +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'f') +//│ at REPL29:1:59 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) @@ -51,21 +80,18 @@ LinkingGeneratedClasses.test1 //│ at REPLServer.emit (node:events:518:28) //│ at REPLServer.emit (node:domain:489:12) //│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: processIRBlock (JSBackendDiffMaker.scala:287) -//│ ═══[RUNTIME ERROR] Expected: 'C', got: 'undefined' +//│ ═══[RUNTIME ERROR] Expected: '6', got: 'undefined' -:expect D -LinkingGeneratedClasses.test2 -//│ = D -:expect 3 -LinkingGeneratedClasses.f().call(3) +:expect 5 +SimpleStagedExample.fib(5) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: LinkingGeneratedClasses1.Function$$LinkingGeneratedClasses is not a constructor -//│ at LinkingGeneratedClasses.f (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mjs:21:14) -//│ at REPL53:1:64 +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'fib') +//│ at REPL32:1:59 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) @@ -74,17 +100,17 @@ LinkingGeneratedClasses.f().call(3) //│ at REPLServer.emit (node:events:518:28) //│ at REPLServer.emit (node:domain:489:12) //│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: processIRBlock (JSBackendDiffMaker.scala:287) -//│ ═══[RUNTIME ERROR] Expected: '3', got: 'undefined' +//│ ═══[RUNTIME ERROR] Expected: '5', got: 'undefined' -:expect 5 -LinkingGeneratedClasses.g().call(3) +:expect 2 +SimpleStagedExample.baz() //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: LinkingGeneratedClasses1.Function$1$LinkingGeneratedClasses is not a constructor -//│ at LinkingGeneratedClasses.g (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mjs:26:14) -//│ at REPL56:1:66 +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'baz') +//│ at REPL35:1:59 //│ at ContextifyScript.runInThisContext (node:vm:137:12) //│ at REPLServer.defaultEval (node:repl:593:22) //│ at bound (node:domain:433:15) @@ -93,9 +119,33 @@ LinkingGeneratedClasses.g().call(3) //│ at REPLServer.emit (node:events:518:28) //│ at REPLServer.emit (node:domain:489:12) //│ at [_onLine] [as _onLine] (node:internal/readline/interface:419:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:613:22) //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: processIRBlock (JSBackendDiffMaker.scala:287) -//│ ═══[RUNTIME ERROR] Expected: '5', got: 'undefined' +//│ ═══[RUNTIME ERROR] Expected: '2', got: 'undefined' + + +import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" + +gen(LinkingGeneratedClasses, "LinkingGeneratedClasses") + +import "../../mlscript-compile/staging/out/LinkingGeneratedClasses.mls" + +:expect C +LinkingGeneratedClasses.test1 +//│ = C + +:expect D +LinkingGeneratedClasses.test2 +//│ = D + +:expect 3 +LinkingGeneratedClasses.f().call(3) +//│ = 3 + +:expect 5 +LinkingGeneratedClasses.g().call(3) +//│ = 5 :fixme import "../../mlscript-compile/staging/StagedClass.mls" @@ -105,7 +155,7 @@ import "../../mlscript-compile/staging/StagedClass.mls" // FIXME: module wasn't staged alongside class gen(StagedClass."class", "StagedClass") //│ ╔══[COMPILATION ERROR] Name not found: StagedClass -//│ ║ l.106: gen(StagedClass."class", "StagedClass") +//│ ║ l.156: gen(StagedClass."class", "StagedClass") //│ ╙── ^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. @@ -116,6 +166,6 @@ import "../../mlscript-compile/staging/ImportingFiles.mls" :fixme gen(ImportingFiles, "ImportingFiles") //│ ╔══[COMPILATION ERROR] Name not found: ImportingFiles -//│ ║ l.117: gen(ImportingFiles, "ImportingFiles") +//│ ║ l.167: gen(ImportingFiles, "ImportingFiles") //│ ╙── ^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index a02889ae99..c198a2fdce 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -38,7 +38,7 @@ Simple."test2_gen"(mkDyn()) print(Simple."cache$Simple") //│ > module Simple with //│ > () -//│ > fun f_Lit2_Lit2(x, y) = 4 +//│ > fun f_Lit2_Lit2() = 4 //│ > fun fib(n) = //│ > let {n1, tmp2, tmp3, tmp4, tmp5} //│ > if n is @@ -51,20 +51,20 @@ print(Simple."cache$Simple") //│ > tmp4 = n1 - 2 //│ > tmp5 = fib(tmp4) //│ > tmp3 + tmp5 -//│ > fun fib_Lit1(n) = 1 -//│ > fun fib_Lit2(n) = 1 -//│ > fun fib_Lit3(n) = 2 -//│ > fun fib_Lit4(n) = 3 -//│ > fun pyth_Dyn_Lit2(x, y) = +//│ > fun fib_Lit1() = 1 +//│ > fun fib_Lit2() = 1 +//│ > fun fib_Lit3() = 2 +//│ > fun fib_Lit4() = 3 +//│ > fun pyth_Dyn_Lit2(x) = //│ > let {tmp6, tmp7} //│ > tmp6 = Simple."NonStaged$Simple".sq(x) //│ > tmp7 = 4 //│ > tmp6 + 4 -//│ > fun pyth_Lit2_Lit4(x, y) = 20 +//│ > fun pyth_Lit2_Lit4() = 20 //│ > fun test() = 20 //│ > fun test2(n) = //│ > let {dyn, tmp10} -//│ > dyn = pyth_Dyn_Lit2(n, 2) +//│ > dyn = pyth_Dyn_Lit2(n) //│ > tmp10 = *(dyn, 2) //│ > fib(tmp10) @@ -88,19 +88,19 @@ staged module If with 4 If."test_gen"() -//│ = ["test", {Lit("C(2) C else ")}] +//│ = ["test", {Lit("C(2) C else ")}, []] If."test2_gen"(mkLit(1), mkDyn()) -//│ = ["test2_Lit1_Dyn", {Lit(1),Lit(4)}] +//│ = ["test2_Lit1_Dyn", {Lit(1),Lit(4)}, [true, false]] print(If."cache$If") //│ > module If with //│ > () //│ > fun f_C_Lit2(x) = "C(2) " //│ > fun f_C_Lit3(x) = "C " -//│ > fun f_Lit2(x) = "else " +//│ > fun f_Lit2() = "else " //│ > fun test() = "C(2) C else " -//│ > fun test2_Lit1_Dyn(x, y) = +//│ > fun test2_Lit1_Dyn(y) = //│ > let {tmp6} //│ > if y is //│ > 1 then 1 @@ -133,7 +133,7 @@ print(If2."cache$If2") //│ > tmp = () //│ > y + 1 //│ > fun f_C_Lit2(x) = 3 -//│ > fun f_Lit0(x) = 1 +//│ > fun f_Lit0() = 1 //│ > fun test() = 3 //│ > fun test2(dyn) = //│ > let {tmp2} @@ -153,32 +153,32 @@ LinearAlgebra."test_gen"(mkDyn()) print(LinearAlgebra."cache$LinearAlgebra") //│ > module LinearAlgebra with //│ > () -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, n, acc) = +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 1 -//│ > tmp1 = *(v1.(n), 3) +//│ > tmp1 = *(v1.(0), 3) //│ > tmp2 = tmp1 + 0 -//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp, tmp2) -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, n, acc) = +//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp2) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 2 //│ > tmp1 = 4 //│ > tmp2 = 4 + acc -//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp, tmp2) -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, n, acc) = +//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp2) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 3 //│ > tmp1 = 2 //│ > tmp2 = 2 + acc -//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp, tmp2) -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, n, acc) = +//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp2) +//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = true //│ > acc -//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2, 0, 0) +//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2) //│ > fun test(x) = //│ > let {tmp3, tmp4} //│ > tmp3 = [x, 1, 2] @@ -203,13 +203,13 @@ staged module Dispatching with twice(m, 5) Dispatching."test_gen"(mkLit(true)) -//│ = ["test_Littrue", {Lit(9)}] +//│ = ["test_Littrue", {Lit(9)}, [true]] Dispatching."test_gen"(mkLit(false)) -//│ = ["test_Litfalse", {Lit(29)}] +//│ = ["test_Litfalse", {Lit(29)}, [true]] Dispatching."test_gen"(mkDyn()) -//│ = ["test", {Lit(15),Lit(17),Lit(29),Lit(9)}] +//│ = ["test", {Lit(15),Lit(17),Lit(29),Lit(9)}, [false]] print(Dispatching."cache$Dispatching") //│ > module Dispatching with @@ -223,11 +223,11 @@ print(Dispatching."cache$Dispatching") //│ > else //│ > obj_8 = new! Dispatching."L3$Dispatching"(3) //│ > obj_8 -//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y, b) = +//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y) = //│ > let {obj_5} //│ > obj_5 = new! Dispatching."L3$Dispatching"(3) //│ > obj_5 -//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y, b) = +//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y) = //│ > let {obj_2} //│ > obj_2 = new! Dispatching."L2$Dispatching"(2) //│ > obj_2 @@ -238,19 +238,19 @@ print(Dispatching."cache$Dispatching") //│ > tmp2 = new! Dispatching."L2$Dispatching"(2) //│ > tmp3 = new! Dispatching."L3$Dispatching"(3) //│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) -//│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m, 5) -//│ > fun test_Litfalse(b) = 29 -//│ > fun test_Littrue(b) = 9 -//│ > fun twice_L1_Lit1_Lit5(f, x) = 11 -//│ > fun twice_L2_Lit2_Lit5(f, x) = 9 -//│ > fun twice_L3_Lit3_Lit5(f, x) = 29 -//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f, x) = +//│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m) +//│ > fun test_Litfalse() = 29 +//│ > fun test_Littrue() = 9 +//│ > fun twice_L1_Lit1_Lit5(f) = 11 +//│ > fun twice_L2_Lit2_Lit5(f) = 9 +//│ > fun twice_L3_Lit3_Lit5(f) = 29 +//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f) = //│ > let {tmp} //│ > if f is //│ > Dispatching."L2$Dispatching" then -//│ > tmp = f.call_L2_Lit2_dot_Lit5(x) +//│ > tmp = f.call_L2_Lit2_dot_Lit5() //│ > Dispatching."L3$Dispatching" then -//│ > tmp = f.call_L3_Lit3_dot_Lit5(x) +//│ > tmp = f.call_L3_Lit3_dot_Lit5() //│ > if f is //│ > Dispatching."L2$Dispatching" then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) //│ > Dispatching."L3$Dispatching" then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) @@ -260,17 +260,17 @@ print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(y) with //│ > () -//│ > fun call_L1_Lit1_dot_Lit5(x) = 8 -//│ > fun call_L1_Lit1_dot_Lit8(x) = 11 +//│ > fun call_L1_Lit1_dot_Lit5() = 8 +//│ > fun call_L1_Lit1_dot_Lit8() = 11 //│ > class L2(y) with //│ > () -//│ > fun call_L2_Lit2_dot_Lit5(x) = 7 -//│ > fun call_L2_Lit2_dot_Lit7(x) = 9 +//│ > fun call_L2_Lit2_dot_Lit5() = 7 +//│ > fun call_L2_Lit2_dot_Lit7() = 9 //│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + 2 //│ > class L3(y) with //│ > () -//│ > fun call_L3_Lit3_dot_Lit13(x) = 29 -//│ > fun call_L3_Lit3_dot_Lit5(x) = 13 +//│ > fun call_L3_Lit3_dot_Lit13() = 29 +//│ > fun call_L3_Lit3_dot_Lit5() = 13 //│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = //│ > let {tmp1} //│ > tmp1 = *(x, 2) @@ -289,7 +289,7 @@ staged module Dispatching2 with fun baz(b) = Foo(Bar(1)).foo(b) Dispatching2."baz_gen"(mkDyn()) -//│ = ["baz", {Lit(1),Lit(2),Lit(3)}] +//│ = ["baz", {Lit(1),Lit(2),Lit(3)}, [false]] staged class A(val x: Int) with fun f(y: Int) = x + y @@ -305,14 +305,14 @@ This."test2_gen"(mkLit(1)) print(This."cache$This") //│ > module This with //│ > () -//│ > fun test2_Lit1(y) = 2 -//│ > fun test_Lit1(x) = 3 +//│ > fun test2_Lit1() = 2 +//│ > fun test_Lit1() = 3 print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with //│ > () -//│ > fun f_A_Lit1_dot_Lit1(y) = 2 +//│ > fun f_A_Lit1_dot_Lit1() = 2 //│ > class B(x) with //│ > () //│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 @@ -330,7 +330,7 @@ staged module Inheritance with else "not B" Inheritance."test_gen"() -//│ = ["test", {Lit(5)}] +//│ = ["test", {Lit(5)}, []] staged module NonTermination with fun f(x, y) = if y @@ -346,16 +346,16 @@ staged module GlobalFunction with fun test(x) = g(x, x) GlobalFunction."test_gen"(mkLit(1)) -//│ = ["test_Lit1", {Dyn()}] +//│ = ["test_Lit1", {Dyn()}, [true]] staged module Comparison with fun test(x) = x < 5 Comparison."test_gen"(union(mkLit(3), mkLit(4))) -//│ = ["test_Union_Lit3_Lit4_end", {Lit(true)}] +//│ = ["test_Union_Lit3_Lit4_end", {Lit(true)}, [false]] Comparison."test_gen"(union(mkLit(4), mkLit(6))) -//│ = ["test_Union_Lit4_Lit6_end", {Dyn()}] +//│ = ["test_Union_Lit4_Lit6_end", {Dyn()}, [false]] :fixme class C @@ -364,4 +364,24 @@ module Opaque with staged module M with fun f() = Opaque.f() M."f_gen"() -//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:201) +//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:202) + +staged module M with + fun f(x, y) = x * y + fun g(y) = f(2, y) + +M."propagate"() + +M."cache$M" +//│ = module M with \ +//│ () \ +//│ fun f(x, y) = *(x, y) \ +//│ fun f_Lit2_Dyn(y) = *(2, y) \ +//│ fun g(y) = f_Lit2_Dyn(y) + +staged module M with + fun f(x) = x.2 + +M."f_gen"(mkArr([mkLit(1), mkDyn(), mkLit(2)])) +//│ = ["f_Arr_Lit1_Dyn_Lit2_end", {Lit(2)}, [false]] + diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index f5d39e366a..97eaecc0ef 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -13,11 +13,11 @@ staged module M with fun f_gen M.f_gen(mkDyn()) -//│ = ["f", {Dyn()}] +//│ = ["f", {Dyn()}, [false]] M.f_gen(mkLit(2)) -//│ = ["f_Lit2", {Lit(4)}] +//│ = ["f_Lit2", {Lit(4)}, [true]] print(M."cache$M") @@ -27,4 +27,4 @@ print(M."cache$M") //│ > let {y} //│ > y = *(x, 2) //│ > y -//│ > fun f_Lit2(x) = 4 +//│ > fun f_Lit2() = 4 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls index ec3bb6572f..81c44cd747 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls @@ -72,157 +72,52 @@ import "../../mlscript-compile/staging/out/Transform3D.mls" Transform3D.multiply of x, y -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'init') -//│ at Transform3D.zeros (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2214:58) -//│ at Transform3D.multiply (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1523:23) -//│ at REPL61:1:52 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [[30, 24, 18], [84, 69, 54], [138, 114, 90]] Transform3D.ident(4) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'init') -//│ at Transform3D.zeros (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2214:58) -//│ at Transform3D.ident (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:12:22) -//│ at REPL64:1:52 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] Transform3D.update(Transform3D.ident(3), 1, 2, 5) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'init') -//│ at Transform3D.zeros (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2214:58) -//│ at Transform3D.ident (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:12:22) -//│ at REPL67:1:56 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [[1, 0, 0], [0, 1, 5], [0, 0, 1]] Transform3D.transform(1, 2, 3) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') -//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2074:60) -//│ at Transform3D.transform (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1927:25) -//│ at REPL70:1:52 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 3], [0, 0, 0, 1]] Transform3D.scale(2, 2, 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') -//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) -//│ at Transform3D.scale (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1856:25) -//│ at REPL73:1:52 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 1]] Transform3D.rotateX(3.1415 / 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') -//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2111:60) -//│ at Transform3D.rotateX (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1612:25) -//│ at REPL76:1:82 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [ +//│ [1, 0, 0, 0], +//│ [0, 0.00004632679487995776, -0.999999998926914, 0], +//│ [0, 0.999999998926914, 0.00004632679487995776, 0], +//│ [0, 0, 0, 1] +//│ ] Transform3D.rotateY(3.1415 / 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') -//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) -//│ at Transform3D.rotateY (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1694:25) -//│ at REPL79:1:82 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [ +//│ [0.00004632679487995776, 0, 0.999999998926914, 0], +//│ [0, 1, 0, 0], +//│ [-0.999999998926914, 0, 0.00004632679487995776, 0], +//│ [0, 0, 0, 1] +//│ ] Transform3D.rotateZ(3.1415 / 2) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') -//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) -//│ at Transform3D.rotateZ (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1776:25) -//│ at REPL82:1:82 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) -//│ at REPLServer.emit (node:domain:489:12) +//│ = [ +//│ [0.00004632679487995776, -0.999999998926914, 0, 0], +//│ [0.999999998926914, 0.00004632679487995776, 0, 0], +//│ [0, 0, 1, 0], +//│ [0, 0, 0, 1] +//│ ] Transform3D.model([[10], [0], [0]], [5, 0, 0], [0.5, 0.5, 0.5], [0, 0, 3.1415926535 / 2.0]) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') -//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) -//│ at Transform3D.rotateZ (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1776:25) -//│ at Transform3D.model (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1303:25) -//│ at REPL85:1:503 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) -//│ at REPLServer.emit (node:events:518:28) +//│ = [[5.000000000224483], [5], [0]] Transform3D.model0([[10], [0], [0]]) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'set2D') -//│ at Transform3D.update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:2037:60) -//│ at Transform3D.rotateZ_Lit0 (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1817:25) -//│ at Transform3D.model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1391:25) -//│ at Transform3D.model0 (file:///Users/sinchunyeung/FYP/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mjs:1387:24) -//│ at REPL88:1:278 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at REPLServer.defaultEval (node:repl:593:22) -//│ at bound (node:domain:433:15) -//│ at REPLServer.runBound [as eval] (node:domain:444:12) -//│ at REPLServer.onLine (node:repl:922:10) +//│ = [[7], [4], [50.99999999964083]] From b963ddf2c076bd366e7c3c44da57b8dc6e11c5a2 Mon Sep 17 00:00:00 2001 From: TYeung Date: Sat, 2 May 2026 03:20:01 +0800 Subject: [PATCH 588/654] wip: fix val2path --- .../mlscript-compile/SpecializeHelpers.mls | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 5df6b235c8..8d434755b1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -165,6 +165,20 @@ fun sov(v, valueMap): ShapeSet = mkClassFromMap(classSymbol, argsMap, None) // FIXME else throw Error("unknown value from sov", v.toString()) +fun registerShapeClasses(valueMap, s) = if s is + Class(sym, params) then + if sym is ConcreteClassSymbol and not (sym.value is undefined) do + valueMap.set(getActualClass(sym.value), sym) + params.forEach(p => registerShapeClasses(valueMap, p)) + Arr(shapes) then + shapes.forEach(p => registerShapeClasses(valueMap, p)) + else () + +// returns true so it composes with `and` chains +fun registerShapeSetClasses(valueMap, ss) = + ss.values().forEach(s => registerShapeClasses(valueMap, s)) + true + // shape of path fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s @@ -196,7 +210,9 @@ fun subLitPath(ctx, p) = if p is Select(qual, name) then Select(subLitPath(ctx, qual), name) ValueRef(_) and let s = sop(ctx, p) - staticSet(s) and val2path(valOfSet(s), ctx.allocs, ctx.valueNameCtx) is [End(), res] then res + staticSet(s) + and registerShapeSetClasses(ctx.valueNameCtx, s) + and val2path(valOfSet(s), ctx.allocs, ctx.valueNameCtx) is [End(), res] then res else p @@ -282,9 +298,10 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is let f_gen = genMap.get(fld) not (f_gen is Runtime.Unit) and // staged function let res = f_gen(...argShapes) - staticSet(res.1) then - let v2p = val2path(valOfSet(res.1), ctx.allocs, ctx.valueNameCtx) - [v2p.0, v2p.1, res.1] + staticSet(res.1) + and registerShapeSetClasses(ctx.valueNameCtx, res.1) then + let v2p = val2path(valOfSet(res.1), ctx.allocs, ctx.valueNameCtx) + [v2p.0, v2p.1, res.1] else let filteredArgs = args.filter((_, i, _) => not res.2.(i)) [End(), Call(Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(res.0)), filteredArgs), res.1] @@ -307,7 +324,9 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is fun sor(ctx, r) = if r is Path and let s = sop(ctx, r) - staticSet(s) and val2path(valOfSet(s), ctx.allocs, ctx.valueNameCtx) is [blk, res] then [blk, res, s] + staticSet(s) + and registerShapeSetClasses(ctx.valueNameCtx, s) + and val2path(valOfSet(s), ctx.allocs, ctx.valueNameCtx) is [blk, res] then [blk, res, s] else [End(), subLitPath(ctx, r), s] Instantiate(cls, args) then sorInstantiate(ctx, r, cls, args) Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] @@ -562,6 +581,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let bodyWithScoped = wrapScoped(ctx.allocs, res.0) let actualRetShape = res.1 + actualRetShape.values().forEach(collectClasses) let finalBody = if staticSet(actualRetShape) then let allocs = mut [] From 2f5f4136fab544d7e64fb5c87358c62700beb1d2 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 3 May 2026 12:55:55 +0800 Subject: [PATCH 589/654] skip redirection in classes this runs into issues with the redirected values not being initialized yet for classes with paramter lists --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 3ecce14033..2f604398c0 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -463,7 +463,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // grab all defn seen so far // TODO: this could be reduced to only contain all the symbols used within the module - val previousStageValues = + val previousStageValues = if forClass then Nil else scope.getBindings.collect[(DefinitionSymbol[? <: ModuleOrObjectDef | ClassDef], String)]({ case (m: ModuleOrObjectSymbol, s) if m != State.unitSymbol && m != ownerSym => (m, s) case (c: ClassSymbol, s) if !ctx.builtins.virtualClasses(c) && c != ownerSym => (c, s) @@ -491,7 +491,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ) def previousStageDecl(b: Block) = - previousStageValues.foldRight(b)({case ((tsym, sym, key), acc) => + previousStageValues.iterator.foldRight(b)({case ((tsym, sym, key), acc) => Define(ValDefn(tsym, sym, key)(N), acc) }) From 0b57882af6d97a78524f7c4a00c22db17c74b236 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Mon, 4 May 2026 19:25:19 +0800 Subject: [PATCH 590/654] Add dpe --- .../src/test/mlscript-compile/Block.mls | 28 +- .../mlscript-compile/SpecializeHelpers.mls | 32 +- .../staging/out/CombinedModule.mls | 30 +- .../staging/out/ImportingFiles.mls | 3 +- .../staging/out/LinkingGeneratedClasses.mls | 3 +- .../staging/out/SimpleStagedExample.mls | 31 +- .../staging/out/Transform3D.mls | 587 +++++++++--------- .../test/mlscript/block-staging/ShapeProp.mls | 126 ++-- .../mlscript/block-staging/SpecializeTest.mls | 2 +- 9 files changed, 434 insertions(+), 408 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 8c34024bf2..1db63dd940 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -213,11 +213,14 @@ class Printer(val owner: Opt[Symbol]) with fun showParamList(ps: Array[ParamList]) = ps.map(showParams(_)).join("") + fun showFunDefn(prefix: Str, sym: Symbol, ps: Array[ParamList], body: Block): Str = + prefix + "fun " + showDefnSymbol(sym) + showParamList(ps) + " =" + + (if body is Return | End then " " else "\n ") + indent(showBlock(body)) + fun showDefn(d: Defn): Str = if d is FunDefn(sym, ps, body) then - "fun " + showDefnSymbol(sym) + showParamList(ps) + " =" + - (if body is Return | End then " " else "\n ") + indent(showBlock(body)) + showFunDefn("", sym, ps, body) ClsLikeDefn(sym, methods, _) and sym is ConcreteClassSymbol(_, v, _, _, _) and not isStagedClass(v) then "data class " + showDefnSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams(_)).join("") @@ -228,6 +231,11 @@ class Printer(val owner: Opt[Symbol]) with "val " + showSymbol(sym) + " = " + showPath(rhs) _ then "" + fun showPrivateDefn(d: Defn): Str = + if d is + FunDefn(sym, ps, body) then showFunDefn("private ", sym, ps, body) + else showDefn(d) + fun showBlock(b) = if b is Assign(lhs, rhs, rest) then @@ -271,6 +279,14 @@ class Printer(val owner: Opt[Symbol]) with module Printer with val default = Printer(None) +let configs = + let options = [ + "noFreeze: true", + "noModuleCheck: true", + "deadParamElim: Some(DeadParamElim(debug: false, mono: true))" + ] + "#config(" + options.join(", ") + ")\n" + fun codegen(name, cache, source, file) = let fullpath = path.join of process.cwd(), file let code = "import \"" + source + "\"\n" + indent(cache.toString()) @@ -278,7 +294,7 @@ fun codegen(name, cache, source, file) = fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") let originData = fs.readFileSync(fullpath, "utf8") - let newData = "#config(noFreeze: true)\n" + "#config(noModuleCheck: true)\n" + code + let newData = configs + code if newData != originData do fs.writeFileSync(fullpath, newData, "utf8") @@ -290,9 +306,9 @@ fun generateAll(name, file, ...modules) = let code = fold((res, p) => if p is [mod, name, source] then mod.propagate() - [res.0 + "import \"" + source + "\"\n", res.1, res.2 + indent(mod.("cache$" + name).toString()) + "\n"] + [res.0 + "import \"" + source + "\"\n", res.1 + indent(mod.("cache$" + name).toString()) + "\n"] )(["", "", ""], ...modules) let originData = fs.readFileSync(fullpath, "utf8") - let newData = "#config(noFreeze: true)\n" + "#config(noModuleCheck: true)\n" + code.0 + "\n" + code.1 + "\n" + "module " + name + " with" + indent("\n" + code.2) + let newData = configs + code.0 + "\n" + "module " + name + " with" + indent("\n" + code.1) if newData != originData do - fs.writeFileSync(fullpath, newData, "utf8") \ No newline at end of file + fs.writeFileSync(fullpath, newData, "utf8") diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 5df6b235c8..c6e3106d4b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -73,7 +73,14 @@ class Ctx( module Ctx with fun empty() = Ctx(new Map(), new Map(), new Map(), mut [], None) -class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, [Block.Block, Shape]]) with +class FunEntry( + val defn: FunDefn, + val retShape: ShapeSet, + val litMask: Array[Bool], + val isPrivate: Bool, +) + +class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, FunEntry]) with val printer = Printer(Some(owner)) fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None // this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions @@ -135,7 +142,9 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" + indent("\n" + printer.showBlock(ctorBody)) // TODO: we can skip printing ctor that are just End() - + indent("\n" + cache.values().map(p => printer.showDefn(p.0)).toArray().sort().join("\n")) + + indent("\n" + cache.values().map(e => + if e.isPrivate then printer.showPrivateDefn(e.defn) else printer.showDefn(e.defn) + ).toArray().sort().join("\n")) module FunCache with fun empty(owner) = FunCache(owner, new Map()) @@ -486,14 +495,20 @@ fun buildShapeSetName(ss: ShapeSet): Str = if vals.length is 1 then buildShapeName(vals.0) else "Union_" + vals.map(buildShapeName).join("_") + "_end" -fun specializeName(funName, isMethod, ps, shapes) = - let mappedShapes = shapes.map((ss, i, _) => +fun specializationParamShapes(isMethod, ps, shapes) = + shapes.map((ss, i, _) => if isMethod and i is 0 then ss else ss.map((s, j, _) => let psIdx = if isMethod then i - 1 else i if ps.(psIdx).(j).constraint is Some(Dynamic) then mkDyn() else s ) ) + +fun hasAllDynamicParams(isMethod, ps, shapes) = + specializationParamShapes(isMethod, ps, shapes).every(_.every(_.isDyn())) + +fun specializeName(funName, isMethod, ps, shapes) = + let mappedShapes = specializationParamShapes(isMethod, ps, shapes) if mappedShapes.every(_.every(_.isDyn())) then funName else funName + "_" + mappedShapes.map(pss => pss.map(buildShapeSetName).join("_")).join("_dot_") @@ -516,8 +531,9 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = if defn is FunDefn(Symbol(_), ps, body) then let isMethod = cache.owner is ConcreteClassSymbol let newName = specializeName(funName, isMethod, ps, shapes) + let isPrivate = not hasAllDynamicParams(isMethod, ps, shapes) if cache.getFun(newName) is - Some(x) then [x.0.sym.name, x.1, x.2] + Some(x) then [x.defn.sym.name, x.retShape, x.litMask] None then let paramShapes = if isMethod then shapes.slice(1) else shapes @@ -556,7 +572,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = not (not (p2.constraint is Some(Dynamic)) and isLitShape(paramShapes.(i).(j))) )) // Store placeholder with real litMask so recursive calls use correct filtering - cache.setFun(newName, [FunDefn(Symbol(newName), newPs, body), mkDyn(), litMask]) + cache.setFun(newName, FunEntry(FunDefn(Symbol(newName), newPs, body), mkDyn(), litMask, isPrivate)) let res = prop(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) @@ -570,10 +586,10 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = else bodyWithScoped // Update cache with finalized body and actual return shape - let entry = cache.setFun(newName, [FunDefn(Symbol(newName), newPs, finalBody), actualRetShape, litMask]) + let entry = cache.setFun(newName, FunEntry(FunDefn(Symbol(newName), newPs, finalBody), actualRetShape, litMask, isPrivate)) - [entry.0.sym.name, entry.1, entry.2] + [entry.defn.sym.name, entry.retShape, entry.litMask] else throw Error("instrumented function is not a FunDefn") // this builds the shape of an instantiation of class through shape propagation of constructor diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index f6f0aacbac..f13d2e6238 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -1,15 +1,13 @@ -#config(noFreeze: true) -#config(noModuleCheck: true) +#config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../SimpleStagedExample.mjs" import "../LinkingGeneratedClasses.mjs" - module CombinedModule with module SimpleStagedExample with class Bar(x) with () fun bar() = x - fun bar_Bar_Lit1_dot_() = 1 + private fun bar_Bar_Lit1_dot_() = 1 class Foo(x) with () fun foo(b) = @@ -22,10 +20,9 @@ module CombinedModule with tmp1 = x.bar() tmp1 + 2 else x.bar() - fun foo_Foo_Bar_Lit1_dot_Lit1() = 2 + private fun foo_Foo_Bar_Lit1_dot_Lit1() = 2 fun baz() = 2 fun f(x, y) = x + y - fun f_Lit2_Lit3() = 5 fun fib(n) = let {n1, tmp2, tmp3, tmp4, tmp5} if n is @@ -38,16 +35,6 @@ module CombinedModule with tmp4 = n1 - 2 tmp5 = fib(tmp4) tmp3 + tmp5 - fun fib_Lit1() = 1 - fun fib_Lit10() = 55 - fun fib_Lit2() = 1 - fun fib_Lit3() = 2 - fun fib_Lit4() = 3 - fun fib_Lit5() = 5 - fun fib_Lit6() = 8 - fun fib_Lit7() = 13 - fun fib_Lit8() = 21 - fun fib_Lit9() = 34 fun foo() = 60 fun foobar(x) = let {y1, z, tmp10, tmp11} @@ -64,6 +51,17 @@ module CombinedModule with let {tup_3} tup_3 = ["\t", "\n", "\r"] tup_3 + private fun f_Lit2_Lit3() = 5 + private fun fib_Lit1() = 1 + private fun fib_Lit10() = 55 + private fun fib_Lit2() = 1 + private fun fib_Lit3() = 2 + private fun fib_Lit4() = 3 + private fun fib_Lit5() = 5 + private fun fib_Lit6() = 8 + private fun fib_Lit7() = 13 + private fun fib_Lit8() = 21 + private fun fib_Lit9() = 34 module LinkingGeneratedClasses with data class D fun f() = diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls index c30b515344..4c5071ba79 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls @@ -1,5 +1,4 @@ -#config(noFreeze: true) -#config(noModuleCheck: true) +#config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../ImportingFiles.mls" module ImportingFiles with () diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index ef55936101..dbe30468d0 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,5 +1,4 @@ -#config(noFreeze: true) -#config(noModuleCheck: true) +#config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../LinkingGeneratedClasses.mls" module LinkingGeneratedClasses with data class D diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index c02d70a348..965a85389b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,11 +1,10 @@ -#config(noFreeze: true) -#config(noModuleCheck: true) +#config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../SimpleStagedExample.mls" module SimpleStagedExample with class Bar(x) with () fun bar() = x - fun bar_Bar_Lit1_dot_() = 1 + private fun bar_Bar_Lit1_dot_() = 1 class Foo(x) with () fun foo(b) = @@ -18,10 +17,9 @@ module SimpleStagedExample with tmp1 = x.bar() tmp1 + 2 else x.bar() - fun foo_Foo_Bar_Lit1_dot_Lit1() = 2 + private fun foo_Foo_Bar_Lit1_dot_Lit1() = 2 fun baz() = 2 fun f(x, y) = x + y - fun f_Lit2_Lit3() = 5 fun fib(n) = let {n1, tmp2, tmp3, tmp4, tmp5} if n is @@ -34,16 +32,6 @@ module SimpleStagedExample with tmp4 = n1 - 2 tmp5 = fib(tmp4) tmp3 + tmp5 - fun fib_Lit1() = 1 - fun fib_Lit10() = 55 - fun fib_Lit2() = 1 - fun fib_Lit3() = 2 - fun fib_Lit4() = 3 - fun fib_Lit5() = 5 - fun fib_Lit6() = 8 - fun fib_Lit7() = 13 - fun fib_Lit8() = 21 - fun fib_Lit9() = 34 fun foo() = 60 fun foobar(x) = let {y1, z, tmp10, tmp11} @@ -59,4 +47,15 @@ module SimpleStagedExample with fun spaces() = let {tup_1} tup_1 = ["\t", "\n", "\r"] - tup_1 \ No newline at end of file + tup_1 + private fun f_Lit2_Lit3() = 5 + private fun fib_Lit1() = 1 + private fun fib_Lit10() = 55 + private fun fib_Lit2() = 1 + private fun fib_Lit3() = 2 + private fun fib_Lit4() = 3 + private fun fib_Lit5() = 5 + private fun fib_Lit6() = 8 + private fun fib_Lit7() = 13 + private fun fib_Lit8() = 21 + private fun fib_Lit9() = 34 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 6dfb521b09..86657bc6eb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -1,5 +1,4 @@ -#config(noFreeze: true) -#config(noModuleCheck: true) +#config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../Transform3D.mls" module Transform3D with () @@ -7,14 +6,6 @@ module Transform3D with let {m5} m5 = zeros(w, w) iterID(m5, w, w) - fun ident_Lit4() = - let {tup_171, tup_172, tup_173, tup_174, tup_175} - tup_171 = [1, 0, 0, 0] - tup_172 = [0, 1, 0, 0] - tup_173 = [0, 0, 1, 0] - tup_174 = [0, 0, 0, 1] - tup_175 = [tup_171, tup_172, tup_173, tup_174] - tup_175 fun iter(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) @@ -39,7 +30,161 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) tmp9 = j - 1 iterCol(tmp8, x, y, colX, colY, i, tmp9) - fun iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y) = + fun iterID(m, w, i) = + let {scrut4, tmp17, tmp18, tmp19, tmp20} + scrut4 = ===(i, 0) + if scrut4 is + true then m + else + tmp17 = w - i + tmp18 = w - i + tmp19 = Transform3D."Mx$Transform3D".set2D(m, tmp17, tmp18, 1) + tmp20 = i - 1 + iterID(tmp19, w, tmp20) + fun iterInit(m, r, c, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16} + scrut3 = ===(i, 0) + if scrut3 is + true then m + else + tmp13 = r - i + tmp14 = Transform3D."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp16 = i - 1 + iterInit(tmp15, r, c, tmp16) + fun iterRow(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp10 = rowX - i + tmp11 = iterCol(m, x, y, colX, colY, tmp10, colY) + tmp12 = i - 1 + iterRow(tmp11, x, y, rowX, colX, colY, tmp12) + fun model(local, position, scaling, rotation) = + let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_216, tup_217, tup_218, tup_219, tup_220} + tmp43 = rotateZ(rotation.2) + tmp44 = rotateY(rotation.1) + tmp45 = rotateX(rotation.0) + tup_216 = [1, 0, 0, 0] + tup_217 = [0, 1, 0, 0] + tup_218 = [0, 0, 1, 0] + tup_219 = [0, 0, 0, 1] + tup_220 = [tup_216, tup_217, tup_218, tup_219] + tmp46 = tup_220 + tmp47 = multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(tmp45, tmp46) + tmp48 = multiply(tmp44, tmp47) + rot = multiply(tmp43, tmp48) + tmp49 = transform(position.0, position.1, position.2) + tmp50 = scale(scaling.0, scaling.1, scaling.2) + tmp51 = [local.0] + tmp52 = [local.1] + tmp53 = [local.2] + tmp54 = [1] + tmp55 = [tmp51, tmp52, tmp53, tmp54] + tmp56 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp50, tmp55) + tmp57 = multiply(rot, tmp56) + res1 = multiply(tmp49, tmp57) + [res1.0, res1.1, res1.2] + fun model0(local) = + let {tmp58, tmp59, tmp60, tmp61} + tmp58 = [11, 4, 51] + tmp59 = [0.4, 0.19, 0.19] + tmp60 = 2.51327412 + tmp61 = [tmp60, 3.1415926535, 0] + model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, tmp58, tmp59, tmp61) + fun multiply(x, y) = + let {rowX1, colX3, rowY, colY2, res} + rowX1 = x.length + colX3 = x.0.length + rowY = y.length + colY2 = y.0.length + res = zeros(rowX1, colY2) + iterRow(res, x, y, rowX1, colX3, colY2, rowX1) + fun rotateX(angle) = + let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_196, tup_197, tup_198, tup_199, tup_200} + s = globalThis.Math.sin(angle) + c2 = globalThis.Math.cos(angle) + tup_196 = [1, 0, 0, 0] + tup_197 = [0, 1, 0, 0] + tup_198 = [0, 0, 1, 0] + tup_199 = [0, 0, 0, 1] + tup_200 = [tup_196, tup_197, tup_198, tup_199] + tmp28 = tup_200 + tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, c2) + tmp30 = -(s) + tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, tmp30) + tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, s) + update_Dyn_Lit2_Lit2_Dyn(tmp32, c2) + fun rotateY(angle) = + let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_206, tup_207, tup_208, tup_209, tup_210} + s1 = globalThis.Math.sin(angle) + c3 = globalThis.Math.cos(angle) + tup_206 = [1, 0, 0, 0] + tup_207 = [0, 1, 0, 0] + tup_208 = [0, 0, 1, 0] + tup_209 = [0, 0, 0, 1] + tup_210 = [tup_206, tup_207, tup_208, tup_209] + tmp33 = tup_210 + tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, c3) + tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, s1) + tmp36 = -(s1) + tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, tmp36) + update_Dyn_Lit2_Lit2_Dyn(tmp37, c3) + fun rotateZ(angle) = + let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_211, tup_212, tup_213, tup_214, tup_215} + s2 = globalThis.Math.sin(angle) + c4 = globalThis.Math.cos(angle) + tup_211 = [1, 0, 0, 0] + tup_212 = [0, 1, 0, 0] + tup_213 = [0, 0, 1, 0] + tup_214 = [0, 0, 0, 1] + tup_215 = [tup_211, tup_212, tup_213, tup_214] + tmp38 = tup_215 + tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, c4) + tmp40 = -(s2) + tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, tmp40) + tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, s2) + update_Dyn_Lit1_Lit1_Dyn(tmp42, c4) + fun scale(sx, sy, sz) = + let {tmp25, tmp26, tmp27, tup_186, tup_187, tup_188, tup_189, tup_190} + tup_186 = [1, 0, 0, 0] + tup_187 = [0, 1, 0, 0] + tup_188 = [0, 0, 1, 0] + tup_189 = [0, 0, 0, 1] + tup_190 = [tup_186, tup_187, tup_188, tup_189] + tmp25 = tup_190 + tmp26 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp25, sx) + tmp27 = update_Dyn_Lit1_Lit1_Dyn(tmp26, sy) + update_Dyn_Lit2_Lit2_Dyn(tmp27, sz) + fun transform(dx, dy, dz) = + let {tmp22, tmp23, tmp24, tup_176, tup_177, tup_178, tup_179, tup_180} + tup_176 = [1, 0, 0, 0] + tup_177 = [0, 1, 0, 0] + tup_178 = [0, 0, 1, 0] + tup_179 = [0, 0, 0, 1] + tup_180 = [tup_176, tup_177, tup_178, tup_179] + tmp22 = tup_180 + tmp23 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(tmp22, dx) + tmp24 = update_Dyn_Lit1_Lit3_Dyn(tmp23, dy) + update_Dyn_Lit2_Lit3_Dyn(tmp24, dz) + fun update(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun zeros(r, c) = + let {m4, tmp21, tup_1} + tmp21 = [] + tup_1 = [] + m4 = Transform3D."Mx$Transform3D".init(r, tup_1) + iterInit(m4, r, c, r) + private fun ident_Lit4() = + let {tup_171, tup_172, tup_173, tup_174, tup_175} + tup_171 = [1, 0, 0, 0] + tup_172 = [0, 1, 0, 0] + tup_173 = [0, 0, 1, 0] + tup_174 = [0, 0, 0, 1] + tup_175 = [tup_171, tup_172, tup_173, tup_174] + tup_175 + private fun iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_501, tup_502, tup_503, tup_504, tup_505} scrut1 = false tmp5 = 0 @@ -53,15 +198,15 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(tup_505, 0, 0, tmp7) tmp9 = 0 iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp8, x, y) - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(m, x, y) = + private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(m, x, y) = + private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y) = + private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 @@ -70,11 +215,11 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, 0, tmp7) tmp9 = 0 iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(tmp8, x, y) - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(m, x, y) = + private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y) = + private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 @@ -83,11 +228,11 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, 0, tmp7) tmp9 = 0 iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(tmp8, x, y) - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(m, x, y) = + private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y) = + private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 @@ -96,7 +241,7 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, 0, 1) tmp9 = 0 iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(tmp8, x, y) - fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colY, j) = + private fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -108,7 +253,7 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, 0, tmp5, tmp7) tmp9 = j - 1 iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(tmp8, x, y, colY, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colY, j) = + private fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -120,7 +265,7 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, tmp5, tmp7) tmp9 = j - 1 iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(tmp8, x, y, colY, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colY, j) = + private fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -132,7 +277,7 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, tmp5, tmp7) tmp9 = j - 1 iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(tmp8, x, y, colY, tmp9) - fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colY, j) = + private fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -144,11 +289,11 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, tmp5, tmp7) tmp9 = j - 1 iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(tmp8, x, y, colY, tmp9) - fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(m, x, y, colX, i) = + private fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, i) = + private fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 @@ -157,11 +302,11 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 0 iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, i) - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(m, x, y, colX, i) = + private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(m, x, y, colX, i) = + private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 3 @@ -170,7 +315,7 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 3, tmp7) tmp9 = 0 iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(tmp8, x, y, colX, i) - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(m, x, y, colX, i) = + private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 2 @@ -179,7 +324,7 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 2, tmp7) tmp9 = 1 iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(tmp8, x, y, colX, i) - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(m, x, y, colX, i) = + private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 1 @@ -188,7 +333,7 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 1, tmp7) tmp9 = 2 iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(tmp8, x, y, colX, i) - fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, i) = + private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 @@ -197,18 +342,7 @@ module Transform3D with tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 3 iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(tmp8, x, y, colX, i) - fun iterID(m, w, i) = - let {scrut4, tmp17, tmp18, tmp19, tmp20} - scrut4 = ===(i, 0) - if scrut4 is - true then m - else - tmp17 = w - i - tmp18 = w - i - tmp19 = Transform3D."Mx$Transform3D".set2D(m, tmp17, tmp18, 1) - tmp20 = i - 1 - iterID(tmp19, w, tmp20) - fun iterID_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4(m) = + private fun iterID_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4(m) = let {tup_161, tup_162, tup_163, tup_164, tup_165} tup_161 = [1, 0, 0, 0] tup_162 = [0, 1, 0, 0] @@ -216,7 +350,7 @@ module Transform3D with tup_164 = [0, 0, 0, 1] tup_165 = [tup_161, tup_162, tup_163, tup_164] tup_165 - fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit3(m) = + private fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit3(m) = let {tup_151, tup_152, tup_153, tup_154, tup_155} tup_151 = [1, 0, 0, 0] tup_152 = [0, 1, 0, 0] @@ -224,7 +358,7 @@ module Transform3D with tup_154 = [0, 0, 0, 1] tup_155 = [tup_151, tup_152, tup_153, tup_154] tup_155 - fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit2(m) = + private fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit2(m) = let {tup_141, tup_142, tup_143, tup_144, tup_145} tup_141 = [1, 0, 0, 0] tup_142 = [0, 1, 0, 0] @@ -232,7 +366,7 @@ module Transform3D with tup_144 = [0, 0, 0, 1] tup_145 = [tup_141, tup_142, tup_143, tup_144] tup_145 - fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit1(m) = + private fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit1(m) = let {tup_131, tup_132, tup_133, tup_134, tup_135} tup_131 = [1, 0, 0, 0] tup_132 = [0, 1, 0, 0] @@ -240,7 +374,7 @@ module Transform3D with tup_134 = [0, 0, 0, 1] tup_135 = [tup_131, tup_132, tup_133, tup_134] tup_135 - fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit4_Lit0(m) = + private fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit4_Lit0(m) = let {tup_121, tup_122, tup_123, tup_124, tup_125} tup_121 = [1, 0, 0, 0] tup_122 = [0, 1, 0, 0] @@ -248,18 +382,7 @@ module Transform3D with tup_124 = [0, 0, 0, 1] tup_125 = [tup_121, tup_122, tup_123, tup_124] tup_125 - fun iterInit(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16} - scrut3 = ===(i, 0) - if scrut3 is - true then m - else - tmp13 = r - i - tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) - tmp16 = i - 1 - iterInit(tmp15, r, c, tmp16) - fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4_Lit0(m) = + private fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4_Lit0(m) = let {tup_36, tup_37, tup_38, tup_39, tup_40} tup_36 = [0, 0, 0, 0] tup_37 = [0, 0, 0, 0] @@ -267,7 +390,7 @@ module Transform3D with tup_39 = [0, 0, 0, 0] tup_40 = [tup_36, tup_37, tup_38, tup_39] tup_40 - fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_end_Lit4_Lit4_Lit1(m) = + private fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_end_Lit4_Lit4_Lit1(m) = let {tup_46, tup_47, tup_48, tup_49, tup_50} tup_46 = [0, 0, 0, 0] tup_47 = [0, 0, 0, 0] @@ -275,7 +398,7 @@ module Transform3D with tup_49 = [0, 0, 0, 0] tup_50 = [tup_46, tup_47, tup_48, tup_49] tup_50 - fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit4_Lit2(m) = + private fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit4_Lit2(m) = let {tup_56, tup_57, tup_58, tup_59, tup_60} tup_56 = [0, 0, 0, 0] tup_57 = [0, 0, 0, 0] @@ -283,7 +406,7 @@ module Transform3D with tup_59 = [0, 0, 0, 0] tup_60 = [tup_56, tup_57, tup_58, tup_59] tup_60 - fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit3(m) = + private fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit3(m) = let {tup_66, tup_67, tup_68, tup_69, tup_70} tup_66 = [0, 0, 0, 0] tup_67 = [0, 0, 0, 0] @@ -291,7 +414,7 @@ module Transform3D with tup_69 = [0, 0, 0, 0] tup_70 = [tup_66, tup_67, tup_68, tup_69] tup_70 - fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Lit4_Lit1_Lit0(m) = + private fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Lit4_Lit1_Lit0(m) = let {tup_441, tup_442, tup_443, tup_444, tup_445} tup_441 = [0] tup_442 = [0] @@ -299,7 +422,7 @@ module Transform3D with tup_444 = [0] tup_445 = [tup_441, tup_442, tup_443, tup_444] tup_445 - fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr__end_end_Lit4_Lit1_Lit1(m) = + private fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr__end_end_Lit4_Lit1_Lit1(m) = let {tup_451, tup_452, tup_453, tup_454, tup_455} tup_451 = [0] tup_452 = [0] @@ -307,7 +430,7 @@ module Transform3D with tup_454 = [0] tup_455 = [tup_451, tup_452, tup_453, tup_454] tup_455 - fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit1_Lit2(m) = + private fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit1_Lit2(m) = let {tup_461, tup_462, tup_463, tup_464, tup_465} tup_461 = [0] tup_462 = [0] @@ -315,7 +438,7 @@ module Transform3D with tup_464 = [0] tup_465 = [tup_461, tup_462, tup_463, tup_464] tup_465 - fun iterInit_Arr_Arr_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit3(m) = + private fun iterInit_Arr_Arr_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit3(m) = let {tup_471, tup_472, tup_473, tup_474, tup_475} tup_471 = [0] tup_472 = [0] @@ -323,7 +446,7 @@ module Transform3D with tup_474 = [0] tup_475 = [tup_471, tup_472, tup_473, tup_474] tup_475 - fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m, c) = + private fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_511, tup_512, tup_513, tup_514, tup_515} scrut3 = false tmp13 = 0 @@ -336,7 +459,7 @@ module Transform3D with tmp15 = Transform3D."Mx$Transform3D".set1D(tup_515, 0, tmp14) tmp16 = 3 iterInit_Dyn_Lit4_Dyn_Lit3(tmp15, c) - fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit4(m) = + private fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit4(m) = let {tup_481, tup_482, tup_483, tup_484, tup_485} tup_481 = [0] tup_482 = [0] @@ -344,7 +467,7 @@ module Transform3D with tup_484 = [0] tup_485 = [tup_481, tup_482, tup_483, tup_484] tup_485 - fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit4(m) = + private fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit4(m) = let {tup_76, tup_77, tup_78, tup_79, tup_80} tup_76 = [0, 0, 0, 0] tup_77 = [0, 0, 0, 0] @@ -352,7 +475,7 @@ module Transform3D with tup_79 = [0, 0, 0, 0] tup_80 = [tup_76, tup_77, tup_78, tup_79] tup_80 - fun iterInit_Dyn_Dyn_Lit1_Dyn(m, r, i) = + private fun iterInit_Dyn_Dyn_Lit1_Dyn(m, r, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_265, tup_266} scrut3 = ===(i, 0) if scrut3 is @@ -365,7 +488,7 @@ module Transform3D with tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_266) tmp16 = i - 1 iterInit_Dyn_Dyn_Lit1_Dyn(tmp15, r, tmp16) - fun iterInit_Dyn_Dyn_Lit4_Dyn(m, r, i) = + private fun iterInit_Dyn_Dyn_Lit4_Dyn(m, r, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_222, tup_223} scrut3 = ===(i, 0) if scrut3 is @@ -378,11 +501,11 @@ module Transform3D with tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_223) tmp16 = i - 1 iterInit_Dyn_Dyn_Lit4_Dyn(tmp15, r, tmp16) - fun iterInit_Dyn_Lit4_Dyn_Lit0(m, c) = + private fun iterInit_Dyn_Lit4_Dyn_Lit0(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = true m - fun iterInit_Dyn_Lit4_Dyn_Lit1(m, c) = + private fun iterInit_Dyn_Lit4_Dyn_Lit1(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 3 @@ -390,7 +513,7 @@ module Transform3D with tmp15 = Transform3D."Mx$Transform3D".set1D(m, 3, tmp14) tmp16 = 0 iterInit_Dyn_Lit4_Dyn_Lit0(tmp15, c) - fun iterInit_Dyn_Lit4_Dyn_Lit2(m, c) = + private fun iterInit_Dyn_Lit4_Dyn_Lit2(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 2 @@ -398,7 +521,7 @@ module Transform3D with tmp15 = Transform3D."Mx$Transform3D".set1D(m, 2, tmp14) tmp16 = 1 iterInit_Dyn_Lit4_Dyn_Lit1(tmp15, c) - fun iterInit_Dyn_Lit4_Dyn_Lit3(m, c) = + private fun iterInit_Dyn_Lit4_Dyn_Lit3(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 1 @@ -406,81 +529,71 @@ module Transform3D with tmp15 = Transform3D."Mx$Transform3D".set1D(m, 1, tmp14) tmp16 = 2 iterInit_Dyn_Lit4_Dyn_Lit2(tmp15, c) - fun iterRow(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = ===(i, 0) - if scrut2 is - true then m - else - tmp10 = rowX - i - tmp11 = iterCol(m, x, y, colX, colY, tmp10, colY) - tmp12 = i - 1 - iterRow(tmp11, x, y, rowX, colX, colY, tmp12) - fun iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(m, x, y) = + private fun iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 0 tmp11 = iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y) tmp12 = 3 iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(tmp11, x, y) - fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(m, x, y) = + private fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = true m - fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(m, x, y) = + private fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 3 tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y) tmp12 = 0 iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(tmp11, x, y) - fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(m, x, y) = + private fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 2 tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y) tmp12 = 1 iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(tmp11, x, y) - fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(m, x, y) = + private fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 1 tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y) tmp12 = 2 iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(tmp11, x, y) - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(m, x, y, colY) = + private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = true m - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(m, x, y, colY) = + private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 3 tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colY, colY) tmp12 = 0 iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(tmp11, x, y, colY) - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(m, x, y, colY) = + private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 2 tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colY, colY) tmp12 = 1 iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(tmp11, x, y, colY) - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(m, x, y, colY) = + private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 1 tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colY, colY) tmp12 = 2 iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(tmp11, x, y, colY) - fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(m, x, y, colY) = + private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 0 tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colY, colY) tmp12 = 3 iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(tmp11, x, y, colY) - fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, i) = + private fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) if scrut2 is @@ -490,7 +603,7 @@ module Transform3D with tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, tmp10) tmp12 = i - 1 iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp11, x, y, rowX, colX, tmp12) - fun iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(m, x, y, rowX, colX, i) = + private fun iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(m, x, y, rowX, colX, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) if scrut2 is @@ -500,11 +613,11 @@ module Transform3D with tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, tmp10) tmp12 = i - 1 iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(tmp11, x, y, rowX, colX, tmp12) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(sum, x, y) = + private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(sum, x, y) = + private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -513,7 +626,7 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 0 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(tmp3, x, y) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(sum, x, y) = + private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -522,7 +635,7 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 1 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(tmp3, x, y) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(sum, x, y) = + private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -531,11 +644,11 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 2 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(tmp3, x, y) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(sum, x, y) = + private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(sum, x, y) = + private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -544,7 +657,7 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 0 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp3, x, y) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(sum, x, y) = + private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -553,11 +666,11 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 1 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(tmp3, x, y) - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(sum, x, y) = + private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(sum, x, y) = + private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -566,11 +679,11 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 0 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(tmp3, x, y) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -579,7 +692,7 @@ module Transform3D with tmp3 = sum + tmp2 tmp4 = 0 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(tmp3, x, y, j) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -588,7 +701,7 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 1 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(tmp3, x, y, j) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -597,11 +710,11 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 2 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(tmp3, x, y, j) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -610,7 +723,7 @@ module Transform3D with tmp3 = sum + tmp2 tmp4 = 0 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(tmp3, x, y, j) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -619,11 +732,11 @@ module Transform3D with tmp3 = sum + 0 tmp4 = 1 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(tmp3, x, y, j) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -632,11 +745,11 @@ module Transform3D with tmp3 = sum + tmp2 tmp4 = 0 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(tmp3, x, y, j) - fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(sum, x, y, j) = + private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, k) = + private fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is @@ -648,7 +761,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, k) = + private fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_229, tup_230, tup_231, tup_232, tup_233} scrut = >(k, 0) if scrut is @@ -660,7 +773,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(sum, x, y, colX, i, k) = + private fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(sum, x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_239, tup_240, tup_241, tup_242, tup_243} scrut = >(k, 0) if scrut is @@ -672,7 +785,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(sum, x, y, colX, i, k) = + private fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(sum, x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_249, tup_250, tup_251, tup_252, tup_253} scrut = >(k, 0) if scrut is @@ -684,7 +797,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(sum, x, y, colX, i, k) = + private fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(sum, x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_259, tup_260, tup_261, tup_262, tup_263} scrut = >(k, 0) if scrut is @@ -696,7 +809,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, tmp4) else sum - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(x, y) = + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -705,7 +818,7 @@ module Transform3D with tmp3 = 0 + tmp2 tmp4 = 3 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(tmp3, x, y) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(x, y) = + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -714,7 +827,7 @@ module Transform3D with tmp3 = 0 + tmp2 tmp4 = 2 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(tmp3, x, y) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(x, y) = + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -723,7 +836,7 @@ module Transform3D with tmp3 = 0 tmp4 = 3 iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(x, y) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(x, y) = + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -732,7 +845,7 @@ module Transform3D with tmp3 = 0 + tmp2 tmp4 = 1 iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(tmp3, x, y) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(x, y) = + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -741,7 +854,7 @@ module Transform3D with tmp3 = 0 tmp4 = 2 iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(x, y) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(x, y) = + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -750,11 +863,11 @@ module Transform3D with tmp3 = 0 tmp4 = 3 iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(x, y) - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(x, y) = 1 - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(x, y) = 1 - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(x, y) = 1 - fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(x, y) = 1 - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(x, y) = 1 + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(x, y) = 1 + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(x, y) = 1 + private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(x, y) = 1 + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -763,7 +876,7 @@ module Transform3D with tmp3 = 0 + tmp2 tmp4 = 3 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(tmp3, x, y, j) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -772,7 +885,7 @@ module Transform3D with tmp3 = 0 + tmp2 tmp4 = 2 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(tmp3, x, y, j) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -781,7 +894,7 @@ module Transform3D with tmp3 = 0 tmp4 = 3 iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(x, y, j) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -790,7 +903,7 @@ module Transform3D with tmp3 = 0 + tmp2 tmp4 = 1 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(tmp3, x, y, j) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -799,7 +912,7 @@ module Transform3D with tmp3 = 0 tmp4 = 2 iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(x, y, j) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -808,7 +921,7 @@ module Transform3D with tmp3 = 0 tmp4 = 3 iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(x, y, j) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -817,7 +930,7 @@ module Transform3D with tmp3 = 0 + tmp2 tmp4 = 0 iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(tmp3, x, y, j) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -826,7 +939,7 @@ module Transform3D with tmp3 = 0 tmp4 = 1 iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(x, y, j) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -835,7 +948,7 @@ module Transform3D with tmp3 = 0 tmp4 = 2 iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(x, y, j) - fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(x, y, j) = + private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -844,7 +957,7 @@ module Transform3D with tmp3 = 0 tmp4 = 3 iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(x, y, j) - fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, k) = + private fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is @@ -856,7 +969,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, k) = + private fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_224, tup_225, tup_226, tup_227, tup_228} scrut = >(k, 0) if scrut is @@ -868,7 +981,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(x, y, colX, i, k) = + private fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_234, tup_235, tup_236, tup_237, tup_238} scrut = >(k, 0) if scrut is @@ -880,7 +993,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(x, y, colX, i, k) = + private fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_244, tup_245, tup_246, tup_247, tup_248} scrut = >(k, 0) if scrut is @@ -892,7 +1005,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(x, y, colX, i, k) = + private fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_254, tup_255, tup_256, tup_257, tup_258} scrut = >(k, 0) if scrut is @@ -904,7 +1017,7 @@ module Transform3D with tmp4 = k - 1 iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, tmp4) else 0 - fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(x, y, colX, i, j, k) = + private fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is @@ -916,40 +1029,8 @@ module Transform3D with tmp4 = k - 1 iter(tmp3, x, y, colX, i, j, tmp4) else 0 - fun iter_Lit1_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(x, y) = 1 - fun model(local, position, scaling, rotation) = - let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_216, tup_217, tup_218, tup_219, tup_220} - tmp43 = rotateZ(rotation.2) - tmp44 = rotateY(rotation.1) - tmp45 = rotateX(rotation.0) - tup_216 = [1, 0, 0, 0] - tup_217 = [0, 1, 0, 0] - tup_218 = [0, 0, 1, 0] - tup_219 = [0, 0, 0, 1] - tup_220 = [tup_216, tup_217, tup_218, tup_219] - tmp46 = tup_220 - tmp47 = multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(tmp45, tmp46) - tmp48 = multiply(tmp44, tmp47) - rot = multiply(tmp43, tmp48) - tmp49 = transform(position.0, position.1, position.2) - tmp50 = scale(scaling.0, scaling.1, scaling.2) - tmp51 = [local.0] - tmp52 = [local.1] - tmp53 = [local.2] - tmp54 = [1] - tmp55 = [tmp51, tmp52, tmp53, tmp54] - tmp56 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp50, tmp55) - tmp57 = multiply(rot, tmp56) - res1 = multiply(tmp49, tmp57) - [res1.0, res1.1, res1.2] - fun model0(local) = - let {tmp58, tmp59, tmp60, tmp61} - tmp58 = [11, 4, 51] - tmp59 = [0.4, 0.19, 0.19] - tmp60 = 2.51327412 - tmp61 = [tmp60, 3.1415926535, 0] - model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, tmp58, tmp59, tmp61) - fun model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, position, scaling, rotation) = + private fun iter_Lit1_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(x, y) = 1 + private fun model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, position, scaling, rotation) = let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_282, tup_283, tup_284, tup_285, tup_286, tup_342, tup_343, tup_344, tup_345, tup_346, tup_402, tup_403, tup_404, tup_405, tup_406} tmp43 = rotateZ_Lit0() tmp44 = rotateY_Lit3_p_1415926535() @@ -984,15 +1065,7 @@ module Transform3D with tmp57 = multiply(rot, tmp56) res1 = multiply_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn(tmp49, tmp57) [res1.0, res1.1, res1.2] - fun multiply(x, y) = - let {rowX1, colX3, rowY, colY2, res} - rowX1 = x.length - colX3 = x.0.length - rowY = y.length - colY2 = y.0.length - res = zeros(rowX1, colY2) - iterRow(res, x, y, rowX1, colX3, colY2, rowX1) - fun multiply_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = + private fun multiply_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = let {rowX1, colX3, rowY, colY2, res, tup_496, tup_497, tup_498, tup_499, tup_500} rowX1 = 4 colX3 = 4 @@ -1005,7 +1078,7 @@ module Transform3D with tup_500 = [tup_496, tup_497, tup_498, tup_499] res = tup_500 iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(res, x, y) - fun multiply_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn(x, y) = + private fun multiply_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = 4 colX3 = 4 @@ -1013,7 +1086,7 @@ module Transform3D with colY2 = y.0.length res = zeros_Lit4_Dyn(colY2) iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(res, x, y, colY2) - fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = + private fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = x.length colX3 = x.0.length @@ -1021,7 +1094,7 @@ module Transform3D with colY2 = 1 res = zeros_Dyn_Lit1(rowX1) iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(res, x, y, rowX1, colX3, rowX1) - fun multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(x, y) = + private fun multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = x.length colX3 = x.0.length @@ -1029,22 +1102,7 @@ module Transform3D with colY2 = 4 res = zeros_Dyn_Lit4(rowX1) iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(res, x, y, rowX1, colX3, rowX1) - fun rotateX(angle) = - let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_196, tup_197, tup_198, tup_199, tup_200} - s = globalThis.Math.sin(angle) - c2 = globalThis.Math.cos(angle) - tup_196 = [1, 0, 0, 0] - tup_197 = [0, 1, 0, 0] - tup_198 = [0, 0, 1, 0] - tup_199 = [0, 0, 0, 1] - tup_200 = [tup_196, tup_197, tup_198, tup_199] - tmp28 = tup_200 - tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, c2) - tmp30 = -(s) - tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, tmp30) - tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, s) - update_Dyn_Lit2_Lit2_Dyn(tmp32, c2) - fun rotateX_Lit2_p_51327412() = + private fun rotateX_Lit2_p_51327412() = let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_277, tup_278, tup_279, tup_280, tup_281} s = globalThis.Math.sin(2.51327412) c2 = globalThis.Math.cos(2.51327412) @@ -1059,22 +1117,7 @@ module Transform3D with tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, tmp30) tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, s) update_Dyn_Lit2_Lit2_Dyn(tmp32, c2) - fun rotateY(angle) = - let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_206, tup_207, tup_208, tup_209, tup_210} - s1 = globalThis.Math.sin(angle) - c3 = globalThis.Math.cos(angle) - tup_206 = [1, 0, 0, 0] - tup_207 = [0, 1, 0, 0] - tup_208 = [0, 0, 1, 0] - tup_209 = [0, 0, 0, 1] - tup_210 = [tup_206, tup_207, tup_208, tup_209] - tmp33 = tup_210 - tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, c3) - tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, s1) - tmp36 = -(s1) - tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, tmp36) - update_Dyn_Lit2_Lit2_Dyn(tmp37, c3) - fun rotateY_Lit3_p_1415926535() = + private fun rotateY_Lit3_p_1415926535() = let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_272, tup_273, tup_274, tup_275, tup_276} s1 = globalThis.Math.sin(3.1415926535) c3 = globalThis.Math.cos(3.1415926535) @@ -1089,22 +1132,7 @@ module Transform3D with tmp36 = -(s1) tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, tmp36) update_Dyn_Lit2_Lit2_Dyn(tmp37, c3) - fun rotateZ(angle) = - let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_211, tup_212, tup_213, tup_214, tup_215} - s2 = globalThis.Math.sin(angle) - c4 = globalThis.Math.cos(angle) - tup_211 = [1, 0, 0, 0] - tup_212 = [0, 1, 0, 0] - tup_213 = [0, 0, 1, 0] - tup_214 = [0, 0, 0, 1] - tup_215 = [tup_211, tup_212, tup_213, tup_214] - tmp38 = tup_215 - tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, c4) - tmp40 = -(s2) - tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, tmp40) - tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp42, c4) - fun rotateZ_Lit0() = + private fun rotateZ_Lit0() = let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_267, tup_268, tup_269, tup_270, tup_271} s2 = globalThis.Math.sin(0) c4 = globalThis.Math.cos(0) @@ -1119,18 +1147,7 @@ module Transform3D with tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, tmp40) tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, s2) update_Dyn_Lit1_Lit1_Dyn(tmp42, c4) - fun scale(sx, sy, sz) = - let {tmp25, tmp26, tmp27, tup_186, tup_187, tup_188, tup_189, tup_190} - tup_186 = [1, 0, 0, 0] - tup_187 = [0, 1, 0, 0] - tup_188 = [0, 0, 1, 0] - tup_189 = [0, 0, 0, 1] - tup_190 = [tup_186, tup_187, tup_188, tup_189] - tmp25 = tup_190 - tmp26 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp25, sx) - tmp27 = update_Dyn_Lit1_Lit1_Dyn(tmp26, sy) - update_Dyn_Lit2_Lit2_Dyn(tmp27, sz) - fun scale_Lit0_p_4_Lit0_p_19_Lit0_p_19() = + private fun scale_Lit0_p_4_Lit0_p_19_Lit0_p_19() = let {tup_397, tup_398, tup_399, tup_400, tup_401} tup_397 = [0.4, 0, 0, 0] tup_398 = [0, 0.19, 0, 0] @@ -1138,18 +1155,7 @@ module Transform3D with tup_400 = [0, 0, 0, 1] tup_401 = [tup_397, tup_398, tup_399, tup_400] tup_401 - fun transform(dx, dy, dz) = - let {tmp22, tmp23, tmp24, tup_176, tup_177, tup_178, tup_179, tup_180} - tup_176 = [1, 0, 0, 0] - tup_177 = [0, 1, 0, 0] - tup_178 = [0, 0, 1, 0] - tup_179 = [0, 0, 0, 1] - tup_180 = [tup_176, tup_177, tup_178, tup_179] - tmp22 = tup_180 - tmp23 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(tmp22, dx) - tmp24 = update_Dyn_Lit1_Lit3_Dyn(tmp23, dy) - update_Dyn_Lit2_Lit3_Dyn(tmp24, dz) - fun transform_Lit11_Lit4_Lit51() = + private fun transform_Lit11_Lit4_Lit51() = let {tup_337, tup_338, tup_339, tup_340, tup_341} tup_337 = [1, 0, 0, 11] tup_338 = [0, 1, 0, 4] @@ -1157,8 +1163,7 @@ module Transform3D with tup_340 = [0, 0, 0, 1] tup_341 = [tup_337, tup_338, tup_339, tup_340] tup_341 - fun update(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) - fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit2_Lit0_p_19(m) = + private fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit2_Lit0_p_19(m) = let {tup_387, tup_388, tup_389, tup_390, tup_391} tup_387 = [0.4, 0, 0, 0] tup_388 = [0, 0.19, 0, 0] @@ -1166,7 +1171,7 @@ module Transform3D with tup_390 = [0, 0, 0, 1] tup_391 = [tup_387, tup_388, tup_389, tup_390] tup_391 - fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Lit0_p_19(m) = + private fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Lit0_p_19(m) = let {tup_372, tup_373, tup_374, tup_375, tup_376} tup_372 = [0.4, 0, 0, 0] tup_373 = [0, 0.19, 0, 0] @@ -1174,7 +1179,7 @@ module Transform3D with tup_375 = [0, 0, 0, 1] tup_376 = [tup_372, tup_373, tup_374, tup_375] tup_376 - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(m, v) = + private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(m, v) = let {tup_191, tup_192, tup_193, tup_194, tup_195} tup_191 = [1, 0, 0, 0] tup_192 = [0, 1, 0, 0] @@ -1182,7 +1187,7 @@ module Transform3D with tup_194 = [0, 0, 0, 1] tup_195 = [tup_191, tup_192, tup_193, tup_194] Transform3D."Mx$Transform3D".set2D(tup_195, 0, 0, v) - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Lit0_p_4(m) = + private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Lit0_p_4(m) = let {tup_357, tup_358, tup_359, tup_360, tup_361} tup_357 = [0.4, 0, 0, 0] tup_358 = [0, 1, 0, 0] @@ -1190,7 +1195,7 @@ module Transform3D with tup_360 = [0, 0, 0, 1] tup_361 = [tup_357, tup_358, tup_359, tup_360] tup_361 - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(m, v) = + private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(m, v) = let {tup_181, tup_182, tup_183, tup_184, tup_185} tup_181 = [1, 0, 0, 0] tup_182 = [0, 1, 0, 0] @@ -1198,7 +1203,7 @@ module Transform3D with tup_184 = [0, 0, 0, 1] tup_185 = [tup_181, tup_182, tup_183, tup_184] Transform3D."Mx$Transform3D".set2D(tup_185, 0, 3, v) - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Lit11(m) = + private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Lit11(m) = let {tup_297, tup_298, tup_299, tup_300, tup_301} tup_297 = [1, 0, 0, 11] tup_298 = [0, 1, 0, 0] @@ -1206,7 +1211,7 @@ module Transform3D with tup_300 = [0, 0, 0, 1] tup_301 = [tup_297, tup_298, tup_299, tup_300] tup_301 - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(m, v) = + private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(m, v) = let {tup_201, tup_202, tup_203, tup_204, tup_205} tup_201 = [1, 0, 0, 0] tup_202 = [0, 1, 0, 0] @@ -1214,7 +1219,7 @@ module Transform3D with tup_204 = [0, 0, 0, 1] tup_205 = [tup_201, tup_202, tup_203, tup_204] Transform3D."Mx$Transform3D".set2D(tup_205, 1, 1, v) - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit3_Lit4(m) = + private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit3_Lit4(m) = let {tup_312, tup_313, tup_314, tup_315, tup_316} tup_312 = [1, 0, 0, 11] tup_313 = [0, 1, 0, 4] @@ -1222,7 +1227,7 @@ module Transform3D with tup_315 = [0, 0, 0, 1] tup_316 = [tup_312, tup_313, tup_314, tup_315] tup_316 - fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit3_Lit51(m) = + private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit3_Lit51(m) = let {tup_327, tup_328, tup_329, tup_330, tup_331} tup_327 = [1, 0, 0, 11] tup_328 = [0, 1, 0, 4] @@ -1230,35 +1235,29 @@ module Transform3D with tup_330 = [0, 0, 0, 1] tup_331 = [tup_327, tup_328, tup_329, tup_330] tup_331 - fun update_Dyn_Lit0_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 1, v) - fun update_Dyn_Lit0_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 2, v) - fun update_Dyn_Lit1_Lit0_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 0, v) - fun update_Dyn_Lit1_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 1, v) - fun update_Dyn_Lit1_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 2, v) - fun update_Dyn_Lit1_Lit3_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 3, v) - fun update_Dyn_Lit2_Lit0_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 0, v) - fun update_Dyn_Lit2_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 1, v) - fun update_Dyn_Lit2_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 2, v) - fun update_Dyn_Lit2_Lit3_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 3, v) - fun zeros(r, c) = - let {m4, tmp21, tup_1} - tmp21 = [] - tup_1 = [] - m4 = Transform3D."Mx$Transform3D".init(r, tup_1) - iterInit(m4, r, c, r) - fun zeros_Dyn_Lit1(r) = + private fun update_Dyn_Lit0_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 1, v) + private fun update_Dyn_Lit0_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 2, v) + private fun update_Dyn_Lit1_Lit0_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 0, v) + private fun update_Dyn_Lit1_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 1, v) + private fun update_Dyn_Lit1_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 2, v) + private fun update_Dyn_Lit1_Lit3_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 3, v) + private fun update_Dyn_Lit2_Lit0_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 0, v) + private fun update_Dyn_Lit2_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 1, v) + private fun update_Dyn_Lit2_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 2, v) + private fun update_Dyn_Lit2_Lit3_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 3, v) + private fun zeros_Dyn_Lit1(r) = let {m4, tmp21, tup_264} tmp21 = [] tup_264 = [] m4 = Transform3D."Mx$Transform3D".init(r, tup_264) iterInit_Dyn_Dyn_Lit1_Dyn(m4, r, r) - fun zeros_Dyn_Lit4(r) = + private fun zeros_Dyn_Lit4(r) = let {m4, tmp21, tup_221} tmp21 = [] tup_221 = [] m4 = Transform3D."Mx$Transform3D".init(r, tup_221) iterInit_Dyn_Dyn_Lit4_Dyn(m4, r, r) - fun zeros_Lit4_Dyn(c) = + private fun zeros_Lit4_Dyn(c) = let {m4, tmp21, tup_506, tup_507, tup_508, tup_509, tup_510} tmp21 = [] tup_506 = [] @@ -1268,7 +1267,7 @@ module Transform3D with tup_510 = [tup_506, tup_507, tup_508, tup_509] m4 = tup_510 iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m4, c) - fun zeros_Lit4_Lit1() = + private fun zeros_Lit4_Lit1() = let {tup_491, tup_492, tup_493, tup_494, tup_495} tup_491 = [0] tup_492 = [0] @@ -1276,7 +1275,7 @@ module Transform3D with tup_494 = [0] tup_495 = [tup_491, tup_492, tup_493, tup_494] tup_495 - fun zeros_Lit4_Lit4() = + private fun zeros_Lit4_Lit4() = let {tup_86, tup_87, tup_88, tup_89, tup_90} tup_86 = [0, 0, 0, 0] tup_87 = [0, 0, 0, 0] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index c198a2fdce..4603c27b18 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -38,7 +38,6 @@ Simple."test2_gen"(mkDyn()) print(Simple."cache$Simple") //│ > module Simple with //│ > () -//│ > fun f_Lit2_Lit2() = 4 //│ > fun fib(n) = //│ > let {n1, tmp2, tmp3, tmp4, tmp5} //│ > if n is @@ -51,22 +50,23 @@ print(Simple."cache$Simple") //│ > tmp4 = n1 - 2 //│ > tmp5 = fib(tmp4) //│ > tmp3 + tmp5 -//│ > fun fib_Lit1() = 1 -//│ > fun fib_Lit2() = 1 -//│ > fun fib_Lit3() = 2 -//│ > fun fib_Lit4() = 3 -//│ > fun pyth_Dyn_Lit2(x) = -//│ > let {tmp6, tmp7} -//│ > tmp6 = Simple."NonStaged$Simple".sq(x) -//│ > tmp7 = 4 -//│ > tmp6 + 4 -//│ > fun pyth_Lit2_Lit4() = 20 //│ > fun test() = 20 //│ > fun test2(n) = //│ > let {dyn, tmp10} //│ > dyn = pyth_Dyn_Lit2(n) //│ > tmp10 = *(dyn, 2) //│ > fib(tmp10) +//│ > private fun f_Lit2_Lit2() = 4 +//│ > private fun fib_Lit1() = 1 +//│ > private fun fib_Lit2() = 1 +//│ > private fun fib_Lit3() = 2 +//│ > private fun fib_Lit4() = 3 +//│ > private fun pyth_Dyn_Lit2(x) = +//│ > let {tmp6, tmp7} +//│ > tmp6 = Simple."NonStaged$Simple".sq(x) +//│ > tmp7 = 4 +//│ > tmp6 + 4 +//│ > private fun pyth_Lit2_Lit4() = 20 class C(val x) @@ -96,11 +96,11 @@ If."test2_gen"(mkLit(1), mkDyn()) print(If."cache$If") //│ > module If with //│ > () -//│ > fun f_C_Lit2(x) = "C(2) " -//│ > fun f_C_Lit3(x) = "C " -//│ > fun f_Lit2() = "else " //│ > fun test() = "C(2) C else " -//│ > fun test2_Lit1_Dyn(y) = +//│ > private fun f_C_Lit2(x) = "C(2) " +//│ > private fun f_C_Lit3(x) = "C " +//│ > private fun f_Lit2() = "else " +//│ > private fun test2_Lit1_Dyn(y) = //│ > let {tmp6} //│ > if y is //│ > 1 then 1 @@ -127,19 +127,19 @@ If2."test3_gen"() print(If2."cache$If2") //│ > module If2 with //│ > () -//│ > fun f_C_Dyn(x) = -//│ > let {y, tmp} -//│ > y = x.n -//│ > tmp = () -//│ > y + 1 -//│ > fun f_C_Lit2(x) = 3 -//│ > fun f_Lit0() = 1 //│ > fun test() = 3 //│ > fun test2(dyn) = //│ > let {tmp2} //│ > tmp2 = If2."C$If2"(dyn) //│ > f_C_Dyn(tmp2) //│ > fun test3() = 1 +//│ > private fun f_C_Dyn(x) = +//│ > let {y, tmp} +//│ > y = x.n +//│ > tmp = () +//│ > y + 1 +//│ > private fun f_C_Lit2(x) = 3 +//│ > private fun f_Lit0() = 1 staged module LinearAlgebra with fun _dot(v1, v2, n, acc) = @@ -153,37 +153,37 @@ LinearAlgebra."test_gen"(mkDyn()) print(LinearAlgebra."cache$LinearAlgebra") //│ > module LinearAlgebra with //│ > () -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2) = +//│ > fun test(x) = +//│ > let {tmp3, tmp4} +//│ > tmp3 = [x, 1, 2] +//│ > tmp4 = [3, 4, 1] +//│ > dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) +//│ > private fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 1 //│ > tmp1 = *(v1.(0), 3) //│ > tmp2 = tmp1 + 0 //│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp2) -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, acc) = +//│ > private fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 2 //│ > tmp1 = 4 //│ > tmp2 = 4 + acc //│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp2) -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, acc) = +//│ > private fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 3 //│ > tmp1 = 2 //│ > tmp2 = 2 + acc //│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp2) -//│ > fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, acc) = +//│ > private fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = true //│ > acc -//│ > fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2) -//│ > fun test(x) = -//│ > let {tmp3, tmp4} -//│ > tmp3 = [x, 1, 2] -//│ > tmp4 = [3, 4, 1] -//│ > dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) +//│ > private fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2) staged class L1(val y) with fun call(x) = x + 2 + y @@ -214,7 +214,15 @@ Dispatching."test_gen"(mkDyn()) print(Dispatching."cache$Dispatching") //│ > module Dispatching with //│ > () -//│ > fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > fun test(b) = +//│ > let {y1, m, tmp1, tmp2, tmp3} +//│ > tmp1 = new! Dispatching."L1$Dispatching"(1) +//│ > y1 = 11 +//│ > tmp2 = new! Dispatching."L2$Dispatching"(2) +//│ > tmp3 = new! Dispatching."L3$Dispatching"(3) +//│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) +//│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m) +//│ > private fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = //│ > let {obj_7, obj_8} //│ > if b is //│ > true then @@ -223,28 +231,20 @@ print(Dispatching."cache$Dispatching") //│ > else //│ > obj_8 = new! Dispatching."L3$Dispatching"(3) //│ > obj_8 -//│ > fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y) = +//│ > private fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y) = //│ > let {obj_5} //│ > obj_5 = new! Dispatching."L3$Dispatching"(3) //│ > obj_5 -//│ > fun pick_L2_Lit2_L3_Lit3_Littrue(x, y) = +//│ > private fun pick_L2_Lit2_L3_Lit3_Littrue(x, y) = //│ > let {obj_2} //│ > obj_2 = new! Dispatching."L2$Dispatching"(2) //│ > obj_2 -//│ > fun test(b) = -//│ > let {y1, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new! Dispatching."L1$Dispatching"(1) -//│ > y1 = 11 -//│ > tmp2 = new! Dispatching."L2$Dispatching"(2) -//│ > tmp3 = new! Dispatching."L3$Dispatching"(3) -//│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) -//│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m) -//│ > fun test_Litfalse() = 29 -//│ > fun test_Littrue() = 9 -//│ > fun twice_L1_Lit1_Lit5(f) = 11 -//│ > fun twice_L2_Lit2_Lit5(f) = 9 -//│ > fun twice_L3_Lit3_Lit5(f) = 29 -//│ > fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f) = +//│ > private fun test_Litfalse() = 29 +//│ > private fun test_Littrue() = 9 +//│ > private fun twice_L1_Lit1_Lit5(f) = 11 +//│ > private fun twice_L2_Lit2_Lit5(f) = 9 +//│ > private fun twice_L3_Lit3_Lit5(f) = 29 +//│ > private fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f) = //│ > let {tmp} //│ > if f is //│ > Dispatching."L2$Dispatching" then @@ -260,18 +260,18 @@ print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(y) with //│ > () -//│ > fun call_L1_Lit1_dot_Lit5() = 8 -//│ > fun call_L1_Lit1_dot_Lit8() = 11 +//│ > private fun call_L1_Lit1_dot_Lit5() = 8 +//│ > private fun call_L1_Lit1_dot_Lit8() = 11 //│ > class L2(y) with //│ > () -//│ > fun call_L2_Lit2_dot_Lit5() = 7 -//│ > fun call_L2_Lit2_dot_Lit7() = 9 -//│ > fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + 2 +//│ > private fun call_L2_Lit2_dot_Lit5() = 7 +//│ > private fun call_L2_Lit2_dot_Lit7() = 9 +//│ > private fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + 2 //│ > class L3(y) with //│ > () -//│ > fun call_L3_Lit3_dot_Lit13() = 29 -//│ > fun call_L3_Lit3_dot_Lit5() = 13 -//│ > fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = +//│ > private fun call_L3_Lit3_dot_Lit13() = 29 +//│ > private fun call_L3_Lit3_dot_Lit5() = 13 +//│ > private fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = //│ > let {tmp1} //│ > tmp1 = *(x, 2) //│ > tmp1 + 3 @@ -305,17 +305,17 @@ This."test2_gen"(mkLit(1)) print(This."cache$This") //│ > module This with //│ > () -//│ > fun test2_Lit1() = 2 -//│ > fun test_Lit1() = 3 +//│ > private fun test2_Lit1() = 2 +//│ > private fun test_Lit1() = 3 print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(x) with //│ > () -//│ > fun f_A_Lit1_dot_Lit1() = 2 +//│ > private fun f_A_Lit1_dot_Lit1() = 2 //│ > class B(x) with //│ > () -//│ > fun f_B_Lit1_dot_A_Lit1(y) = 3 +//│ > private fun f_B_Lit1_dot_A_Lit1(y) = 3 staged class B(val x, val y) with val z = x + y @@ -376,8 +376,8 @@ M."cache$M" //│ = module M with \ //│ () \ //│ fun f(x, y) = *(x, y) \ -//│ fun f_Lit2_Dyn(y) = *(2, y) \ -//│ fun g(y) = f_Lit2_Dyn(y) +//│ fun g(y) = f_Lit2_Dyn(y) \ +//│ private fun f_Lit2_Dyn(y) = *(2, y) staged module M with fun f(x) = x.2 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 97eaecc0ef..6366afd59c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -27,4 +27,4 @@ print(M."cache$M") //│ > let {y} //│ > y = *(x, 2) //│ > y -//│ > fun f_Lit2() = 4 +//│ > private fun f_Lit2() = 4 From 061f9744d5725b1431a5862dd9aecaa279f99772 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Tue, 5 May 2026 11:40:02 +0800 Subject: [PATCH 591/654] Fix class inst --- .../codegen/ReflectionInstrumenter.scala | 4 ++-- .../src/test/mlscript-compile/Block.mls | 12 +++++++++- .../staging/ImportingFiles.mls | 4 ++-- .../mlscript-compile/staging/StagedClass.mls | 6 ++++- .../staging/out/StagedClass.mls | 20 ++++++++++++++++ .../test/mlscript/block-staging/Generate.mls | 23 +++++++++++++++---- .../test/mlscript/block-staging/PrintCode.mls | 2 +- .../test/mlscript/block-staging/ShapeProp.mls | 14 +++++------ 8 files changed, 67 insertions(+), 18 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e77851e5e1..b3000ebc01 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -483,7 +483,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case l: ClsLikeDefn => l.owner owner match case S(owner: DefinitionSymbol[ModuleOrObjectDef | ClassDef]) => - reconstruct(owner).sel(Tree.Ident(s.nme), s) + Select(reconstruct(owner), Tree.Ident(s.nme))(N) case N => defn match case l: (ModuleOrObjectDef | ClassDef) => Value.Ref(l.bsym, S(s)) case l: ClsLikeDefn => Value.Ref(l.sym, S(s)) @@ -593,4 +593,4 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def apply(b: Block) = mkDefnMap(b) - applyBlock(b) \ No newline at end of file + applyBlock(b) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 1db63dd940..7349391d04 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -171,6 +171,15 @@ class Printer(val owner: Opt[Symbol]) with fun showArgs(args: Array[Arg]) = args.map(showArg(_)).join(", ") + + fun hasClassValue(cls: Path) = + if cls is + ValueRef(ConcreteClassSymbol(_, value, _, _, _)) then not (value."class" is undefined) + Select(_, ConcreteClassSymbol(_, value, _, _, _)) then not (value."class" is undefined) + else false + + fun showInstantiatePath(cls: Path) = + showPath(cls) + (if hasClassValue(cls) then ".class" else "") fun showResult(r: Result): Str = if r is @@ -182,7 +191,8 @@ class Printer(val owner: Opt[Symbol]) with ValueRef(Symbol("-")) then showArg(lhs) + " - " + showArg(rhs) else showPath(fun_) + "(" + showArgs(args) + ")" Instantiate(cls, args) then - let prefix = if cls is ValueRef(ClassSymbol) and owner is Some(owner) then "new! " + showPath(cls) else "new " + showPath(cls) + let classPath = showInstantiatePath(cls) + let prefix = if cls is ValueRef(ClassSymbol) and owner is Some(owner) then "new! " + classPath else "new " + classPath prefix + (if args.length != 0 then "(" + showArgs(args) + ")" else "") Tuple(elems) then "[" + showArgs(elems) + "]" _ then "" diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/ImportingFiles.mls b/hkmc2/shared/src/test/mlscript-compile/staging/ImportingFiles.mls index 7046067584..f507fe6a23 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/ImportingFiles.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/ImportingFiles.mls @@ -6,5 +6,5 @@ import "./StagedClass.mls" staged module ImportingFiles with fun f() = SimpleStagedExample.fib(8) // what about importing classes? // FIXME: import the file "./StagedClass.mls" in next stage - // fun g(x) = (new StagedClass.StagedClass(x)).f(1, 2) - // val a = StagedClass.StagedClass + // fun g(x) = (new StagedClass.Bar(x)).f(1, 2) + // val a = StagedClass.Bar diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls index 1747919041..55a6bb0de8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls @@ -1,3 +1,7 @@ staged module StagedClass with - staged class StagedClass(val x) with + staged class Foo + staged class Bar(val x) with fun f(y, z) = x + y + z + fun foo() = new Foo + fun bar(b) = if b then Bar(0) else new Bar(1) + diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls new file mode 100644 index 0000000000..d21a7a7fd5 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -0,0 +1,20 @@ +#config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) +import "../StagedClass.mls" +module StagedClass with + class Foo with + () + + class Bar(x) with + () + fun f(y, z) = + let {tmp} + tmp = x + y + tmp + z + fun bar(b) = + if b is + true then StagedClass."Bar$StagedClass"(0) + else new StagedClass."Bar$StagedClass".class(1) + fun foo() = + let {obj_8} + obj_8 = new! StagedClass."Foo$StagedClass" + obj_8 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 1d7f26928f..922fc8efc4 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -54,11 +54,26 @@ LinkingGeneratedClasses.g().call(3) import "../../mlscript-compile/staging/StagedClass.mls" -:fixme -// FIXME: module wasn't staged alongside class -gen(StagedClass."class", "StagedClass") -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'generate') + +gen(StagedClass, "StagedClass") + + +import "../../mlscript-compile/staging/out/StagedClass.mls" + + +StagedClass.foo() +//│ = Foo + + +StagedClass.bar(false) +//│ = Bar(1) + +StagedClass.bar(true) +//│ = Bar(0) + import "../../mlscript-compile/staging/ImportingFiles.mls" gen(ImportingFiles, "ImportingFiles") + +import "../../mlscript-compile/staging/out/ImportingFiles.mls" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 2ed2b290c1..9be357bc3c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -41,7 +41,7 @@ printCode(Call(ValueRef(Symbol("f")), [Arg(ValueLit(3))])) printCode(Instantiate(ValueRef(dSym), [Arg(ValueLit(0))])) printCode(Tuple([Arg(ValueRef(Symbol("x"))), Arg(ValueRef(Symbol("y")))])) //│ > f(3) -//│ > new D(0) +//│ > new D.class(0) //│ > [x, y] let f = FunDefn(Symbol("f"), [[Param(None, Symbol("x"))]], Return(ValueLit(1), false)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 4603c27b18..d0408ef6a7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -216,28 +216,28 @@ print(Dispatching."cache$Dispatching") //│ > () //│ > fun test(b) = //│ > let {y1, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new! Dispatching."L1$Dispatching"(1) +//│ > tmp1 = new! Dispatching."L1$Dispatching".class(1) //│ > y1 = 11 -//│ > tmp2 = new! Dispatching."L2$Dispatching"(2) -//│ > tmp3 = new! Dispatching."L3$Dispatching"(3) +//│ > tmp2 = new! Dispatching."L2$Dispatching".class(2) +//│ > tmp3 = new! Dispatching."L3$Dispatching".class(3) //│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) //│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m) //│ > private fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = //│ > let {obj_7, obj_8} //│ > if b is //│ > true then -//│ > obj_7 = new! Dispatching."L2$Dispatching"(2) +//│ > obj_7 = new! Dispatching."L2$Dispatching".class(2) //│ > obj_7 //│ > else -//│ > obj_8 = new! Dispatching."L3$Dispatching"(3) +//│ > obj_8 = new! Dispatching."L3$Dispatching".class(3) //│ > obj_8 //│ > private fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y) = //│ > let {obj_5} -//│ > obj_5 = new! Dispatching."L3$Dispatching"(3) +//│ > obj_5 = new! Dispatching."L3$Dispatching".class(3) //│ > obj_5 //│ > private fun pick_L2_Lit2_L3_Lit3_Littrue(x, y) = //│ > let {obj_2} -//│ > obj_2 = new! Dispatching."L2$Dispatching"(2) +//│ > obj_2 = new! Dispatching."L2$Dispatching".class(2) //│ > obj_2 //│ > private fun test_Litfalse() = 29 //│ > private fun test_Littrue() = 9 From 9362b00af6f49cda2994fa1a65c3f1db51d7e629 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Tue, 5 May 2026 15:07:48 +0800 Subject: [PATCH 592/654] Fix class inst and missing `val` --- .../codegen/ReflectionInstrumenter.scala | 2 +- .../src/test/mlscript-compile/Block.mls | 14 ++++++++++-- .../mlscript-compile/SpecializeHelpers.mls | 22 +++++++++++-------- .../mlscript-compile/staging/StagedClass.mls | 9 ++++---- .../staging/out/CombinedModule.mls | 6 ++--- .../staging/out/LinkingGeneratedClasses.mls | 2 +- .../staging/out/SimpleStagedExample.mls | 4 ++-- .../staging/out/StagedClass.mls | 15 +++++-------- .../test/mlscript/block-staging/Generate.mls | 11 ++++++++++ .../test/mlscript/block-staging/PrintCode.mls | 4 ++-- .../test/mlscript/block-staging/ShapeProp.mls | 10 ++++----- 11 files changed, 61 insertions(+), 38 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index b3000ebc01..39a7d846c3 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -485,7 +485,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case S(owner: DefinitionSymbol[ModuleOrObjectDef | ClassDef]) => Select(reconstruct(owner), Tree.Ident(s.nme))(N) case N => defn match - case l: (ModuleOrObjectDef | ClassDef) => Value.Ref(l.bsym, S(s)) + case l: (ModuleOrObjectDef | ClassDef) => Value.Ref(l.bsym, N) case l: ClsLikeDefn => Value.Ref(l.sym, S(s)) case N => s.asPath diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 7349391d04..126642a40e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -145,6 +145,14 @@ class Printer(val owner: Opt[Symbol]) with fun showDefnSymbol(s: Symbol) = s.name.replaceAll("$", "_") + + fun isGeneratedStagedClass(s: Symbol) = + if s is + ConcreteClassSymbol(_, value, _, _, _) then isStagedClass(value) + else false + + fun showOwnerMemberSymbol(s: Symbol) = + if isGeneratedStagedClass(s) then showDefnSymbol(s) else showSymbol(s) fun showSymbol(s: Symbol) = if s is ModuleSymbol | ConcreteClassSymbol and owner is Some(owner) and s.redirect @@ -157,7 +165,7 @@ class Printer(val owner: Opt[Symbol]) with Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit, _)) then "()" Select(qual, name) and // remove selection to owner for values defined within the owner - qual is ValueRef(sym) and owner is Some(owner) and sym == owner then showSymbol(name) // TODO: check if we should use `==` here + qual is ValueRef(sym) and owner is Some(owner) and sym == owner then showOwnerMemberSymbol(name) // TODO: check if we should use `==` here qual is ValueRef(sym) and sym is ClassSymbol then "this." + showSymbol(name) else showPath(qual) + "." + showSymbol(name) @@ -174,6 +182,8 @@ class Printer(val owner: Opt[Symbol]) with fun hasClassValue(cls: Path) = if cls is + Select(ValueRef(sym), name) and + owner is Some(owner) and sym == owner and isGeneratedStagedClass(name) then false ValueRef(ConcreteClassSymbol(_, value, _, _, _)) then not (value."class" is undefined) Select(_, ConcreteClassSymbol(_, value, _, _, _)) then not (value."class" is undefined) else false @@ -233,7 +243,7 @@ class Printer(val owner: Opt[Symbol]) with showFunDefn("", sym, ps, body) ClsLikeDefn(sym, methods, _) and sym is ConcreteClassSymbol(_, v, _, _, _) and not isStagedClass(v) then - "data class " + showDefnSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams(_)).join("") + "class " + showDefnSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams(_)).join("") + indent((if methods is [] then "" else " with\n") + methods.map(showDefn(_)).join("\n")) isStagedClass(v) then getClassCache(v) // TODO: used to represent assignments in constructors, which still need some adjustments diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index c6e3106d4b..17bb28e68e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -86,6 +86,7 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any // this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions fun setFun(k, v) = cache.set(k, v); v fun toString() = + let p = printer // FIXME: figure out why we need this p let decl = if owner is ConcreteClassSymbol then "class " ModuleSymbol then "module " @@ -93,17 +94,19 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any ConcreteClassSymbol(_, _, Some, _, _) then owner.value.class else owner.value - val paramList = if owner is + let paramText = if owner is ConcreteClassSymbol and owner.paramsOpt is - Some(ps) then [ps, ...owner.auxParams] - else owner.auxParams - ModuleSymbol then [] + Some(ps) then printer.showCtorParams(ps) + owner.auxParams.map(pl => p.showParams(pl)).join("") + else owner.auxParams.map(pl => p.showParams(pl)).join("") + ModuleSymbol then "" // process preCtor: inline temp variable when printing class InlinePrinter(ctx: Map[Symbol, String]) extends Printer(Some(owner)) with fun showPath(p) = if p is ValueRef(s) and ctx.has(s) then ctx.get(s) - Select(qual, name) then showPath(qual) + "." + this.showSymbol(name) + Select(qual, name) and + qual is ValueRef(sym) and sym == owner then this.showOwnerMemberSymbol(name) + else showPath(qual) + "." + this.showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" ValueRef(s) then this.showSymbol(s) @@ -137,14 +140,15 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any assert ctor is FunDefn let params = new Set(ctor.params.flat().map(_.sym)) let ctorBody = removeExtraValDefn(params, ctor.body) + let methodDefns = cache.values().map(e => + if e.isPrivate then printer.showPrivateDefn(e.defn) else printer.showDefn(e.defn) + ).toArray().sort().join("\n") - decl + owner.name + printer.showParamList(paramList) + decl + owner.name + paramText + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" + indent("\n" + printer.showBlock(ctorBody)) // TODO: we can skip printing ctor that are just End() - + indent("\n" + cache.values().map(e => - if e.isPrivate then printer.showPrivateDefn(e.defn) else printer.showDefn(e.defn) - ).toArray().sort().join("\n")) + + (if methodDefns == "" then "" else indent("\n" + methodDefns)) module FunCache with fun empty(owner) = FunCache(owner, new Map()) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls index 55a6bb0de8..2d5314508c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls @@ -1,7 +1,8 @@ +class Foo +class Bar(val x) with + fun f(y, z) = x + y + z staged module StagedClass with - staged class Foo - staged class Bar(val x) with - fun f(y, z) = x + y + z + staged class Baz(val x) fun foo() = new Foo fun bar(b) = if b then Bar(0) else new Bar(1) - + fun baz(b) = if b then Baz(1) else new Baz(2) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index f13d2e6238..a6c99a6bf6 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -4,11 +4,11 @@ import "../LinkingGeneratedClasses.mjs" module CombinedModule with module SimpleStagedExample with - class Bar(x) with + class Bar(val x) with () fun bar() = x private fun bar_Bar_Lit1_dot_() = 1 - class Foo(x) with + class Foo(val x) with () fun foo(b) = let {tmp, tmp1} @@ -63,7 +63,7 @@ module CombinedModule with private fun fib_Lit8() = 21 private fun fib_Lit9() = 34 module LinkingGeneratedClasses with - data class D + class D fun f() = let {obj_5} obj_5 = new! LinkingGeneratedClasses."Function$$LinkingGeneratedClasses" diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index dbe30468d0..e99d564d8f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,7 +1,7 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../LinkingGeneratedClasses.mls" module LinkingGeneratedClasses with - data class D + class D fun f() = let {obj_5} obj_5 = new! LinkingGeneratedClasses."Function$$LinkingGeneratedClasses" diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 965a85389b..dde523fb94 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,11 +1,11 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../SimpleStagedExample.mls" module SimpleStagedExample with - class Bar(x) with + class Bar(val x) with () fun bar() = x private fun bar_Bar_Lit1_dot_() = 1 - class Foo(x) with + class Foo(val x) with () fun foo(b) = let {tmp, tmp1} diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index d21a7a7fd5..8f28620147 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -1,19 +1,16 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../StagedClass.mls" module StagedClass with - class Foo with + class Baz(val x) with () - - class Bar(x) with - () - fun f(y, z) = - let {tmp} - tmp = x + y - tmp + z fun bar(b) = if b is true then StagedClass."Bar$StagedClass"(0) - else new StagedClass."Bar$StagedClass".class(1) + else new! StagedClass."Bar$StagedClass".class(1) + fun baz(b) = + if b is + true then Baz(1) + else new Baz(2) fun foo() = let {obj_8} obj_8 = new! StagedClass."Foo$StagedClass" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 922fc8efc4..4529968a1e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -72,6 +72,17 @@ StagedClass.bar(true) //│ = Bar(0) +StagedClass.baz(true) +//│ = Baz(1) + +let baz = StagedClass.baz(false) +//│ baz = Baz(2) + + +baz.x +//│ = 2 + + import "../../mlscript-compile/staging/ImportingFiles.mls" gen(ImportingFiles, "ImportingFiles") diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 9be357bc3c..45d21fca00 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -55,9 +55,9 @@ printCode(f) printCode(ClsLikeDefn(dSym, [f], [])) printCode(ClsLikeDefn(bSym, [], [])) //│ > fun f(x) = 1 -//│ > data class D(val x)(y) with +//│ > class D(val x)(y) with //│ > fun f(x) = 1 -//│ > data class B +//│ > class B printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), Return(ValueRef(Symbol("x")), true)))) //│ > let {x, y} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index d0408ef6a7..988928be46 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -258,16 +258,16 @@ print(Dispatching."cache$Dispatching") print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") -//│ > class L1(y) with +//│ > class L1(val y) with //│ > () //│ > private fun call_L1_Lit1_dot_Lit5() = 8 //│ > private fun call_L1_Lit1_dot_Lit8() = 11 -//│ > class L2(y) with +//│ > class L2(val y) with //│ > () //│ > private fun call_L2_Lit2_dot_Lit5() = 7 //│ > private fun call_L2_Lit2_dot_Lit7() = 9 //│ > private fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + 2 -//│ > class L3(y) with +//│ > class L3(val y) with //│ > () //│ > private fun call_L3_Lit3_dot_Lit13() = 29 //│ > private fun call_L3_Lit3_dot_Lit5() = 13 @@ -310,10 +310,10 @@ print(This."cache$This") print(A.class."class$cache$A") print(B.class."class$cache$B") -//│ > class A(x) with +//│ > class A(val x) with //│ > () //│ > private fun f_A_Lit1_dot_Lit1() = 2 -//│ > class B(x) with +//│ > class B(val x) with //│ > () //│ > private fun f_B_Lit1_dot_A_Lit1(y) = 3 From 1f0319c5285792ae82b4a0cd47a8b49988d26dce Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Tue, 5 May 2026 17:49:42 +0800 Subject: [PATCH 593/654] Remove wrong forwarding --- .../src/test/mlscript-compile/Block.mls | 7 ++--- .../mlscript-compile/staging/StagedClass.mls | 13 ++++++--- .../staging/out/StagedClass.mls | 27 ++++++++++++++++--- .../test/mlscript/block-staging/Generate.mls | 3 +++ .../test/mlscript/block-staging/ShapeProp.mls | 22 +++++++-------- 5 files changed, 50 insertions(+), 22 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 126642a40e..af65f5e8f7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -151,11 +151,8 @@ class Printer(val owner: Opt[Symbol]) with ConcreteClassSymbol(_, value, _, _, _) then isStagedClass(value) else false - fun showOwnerMemberSymbol(s: Symbol) = - if isGeneratedStagedClass(s) then showDefnSymbol(s) else showSymbol(s) - fun showSymbol(s: Symbol) = - if s is ModuleSymbol | ConcreteClassSymbol and owner is Some(owner) and s.redirect + if s is ModuleSymbol | ConcreteClassSymbol and owner is Some(owner) and s.redirect and not isGeneratedStagedClass(s) then owner.name + ".\"" + s.name + "$" + owner.name + "\"" else s.name.replaceAll("$", "_") @@ -165,7 +162,7 @@ class Printer(val owner: Opt[Symbol]) with Select(ValueRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit, _)) then "()" Select(qual, name) and // remove selection to owner for values defined within the owner - qual is ValueRef(sym) and owner is Some(owner) and sym == owner then showOwnerMemberSymbol(name) // TODO: check if we should use `==` here + qual is ValueRef(sym) and owner is Some(owner) and sym == owner then showSymbol(name) // TODO: check if we should use `==` here qual is ValueRef(sym) and sym is ClassSymbol then "this." + showSymbol(name) else showPath(qual) + "." + showSymbol(name) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls index 2d5314508c..e07403d4fb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls @@ -1,8 +1,15 @@ -class Foo -class Bar(val x) with - fun f(y, z) = x + y + z staged module StagedClass with + class Foo + class Bar(val x) with + fun f(y, z) = x + y + z staged class Baz(val x) fun foo() = new Foo fun bar(b) = if b then Bar(0) else new Bar(1) fun baz(b) = if b then Baz(1) else new Baz(2) + fun f(x) = + if x is + Foo then 0 + Bar(x') then x' + Baz(y) then y + 1 + else -1 + staged class FooBar(val x) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index 8f28620147..d656839a52 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -1,17 +1,38 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../StagedClass.mls" module StagedClass with + class Foo + class Bar(val x) with + fun f(y, z) = + let {tmp} + tmp = this.x + y + tmp + z class Baz(val x) with () + class FooBar(val x) with + () fun bar(b) = if b is - true then StagedClass."Bar$StagedClass"(0) - else new! StagedClass."Bar$StagedClass".class(1) + true then Bar(0) + else new Bar.class(1) fun baz(b) = if b is true then Baz(1) else new Baz(2) + fun f(x) = + let {x__, y1, arg_Baz_0_, arg_Bar_0_} + if x is + Foo then 0 + Bar then + arg_Bar_0_ = x.x + x__ = arg_Bar_0_ + x__ + Baz then + arg_Baz_0_ = x.x + y1 = arg_Baz_0_ + y1 + 1 + else -1 fun foo() = let {obj_8} - obj_8 = new! StagedClass."Foo$StagedClass" + obj_8 = new! Foo obj_8 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 4529968a1e..cdf29bdab8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -82,6 +82,9 @@ let baz = StagedClass.baz(false) baz.x //│ = 2 +StagedClass.f(baz) +//│ = 3 + import "../../mlscript-compile/staging/ImportingFiles.mls" diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 988928be46..7b95b20394 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -216,28 +216,28 @@ print(Dispatching."cache$Dispatching") //│ > () //│ > fun test(b) = //│ > let {y1, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new! Dispatching."L1$Dispatching".class(1) +//│ > tmp1 = new! L1.class(1) //│ > y1 = 11 -//│ > tmp2 = new! Dispatching."L2$Dispatching".class(2) -//│ > tmp3 = new! Dispatching."L3$Dispatching".class(3) +//│ > tmp2 = new! L2.class(2) +//│ > tmp3 = new! L3.class(3) //│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) //│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m) //│ > private fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = //│ > let {obj_7, obj_8} //│ > if b is //│ > true then -//│ > obj_7 = new! Dispatching."L2$Dispatching".class(2) +//│ > obj_7 = new! L2.class(2) //│ > obj_7 //│ > else -//│ > obj_8 = new! Dispatching."L3$Dispatching".class(3) +//│ > obj_8 = new! L3.class(3) //│ > obj_8 //│ > private fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y) = //│ > let {obj_5} -//│ > obj_5 = new! Dispatching."L3$Dispatching".class(3) +//│ > obj_5 = new! L3.class(3) //│ > obj_5 //│ > private fun pick_L2_Lit2_L3_Lit3_Littrue(x, y) = //│ > let {obj_2} -//│ > obj_2 = new! Dispatching."L2$Dispatching".class(2) +//│ > obj_2 = new! L2.class(2) //│ > obj_2 //│ > private fun test_Litfalse() = 29 //│ > private fun test_Littrue() = 9 @@ -247,13 +247,13 @@ print(Dispatching."cache$Dispatching") //│ > private fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f) = //│ > let {tmp} //│ > if f is -//│ > Dispatching."L2$Dispatching" then +//│ > L2 then //│ > tmp = f.call_L2_Lit2_dot_Lit5() -//│ > Dispatching."L3$Dispatching" then +//│ > L3 then //│ > tmp = f.call_L3_Lit3_dot_Lit5() //│ > if f is -//│ > Dispatching."L2$Dispatching" then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) -//│ > Dispatching."L3$Dispatching" then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) +//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") From 65c66dc117bbe04e6e8e970b579fc608075c0689 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Tue, 5 May 2026 19:37:05 +0800 Subject: [PATCH 594/654] Fix parent class path --- .../mlscript-compile/SpecializeHelpers.mls | 3 ++- .../mlscript-compile/staging/StagedClass.mls | 5 +++++ .../staging/out/StagedClass.mls | 20 ++++++++++++++++--- .../test/mlscript/block-staging/Generate.mls | 18 +++++++++++++++++ 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 17bb28e68e..f2f34d22b2 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -105,7 +105,8 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any fun showPath(p) = if p is ValueRef(s) and ctx.has(s) then ctx.get(s) Select(qual, name) and - qual is ValueRef(sym) and sym == owner then this.showOwnerMemberSymbol(name) + qual is ValueRef(sym) and sym == owner then this.showSymbol(name) + qual is ValueRef(ModuleSymbol) and this.isGeneratedStagedClass(name) then this.showSymbol(name) else showPath(qual) + "." + this.showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls index e07403d4fb..245f116545 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls @@ -13,3 +13,8 @@ staged module StagedClass with Baz(y) then y + 1 else -1 staged class FooBar(val x) + staged class B() + staged class D() extends B() + fun g() = new D() + staged class C() with + fun h() = new D() diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index d656839a52..4ca62c6bf1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -11,6 +11,16 @@ module StagedClass with () class FooBar(val x) with () + class B() with + () + class D() extends B() with + () + class C() with + () + fun h() = + let {obj_8} + obj_8 = new! D + obj_8 fun bar(b) = if b is true then Bar(0) @@ -33,6 +43,10 @@ module StagedClass with y1 + 1 else -1 fun foo() = - let {obj_8} - obj_8 = new! Foo - obj_8 \ No newline at end of file + let {obj_9} + obj_9 = new! Foo + obj_9 + fun g() = + let {obj_10} + obj_10 = new! D + obj_10 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index cdf29bdab8..ee127d0d79 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -86,6 +86,24 @@ StagedClass.f(baz) //│ = 3 +:expect 1 +if StagedClass.D() is + StagedClass.B then 1 + else 0 +//│ = 1 + +:expect 1 +if StagedClass.g() is + StagedClass.D then 1 + else 0 +//│ = 1 + +:expect 1 +if StagedClass.C().h() is + StagedClass.D then 1 + else 0 +//│ = 1 + import "../../mlscript-compile/staging/ImportingFiles.mls" gen(ImportingFiles, "ImportingFiles") From 1eba348a920496933933bc2861ad63b503fff30f Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 7 May 2026 14:02:20 +0800 Subject: [PATCH 595/654] Add fresh name for specialization --- .../codegen/ReflectionInstrumenter.scala | 22 +- .../mlscript-compile/SpecializeHelpers.mls | 56 +- .../staging/out/CombinedModule.mls | 26 +- .../staging/out/SimpleStagedExample.mls | 26 +- .../staging/out/Transform3D.mls | 1294 ++++++++--------- .../test/mlscript/block-staging/Hygiene.mls | 25 + .../test/mlscript/block-staging/Nested.mls | 24 +- .../test/mlscript/block-staging/ShapeProp.mls | 134 +- .../mlscript/block-staging/SpecializeTest.mls | 13 +- .../test/mlscript/block-staging/Syntax.mls | 12 +- 10 files changed, 855 insertions(+), 777 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 39a7d846c3..a8dd9f55d9 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -400,7 +400,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(new HashMap(), true)) - def stageMethods(ownerSym: DefinitionSymbol[?], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str, nestedPropagates: Ls[Path])(methods: Ls[FunDefn]): (FunDefn, Ls[FunDefn], Block => Block) = + def stageMethods(ownerSym: DefinitionSymbol[? <: ClassLikeDef], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str, nestedPropagates: Ls[Path])(methods: Ls[FunDefn]): (FunDefn, Ls[FunDefn], Block => Block) = // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol(cacheNme, Nil, true) val cacheTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(cacheNme)) @@ -420,15 +420,29 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))) ) ).unzip3 + val reservedNames = getDefn(ownerSym) match + case ownerDefn: semantics.ClassLikeDef => + val ownerParamNames = (ownerDefn.paramsOpt.toList ++ ownerDefn.auxParams) + .flatMap(_.params.map(_.sym.nme)) + (ownerDefn.body.members.keys.toList ++ ownerParamNames).distinct + case ownerDefn: ClsLikeDefn => + val ownerParamNames = (ownerDefn.paramsOpt.toList ++ ownerDefn.auxParams) + .flatMap(_.params.map(_.sym.nme)) + val ownerFieldNames = ownerDefn.publicFields.map(_._1.nme) ++ ownerDefn.privateFields.map(_.nme) + (ownerDefn.methods.map(_.sym.nme) ++ ownerFieldNames ++ ownerParamNames).distinct + val reservedNameValues = reservedNames.map(name => (k: Path => Block) => k(toValue(name))) // initialize cache for the module def cacheDecl(rest: Block) = val pOpt = if !forClass then S(Value.Ref(ownerSym)) else N transformSymbol(ownerSym, pOpt = pOpt)(using Context(new HashMap())): (stagedSym, _) => - ctor(State.globalThisSymbol.asPath.selSN("Map"), Nil): map => - ctor(helperMod("FunCache"), Ls(stagedSym, map)): funCache => - Define(ValDefn(cacheTsym, cacheSym, funCache)(N, Nil), rest) + ctor(State.globalThisSymbol.asPath.selSN("Map"), Nil): cacheMap => + reservedNameValues.collectApply: defs => + tuple(defs): reservedNames => + ctor(State.globalThisSymbol.asPath.selSN("Set"), Ls(reservedNames)): nameSet => + ctor(helperMod("FunCache"), Ls(stagedSym, cacheMap, nameSet)): funCache => + Define(ValDefn(cacheTsym, cacheSym, funCache)(N, Nil), rest) def generatorMapDecl(rest: Block) = generatorEntries.collectApply: defs => diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index f2f34d22b2..2e55c60d49 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -18,15 +18,15 @@ fun wrapScoped(symbols, block) = else Scoped(symbols, block) fun showCtxPath(p) = if p is - Select(qual, Symbol(name)) then showCtxPath(qual) + "." + name - DynSelect(qual, fld, _) then showCtxPath(qual) + ".(" + showCtxPath(fld) + ")" - ValueRef(l) and - l is - ConcreteClassSymbol(n, v, _, _, _) then "ClassSymbol(" + n + ")" - ModuleSymbol(n, v, _) then "ModuleSymbol(" + n + ")" - Symbol(n) then "Symbol(" + n + ")" - else throw Error(l) - ValueLit(lit) then "Lit(" + lit.toString() + ")" + Select(qual, Symbol(name)) then showCtxPath(qual) + "." + name + DynSelect(qual, fld, _) then showCtxPath(qual) + ".(" + showCtxPath(fld) + ")" + ValueRef(l) and + l is + ConcreteClassSymbol(n, v, _, _, _) then "ClassSymbol(" + n + ")" + ModuleSymbol(n, v, _) then "ModuleSymbol(" + n + ")" + Symbol(n) then "Symbol(" + n + ")" + else throw Error(l) + ValueLit(lit) then "Lit(" + lit.toString() + ")" class Ctx( // ctx tracks shapes of variables @@ -80,11 +80,28 @@ class FunEntry( val isPrivate: Bool, ) -class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any, FunEntry]) with +class FunCache( + val owner: ConcreteClassSymbol | ModuleSymbol, + val cache: Map[Any, FunEntry], + val names: Set[String], +) with val printer = Printer(Some(owner)) fun getFun(k) = if cache.has(k) then Some(cache.get(k)) else None // this will be called at the beginning of specialization to avoid infinite calls when specializing recursive functions fun setFun(k, v) = cache.set(k, v); v + fun reserveName(name: String) = + names.add(name) + name + fun freshName(funName: String) = + let + prefix = funName + "_" + owner.name + "_sp_" + idx = 0 + name = prefix + idx + while names.has(name) do + set + idx += 1 + name = prefix + idx + reserveName(name) fun toString() = let p = printer // FIXME: figure out why we need this p let decl = if owner is @@ -151,7 +168,7 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any + indent("\n" + printer.showBlock(ctorBody)) // TODO: we can skip printing ctor that are just End() + (if methodDefns == "" then "" else indent("\n" + methodDefns)) module FunCache with - fun empty(owner) = FunCache(owner, new Map()) + fun empty(owner) = FunCache(owner, new Map(), new Set()) open StagingUtility @@ -512,11 +529,16 @@ fun specializationParamShapes(isMethod, ps, shapes) = fun hasAllDynamicParams(isMethod, ps, shapes) = specializationParamShapes(isMethod, ps, shapes).every(_.every(_.isDyn())) -fun specializeName(funName, isMethod, ps, shapes) = +fun specializeKey(funName, isMethod, ps, shapes) = let mappedShapes = specializationParamShapes(isMethod, ps, shapes) if mappedShapes.every(_.every(_.isDyn())) then funName else funName + "_" + mappedShapes.map(pss => pss.map(buildShapeSetName).join("_")).join("_dot_") +fun specializeName(cache, funName, isMethod, ps, shapes) = + let mappedShapes = specializationParamShapes(isMethod, ps, shapes) + if mappedShapes.every(_.every(_.isDyn())) then funName + else cache.freshName(funName) + // abuse Printer for structural induction // to do this properly you would need only add the definitions as you go through the tree class ValueCollection(defn: Map[Class, Str]) extends Printer(None) with @@ -535,11 +557,12 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = // print(defn) if defn is FunDefn(Symbol(_), ps, body) then let isMethod = cache.owner is ConcreteClassSymbol - let newName = specializeName(funName, isMethod, ps, shapes) + let specializationKey = specializeKey(funName, isMethod, ps, shapes) let isPrivate = not hasAllDynamicParams(isMethod, ps, shapes) - if cache.getFun(newName) is + if cache.getFun(specializationKey) is Some(x) then [x.defn.sym.name, x.retShape, x.litMask] None then + let newName = specializeName(cache, funName, isMethod, ps, shapes) let paramShapes = if isMethod then shapes.slice(1) else shapes let ctx = if isMethod then @@ -577,7 +600,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = not (not (p2.constraint is Some(Dynamic)) and isLitShape(paramShapes.(i).(j))) )) // Store placeholder with real litMask so recursive calls use correct filtering - cache.setFun(newName, FunEntry(FunDefn(Symbol(newName), newPs, body), mkDyn(), litMask, isPrivate)) + cache.setFun(specializationKey, FunEntry(FunDefn(Symbol(newName), newPs, body), mkDyn(), litMask, isPrivate)) let res = prop(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) @@ -591,7 +614,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = else bodyWithScoped // Update cache with finalized body and actual return shape - let entry = cache.setFun(newName, FunEntry(FunDefn(Symbol(newName), newPs, finalBody), actualRetShape, litMask, isPrivate)) + let entry = cache.setFun(specializationKey, FunEntry(FunDefn(Symbol(newName), newPs, finalBody), actualRetShape, litMask, isPrivate)) [entry.defn.sym.name, entry.retShape, entry.litMask] @@ -602,7 +625,6 @@ fun specializeCtor(classSymb: ConcreteClassSymbol, argShapes: Array[ShapeSet], c let actualClass = getActualClass(classSymb.value) let defn = actualClass."class$ctor$_instr"() if defn is FunDefn(Symbol(_), ps, body) then - let newName = specializeName("class$ctor$", false, ps, [argShapes]) ps.forEach((p, i, _) => p.forEach((p2, j, _) => ctx.add(ValueRef(p2.sym), argShapes.(j)))) if not (actualClass."preCtor$_instr" is undefined) and actualClass."preCtor$_instr"() is FunDefn(_, _, preCtorBody) then do prop(ctx, preCtorBody) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index a6c99a6bf6..e82964c23e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -7,7 +7,7 @@ module CombinedModule with class Bar(val x) with () fun bar() = x - private fun bar_Bar_Lit1_dot_() = 1 + private fun bar_Bar_sp_0() = 1 class Foo(val x) with () fun foo(b) = @@ -20,7 +20,7 @@ module CombinedModule with tmp1 = x.bar() tmp1 + 2 else x.bar() - private fun foo_Foo_Bar_Lit1_dot_Lit1() = 2 + private fun foo_Foo_sp_0() = 2 fun baz() = 2 fun f(x, y) = x + y fun fib(n) = @@ -51,17 +51,17 @@ module CombinedModule with let {tup_3} tup_3 = ["\t", "\n", "\r"] tup_3 - private fun f_Lit2_Lit3() = 5 - private fun fib_Lit1() = 1 - private fun fib_Lit10() = 55 - private fun fib_Lit2() = 1 - private fun fib_Lit3() = 2 - private fun fib_Lit4() = 3 - private fun fib_Lit5() = 5 - private fun fib_Lit6() = 8 - private fun fib_Lit7() = 13 - private fun fib_Lit8() = 21 - private fun fib_Lit9() = 34 + private fun f_SimpleStagedExample_sp_0() = 5 + private fun fib_SimpleStagedExample_sp_0() = 55 + private fun fib_SimpleStagedExample_sp_1() = 34 + private fun fib_SimpleStagedExample_sp_2() = 21 + private fun fib_SimpleStagedExample_sp_3() = 13 + private fun fib_SimpleStagedExample_sp_4() = 8 + private fun fib_SimpleStagedExample_sp_5() = 5 + private fun fib_SimpleStagedExample_sp_6() = 3 + private fun fib_SimpleStagedExample_sp_7() = 2 + private fun fib_SimpleStagedExample_sp_8() = 1 + private fun fib_SimpleStagedExample_sp_9() = 1 module LinkingGeneratedClasses with class D fun f() = diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index dde523fb94..e2cc51ad2a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -4,7 +4,7 @@ module SimpleStagedExample with class Bar(val x) with () fun bar() = x - private fun bar_Bar_Lit1_dot_() = 1 + private fun bar_Bar_sp_0() = 1 class Foo(val x) with () fun foo(b) = @@ -17,7 +17,7 @@ module SimpleStagedExample with tmp1 = x.bar() tmp1 + 2 else x.bar() - private fun foo_Foo_Bar_Lit1_dot_Lit1() = 2 + private fun foo_Foo_sp_0() = 2 fun baz() = 2 fun f(x, y) = x + y fun fib(n) = @@ -48,14 +48,14 @@ module SimpleStagedExample with let {tup_1} tup_1 = ["\t", "\n", "\r"] tup_1 - private fun f_Lit2_Lit3() = 5 - private fun fib_Lit1() = 1 - private fun fib_Lit10() = 55 - private fun fib_Lit2() = 1 - private fun fib_Lit3() = 2 - private fun fib_Lit4() = 3 - private fun fib_Lit5() = 5 - private fun fib_Lit6() = 8 - private fun fib_Lit7() = 13 - private fun fib_Lit8() = 21 - private fun fib_Lit9() = 34 \ No newline at end of file + private fun f_SimpleStagedExample_sp_0() = 5 + private fun fib_SimpleStagedExample_sp_0() = 55 + private fun fib_SimpleStagedExample_sp_1() = 34 + private fun fib_SimpleStagedExample_sp_2() = 21 + private fun fib_SimpleStagedExample_sp_3() = 13 + private fun fib_SimpleStagedExample_sp_4() = 8 + private fun fib_SimpleStagedExample_sp_5() = 5 + private fun fib_SimpleStagedExample_sp_6() = 3 + private fun fib_SimpleStagedExample_sp_7() = 2 + private fun fib_SimpleStagedExample_sp_8() = 1 + private fun fib_SimpleStagedExample_sp_9() = 1 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 86657bc6eb..d4718cd557 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -26,7 +26,7 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(x, y, colX, i, tmp6, colX) + tmp7 = iter_Transform3D_sp_0(x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) tmp9 = j - 1 iterCol(tmp8, x, y, colX, colY, i, tmp9) @@ -73,7 +73,7 @@ module Transform3D with tup_219 = [0, 0, 0, 1] tup_220 = [tup_216, tup_217, tup_218, tup_219] tmp46 = tup_220 - tmp47 = multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(tmp45, tmp46) + tmp47 = multiply_Transform3D_sp_0(tmp45, tmp46) tmp48 = multiply(tmp44, tmp47) rot = multiply(tmp43, tmp48) tmp49 = transform(position.0, position.1, position.2) @@ -83,7 +83,7 @@ module Transform3D with tmp53 = [local.2] tmp54 = [1] tmp55 = [tmp51, tmp52, tmp53, tmp54] - tmp56 = multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp50, tmp55) + tmp56 = multiply_Transform3D_sp_1(tmp50, tmp55) tmp57 = multiply(rot, tmp56) res1 = multiply(tmp49, tmp57) [res1.0, res1.1, res1.2] @@ -93,7 +93,7 @@ module Transform3D with tmp59 = [0.4, 0.19, 0.19] tmp60 = 2.51327412 tmp61 = [tmp60, 3.1415926535, 0] - model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, tmp58, tmp59, tmp61) + model_Transform3D_sp_0(local, tmp58, tmp59, tmp61) fun multiply(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = x.length @@ -112,11 +112,11 @@ module Transform3D with tup_199 = [0, 0, 0, 1] tup_200 = [tup_196, tup_197, tup_198, tup_199] tmp28 = tup_200 - tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, c2) + tmp29 = update_Transform3D_sp_6(tmp28, c2) tmp30 = -(s) - tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, tmp30) - tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, s) - update_Dyn_Lit2_Lit2_Dyn(tmp32, c2) + tmp31 = update_Transform3D_sp_7(tmp29, tmp30) + tmp32 = update_Transform3D_sp_8(tmp31, s) + update_Transform3D_sp_5(tmp32, c2) fun rotateY(angle) = let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_206, tup_207, tup_208, tup_209, tup_210} s1 = globalThis.Math.sin(angle) @@ -127,11 +127,11 @@ module Transform3D with tup_209 = [0, 0, 0, 1] tup_210 = [tup_206, tup_207, tup_208, tup_209] tmp33 = tup_210 - tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, c3) - tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, s1) + tmp34 = update_Transform3D_sp_3(tmp33, c3) + tmp35 = update_Transform3D_sp_9(tmp34, s1) tmp36 = -(s1) - tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, tmp36) - update_Dyn_Lit2_Lit2_Dyn(tmp37, c3) + tmp37 = update_Transform3D_sp_10(tmp35, tmp36) + update_Transform3D_sp_5(tmp37, c3) fun rotateZ(angle) = let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_211, tup_212, tup_213, tup_214, tup_215} s2 = globalThis.Math.sin(angle) @@ -142,11 +142,11 @@ module Transform3D with tup_214 = [0, 0, 0, 1] tup_215 = [tup_211, tup_212, tup_213, tup_214] tmp38 = tup_215 - tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, c4) + tmp39 = update_Transform3D_sp_3(tmp38, c4) tmp40 = -(s2) - tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, tmp40) - tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp42, c4) + tmp41 = update_Transform3D_sp_11(tmp39, tmp40) + tmp42 = update_Transform3D_sp_12(tmp41, s2) + update_Transform3D_sp_4(tmp42, c4) fun scale(sx, sy, sz) = let {tmp25, tmp26, tmp27, tup_186, tup_187, tup_188, tup_189, tup_190} tup_186 = [1, 0, 0, 0] @@ -155,9 +155,9 @@ module Transform3D with tup_189 = [0, 0, 0, 1] tup_190 = [tup_186, tup_187, tup_188, tup_189] tmp25 = tup_190 - tmp26 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp25, sx) - tmp27 = update_Dyn_Lit1_Lit1_Dyn(tmp26, sy) - update_Dyn_Lit2_Lit2_Dyn(tmp27, sz) + tmp26 = update_Transform3D_sp_3(tmp25, sx) + tmp27 = update_Transform3D_sp_4(tmp26, sy) + update_Transform3D_sp_5(tmp27, sz) fun transform(dx, dy, dz) = let {tmp22, tmp23, tmp24, tup_176, tup_177, tup_178, tup_179, tup_180} tup_176 = [1, 0, 0, 0] @@ -166,9 +166,9 @@ module Transform3D with tup_179 = [0, 0, 0, 1] tup_180 = [tup_176, tup_177, tup_178, tup_179] tmp22 = tup_180 - tmp23 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(tmp22, dx) - tmp24 = update_Dyn_Lit1_Lit3_Dyn(tmp23, dy) - update_Dyn_Lit2_Lit3_Dyn(tmp24, dz) + tmp23 = update_Transform3D_sp_0(tmp22, dx) + tmp24 = update_Transform3D_sp_1(tmp23, dy) + update_Transform3D_sp_2(tmp24, dz) fun update(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) fun zeros(r, c) = let {m4, tmp21, tup_1} @@ -176,7 +176,7 @@ module Transform3D with tup_1 = [] m4 = Transform3D."Mx$Transform3D".init(r, tup_1) iterInit(m4, r, c, r) - private fun ident_Lit4() = + private fun ident_Transform3D_sp_0() = let {tup_171, tup_172, tup_173, tup_174, tup_175} tup_171 = [1, 0, 0, 0] tup_172 = [0, 1, 0, 0] @@ -184,55 +184,42 @@ module Transform3D with tup_174 = [0, 0, 0, 1] tup_175 = [tup_171, tup_172, tup_173, tup_174] tup_175 - private fun iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_501, tup_502, tup_503, tup_504, tup_505} + private fun iterCol_Transform3D_sp_0(m, x, y, colX, i) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(x, y) - tup_501 = [0] - tup_502 = [0] - tup_503 = [0] - tup_504 = [0] - tup_505 = [tup_501, tup_502, tup_503, tup_504] - tmp8 = Transform3D."Mx$Transform3D".set2D(tup_505, 0, 0, tmp7) - tmp9 = 0 - iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp8, x, y) - private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(m, x, y) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = true - m - private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(m, x, y) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = true - m - private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y) = + tmp7 = iter_Transform3D_sp_1(x, y, colX, i, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) + tmp9 = 3 + iterCol_Transform3D_sp_1(tmp8, x, y, colX, i) + private fun iterCol_Transform3D_sp_1(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false - tmp5 = 0 - tmp6 = 0 - tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(x, y) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, 0, tmp7) - tmp9 = 0 - iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit0(tmp8, x, y) - private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(m, x, y) = + tmp5 = 1 + tmp6 = 1 + tmp7 = iter_Transform3D_sp_3(x, y, colX, i, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 1, tmp7) + tmp9 = 2 + iterCol_Transform3D_sp_2(tmp8, x, y, colX, i) + private fun iterCol_Transform3D_sp_10(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y) = + private fun iterCol_Transform3D_sp_11(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(x, y) + tmp7 = iter_Transform3D_sp_21(x, y) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, 0, tmp7) tmp9 = 0 - iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit0(tmp8, x, y) - private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(m, x, y) = + iterCol_Transform3D_sp_12(tmp8, x, y) + private fun iterCol_Transform3D_sp_12(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y) = + private fun iterCol_Transform3D_sp_13(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 @@ -240,8 +227,12 @@ module Transform3D with tmp7 = 1 tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, 0, 1) tmp9 = 0 - iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit0(tmp8, x, y) - private fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colY, j) = + iterCol_Transform3D_sp_14(tmp8, x, y) + private fun iterCol_Transform3D_sp_14(m, x, y) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = true + m + private fun iterCol_Transform3D_sp_15(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -249,11 +240,11 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(x, y, tmp6) + tmp7 = iter_Transform3D_sp_31(x, y, tmp6) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 0, tmp5, tmp7) tmp9 = j - 1 - iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(tmp8, x, y, colY, tmp9) - private fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colY, j) = + iterCol_Transform3D_sp_15(tmp8, x, y, colY, tmp9) + private fun iterCol_Transform3D_sp_16(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -261,11 +252,11 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(x, y, tmp6) + tmp7 = iter_Transform3D_sp_36(x, y, tmp6) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, tmp5, tmp7) tmp9 = j - 1 - iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(tmp8, x, y, colY, tmp9) - private fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colY, j) = + iterCol_Transform3D_sp_16(tmp8, x, y, colY, tmp9) + private fun iterCol_Transform3D_sp_17(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -273,11 +264,11 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(x, y, tmp6) + tmp7 = iter_Transform3D_sp_41(x, y, tmp6) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, tmp5, tmp7) tmp9 = j - 1 - iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(tmp8, x, y, colY, tmp9) - private fun iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colY, j) = + iterCol_Transform3D_sp_17(tmp8, x, y, colY, tmp9) + private fun iterCol_Transform3D_sp_18(m, x, y, colY, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -285,64 +276,73 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(x, y, tmp6) + tmp7 = iter_Transform3D_sp_46(x, y, tmp6) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, tmp5, tmp7) tmp9 = j - 1 - iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(tmp8, x, y, colY, tmp9) - private fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(m, x, y, colX, i) = + iterCol_Transform3D_sp_18(tmp8, x, y, colY, tmp9) + private fun iterCol_Transform3D_sp_2(m, x, y, colX, i) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 2 + tmp6 = 2 + tmp7 = iter_Transform3D_sp_5(x, y, colX, i, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 2, tmp7) + tmp9 = 1 + iterCol_Transform3D_sp_3(tmp8, x, y, colX, i) + private fun iterCol_Transform3D_sp_3(m, x, y, colX, i) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + scrut1 = false + tmp5 = 3 + tmp6 = 3 + tmp7 = iter_Transform3D_sp_7(x, y, colX, i, colX) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 3, tmp7) + tmp9 = 0 + iterCol_Transform3D_sp_4(tmp8, x, y, colX, i) + private fun iterCol_Transform3D_sp_4(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, i) = + private fun iterCol_Transform3D_sp_5(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, colX) + tmp7 = iter_Transform3D_sp_9(x, y, colX, i, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 0 - iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit0(tmp8, x, y, colX, i) - private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(m, x, y, colX, i) = + iterCol_Transform3D_sp_6(tmp8, x, y, colX, i) + private fun iterCol_Transform3D_sp_6(m, x, y, colX, i) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(m, x, y, colX, i) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + private fun iterCol_Transform3D_sp_7(m, x, y) = + let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_501, tup_502, tup_503, tup_504, tup_505} scrut1 = false - tmp5 = 3 - tmp6 = 3 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(x, y, colX, i, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 3, tmp7) + tmp5 = 0 + tmp6 = 0 + tmp7 = iter_Transform3D_sp_11(x, y) + tup_501 = [0] + tup_502 = [0] + tup_503 = [0] + tup_504 = [0] + tup_505 = [tup_501, tup_502, tup_503, tup_504] + tmp8 = Transform3D."Mx$Transform3D".set2D(tup_505, 0, 0, tmp7) tmp9 = 0 - iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0(tmp8, x, y, colX, i) - private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(m, x, y, colX, i) = + iterCol_Transform3D_sp_8(tmp8, x, y) + private fun iterCol_Transform3D_sp_8(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = false - tmp5 = 2 - tmp6 = 2 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(x, y, colX, i, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 2, tmp7) - tmp9 = 1 - iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1(tmp8, x, y, colX, i) - private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(m, x, y, colX, i) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = false - tmp5 = 1 - tmp6 = 1 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(x, y, colX, i, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 1, tmp7) - tmp9 = 2 - iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2(tmp8, x, y, colX, i) - private fun iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, i) = + scrut1 = true + m + private fun iterCol_Transform3D_sp_9(m, x, y) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) - tmp9 = 3 - iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3(tmp8, x, y, colX, i) - private fun iterID_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4(m) = + tmp7 = iter_Transform3D_sp_16(x, y) + tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, 0, tmp7) + tmp9 = 0 + iterCol_Transform3D_sp_10(tmp8, x, y) + private fun iterID_Transform3D_sp_0(m) = let {tup_161, tup_162, tup_163, tup_164, tup_165} tup_161 = [1, 0, 0, 0] tup_162 = [0, 1, 0, 0] @@ -350,7 +350,7 @@ module Transform3D with tup_164 = [0, 0, 0, 1] tup_165 = [tup_161, tup_162, tup_163, tup_164] tup_165 - private fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit3(m) = + private fun iterID_Transform3D_sp_1(m) = let {tup_151, tup_152, tup_153, tup_154, tup_155} tup_151 = [1, 0, 0, 0] tup_152 = [0, 1, 0, 0] @@ -358,7 +358,7 @@ module Transform3D with tup_154 = [0, 0, 0, 1] tup_155 = [tup_151, tup_152, tup_153, tup_154] tup_155 - private fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit2(m) = + private fun iterID_Transform3D_sp_2(m) = let {tup_141, tup_142, tup_143, tup_144, tup_145} tup_141 = [1, 0, 0, 0] tup_142 = [0, 1, 0, 0] @@ -366,7 +366,7 @@ module Transform3D with tup_144 = [0, 0, 0, 1] tup_145 = [tup_141, tup_142, tup_143, tup_144] tup_145 - private fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit1(m) = + private fun iterID_Transform3D_sp_3(m) = let {tup_131, tup_132, tup_133, tup_134, tup_135} tup_131 = [1, 0, 0, 0] tup_132 = [0, 1, 0, 0] @@ -374,7 +374,7 @@ module Transform3D with tup_134 = [0, 0, 0, 1] tup_135 = [tup_131, tup_132, tup_133, tup_134] tup_135 - private fun iterID_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit4_Lit0(m) = + private fun iterID_Transform3D_sp_4(m) = let {tup_121, tup_122, tup_123, tup_124, tup_125} tup_121 = [1, 0, 0, 0] tup_122 = [0, 1, 0, 0] @@ -382,31 +382,15 @@ module Transform3D with tup_124 = [0, 0, 0, 1] tup_125 = [tup_121, tup_122, tup_123, tup_124] tup_125 - private fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_end_Lit4_Lit4_Lit0(m) = - let {tup_36, tup_37, tup_38, tup_39, tup_40} - tup_36 = [0, 0, 0, 0] - tup_37 = [0, 0, 0, 0] - tup_38 = [0, 0, 0, 0] - tup_39 = [0, 0, 0, 0] - tup_40 = [tup_36, tup_37, tup_38, tup_39] - tup_40 - private fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_end_Lit4_Lit4_Lit1(m) = - let {tup_46, tup_47, tup_48, tup_49, tup_50} - tup_46 = [0, 0, 0, 0] - tup_47 = [0, 0, 0, 0] - tup_48 = [0, 0, 0, 0] - tup_49 = [0, 0, 0, 0] - tup_50 = [tup_46, tup_47, tup_48, tup_49] - tup_50 - private fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit4_Lit2(m) = - let {tup_56, tup_57, tup_58, tup_59, tup_60} - tup_56 = [0, 0, 0, 0] - tup_57 = [0, 0, 0, 0] - tup_58 = [0, 0, 0, 0] - tup_59 = [0, 0, 0, 0] - tup_60 = [tup_56, tup_57, tup_58, tup_59] - tup_60 - private fun iterInit_Arr_Arr_Lit0_Lit0_Lit0_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit3(m) = + private fun iterInit_Transform3D_sp_0(m) = + let {tup_76, tup_77, tup_78, tup_79, tup_80} + tup_76 = [0, 0, 0, 0] + tup_77 = [0, 0, 0, 0] + tup_78 = [0, 0, 0, 0] + tup_79 = [0, 0, 0, 0] + tup_80 = [tup_76, tup_77, tup_78, tup_79] + tup_80 + private fun iterInit_Transform3D_sp_1(m) = let {tup_66, tup_67, tup_68, tup_69, tup_70} tup_66 = [0, 0, 0, 0] tup_67 = [0, 0, 0, 0] @@ -414,15 +398,7 @@ module Transform3D with tup_69 = [0, 0, 0, 0] tup_70 = [tup_66, tup_67, tup_68, tup_69] tup_70 - private fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Lit4_Lit1_Lit0(m) = - let {tup_441, tup_442, tup_443, tup_444, tup_445} - tup_441 = [0] - tup_442 = [0] - tup_443 = [0] - tup_444 = [0] - tup_445 = [tup_441, tup_442, tup_443, tup_444] - tup_445 - private fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr__end_end_Lit4_Lit1_Lit1(m) = + private fun iterInit_Transform3D_sp_10(m) = let {tup_451, tup_452, tup_453, tup_454, tup_455} tup_451 = [0] tup_452 = [0] @@ -430,23 +406,15 @@ module Transform3D with tup_454 = [0] tup_455 = [tup_451, tup_452, tup_453, tup_454] tup_455 - private fun iterInit_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr__end_Arr__end_end_Lit4_Lit1_Lit2(m) = - let {tup_461, tup_462, tup_463, tup_464, tup_465} - tup_461 = [0] - tup_462 = [0] - tup_463 = [0] - tup_464 = [0] - tup_465 = [tup_461, tup_462, tup_463, tup_464] - tup_465 - private fun iterInit_Arr_Arr_Lit0_end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit3(m) = - let {tup_471, tup_472, tup_473, tup_474, tup_475} - tup_471 = [0] - tup_472 = [0] - tup_473 = [0] - tup_474 = [0] - tup_475 = [tup_471, tup_472, tup_473, tup_474] - tup_475 - private fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m, c) = + private fun iterInit_Transform3D_sp_11(m) = + let {tup_441, tup_442, tup_443, tup_444, tup_445} + tup_441 = [0] + tup_442 = [0] + tup_443 = [0] + tup_444 = [0] + tup_445 = [tup_441, tup_442, tup_443, tup_444] + tup_445 + private fun iterInit_Transform3D_sp_12(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_511, tup_512, tup_513, tup_514, tup_515} scrut3 = false tmp13 = 0 @@ -458,184 +426,239 @@ module Transform3D with tup_515 = [tup_511, tup_512, tup_513, tup_514] tmp15 = Transform3D."Mx$Transform3D".set1D(tup_515, 0, tmp14) tmp16 = 3 - iterInit_Dyn_Lit4_Dyn_Lit3(tmp15, c) - private fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit1_Lit4(m) = - let {tup_481, tup_482, tup_483, tup_484, tup_485} - tup_481 = [0] - tup_482 = [0] - tup_483 = [0] - tup_484 = [0] - tup_485 = [tup_481, tup_482, tup_483, tup_484] - tup_485 - private fun iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Lit4_Lit4(m) = - let {tup_76, tup_77, tup_78, tup_79, tup_80} - tup_76 = [0, 0, 0, 0] - tup_77 = [0, 0, 0, 0] - tup_78 = [0, 0, 0, 0] - tup_79 = [0, 0, 0, 0] - tup_80 = [tup_76, tup_77, tup_78, tup_79] - tup_80 - private fun iterInit_Dyn_Dyn_Lit1_Dyn(m, r, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_265, tup_266} - scrut3 = ===(i, 0) - if scrut3 is - true then m - else - tmp13 = r - i - tup_265 = [0] - tmp14 = tup_265 - tup_266 = [0] - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_266) - tmp16 = i - 1 - iterInit_Dyn_Dyn_Lit1_Dyn(tmp15, r, tmp16) - private fun iterInit_Dyn_Dyn_Lit4_Dyn(m, r, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_222, tup_223} - scrut3 = ===(i, 0) - if scrut3 is - true then m - else - tmp13 = r - i - tup_222 = [0, 0, 0, 0] - tmp14 = tup_222 - tup_223 = [0, 0, 0, 0] - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_223) - tmp16 = i - 1 - iterInit_Dyn_Dyn_Lit4_Dyn(tmp15, r, tmp16) - private fun iterInit_Dyn_Lit4_Dyn_Lit0(m, c) = - let {scrut3, tmp13, tmp14, tmp15, tmp16} - scrut3 = true - m - private fun iterInit_Dyn_Lit4_Dyn_Lit1(m, c) = + iterInit_Transform3D_sp_13(tmp15, c) + private fun iterInit_Transform3D_sp_13(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false - tmp13 = 3 + tmp13 = 1 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, 3, tmp14) - tmp16 = 0 - iterInit_Dyn_Lit4_Dyn_Lit0(tmp15, c) - private fun iterInit_Dyn_Lit4_Dyn_Lit2(m, c) = + tmp15 = Transform3D."Mx$Transform3D".set1D(m, 1, tmp14) + tmp16 = 2 + iterInit_Transform3D_sp_14(tmp15, c) + private fun iterInit_Transform3D_sp_14(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 2 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) tmp15 = Transform3D."Mx$Transform3D".set1D(m, 2, tmp14) tmp16 = 1 - iterInit_Dyn_Lit4_Dyn_Lit1(tmp15, c) - private fun iterInit_Dyn_Lit4_Dyn_Lit3(m, c) = + iterInit_Transform3D_sp_15(tmp15, c) + private fun iterInit_Transform3D_sp_15(m, c) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false - tmp13 = 1 + tmp13 = 3 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, 1, tmp14) - tmp16 = 2 - iterInit_Dyn_Lit4_Dyn_Lit2(tmp15, c) - private fun iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(m, x, y) = + tmp15 = Transform3D."Mx$Transform3D".set1D(m, 3, tmp14) + tmp16 = 0 + iterInit_Transform3D_sp_16(tmp15, c) + private fun iterInit_Transform3D_sp_16(m, c) = + let {scrut3, tmp13, tmp14, tmp15, tmp16} + scrut3 = true + m + private fun iterInit_Transform3D_sp_2(m) = + let {tup_56, tup_57, tup_58, tup_59, tup_60} + tup_56 = [0, 0, 0, 0] + tup_57 = [0, 0, 0, 0] + tup_58 = [0, 0, 0, 0] + tup_59 = [0, 0, 0, 0] + tup_60 = [tup_56, tup_57, tup_58, tup_59] + tup_60 + private fun iterInit_Transform3D_sp_3(m) = + let {tup_46, tup_47, tup_48, tup_49, tup_50} + tup_46 = [0, 0, 0, 0] + tup_47 = [0, 0, 0, 0] + tup_48 = [0, 0, 0, 0] + tup_49 = [0, 0, 0, 0] + tup_50 = [tup_46, tup_47, tup_48, tup_49] + tup_50 + private fun iterInit_Transform3D_sp_4(m) = + let {tup_36, tup_37, tup_38, tup_39, tup_40} + tup_36 = [0, 0, 0, 0] + tup_37 = [0, 0, 0, 0] + tup_38 = [0, 0, 0, 0] + tup_39 = [0, 0, 0, 0] + tup_40 = [tup_36, tup_37, tup_38, tup_39] + tup_40 + private fun iterInit_Transform3D_sp_5(m, r, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_222, tup_223} + scrut3 = ===(i, 0) + if scrut3 is + true then m + else + tmp13 = r - i + tup_222 = [0, 0, 0, 0] + tmp14 = tup_222 + tup_223 = [0, 0, 0, 0] + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_223) + tmp16 = i - 1 + iterInit_Transform3D_sp_5(tmp15, r, tmp16) + private fun iterInit_Transform3D_sp_6(m, r, i) = + let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_265, tup_266} + scrut3 = ===(i, 0) + if scrut3 is + true then m + else + tmp13 = r - i + tup_265 = [0] + tmp14 = tup_265 + tup_266 = [0] + tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_266) + tmp16 = i - 1 + iterInit_Transform3D_sp_6(tmp15, r, tmp16) + private fun iterInit_Transform3D_sp_7(m) = + let {tup_481, tup_482, tup_483, tup_484, tup_485} + tup_481 = [0] + tup_482 = [0] + tup_483 = [0] + tup_484 = [0] + tup_485 = [tup_481, tup_482, tup_483, tup_484] + tup_485 + private fun iterInit_Transform3D_sp_8(m) = + let {tup_471, tup_472, tup_473, tup_474, tup_475} + tup_471 = [0] + tup_472 = [0] + tup_473 = [0] + tup_474 = [0] + tup_475 = [tup_471, tup_472, tup_473, tup_474] + tup_475 + private fun iterInit_Transform3D_sp_9(m) = + let {tup_461, tup_462, tup_463, tup_464, tup_465} + tup_461 = [0] + tup_462 = [0] + tup_463 = [0] + tup_464 = [0] + tup_465 = [tup_461, tup_462, tup_463, tup_464] + tup_465 + private fun iterRow_Transform3D_sp_0(m, x, y, rowX, colX, i) = let {scrut2, tmp10, tmp11, tmp12} - scrut2 = false - tmp10 = 0 - tmp11 = iterCol_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(m, x, y) - tmp12 = 3 - iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(tmp11, x, y) - private fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(m, x, y) = + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp10 = rowX - i + tmp11 = iterCol_Transform3D_sp_0(m, x, y, colX, tmp10) + tmp12 = i - 1 + iterRow_Transform3D_sp_0(tmp11, x, y, rowX, colX, tmp12) + private fun iterRow_Transform3D_sp_1(m, x, y, rowX, colX, i) = let {scrut2, tmp10, tmp11, tmp12} - scrut2 = true - m - private fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(m, x, y) = + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp10 = rowX - i + tmp11 = iterCol_Transform3D_sp_5(m, x, y, colX, tmp10) + tmp12 = i - 1 + iterRow_Transform3D_sp_1(tmp11, x, y, rowX, colX, tmp12) + private fun iterRow_Transform3D_sp_10(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 3 - tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit3_Lit1(m, x, y) + tmp11 = iterCol_Transform3D_sp_18(m, x, y, colY, colY) tmp12 = 0 - iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit0(tmp11, x, y) - private fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(m, x, y) = + iterRow_Transform3D_sp_11(tmp11, x, y, colY) + private fun iterRow_Transform3D_sp_11(m, x, y, colY) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = true + m + private fun iterRow_Transform3D_sp_2(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false - tmp10 = 2 - tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit2_Lit1(m, x, y) - tmp12 = 1 - iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit1(tmp11, x, y) - private fun iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit3(m, x, y) = + tmp10 = 0 + tmp11 = iterCol_Transform3D_sp_7(m, x, y) + tmp12 = 3 + iterRow_Transform3D_sp_3(tmp11, x, y) + private fun iterRow_Transform3D_sp_3(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 1 - tmp11 = iterCol_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit1_Lit1(m, x, y) + tmp11 = iterCol_Transform3D_sp_9(m, x, y) tmp12 = 2 - iterRow_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit2(tmp11, x, y) - private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(m, x, y, colY) = + iterRow_Transform3D_sp_4(tmp11, x, y) + private fun iterRow_Transform3D_sp_4(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} - scrut2 = true - m - private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(m, x, y, colY) = + scrut2 = false + tmp10 = 2 + tmp11 = iterCol_Transform3D_sp_11(m, x, y) + tmp12 = 1 + iterRow_Transform3D_sp_5(tmp11, x, y) + private fun iterRow_Transform3D_sp_5(m, x, y) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 3 - tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit3_Dyn(m, x, y, colY, colY) + tmp11 = iterCol_Transform3D_sp_13(m, x, y) tmp12 = 0 - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit0(tmp11, x, y, colY) - private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(m, x, y, colY) = + iterRow_Transform3D_sp_6(tmp11, x, y) + private fun iterRow_Transform3D_sp_6(m, x, y) = + let {scrut2, tmp10, tmp11, tmp12} + scrut2 = true + m + private fun iterRow_Transform3D_sp_7(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false - tmp10 = 2 - tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit2_Dyn(m, x, y, colY, colY) - tmp12 = 1 - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit1(tmp11, x, y, colY) - private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(m, x, y, colY) = + tmp10 = 0 + tmp11 = iterCol_Transform3D_sp_15(m, x, y, colY, colY) + tmp12 = 3 + iterRow_Transform3D_sp_8(tmp11, x, y, colY) + private fun iterRow_Transform3D_sp_8(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 1 - tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit1_Dyn(m, x, y, colY, colY) + tmp11 = iterCol_Transform3D_sp_16(m, x, y, colY, colY) tmp12 = 2 - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit2(tmp11, x, y, colY) - private fun iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(m, x, y, colY) = + iterRow_Transform3D_sp_9(tmp11, x, y, colY) + private fun iterRow_Transform3D_sp_9(m, x, y, colY) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false - tmp10 = 0 - tmp11 = iterCol_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit0_Dyn(m, x, y, colY, colY) - tmp12 = 3 - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit3(tmp11, x, y, colY) - private fun iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(m, x, y, rowX, colX, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = ===(i, 0) - if scrut2 is - true then m - else - tmp10 = rowX - i - tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Lit1_Dyn_Lit1(m, x, y, colX, tmp10) - tmp12 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp11, x, y, rowX, colX, tmp12) - private fun iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(m, x, y, rowX, colX, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = ===(i, 0) - if scrut2 is - true then m - else - tmp10 = rowX - i - tmp11 = iterCol_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Dyn_Lit4(m, x, y, colX, tmp10) - tmp12 = i - 1 - iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(tmp11, x, y, rowX, colX, tmp12) - private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(sum, x, y) = + tmp10 = 2 + tmp11 = iterCol_Transform3D_sp_17(m, x, y, colY, colY) + tmp12 = 1 + iterRow_Transform3D_sp_10(tmp11, x, y, colY) + private fun iter_Transform3D_sp_0(x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = false - sum - private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(sum, x, y) = + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp3 = 0 + tmp2 + tmp4 = k - 1 + iter(tmp3, x, y, colX, i, j, tmp4) + else 0 + private fun iter_Transform3D_sp_1(x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_224, tup_225, tup_226, tup_227, tup_228} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) + tmp3 = 0 + tmp2 + tmp4 = k - 1 + iter_Transform3D_sp_2(tmp3, x, y, colX, i, tmp4) + else 0 + private fun iter_Transform3D_sp_10(sum, x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = 0 - tmp3 = sum + 0 - tmp4 = 0 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit0(tmp3, x, y) - private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(sum, x, y) = + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Transform3D_sp_10(tmp3, x, y, colX, i, tmp4) + else sum + private fun iter_Transform3D_sp_11(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = 0 - tmp3 = sum + 0 - tmp4 = 1 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit1(tmp3, x, y) - private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(sum, x, y) = + tmp = 0 + tmp1 = 0 + tmp2 = *(0.4, y.(0).(0)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Transform3D_sp_12(tmp3, x, y) + private fun iter_Transform3D_sp_12(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -643,21 +666,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 2 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit2(tmp3, x, y) - private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(sum, x, y) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = false - sum - private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(sum, x, y) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = 0 - tmp3 = sum + 0 - tmp4 = 0 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit0(tmp3, x, y) - private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(sum, x, y) = + iter_Transform3D_sp_13(tmp3, x, y) + private fun iter_Transform3D_sp_13(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -665,12 +675,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit1(tmp3, x, y) - private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(sum, x, y) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = false - sum - private fun iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(sum, x, y) = + iter_Transform3D_sp_14(tmp3, x, y) + private fun iter_Transform3D_sp_14(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -678,52 +684,30 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit0(tmp3, x, y) - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(sum, x, y, j) = + iter_Transform3D_sp_15(tmp3, x, y) + private fun iter_Transform3D_sp_15(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(sum, x, y, j) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = *(11, y.(3).(j)) - tmp3 = sum + tmp2 - tmp4 = 0 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit0(tmp3, x, y, j) - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(sum, x, y, j) = + private fun iter_Transform3D_sp_16(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true - tmp = 2 - tmp1 = 2 + tmp = 0 + tmp1 = 0 tmp2 = 0 - tmp3 = sum + 0 - tmp4 = 1 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit1(tmp3, x, y, j) - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(sum, x, y, j) = + tmp3 = 0 + tmp4 = 3 + iter_Transform3D_sp_17(x, y) + private fun iter_Transform3D_sp_17(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 tmp1 = 1 - tmp2 = 0 - tmp3 = sum + 0 + tmp2 = *(0.19, y.(1).(0)) + tmp3 = 0 + tmp2 tmp4 = 2 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit2(tmp3, x, y, j) - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(sum, x, y, j) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = false - sum - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(sum, x, y, j) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = *(4, y.(3).(j)) - tmp3 = sum + tmp2 - tmp4 = 0 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit0(tmp3, x, y, j) - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(sum, x, y, j) = + iter_Transform3D_sp_18(tmp3, x, y) + private fun iter_Transform3D_sp_18(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -731,37 +715,17 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit1(tmp3, x, y, j) - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(sum, x, y, j) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = false - sum - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(sum, x, y, j) = + iter_Transform3D_sp_19(tmp3, x, y) + private fun iter_Transform3D_sp_19(sum, x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 tmp1 = 3 - tmp2 = *(51, y.(3).(j)) - tmp3 = sum + tmp2 + tmp2 = 0 + tmp3 = sum + 0 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit0(tmp3, x, y, j) - private fun iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(sum, x, y, j) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = false - sum - private fun iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) - else sum - private fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(sum, x, y, colX, i, k) = + iter_Transform3D_sp_20(tmp3, x, y) + private fun iter_Transform3D_sp_2(sum, x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_229, tup_230, tup_231, tup_232, tup_233} scrut = >(k, 0) if scrut is @@ -771,112 +735,119 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) - else sum - private fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(sum, x, y, colX, i, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_239, tup_240, tup_241, tup_242, tup_243} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, tmp4) - else sum - private fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(sum, x, y, colX, i, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_249, tup_250, tup_251, tup_252, tup_253} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, tmp4) - else sum - private fun iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(sum, x, y, colX, i, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_259, tup_260, tup_261, tup_262, tup_263} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(3)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_2(tmp3, x, y, colX, i, tmp4) else sum - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit4(x, y) = + private fun iter_Transform3D_sp_20(sum, x, y) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + private fun iter_Transform3D_sp_21(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 tmp1 = 0 - tmp2 = *(0.4, y.(0).(0)) - tmp3 = 0 + tmp2 + tmp2 = 0 + tmp3 = 0 tmp4 = 3 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit0_Lit0_Lit3(tmp3, x, y) - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(x, y) = + iter_Transform3D_sp_22(x, y) + private fun iter_Transform3D_sp_22(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 tmp1 = 1 - tmp2 = *(0.19, y.(1).(0)) - tmp3 = 0 + tmp2 - tmp4 = 2 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit2(tmp3, x, y) - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit4(x, y) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 0 - tmp1 = 0 tmp2 = 0 tmp3 = 0 - tmp4 = 3 - iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit1_Lit0_Lit3(x, y) - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(x, y) = + tmp4 = 2 + iter_Transform3D_sp_23(x, y) + private fun iter_Transform3D_sp_23(x, y) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 tmp1 = 2 tmp2 = *(0.19, y.(2).(0)) tmp3 = 0 + tmp2 - tmp4 = 1 - iter_Dyn_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit1(tmp3, x, y) - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(x, y) = + tmp4 = 1 + iter_Transform3D_sp_24(tmp3, x, y) + private fun iter_Transform3D_sp_24(sum, x, y) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = 0 + tmp3 = sum + 0 + tmp4 = 0 + iter_Transform3D_sp_25(tmp3, x, y) + private fun iter_Transform3D_sp_25(sum, x, y) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + private fun iter_Transform3D_sp_26(x, y) = 1 + private fun iter_Transform3D_sp_27(x, y) = 1 + private fun iter_Transform3D_sp_28(x, y) = 1 + private fun iter_Transform3D_sp_29(x, y) = 1 + private fun iter_Transform3D_sp_3(x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_234, tup_235, tup_236, tup_237, tup_238} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) + tmp3 = 0 + tmp2 + tmp4 = k - 1 + iter_Transform3D_sp_4(tmp3, x, y, colX, i, tmp4) + else 0 + private fun iter_Transform3D_sp_30(x, y) = 1 + private fun iter_Transform3D_sp_31(x, y, j) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 0 + tmp1 = 0 + tmp2 = *(1, y.(0).(j)) + tmp3 = 0 + tmp2 + tmp4 = 3 + iter_Transform3D_sp_32(tmp3, x, y, j) + private fun iter_Transform3D_sp_32(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 tmp1 = 1 tmp2 = 0 - tmp3 = 0 + tmp3 = sum + 0 tmp4 = 2 - iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit2(x, y) - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit4(x, y) = + iter_Transform3D_sp_33(tmp3, x, y, j) + private fun iter_Transform3D_sp_33(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true - tmp = 0 - tmp1 = 0 + tmp = 2 + tmp1 = 2 tmp2 = 0 - tmp3 = 0 - tmp4 = 3 - iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit2_Lit0_Lit3(x, y) - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit1(x, y) = 1 - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit2(x, y) = 1 - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit3(x, y) = 1 - private fun iter_Lit0_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit4(x, y) = 1 - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit4(x, y, j) = + tmp3 = sum + 0 + tmp4 = 1 + iter_Transform3D_sp_34(tmp3, x, y, j) + private fun iter_Transform3D_sp_34(sum, x, y, j) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = *(11, y.(3).(j)) + tmp3 = sum + tmp2 + tmp4 = 0 + iter_Transform3D_sp_35(tmp3, x, y, j) + private fun iter_Transform3D_sp_35(sum, x, y, j) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + private fun iter_Transform3D_sp_36(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 tmp1 = 0 - tmp2 = *(1, y.(0).(j)) - tmp3 = 0 + tmp2 + tmp2 = 0 + tmp3 = 0 tmp4 = 3 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit0_Dyn_Lit3(tmp3, x, y, j) - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(x, y, j) = + iter_Transform3D_sp_37(x, y, j) + private fun iter_Transform3D_sp_37(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -884,8 +855,42 @@ module Transform3D with tmp2 = *(1, y.(1).(j)) tmp3 = 0 + tmp2 tmp4 = 2 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit2(tmp3, x, y, j) - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit4(x, y, j) = + iter_Transform3D_sp_38(tmp3, x, y, j) + private fun iter_Transform3D_sp_38(sum, x, y, j) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 2 + tmp1 = 2 + tmp2 = 0 + tmp3 = sum + 0 + tmp4 = 1 + iter_Transform3D_sp_39(tmp3, x, y, j) + private fun iter_Transform3D_sp_39(sum, x, y, j) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = *(4, y.(3).(j)) + tmp3 = sum + tmp2 + tmp4 = 0 + iter_Transform3D_sp_40(tmp3, x, y, j) + private fun iter_Transform3D_sp_4(sum, x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_239, tup_240, tup_241, tup_242, tup_243} + scrut = >(k, 0) + if scrut is + true then + tmp = colX - k + tmp1 = colX - k + tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) + tmp3 = sum + tmp2 + tmp4 = k - 1 + iter_Transform3D_sp_4(tmp3, x, y, colX, i, tmp4) + else sum + private fun iter_Transform3D_sp_40(sum, x, y, j) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + private fun iter_Transform3D_sp_41(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -893,17 +898,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit1_Dyn_Lit3(x, y, j) - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(x, y, j) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = *(1, y.(2).(j)) - tmp3 = 0 + tmp2 - tmp4 = 1 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit1(tmp3, x, y, j) - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(x, y, j) = + iter_Transform3D_sp_42(x, y, j) + private fun iter_Transform3D_sp_42(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -911,35 +907,39 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 2 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit2(x, y, j) - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit4(x, y, j) = + iter_Transform3D_sp_43(x, y, j) + private fun iter_Transform3D_sp_43(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true - tmp = 0 - tmp1 = 0 - tmp2 = 0 - tmp3 = 0 - tmp4 = 3 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit2_Dyn_Lit3(x, y, j) - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(x, y, j) = + tmp = 2 + tmp1 = 2 + tmp2 = *(1, y.(2).(j)) + tmp3 = 0 + tmp2 + tmp4 = 1 + iter_Transform3D_sp_44(tmp3, x, y, j) + private fun iter_Transform3D_sp_44(sum, x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 tmp1 = 3 - tmp2 = *(1, y.(3).(j)) - tmp3 = 0 + tmp2 + tmp2 = *(51, y.(3).(j)) + tmp3 = sum + tmp2 tmp4 = 0 - iter_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit0(tmp3, x, y, j) - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(x, y, j) = + iter_Transform3D_sp_45(tmp3, x, y, j) + private fun iter_Transform3D_sp_45(sum, x, y, j) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + private fun iter_Transform3D_sp_46(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true - tmp = 2 - tmp1 = 2 + tmp = 0 + tmp1 = 0 tmp2 = 0 tmp3 = 0 - tmp4 = 1 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit1(x, y, j) - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(x, y, j) = + tmp4 = 3 + iter_Transform3D_sp_47(x, y, j) + private fun iter_Transform3D_sp_47(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -947,101 +947,101 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 2 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit2(x, y, j) - private fun iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit4(x, y, j) = + iter_Transform3D_sp_48(x, y, j) + private fun iter_Transform3D_sp_48(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true - tmp = 0 - tmp1 = 0 + tmp = 2 + tmp1 = 2 tmp2 = 0 tmp3 = 0 - tmp4 = 3 - iter_Lit0_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit3_Dyn_Lit3(x, y, j) - private fun iter_Lit0_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, k) = + tmp4 = 1 + iter_Transform3D_sp_49(x, y, j) + private fun iter_Transform3D_sp_49(x, y, j) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = true + tmp = 3 + tmp1 = 3 + tmp2 = *(1, y.(3).(j)) + tmp3 = 0 + tmp2 + tmp4 = 0 + iter_Transform3D_sp_50(tmp3, x, y, j) + private fun iter_Transform3D_sp_5(x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_244, tup_245, tup_246, tup_247, tup_248} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) - tmp3 = 0 + tmp2 - tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) - else 0 - private fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(x, y, colX, i, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_224, tup_225, tup_226, tup_227, tup_228} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit0_Dyn(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_6(tmp3, x, y, colX, i, tmp4) else 0 - private fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(x, y, colX, i, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_234, tup_235, tup_236, tup_237, tup_238} + private fun iter_Transform3D_sp_50(sum, x, y, j) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + scrut = false + sum + private fun iter_Transform3D_sp_6(sum, x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_249, tup_250, tup_251, tup_252, tup_253} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) - tmp3 = 0 + tmp2 + tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) + tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(tmp3, x, y, colX, i, tmp4) - else 0 - private fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(x, y, colX, i, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_244, tup_245, tup_246, tup_247, tup_248} + iter_Transform3D_sp_6(tmp3, x, y, colX, i, tmp4) + else sum + private fun iter_Transform3D_sp_7(x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_254, tup_255, tup_256, tup_257, tup_258} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(3)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit2_Dyn(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_8(tmp3, x, y, colX, i, tmp4) else 0 - private fun iter_Lit0_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(x, y, colX, i, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_254, tup_255, tup_256, tup_257, tup_258} + private fun iter_Transform3D_sp_8(sum, x, y, colX, i, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_259, tup_260, tup_261, tup_262, tup_263} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k tmp2 = *(x.(i).(tmp), y.(tmp1).(3)) - tmp3 = 0 + tmp2 + tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit3_Dyn(tmp3, x, y, colX, i, tmp4) - else 0 - private fun iter_Lit0_Dyn_Dyn_Dyn_Dyn_Dyn_Dyn(x, y, colX, i, j, k) = + iter_Transform3D_sp_8(tmp3, x, y, colX, i, tmp4) + else sum + private fun iter_Transform3D_sp_9(x, y, colX, i, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is true then tmp = colX - k tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) + tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter(tmp3, x, y, colX, i, j, tmp4) + iter_Transform3D_sp_10(tmp3, x, y, colX, i, tmp4) else 0 - private fun iter_Lit1_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit3_Lit0_Lit0(x, y) = 1 - private fun model_Dyn_Arr_Lit11_Lit4_Lit51_end_Arr_Lit0_p_4_Lit0_p_19_Lit0_p_19_end_Arr_Lit2_p_51327412_Lit3_p_1415926535_Lit0_end(local, position, scaling, rotation) = + private fun model_Transform3D_sp_0(local, position, scaling, rotation) = let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_282, tup_283, tup_284, tup_285, tup_286, tup_342, tup_343, tup_344, tup_345, tup_346, tup_402, tup_403, tup_404, tup_405, tup_406} - tmp43 = rotateZ_Lit0() - tmp44 = rotateY_Lit3_p_1415926535() - tmp45 = rotateX_Lit2_p_51327412() + tmp43 = rotateZ_Transform3D_sp_0() + tmp44 = rotateY_Transform3D_sp_0() + tmp45 = rotateX_Transform3D_sp_0() tup_282 = [1, 0, 0, 0] tup_283 = [0, 1, 0, 0] tup_284 = [0, 0, 1, 0] tup_285 = [0, 0, 0, 1] tup_286 = [tup_282, tup_283, tup_284, tup_285] tmp46 = tup_286 - tmp47 = multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(tmp45, tmp46) + tmp47 = multiply_Transform3D_sp_0(tmp45, tmp46) tmp48 = multiply(tmp44, tmp47) rot = multiply(tmp43, tmp48) tup_342 = [1, 0, 0, 11] @@ -1061,11 +1061,27 @@ module Transform3D with tmp53 = [local.2] tmp54 = [1] tmp55 = [tmp51, tmp52, tmp53, tmp54] - tmp56 = multiply_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(tmp50, tmp55) + tmp56 = multiply_Transform3D_sp_2(tmp50, tmp55) tmp57 = multiply(rot, tmp56) - res1 = multiply_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn(tmp49, tmp57) + res1 = multiply_Transform3D_sp_3(tmp49, tmp57) [res1.0, res1.1, res1.2] - private fun multiply_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = + private fun multiply_Transform3D_sp_0(x, y) = + let {rowX1, colX3, rowY, colY2, res} + rowX1 = x.length + colX3 = x.0.length + rowY = 4 + colY2 = 4 + res = zeros_Transform3D_sp_1(rowX1) + iterRow_Transform3D_sp_0(res, x, y, rowX1, colX3, rowX1) + private fun multiply_Transform3D_sp_1(x, y) = + let {rowX1, colX3, rowY, colY2, res} + rowX1 = x.length + colX3 = x.0.length + rowY = 4 + colY2 = 1 + res = zeros_Transform3D_sp_2(rowX1) + iterRow_Transform3D_sp_1(res, x, y, rowX1, colX3, rowX1) + private fun multiply_Transform3D_sp_2(x, y) = let {rowX1, colX3, rowY, colY2, res, tup_496, tup_497, tup_498, tup_499, tup_500} rowX1 = 4 colX3 = 4 @@ -1077,32 +1093,16 @@ module Transform3D with tup_499 = [0] tup_500 = [tup_496, tup_497, tup_498, tup_499] res = tup_500 - iterRow_Arr_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_Arr_Lit0_end_end_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit0_p_19_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Lit4_Lit4_Lit1_Lit4(res, x, y) - private fun multiply_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn(x, y) = + iterRow_Transform3D_sp_2(res, x, y) + private fun multiply_Transform3D_sp_3(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = 4 colX3 = 4 rowY = y.length colY2 = y.0.length - res = zeros_Lit4_Dyn(colY2) - iterRow_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit51_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Lit4_Lit4_Dyn_Lit4(res, x, y, colY2) - private fun multiply_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end(x, y) = - let {rowX1, colX3, rowY, colY2, res} - rowX1 = x.length - colX3 = x.0.length - rowY = 4 - colY2 = 1 - res = zeros_Dyn_Lit1(rowX1) - iterRow_Dyn_Dyn_Arr_Arr_Dyn_end_Arr_Dyn_end_Arr_Dyn_end_Arr_Lit1_end_end_Dyn_Dyn_Lit1_Dyn(res, x, y, rowX1, colX3, rowX1) - private fun multiply_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end(x, y) = - let {rowX1, colX3, rowY, colY2, res} - rowX1 = x.length - colX3 = x.0.length - rowY = 4 - colY2 = 4 - res = zeros_Dyn_Lit4(rowX1) - iterRow_Dyn_Dyn_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Dyn_Dyn_Lit4_Dyn(res, x, y, rowX1, colX3, rowX1) - private fun rotateX_Lit2_p_51327412() = + res = zeros_Transform3D_sp_4(colY2) + iterRow_Transform3D_sp_7(res, x, y, colY2) + private fun rotateX_Transform3D_sp_0() = let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_277, tup_278, tup_279, tup_280, tup_281} s = globalThis.Math.sin(2.51327412) c2 = globalThis.Math.cos(2.51327412) @@ -1112,12 +1112,12 @@ module Transform3D with tup_280 = [0, 0, 0, 1] tup_281 = [tup_277, tup_278, tup_279, tup_280] tmp28 = tup_281 - tmp29 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(tmp28, c2) + tmp29 = update_Transform3D_sp_6(tmp28, c2) tmp30 = -(s) - tmp31 = update_Dyn_Lit1_Lit2_Dyn(tmp29, tmp30) - tmp32 = update_Dyn_Lit2_Lit1_Dyn(tmp31, s) - update_Dyn_Lit2_Lit2_Dyn(tmp32, c2) - private fun rotateY_Lit3_p_1415926535() = + tmp31 = update_Transform3D_sp_7(tmp29, tmp30) + tmp32 = update_Transform3D_sp_8(tmp31, s) + update_Transform3D_sp_5(tmp32, c2) + private fun rotateY_Transform3D_sp_0() = let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_272, tup_273, tup_274, tup_275, tup_276} s1 = globalThis.Math.sin(3.1415926535) c3 = globalThis.Math.cos(3.1415926535) @@ -1127,12 +1127,12 @@ module Transform3D with tup_275 = [0, 0, 0, 1] tup_276 = [tup_272, tup_273, tup_274, tup_275] tmp33 = tup_276 - tmp34 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp33, c3) - tmp35 = update_Dyn_Lit0_Lit2_Dyn(tmp34, s1) + tmp34 = update_Transform3D_sp_3(tmp33, c3) + tmp35 = update_Transform3D_sp_9(tmp34, s1) tmp36 = -(s1) - tmp37 = update_Dyn_Lit2_Lit0_Dyn(tmp35, tmp36) - update_Dyn_Lit2_Lit2_Dyn(tmp37, c3) - private fun rotateZ_Lit0() = + tmp37 = update_Transform3D_sp_10(tmp35, tmp36) + update_Transform3D_sp_5(tmp37, c3) + private fun rotateZ_Transform3D_sp_0() = let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_267, tup_268, tup_269, tup_270, tup_271} s2 = globalThis.Math.sin(0) c4 = globalThis.Math.cos(0) @@ -1142,12 +1142,12 @@ module Transform3D with tup_270 = [0, 0, 0, 1] tup_271 = [tup_267, tup_268, tup_269, tup_270] tmp38 = tup_271 - tmp39 = update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(tmp38, c4) + tmp39 = update_Transform3D_sp_3(tmp38, c4) tmp40 = -(s2) - tmp41 = update_Dyn_Lit0_Lit1_Dyn(tmp39, tmp40) - tmp42 = update_Dyn_Lit1_Lit0_Dyn(tmp41, s2) - update_Dyn_Lit1_Lit1_Dyn(tmp42, c4) - private fun scale_Lit0_p_4_Lit0_p_19_Lit0_p_19() = + tmp41 = update_Transform3D_sp_11(tmp39, tmp40) + tmp42 = update_Transform3D_sp_12(tmp41, s2) + update_Transform3D_sp_4(tmp42, c4) + private fun scale_Transform3D_sp_0() = let {tup_397, tup_398, tup_399, tup_400, tup_401} tup_397 = [0.4, 0, 0, 0] tup_398 = [0, 0.19, 0, 0] @@ -1155,7 +1155,7 @@ module Transform3D with tup_400 = [0, 0, 0, 1] tup_401 = [tup_397, tup_398, tup_399, tup_400] tup_401 - private fun transform_Lit11_Lit4_Lit51() = + private fun transform_Transform3D_sp_0() = let {tup_337, tup_338, tup_339, tup_340, tup_341} tup_337 = [1, 0, 0, 11] tup_338 = [0, 1, 0, 4] @@ -1163,39 +1163,7 @@ module Transform3D with tup_340 = [0, 0, 0, 1] tup_341 = [tup_337, tup_338, tup_339, tup_340] tup_341 - private fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit0_p_19_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit2_Lit0_p_19(m) = - let {tup_387, tup_388, tup_389, tup_390, tup_391} - tup_387 = [0.4, 0, 0, 0] - tup_388 = [0, 0.19, 0, 0] - tup_389 = [0, 0, 0.19, 0] - tup_390 = [0, 0, 0, 1] - tup_391 = [tup_387, tup_388, tup_389, tup_390] - tup_391 - private fun update_Arr_Arr_Lit0_p_4_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Lit0_p_19(m) = - let {tup_372, tup_373, tup_374, tup_375, tup_376} - tup_372 = [0.4, 0, 0, 0] - tup_373 = [0, 0.19, 0, 0] - tup_374 = [0, 0, 1, 0] - tup_375 = [0, 0, 0, 1] - tup_376 = [tup_372, tup_373, tup_374, tup_375] - tup_376 - private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Dyn(m, v) = - let {tup_191, tup_192, tup_193, tup_194, tup_195} - tup_191 = [1, 0, 0, 0] - tup_192 = [0, 1, 0, 0] - tup_193 = [0, 0, 1, 0] - tup_194 = [0, 0, 0, 1] - tup_195 = [tup_191, tup_192, tup_193, tup_194] - Transform3D."Mx$Transform3D".set2D(tup_195, 0, 0, v) - private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit0_Lit0_p_4(m) = - let {tup_357, tup_358, tup_359, tup_360, tup_361} - tup_357 = [0.4, 0, 0, 0] - tup_358 = [0, 1, 0, 0] - tup_359 = [0, 0, 1, 0] - tup_360 = [0, 0, 0, 1] - tup_361 = [tup_357, tup_358, tup_359, tup_360] - tup_361 - private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Dyn(m, v) = + private fun update_Transform3D_sp_0(m, v) = let {tup_181, tup_182, tup_183, tup_184, tup_185} tup_181 = [1, 0, 0, 0] tup_182 = [0, 1, 0, 0] @@ -1203,7 +1171,11 @@ module Transform3D with tup_184 = [0, 0, 0, 1] tup_185 = [tup_181, tup_182, tup_183, tup_184] Transform3D."Mx$Transform3D".set2D(tup_185, 0, 3, v) - private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit0_Lit3_Lit11(m) = + private fun update_Transform3D_sp_1(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 3, v) + private fun update_Transform3D_sp_10(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 0, v) + private fun update_Transform3D_sp_11(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 1, v) + private fun update_Transform3D_sp_12(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 0, v) + private fun update_Transform3D_sp_13(m) = let {tup_297, tup_298, tup_299, tup_300, tup_301} tup_297 = [1, 0, 0, 11] tup_298 = [0, 1, 0, 0] @@ -1211,15 +1183,7 @@ module Transform3D with tup_300 = [0, 0, 0, 1] tup_301 = [tup_297, tup_298, tup_299, tup_300] tup_301 - private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit0_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit1_Dyn(m, v) = - let {tup_201, tup_202, tup_203, tup_204, tup_205} - tup_201 = [1, 0, 0, 0] - tup_202 = [0, 1, 0, 0] - tup_203 = [0, 0, 1, 0] - tup_204 = [0, 0, 0, 1] - tup_205 = [tup_201, tup_202, tup_203, tup_204] - Transform3D."Mx$Transform3D".set2D(tup_205, 1, 1, v) - private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit0_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit1_Lit3_Lit4(m) = + private fun update_Transform3D_sp_14(m) = let {tup_312, tup_313, tup_314, tup_315, tup_316} tup_312 = [1, 0, 0, 11] tup_313 = [0, 1, 0, 4] @@ -1227,7 +1191,7 @@ module Transform3D with tup_315 = [0, 0, 0, 1] tup_316 = [tup_312, tup_313, tup_314, tup_315] tup_316 - private fun update_Arr_Arr_Lit1_Lit0_Lit0_Lit11_end_Arr_Lit0_Lit1_Lit0_Lit4_end_Arr_Lit0_Lit0_Lit1_Lit0_end_Arr_Lit0_Lit0_Lit0_Lit1_end_end_Lit2_Lit3_Lit51(m) = + private fun update_Transform3D_sp_15(m) = let {tup_327, tup_328, tup_329, tup_330, tup_331} tup_327 = [1, 0, 0, 11] tup_328 = [0, 1, 0, 4] @@ -1235,39 +1199,73 @@ module Transform3D with tup_330 = [0, 0, 0, 1] tup_331 = [tup_327, tup_328, tup_329, tup_330] tup_331 - private fun update_Dyn_Lit0_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 1, v) - private fun update_Dyn_Lit0_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 2, v) - private fun update_Dyn_Lit1_Lit0_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 0, v) - private fun update_Dyn_Lit1_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 1, v) - private fun update_Dyn_Lit1_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 2, v) - private fun update_Dyn_Lit1_Lit3_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 3, v) - private fun update_Dyn_Lit2_Lit0_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 0, v) - private fun update_Dyn_Lit2_Lit1_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 1, v) - private fun update_Dyn_Lit2_Lit2_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 2, v) - private fun update_Dyn_Lit2_Lit3_Dyn(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 3, v) - private fun zeros_Dyn_Lit1(r) = - let {m4, tmp21, tup_264} - tmp21 = [] - tup_264 = [] - m4 = Transform3D."Mx$Transform3D".init(r, tup_264) - iterInit_Dyn_Dyn_Lit1_Dyn(m4, r, r) - private fun zeros_Dyn_Lit4(r) = + private fun update_Transform3D_sp_16(m) = + let {tup_357, tup_358, tup_359, tup_360, tup_361} + tup_357 = [0.4, 0, 0, 0] + tup_358 = [0, 1, 0, 0] + tup_359 = [0, 0, 1, 0] + tup_360 = [0, 0, 0, 1] + tup_361 = [tup_357, tup_358, tup_359, tup_360] + tup_361 + private fun update_Transform3D_sp_17(m) = + let {tup_372, tup_373, tup_374, tup_375, tup_376} + tup_372 = [0.4, 0, 0, 0] + tup_373 = [0, 0.19, 0, 0] + tup_374 = [0, 0, 1, 0] + tup_375 = [0, 0, 0, 1] + tup_376 = [tup_372, tup_373, tup_374, tup_375] + tup_376 + private fun update_Transform3D_sp_18(m) = + let {tup_387, tup_388, tup_389, tup_390, tup_391} + tup_387 = [0.4, 0, 0, 0] + tup_388 = [0, 0.19, 0, 0] + tup_389 = [0, 0, 0.19, 0] + tup_390 = [0, 0, 0, 1] + tup_391 = [tup_387, tup_388, tup_389, tup_390] + tup_391 + private fun update_Transform3D_sp_2(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 3, v) + private fun update_Transform3D_sp_3(m, v) = + let {tup_191, tup_192, tup_193, tup_194, tup_195} + tup_191 = [1, 0, 0, 0] + tup_192 = [0, 1, 0, 0] + tup_193 = [0, 0, 1, 0] + tup_194 = [0, 0, 0, 1] + tup_195 = [tup_191, tup_192, tup_193, tup_194] + Transform3D."Mx$Transform3D".set2D(tup_195, 0, 0, v) + private fun update_Transform3D_sp_4(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 1, v) + private fun update_Transform3D_sp_5(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 2, v) + private fun update_Transform3D_sp_6(m, v) = + let {tup_201, tup_202, tup_203, tup_204, tup_205} + tup_201 = [1, 0, 0, 0] + tup_202 = [0, 1, 0, 0] + tup_203 = [0, 0, 1, 0] + tup_204 = [0, 0, 0, 1] + tup_205 = [tup_201, tup_202, tup_203, tup_204] + Transform3D."Mx$Transform3D".set2D(tup_205, 1, 1, v) + private fun update_Transform3D_sp_7(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 2, v) + private fun update_Transform3D_sp_8(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 1, v) + private fun update_Transform3D_sp_9(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 2, v) + private fun zeros_Transform3D_sp_0() = + let {tup_86, tup_87, tup_88, tup_89, tup_90} + tup_86 = [0, 0, 0, 0] + tup_87 = [0, 0, 0, 0] + tup_88 = [0, 0, 0, 0] + tup_89 = [0, 0, 0, 0] + tup_90 = [tup_86, tup_87, tup_88, tup_89] + tup_90 + private fun zeros_Transform3D_sp_1(r) = let {m4, tmp21, tup_221} tmp21 = [] tup_221 = [] m4 = Transform3D."Mx$Transform3D".init(r, tup_221) - iterInit_Dyn_Dyn_Lit4_Dyn(m4, r, r) - private fun zeros_Lit4_Dyn(c) = - let {m4, tmp21, tup_506, tup_507, tup_508, tup_509, tup_510} + iterInit_Transform3D_sp_5(m4, r, r) + private fun zeros_Transform3D_sp_2(r) = + let {m4, tmp21, tup_264} tmp21 = [] - tup_506 = [] - tup_507 = [] - tup_508 = [] - tup_509 = [] - tup_510 = [tup_506, tup_507, tup_508, tup_509] - m4 = tup_510 - iterInit_Arr_Arr__end_Arr__end_Arr__end_Arr__end_end_Lit4_Dyn_Lit4(m4, c) - private fun zeros_Lit4_Lit1() = + tup_264 = [] + m4 = Transform3D."Mx$Transform3D".init(r, tup_264) + iterInit_Transform3D_sp_6(m4, r, r) + private fun zeros_Transform3D_sp_3() = let {tup_491, tup_492, tup_493, tup_494, tup_495} tup_491 = [0] tup_492 = [0] @@ -1275,11 +1273,13 @@ module Transform3D with tup_494 = [0] tup_495 = [tup_491, tup_492, tup_493, tup_494] tup_495 - private fun zeros_Lit4_Lit4() = - let {tup_86, tup_87, tup_88, tup_89, tup_90} - tup_86 = [0, 0, 0, 0] - tup_87 = [0, 0, 0, 0] - tup_88 = [0, 0, 0, 0] - tup_89 = [0, 0, 0, 0] - tup_90 = [tup_86, tup_87, tup_88, tup_89] - tup_90 \ No newline at end of file + private fun zeros_Transform3D_sp_4(c) = + let {m4, tmp21, tup_506, tup_507, tup_508, tup_509, tup_510} + tmp21 = [] + tup_506 = [] + tup_507 = [] + tup_508 = [] + tup_509 = [] + tup_510 = [tup_506, tup_507, tup_508, tup_509] + m4 = tup_510 + iterInit_Transform3D_sp_12(m4, c) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls b/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls new file mode 100644 index 0000000000..ed35853cba --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls @@ -0,0 +1,25 @@ +:js +:staging +:noModuleCheck + + +import "../../mlscript-compile/ShapeSet.mls" + +open ShapeSet + + +staged module Foo with + fun foo(x) = x + 1 + fun foo_Foo_sp_0(x) = x - 1 + fun foo_Foo_sp_1(x) = x - 2 + + +Foo."foo_gen"(mkLit(0)) +//│ = ["foo_Foo_sp_2", {Lit(1)}, [true]] + + +print(Foo."cache$Foo") +//│ > module Foo with +//│ > () +//│ > private fun foo_Foo_sp_2() = 1 + diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index a4029d0ebd..410884a978 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -24,12 +24,14 @@ staged module LiftedNested with //│ define LiftedNested⁰ as staged class LiftedNested¹ //│ staged module LiftedNested² { //│ constructor { -//│ let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5; +//│ let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5, tmp6, tmp7; //│ set sym = Block⁰.ModuleSymbol﹖("LiftedNested", LiftedNested², false); //│ set tmp3 = runtime⁰.SymbolMap﹖.checkModuleMap﹖(LiftedNested², sym); //│ set tmp4 = new globalThis⁰.this.Map﹖(); -//│ set tmp5 = new SpecializeHelpers⁰.FunCache﹖(tmp3, tmp4); -//│ define cache$LiftedNested⁰ as val cache$LiftedNested¹ = tmp5; +//│ set tmp5 = ["f"]; +//│ set tmp6 = new globalThis⁰.this.Set﹖(tmp5); +//│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp3, tmp4, tmp6); +//│ define cache$LiftedNested⁰ as val cache$LiftedNested¹ = tmp7; //│ set tmp = ["f", LiftedNested².this.f_gen﹖]; //│ set tmp1 = [tmp]; //│ set tmp2 = new globalThis⁰.this.Map﹖(tmp1); @@ -103,12 +105,14 @@ staged module LiftedLambda with //│ define LiftedLambda⁰ as staged class LiftedLambda¹ //│ staged module LiftedLambda² { //│ constructor { -//│ let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5; +//│ let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5, tmp6, tmp7; //│ set sym = Block⁰.ModuleSymbol﹖("LiftedLambda", LiftedLambda², false); //│ set tmp3 = runtime⁰.SymbolMap﹖.checkModuleMap﹖(LiftedLambda², sym); //│ set tmp4 = new globalThis⁰.this.Map﹖(); -//│ set tmp5 = new SpecializeHelpers⁰.FunCache﹖(tmp3, tmp4); -//│ define cache$LiftedLambda⁰ as val cache$LiftedLambda¹ = tmp5; +//│ set tmp5 = ["foo"]; +//│ set tmp6 = new globalThis⁰.this.Set﹖(tmp5); +//│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp3, tmp4, tmp6); +//│ define cache$LiftedLambda⁰ as val cache$LiftedLambda¹ = tmp7; //│ set tmp = ["foo", LiftedLambda².this.foo_gen﹖]; //│ set tmp1 = [tmp]; //│ set tmp2 = new globalThis⁰.this.Map﹖(tmp1); @@ -201,12 +205,14 @@ staged module LiftedMultParams with //│ define LiftedMultParams⁰ as staged class LiftedMultParams¹ //│ staged module LiftedMultParams² { //│ constructor { -//│ let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5; +//│ let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5, tmp6, tmp7; //│ set sym = Block⁰.ModuleSymbol﹖("LiftedMultParams", LiftedMultParams², false); //│ set tmp3 = runtime⁰.SymbolMap﹖.checkModuleMap﹖(LiftedMultParams², sym); //│ set tmp4 = new globalThis⁰.this.Map﹖(); -//│ set tmp5 = new SpecializeHelpers⁰.FunCache﹖(tmp3, tmp4); -//│ define cache$LiftedMultParams⁰ as val cache$LiftedMultParams¹ = tmp5; +//│ set tmp5 = ["foo"]; +//│ set tmp6 = new globalThis⁰.this.Set﹖(tmp5); +//│ set tmp7 = new SpecializeHelpers⁰.FunCache﹖(tmp3, tmp4, tmp6); +//│ define cache$LiftedMultParams⁰ as val cache$LiftedMultParams¹ = tmp7; //│ set tmp = ["foo", LiftedMultParams².this.foo_gen﹖]; //│ set tmp1 = [tmp]; //│ set tmp2 = new globalThis⁰.this.Map﹖(tmp1); diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 7b95b20394..ec6145affd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -53,20 +53,20 @@ print(Simple."cache$Simple") //│ > fun test() = 20 //│ > fun test2(n) = //│ > let {dyn, tmp10} -//│ > dyn = pyth_Dyn_Lit2(n) +//│ > dyn = pyth_Simple_sp_1(n) //│ > tmp10 = *(dyn, 2) //│ > fib(tmp10) -//│ > private fun f_Lit2_Lit2() = 4 -//│ > private fun fib_Lit1() = 1 -//│ > private fun fib_Lit2() = 1 -//│ > private fun fib_Lit3() = 2 -//│ > private fun fib_Lit4() = 3 -//│ > private fun pyth_Dyn_Lit2(x) = +//│ > private fun f_Simple_sp_0() = 4 +//│ > private fun fib_Simple_sp_0() = 3 +//│ > private fun fib_Simple_sp_1() = 2 +//│ > private fun fib_Simple_sp_2() = 1 +//│ > private fun fib_Simple_sp_3() = 1 +//│ > private fun pyth_Simple_sp_0() = 20 +//│ > private fun pyth_Simple_sp_1(x) = //│ > let {tmp6, tmp7} //│ > tmp6 = Simple."NonStaged$Simple".sq(x) //│ > tmp7 = 4 //│ > tmp6 + 4 -//│ > private fun pyth_Lit2_Lit4() = 20 class C(val x) @@ -91,16 +91,16 @@ If."test_gen"() //│ = ["test", {Lit("C(2) C else ")}, []] If."test2_gen"(mkLit(1), mkDyn()) -//│ = ["test2_Lit1_Dyn", {Lit(1),Lit(4)}, [true, false]] +//│ = ["test2_If_sp_0", {Lit(1),Lit(4)}, [true, false]] print(If."cache$If") //│ > module If with //│ > () //│ > fun test() = "C(2) C else " -//│ > private fun f_C_Lit2(x) = "C(2) " -//│ > private fun f_C_Lit3(x) = "C " -//│ > private fun f_Lit2() = "else " -//│ > private fun test2_Lit1_Dyn(y) = +//│ > private fun f_If_sp_0(x) = "C(2) " +//│ > private fun f_If_sp_1(x) = "C " +//│ > private fun f_If_sp_2() = "else " +//│ > private fun test2_If_sp_0(y) = //│ > let {tmp6} //│ > if y is //│ > 1 then 1 @@ -131,15 +131,15 @@ print(If2."cache$If2") //│ > fun test2(dyn) = //│ > let {tmp2} //│ > tmp2 = If2."C$If2"(dyn) -//│ > f_C_Dyn(tmp2) +//│ > f_If2_sp_1(tmp2) //│ > fun test3() = 1 -//│ > private fun f_C_Dyn(x) = +//│ > private fun f_If2_sp_0(x) = 3 +//│ > private fun f_If2_sp_1(x) = //│ > let {y, tmp} //│ > y = x.n //│ > tmp = () //│ > y + 1 -//│ > private fun f_C_Lit2(x) = 3 -//│ > private fun f_Lit0() = 1 +//│ > private fun f_If2_sp_2() = 1 staged module LinearAlgebra with fun _dot(v1, v2, n, acc) = @@ -157,33 +157,33 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ > let {tmp3, tmp4} //│ > tmp3 = [x, 1, 2] //│ > tmp4 = [3, 4, 1] -//│ > dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(tmp3, tmp4) -//│ > private fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2) = +//│ > dot_LinearAlgebra_sp_0(tmp3, tmp4) +//│ > private fun _dot_LinearAlgebra_sp_0(v1, v2) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 1 //│ > tmp1 = *(v1.(0), 3) //│ > tmp2 = tmp1 + 0 -//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, tmp2) -//│ > private fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit1_Dyn(v1, v2, acc) = +//│ > _dot_LinearAlgebra_sp_1(v1, v2, tmp2) +//│ > private fun _dot_LinearAlgebra_sp_1(v1, v2, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 2 //│ > tmp1 = 4 //│ > tmp2 = 4 + acc -//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, tmp2) -//│ > private fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit2_Dyn(v1, v2, acc) = +//│ > _dot_LinearAlgebra_sp_2(v1, v2, tmp2) +//│ > private fun _dot_LinearAlgebra_sp_2(v1, v2, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 3 //│ > tmp1 = 2 //│ > tmp2 = 2 + acc -//│ > _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, tmp2) -//│ > private fun _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit3_Dyn(v1, v2, acc) = +//│ > _dot_LinearAlgebra_sp_3(v1, v2, tmp2) +//│ > private fun _dot_LinearAlgebra_sp_3(v1, v2, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = true //│ > acc -//│ > private fun dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end(v1, v2) = _dot_Arr_Dyn_Lit1_Lit2_end_Arr_Lit3_Lit4_Lit1_end_Lit0_Lit0(v1, v2) +//│ > private fun dot_LinearAlgebra_sp_0(v1, v2) = _dot_LinearAlgebra_sp_0(v1, v2) staged class L1(val y) with fun call(x) = x + 2 + y @@ -203,10 +203,10 @@ staged module Dispatching with twice(m, 5) Dispatching."test_gen"(mkLit(true)) -//│ = ["test_Littrue", {Lit(9)}, [true]] +//│ = ["test_Dispatching_sp_0", {Lit(9)}, [true]] Dispatching."test_gen"(mkLit(false)) -//│ = ["test_Litfalse", {Lit(29)}, [true]] +//│ = ["test_Dispatching_sp_1", {Lit(29)}, [true]] Dispatching."test_gen"(mkDyn()) //│ = ["test", {Lit(15),Lit(17),Lit(29),Lit(9)}, [false]] @@ -220,9 +220,17 @@ print(Dispatching."cache$Dispatching") //│ > y1 = 11 //│ > tmp2 = new! L2.class(2) //│ > tmp3 = new! L3.class(3) -//│ > m = pick_L2_Lit2_L3_Lit3_Dyn(tmp2, tmp3, b) -//│ > twice_Union_L2_Lit2_L3_Lit3_end_Lit5(m) -//│ > private fun pick_L2_Lit2_L3_Lit3_Dyn(x, y, b) = +//│ > m = pick_Dispatching_sp_2(tmp2, tmp3, b) +//│ > twice_Dispatching_sp_3(m) +//│ > private fun pick_Dispatching_sp_0(x, y) = +//│ > let {obj_2} +//│ > obj_2 = new! L2.class(2) +//│ > obj_2 +//│ > private fun pick_Dispatching_sp_1(x, y) = +//│ > let {obj_5} +//│ > obj_5 = new! L3.class(3) +//│ > obj_5 +//│ > private fun pick_Dispatching_sp_2(x, y, b) = //│ > let {obj_7, obj_8} //│ > if b is //│ > true then @@ -231,47 +239,39 @@ print(Dispatching."cache$Dispatching") //│ > else //│ > obj_8 = new! L3.class(3) //│ > obj_8 -//│ > private fun pick_L2_Lit2_L3_Lit3_Litfalse(x, y) = -//│ > let {obj_5} -//│ > obj_5 = new! L3.class(3) -//│ > obj_5 -//│ > private fun pick_L2_Lit2_L3_Lit3_Littrue(x, y) = -//│ > let {obj_2} -//│ > obj_2 = new! L2.class(2) -//│ > obj_2 -//│ > private fun test_Litfalse() = 29 -//│ > private fun test_Littrue() = 9 -//│ > private fun twice_L1_Lit1_Lit5(f) = 11 -//│ > private fun twice_L2_Lit2_Lit5(f) = 9 -//│ > private fun twice_L3_Lit3_Lit5(f) = 29 -//│ > private fun twice_Union_L2_Lit2_L3_Lit3_end_Lit5(f) = +//│ > private fun test_Dispatching_sp_0() = 9 +//│ > private fun test_Dispatching_sp_1() = 29 +//│ > private fun twice_Dispatching_sp_0(f) = 11 +//│ > private fun twice_Dispatching_sp_1(f) = 9 +//│ > private fun twice_Dispatching_sp_2(f) = 29 +//│ > private fun twice_Dispatching_sp_3(f) = //│ > let {tmp} //│ > if f is //│ > L2 then -//│ > tmp = f.call_L2_Lit2_dot_Lit5() +//│ > tmp = f.call_L2_sp_0() //│ > L3 then -//│ > tmp = f.call_L3_Lit3_dot_Lit5() +//│ > tmp = f.call_L3_sp_0() //│ > if f is -//│ > L2 then f.call_L2_Lit2_dot_Union_Lit7_Lit13_end(tmp) -//│ > L3 then f.call_L3_Lit3_dot_Union_Lit7_Lit13_end(tmp) +//│ > L2 then f.call_L2_sp_2(tmp) +//│ > L3 then f.call_L3_sp_2(tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(val y) with //│ > () -//│ > private fun call_L1_Lit1_dot_Lit5() = 8 -//│ > private fun call_L1_Lit1_dot_Lit8() = 11 +//│ > private fun call_L1_sp_0() = 8 +//│ > private fun call_L1_sp_1() = 11 //│ > class L2(val y) with //│ > () -//│ > private fun call_L2_Lit2_dot_Lit5() = 7 -//│ > private fun call_L2_Lit2_dot_Lit7() = 9 -//│ > private fun call_L2_Lit2_dot_Union_Lit7_Lit13_end(x) = x + 2 +//│ > private fun call_L2_sp_0() = 7 +//│ > private fun call_L2_sp_1() = 9 +//│ > private fun call_L2_sp_2(x) = x + 2 //│ > class L3(val y) with //│ > () -//│ > private fun call_L3_Lit3_dot_Lit13() = 29 -//│ > private fun call_L3_Lit3_dot_Lit5() = 13 -//│ > private fun call_L3_Lit3_dot_Union_Lit7_Lit13_end(x) = +//│ > private fun call_L3_sp_0() = 13 +//│ > private fun call_L3_sp_1() = 29 +//│ > private fun call_L3_sp_2(x) = //│ > let {tmp1} //│ > tmp1 = *(x, 2) //│ > tmp1 + 3 @@ -305,17 +305,17 @@ This."test2_gen"(mkLit(1)) print(This."cache$This") //│ > module This with //│ > () -//│ > private fun test2_Lit1() = 2 -//│ > private fun test_Lit1() = 3 +//│ > private fun test2_This_sp_0() = 2 +//│ > private fun test_This_sp_0() = 3 print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(val x) with //│ > () -//│ > private fun f_A_Lit1_dot_Lit1() = 2 +//│ > private fun f_A_sp_0() = 2 //│ > class B(val x) with //│ > () -//│ > private fun f_B_Lit1_dot_A_Lit1(y) = 3 +//│ > private fun f_B_sp_0(y) = 3 staged class B(val x, val y) with val z = x + y @@ -346,16 +346,16 @@ staged module GlobalFunction with fun test(x) = g(x, x) GlobalFunction."test_gen"(mkLit(1)) -//│ = ["test_Lit1", {Dyn()}, [true]] +//│ = ["test_GlobalFunction_sp_0", {Dyn()}, [true]] staged module Comparison with fun test(x) = x < 5 Comparison."test_gen"(union(mkLit(3), mkLit(4))) -//│ = ["test_Union_Lit3_Lit4_end", {Lit(true)}, [false]] +//│ = ["test_Comparison_sp_0", {Lit(true)}, [false]] Comparison."test_gen"(union(mkLit(4), mkLit(6))) -//│ = ["test_Union_Lit4_Lit6_end", {Dyn()}, [false]] +//│ = ["test_Comparison_sp_1", {Dyn()}, [false]] :fixme class C @@ -376,12 +376,12 @@ M."cache$M" //│ = module M with \ //│ () \ //│ fun f(x, y) = *(x, y) \ -//│ fun g(y) = f_Lit2_Dyn(y) \ -//│ private fun f_Lit2_Dyn(y) = *(2, y) +//│ fun g(y) = f_M_sp_0(y) \ +//│ private fun f_M_sp_0(y) = *(2, y) staged module M with fun f(x) = x.2 M."f_gen"(mkArr([mkLit(1), mkDyn(), mkLit(2)])) -//│ = ["f_Arr_Lit1_Dyn_Lit2_end", {Lit(2)}, [false]] +//│ = ["f_M_sp_0", {Lit(2)}, [false]] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 6366afd59c..5404ac7f33 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -17,7 +17,7 @@ M.f_gen(mkDyn()) M.f_gen(mkLit(2)) -//│ = ["f_Lit2", {Lit(4)}, [true]] +//│ = ["f_M_sp_0", {Lit(4)}, [true]] print(M."cache$M") @@ -27,4 +27,13 @@ print(M."cache$M") //│ > let {y} //│ > y = *(x, 2) //│ > y -//│ > private fun f_Lit2() = 4 +//│ > private fun f_M_sp_0() = 4 + + +staged module Clash with + fun f(x) = x + fun f_gen + fun f_Clash_sp_0() = 0 + +Clash.f_gen(mkLit(1)) +//│ = ["f_Clash_sp_1", {Lit(1)}, [true]] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 1e5c5bc238..a821d4672b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -24,12 +24,14 @@ staged module A //│ define A⁰ as staged class A¹ //│ staged module A² { //│ constructor { -//│ let tmp, tmp1, sym, tmp2, tmp3, tmp4; +//│ let tmp, tmp1, sym, tmp2, tmp3, tmp4, tmp5, tmp6; //│ set sym = Block⁰.ModuleSymbol﹖("A", A², false); //│ set tmp2 = runtime⁰.SymbolMap﹖.checkModuleMap﹖(A², sym); //│ set tmp3 = new globalThis⁰.this.Map﹖(); -//│ set tmp4 = new SpecializeHelpers⁰.FunCache﹖(tmp2, tmp3); -//│ define cache$A⁰ as val cache$A¹ = tmp4; +//│ set tmp4 = []; +//│ set tmp5 = new globalThis⁰.this.Set﹖(tmp4); +//│ set tmp6 = new SpecializeHelpers⁰.FunCache﹖(tmp2, tmp3, tmp5); +//│ define cache$A⁰ as val cache$A¹ = tmp6; //│ set tmp = []; //│ set tmp1 = new globalThis⁰.this.Map﹖(tmp); //│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp1; @@ -64,8 +66,8 @@ fun g(@static x) = x :e fun h(@dynamic @static x) = x //│ ╔══[COMPILATION ERROR] At most one reflection constraint can be added for each parameter. -//│ ║ l.65: fun h(@dynamic @static x) = x +//│ ║ l.67: fun h(@dynamic @static x) = x //│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Name not found: x -//│ ║ l.65: fun h(@dynamic @static x) = x +//│ ║ l.67: fun h(@dynamic @static x) = x //│ ╙── ^ From 0937d5f410abc46b1aa64c4fa29799d858850e67 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 7 May 2026 14:38:02 +0800 Subject: [PATCH 596/654] Fix ctor parameter inlining --- .../scala/hkmc2/codegen/ReflectionInstrumenter.scala | 4 ++-- .../test/mlscript-compile/staging/Inheritance.mls | 3 +++ .../mlscript-compile/staging/out/Inheritance.mls | 7 +++++++ .../src/test/mlscript/block-staging/Inheritance.mls | 12 ++++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/Inheritance.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/Inheritance.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index a8dd9f55d9..64ed698592 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -565,9 +565,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val cacheNme = "class$cache" + suffix val generatorMapNme = "class$generatorMap" + suffix - val preCtorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("preCtor$", Nil, false), Ls(PlainParamList(Nil)), preCtor)(N, Nil) + val preCtorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("preCtor$", Nil, false), ctorParams, preCtor)(N, Nil) val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("class$ctor$", Nil, false), ctorParams, ctor)(N, Nil) - val newPreCtorFun = stageMethod(preCtorFun) + val newPreCtorFun = stageCtor(preCtorFun) val newCtorFun = stageCtor(ctorFun) val (entryFun, newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme, Nil)(methods) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/Inheritance.mls b/hkmc2/shared/src/test/mlscript-compile/staging/Inheritance.mls new file mode 100644 index 0000000000..0caf4dbb8f --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/Inheritance.mls @@ -0,0 +1,3 @@ +staged module Inheritance with + staged class B(val x) + staged class D(val x) extends B(x + 1) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls new file mode 100644 index 0000000000..ce62729004 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls @@ -0,0 +1,7 @@ +#config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) +import "../Inheritance.mls" +module Inheritance with + class B(val x) with + () + class D(val x) extends B(x + 1) with + () \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Inheritance.mls b/hkmc2/shared/src/test/mlscript/block-staging/Inheritance.mls new file mode 100644 index 0000000000..8985393d31 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/Inheritance.mls @@ -0,0 +1,12 @@ +:js +:staging +:noModuleCheck + + +fun gen(M, name) = + M."generate"("../" + name + ".mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/" + name + ".mls") + +import "../../mlscript-compile/staging/Inheritance.mls" + +gen(Inheritance, "Inheritance") + From d3a6b18c321415bc558809b05e6e29627ba56eaa Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 8 May 2026 12:22:03 +0800 Subject: [PATCH 597/654] replace val2path --- .../src/test/mlscript-compile/ShapeSet.mls | 59 +++++++++---------- .../mlscript-compile/SpecializeHelpers.mls | 42 ++++++------- .../test/mlscript/block-staging/ShapeProp.mls | 4 +- .../block-staging/ShapeSetHelpers.mls | 27 +++++---- 4 files changed, 64 insertions(+), 68 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 74b3b5f8cd..4d884cf796 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -184,34 +184,31 @@ fun freshId(prefix) = set idCounter = idCounter + 1 Block.Symbol(prefix + "_" + idCounter.toString()) -fun val2path(v, allocs, valueMap) = - if typeof(v) == "number" || typeof(v) == "string" || typeof(v) == "boolean" then - [Block.End(), Block.ValueLit(v)] - else if Array.isArray(v) then - let mapped = v.map(val2path(_, allocs, valueMap)) - let blocks = mapped.map(_.0) - blocks.reverse() - let paths = mapped.map(_.1) - let tupSym = freshId("tup") - allocs.push(tupSym) - let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map(Block.Arg(_))), Block.End()) - let fullBlock = foldr((acc, b) => Block.concat(b, acc))(tupAssign, ...blocks) - [fullBlock, Block.ValueRef(tupSym)] - else if not (v is undefined) and not (v is null) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then - let meta = v.constructor.(Symbols.definitionMetadata) - assert valueMap.has(v.constructor) - let classSym = valueMap.get(v.constructor) - let clsName = classSym.nme - - let paramNames = if meta.2 is - undefined then [] - ps then ps - let mapped = paramNames.map((fld, _, _) => val2path(v.(fld), allocs, valueMap)) - let blocks = mapped.map(_.0) - let paths = mapped.map(_.1) - let objSym = freshId("obj") - allocs.push(objSym) - let objAssign = Block.Assign(objSym, Block.Instantiate(Block.ValueRef(classSym), paths.map(Block.Arg(_))), Block.End()) - let fullBlock = fold((b, acc) => Block.concat(acc, b))(objAssign, ...blocks) - [fullBlock, Block.ValueRef(objSym)] - else [Block.End(), Block.ValueLit(42)] \ No newline at end of file +private fun shape2path(s: Shape, allocs) = + // assert Shape.static(s) + if s is + Lit(l) then [Block.End(), Block.ValueLit(l)] + Arr(v) then + let mapped = v.map(shape2path(_, allocs)) + let blocks = mapped.map(_.0) + blocks.reverse() + let paths = mapped.map(_.1) + let tupSym = freshId("tup") + allocs.push(tupSym) + let tupAssign = Block.Assign(tupSym, Block.Tuple(paths.map(Block.Arg(_))), Block.End()) + let fullBlock = foldr((acc, b) => Block.concat(b, acc))(tupAssign, ...blocks) + [fullBlock, Block.ValueRef(tupSym)] + Class(sym, fields) then + let mapped = fields.map(shape2path(_, allocs)) + let blocks = mapped.map(_.0) + blocks.reverse() + let paths = mapped.map(_.1) + let clsSym = freshId("obj") + allocs.push(clsSym) + let clsAssign = Block.Assign(clsSym, Block.Instantiate(Block.ValueRef(sym), paths.map(Block.Arg(_))), Block.End()) + let fullBlock = foldr((acc, b) => Block.concat(b, acc))(clsAssign, ...blocks) + [fullBlock, Block.ValueRef(clsSym)] + +fun shapeset2path(s: ShapeSet, allocs) = + assert staticSet(s) + shape2path(s.values().0, allocs) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 2e55c60d49..bfe9ee084d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -173,28 +173,26 @@ module FunCache with open StagingUtility // shape of value -fun sov(v, valueMap): ShapeSet = +fun sov(v): ShapeSet = if - typeof(v) is - "number" then mkLit(v) - "string" then mkLit(v) - "boolean" then mkLit(v) + typeof(v) is "number" | "string" | "boolean" then mkLit(v) Array.isArray(v) then - mkArr(v.map(sov, valueMap)) - not (v is undefined) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) then + mkArr(v.map(sov)) + not (v is undefined) and not (v.constructor is undefined) and not (v.constructor.(Symbols.definitionMetadata) is undefined) and let meta = v.constructor.(Symbols.definitionMetadata) let clsName = meta.1 // if class field is not public, then definitionMetadata in the corresponding field is null let paramsOpt = if meta.length < 3 then None else Some(meta.2.map(p => if p is null then Symbol("") else Symbol(p))) - assert valueMap.has(v.constructor) - let classSymbol = valueMap.get(v.constructor) - let argsMap = new Map() - if not (paramsOpt is None) do - meta.2.forEach((n, _, _) => argsMap.set(n, sov(v.(n), valueMap))) - mkClassFromMap(classSymbol, argsMap, None) // FIXME - else throw Error("unknown value from sov", v.toString()) + let classSymbol = Runtime.SymbolMap.classMap.get(v.constructor) + // TODO: non-staged classes not already referenced in staged code will default to dynamic here + classSymbol is Symbol then + let argsMap = new Map() + if not (paramsOpt is None) do + meta.2.forEach((n, _, _) => argsMap.set(n, sov(v.(n)))) + mkClassFromMap(classSymbol, argsMap, None) // FIXME + else mkDyn() // unknown shape of value // shape of path fun sop(ctx, p): ShapeSet = if ctx.get(p) is @@ -227,7 +225,7 @@ fun subLitPath(ctx, p) = if p is Select(qual, name) then Select(subLitPath(ctx, qual), name) ValueRef(_) and let s = sop(ctx, p) - staticSet(s) and val2path(valOfSet(s), ctx.allocs, ctx.valueNameCtx) is [End(), res] then res + staticSet(s) and shapeset2path(s, ctx.allocs) is [End(), res] then res else p @@ -314,18 +312,20 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is not (f_gen is Runtime.Unit) and // staged function let res = f_gen(...argShapes) staticSet(res.1) then - let v2p = val2path(valOfSet(res.1), ctx.allocs, ctx.valueNameCtx) + let v2p = shapeset2path(res.1, ctx.allocs) [v2p.0, v2p.1, res.1] else let filteredArgs = args.filter((_, i, _) => not res.2.(i)) [End(), Call(Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(res.0)), filteredArgs), res.1] else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") - argShapes.every(staticSet) then // non staged function and params known + argShapes.every(staticSet) and // non staged function and params known let fimp = value.(fld) let evaluated = fimp(...argShapes.map(valOfSet)) - let evaluatedPath = val2path(evaluated, ctx.allocs, ctx.valueNameCtx) - [evaluatedPath.0, evaluatedPath.1, sov(evaluated, ctx.valueNameCtx)] + let inferredShape = sov(evaluated) + staticSet(inferredShape) then // shape can be inferred from runtime value + let evaluatedPath = shapeset2path(inferredShape, ctx.allocs) + [evaluatedPath.0, evaluatedPath.1, inferredShape] else let evaledArgs = args.map(a => sor(ctx, a.value)) let fullBlk = foldl((acc, e) => concat(acc, e.0))(End(), ...evaledArgs) @@ -338,7 +338,7 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is fun sor(ctx, r) = if r is Path and let s = sop(ctx, r) - staticSet(s) and val2path(valOfSet(s), ctx.allocs, ctx.valueNameCtx) is [blk, res] then [blk, res, s] + staticSet(s) and shapeset2path(s, ctx.allocs) is [blk, res] then [blk, res, s] else [End(), subLitPath(ctx, r), s] Instantiate(cls, args) then sorInstantiate(ctx, r, cls, args) Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] @@ -609,7 +609,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let finalBody = if staticSet(actualRetShape) then let allocs = mut [] - let v2p = val2path(valOfSet(actualRetShape), allocs, ctx.valueNameCtx) + let v2p = shapeset2path(actualRetShape, allocs) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) else bodyWithScoped diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index ec6145affd..e674ba2936 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -357,14 +357,13 @@ Comparison."test_gen"(union(mkLit(3), mkLit(4))) Comparison."test_gen"(union(mkLit(4), mkLit(6))) //│ = ["test_Comparison_sp_1", {Dyn()}, [false]] -:fixme class C module Opaque with fun f() = new C staged module M with fun f() = Opaque.f() M."f_gen"() -//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/ShapeSet.mls:202) +//│ = ["f", {Dyn()}, []] staged module M with fun f(x, y) = x * y @@ -384,4 +383,3 @@ staged module M with M."f_gen"(mkArr([mkLit(1), mkDyn(), mkLit(2)])) //│ = ["f_M_sp_0", {Lit(2)}, [false]] - diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 6578e26501..f90eea60db 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -537,10 +537,10 @@ val res = prop(Ctx.empty(), nestedBlock) res.1 //│ = {Lit(2)} -val2path(1, mut [], new Map()) +shapeset2path(sov(1), mut[]) //│ = [End(), ValueLit(1)] -val2path([1, 2, 3], mut [], new Map()) +shapeset2path(sov([1, 2, 3]), mut []) //│ = [ //│ Assign( //│ Symbol("tup_1"), @@ -552,8 +552,16 @@ val2path([1, 2, 3], mut [], new Map()) class TestClass(val a, val b) val sym = ConcreteClassSymbol("TestClass", TestClass, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false) -val map = new Map([[TestClass.class, sym]]) -//│ map = Map(1) { +//│ sym = ConcreteClassSymbol( +//│ "TestClass", +//│ fun TestClass { class: class TestClass }, +//│ Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), +//│ [], +//│ false +//│ ) + +Runtime.SymbolMap.classMap.set(TestClass.class, sym) +//│ = Map(1) { //│ class TestClass => ConcreteClassSymbol( //│ "TestClass", //│ fun TestClass { class: class TestClass }, @@ -562,15 +570,8 @@ val map = new Map([[TestClass.class, sym]]) //│ false //│ ) //│ } -//│ sym = ConcreteClassSymbol( -//│ "TestClass", -//│ fun TestClass { class: class TestClass }, -//│ Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), -//│ [], -//│ false -//│ ) -val2path(TestClass(1, 2), mut [], map) +shapeset2path(sov(TestClass(1, 2)), mut []) //│ = [ //│ Assign( //│ Symbol("obj_2"), @@ -591,7 +592,7 @@ val2path(TestClass(1, 2), mut [], map) //│ ValueRef(Symbol("obj_2")) //│ ] -val2path(TestClass(1, [1,2]), mut [], map) +shapeset2path(sov(TestClass(1, [1,2])), mut []) //│ = [ //│ Assign( //│ Symbol("tup_3"), From 819ba3c8a90e667e3b28c886d1624e2abad78f7e Mon Sep 17 00:00:00 2001 From: TYeung Date: Sun, 10 May 2026 23:55:04 +0800 Subject: [PATCH 598/654] remove DPE from specializer --- .../mlscript-compile/SpecializeHelpers.mls | 26 +++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index d9756dca70..f6c12d6beb 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -76,7 +76,6 @@ module Ctx with class FunEntry( val defn: FunDefn, val retShape: ShapeSet, - val litMask: Array[Bool], val isPrivate: Bool, ) @@ -315,8 +314,7 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is let v2p = shapeset2path(res.1, ctx.allocs) [v2p.0, v2p.1, res.1] else - let filteredArgs = args.filter((_, i, _) => not res.2.(i)) - [End(), Call(Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(res.0)), filteredArgs), res.1] + [End(), Call(Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(res.0)), args), res.1] else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") argShapes.every(staticSet) and // non staged function and params known @@ -376,8 +374,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = let ret = f_gen(ss_i)(...argShapes) let retSym = ret.0 let retShape = ret.1 - let filteredArgs = args.filter((_, i, _) => not ret.2.(i)) - let callRes = Call(Select(p, Symbol(retSym)), filteredArgs) + let callRes = Call(Select(p, Symbol(retSym)), args) isRet then [Return(callRes, if implctOpt is Some(i) then i else false), retShape] else @@ -392,8 +389,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = let retData = f_gen(ss_i)(...argShapes) let retSym = retData.0 let retShape = retData.1 - let filteredArgs = args.filter((_, i, _) => not retData.2.(i)) - let callRes = Call(Select(p, Symbol(retSym)), filteredArgs) + let callRes = Call(Select(p, Symbol(retSym)), args) if isRet then [Arm(Cls(C_i, p), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] else @@ -560,7 +556,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let specializationKey = specializeKey(funName, isMethod, ps, shapes) let isPrivate = not hasAllDynamicParams(isMethod, ps, shapes) if cache.getFun(specializationKey) is - Some(x) then [x.defn.sym.name, x.retShape, x.litMask] + Some(x) then [x.defn.sym.name, x.retShape] None then let newName = specializeName(cache, funName, isMethod, ps, shapes) let paramShapes = if isMethod then shapes.slice(1) else shapes @@ -592,15 +588,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = if ctx.thisShape is Some(ts) then ts.values().forEach(collectClasses) else () ctx.ctx.values().forEach(_.values().forEach(collectClasses)) - // Compute litMask and newPs early so recursive calls use correct filtering - let litMask = ps.flatMap((p, i, _) => p.map((p2, j, _) => - not (p2.constraint is Some(Dynamic)) and isLitShape(paramShapes.(i).(j)) - )) - let newPs = ps.map((p, i, _) => p.filter((p2, j, _) => - not (not (p2.constraint is Some(Dynamic)) and isLitShape(paramShapes.(i).(j))) - )) - // Store placeholder with real litMask so recursive calls use correct filtering - cache.setFun(specializationKey, FunEntry(FunDefn(Symbol(newName), newPs, body), mkDyn(), litMask, isPrivate)) + cache.setFun(specializationKey, FunEntry(FunDefn(Symbol(newName), ps, body), mkDyn(), isPrivate)) let res = prop(ctx, body) let bodyWithScoped = wrapScoped(ctx.allocs, res.0) @@ -615,10 +603,10 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = else bodyWithScoped // Update cache with finalized body and actual return shape - let entry = cache.setFun(specializationKey, FunEntry(FunDefn(Symbol(newName), newPs, finalBody), actualRetShape, litMask, isPrivate)) + let entry = cache.setFun(specializationKey, FunEntry(FunDefn(Symbol(newName), ps, finalBody), actualRetShape, isPrivate)) - [entry.defn.sym.name, entry.retShape, entry.litMask] + [entry.defn.sym.name, entry.retShape] else throw Error("instrumented function is not a FunDefn") // this builds the shape of an instantiation of class through shape propagation of constructor From a708914c460c25836a6d16aa7fda76873e2b1364 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Mon, 11 May 2026 12:46:56 +0800 Subject: [PATCH 599/654] Rerun test --- .../staging/out/CombinedModule.mls | 24 +- .../staging/out/SimpleStagedExample.mls | 24 +- .../staging/out/Transform3D.mls | 534 +++++++++--------- .../test/mlscript/block-staging/Hygiene.mls | 4 +- .../test/mlscript/block-staging/ShapeProp.mls | 106 ++-- .../mlscript/block-staging/SpecializeTest.mls | 8 +- 6 files changed, 350 insertions(+), 350 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index e82964c23e..8ed74529b8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -20,7 +20,7 @@ module CombinedModule with tmp1 = x.bar() tmp1 + 2 else x.bar() - private fun foo_Foo_sp_0() = 2 + private fun foo_Foo_sp_0(b) = 2 fun baz() = 2 fun f(x, y) = x + y fun fib(n) = @@ -51,17 +51,17 @@ module CombinedModule with let {tup_3} tup_3 = ["\t", "\n", "\r"] tup_3 - private fun f_SimpleStagedExample_sp_0() = 5 - private fun fib_SimpleStagedExample_sp_0() = 55 - private fun fib_SimpleStagedExample_sp_1() = 34 - private fun fib_SimpleStagedExample_sp_2() = 21 - private fun fib_SimpleStagedExample_sp_3() = 13 - private fun fib_SimpleStagedExample_sp_4() = 8 - private fun fib_SimpleStagedExample_sp_5() = 5 - private fun fib_SimpleStagedExample_sp_6() = 3 - private fun fib_SimpleStagedExample_sp_7() = 2 - private fun fib_SimpleStagedExample_sp_8() = 1 - private fun fib_SimpleStagedExample_sp_9() = 1 + private fun f_SimpleStagedExample_sp_0(x, y) = 5 + private fun fib_SimpleStagedExample_sp_0(n) = 55 + private fun fib_SimpleStagedExample_sp_1(n) = 34 + private fun fib_SimpleStagedExample_sp_2(n) = 21 + private fun fib_SimpleStagedExample_sp_3(n) = 13 + private fun fib_SimpleStagedExample_sp_4(n) = 8 + private fun fib_SimpleStagedExample_sp_5(n) = 5 + private fun fib_SimpleStagedExample_sp_6(n) = 3 + private fun fib_SimpleStagedExample_sp_7(n) = 2 + private fun fib_SimpleStagedExample_sp_8(n) = 1 + private fun fib_SimpleStagedExample_sp_9(n) = 1 module LinkingGeneratedClasses with class D fun f() = diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index e2cc51ad2a..0fec110675 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -17,7 +17,7 @@ module SimpleStagedExample with tmp1 = x.bar() tmp1 + 2 else x.bar() - private fun foo_Foo_sp_0() = 2 + private fun foo_Foo_sp_0(b) = 2 fun baz() = 2 fun f(x, y) = x + y fun fib(n) = @@ -48,14 +48,14 @@ module SimpleStagedExample with let {tup_1} tup_1 = ["\t", "\n", "\r"] tup_1 - private fun f_SimpleStagedExample_sp_0() = 5 - private fun fib_SimpleStagedExample_sp_0() = 55 - private fun fib_SimpleStagedExample_sp_1() = 34 - private fun fib_SimpleStagedExample_sp_2() = 21 - private fun fib_SimpleStagedExample_sp_3() = 13 - private fun fib_SimpleStagedExample_sp_4() = 8 - private fun fib_SimpleStagedExample_sp_5() = 5 - private fun fib_SimpleStagedExample_sp_6() = 3 - private fun fib_SimpleStagedExample_sp_7() = 2 - private fun fib_SimpleStagedExample_sp_8() = 1 - private fun fib_SimpleStagedExample_sp_9() = 1 \ No newline at end of file + private fun f_SimpleStagedExample_sp_0(x, y) = 5 + private fun fib_SimpleStagedExample_sp_0(n) = 55 + private fun fib_SimpleStagedExample_sp_1(n) = 34 + private fun fib_SimpleStagedExample_sp_2(n) = 21 + private fun fib_SimpleStagedExample_sp_3(n) = 13 + private fun fib_SimpleStagedExample_sp_4(n) = 8 + private fun fib_SimpleStagedExample_sp_5(n) = 5 + private fun fib_SimpleStagedExample_sp_6(n) = 3 + private fun fib_SimpleStagedExample_sp_7(n) = 2 + private fun fib_SimpleStagedExample_sp_8(n) = 1 + private fun fib_SimpleStagedExample_sp_9(n) = 1 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index d4718cd557..28eac624db 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -26,7 +26,7 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Transform3D_sp_0(x, y, colX, i, tmp6, colX) + tmp7 = iter_Transform3D_sp_0(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) tmp9 = j - 1 iterCol(tmp8, x, y, colX, colY, i, tmp9) @@ -112,11 +112,11 @@ module Transform3D with tup_199 = [0, 0, 0, 1] tup_200 = [tup_196, tup_197, tup_198, tup_199] tmp28 = tup_200 - tmp29 = update_Transform3D_sp_6(tmp28, c2) + tmp29 = update_Transform3D_sp_6(tmp28, 1, 1, c2) tmp30 = -(s) - tmp31 = update_Transform3D_sp_7(tmp29, tmp30) - tmp32 = update_Transform3D_sp_8(tmp31, s) - update_Transform3D_sp_5(tmp32, c2) + tmp31 = update_Transform3D_sp_7(tmp29, 1, 2, tmp30) + tmp32 = update_Transform3D_sp_8(tmp31, 2, 1, s) + update_Transform3D_sp_5(tmp32, 2, 2, c2) fun rotateY(angle) = let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_206, tup_207, tup_208, tup_209, tup_210} s1 = globalThis.Math.sin(angle) @@ -127,11 +127,11 @@ module Transform3D with tup_209 = [0, 0, 0, 1] tup_210 = [tup_206, tup_207, tup_208, tup_209] tmp33 = tup_210 - tmp34 = update_Transform3D_sp_3(tmp33, c3) - tmp35 = update_Transform3D_sp_9(tmp34, s1) + tmp34 = update_Transform3D_sp_3(tmp33, 0, 0, c3) + tmp35 = update_Transform3D_sp_9(tmp34, 0, 2, s1) tmp36 = -(s1) - tmp37 = update_Transform3D_sp_10(tmp35, tmp36) - update_Transform3D_sp_5(tmp37, c3) + tmp37 = update_Transform3D_sp_10(tmp35, 2, 0, tmp36) + update_Transform3D_sp_5(tmp37, 2, 2, c3) fun rotateZ(angle) = let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_211, tup_212, tup_213, tup_214, tup_215} s2 = globalThis.Math.sin(angle) @@ -142,11 +142,11 @@ module Transform3D with tup_214 = [0, 0, 0, 1] tup_215 = [tup_211, tup_212, tup_213, tup_214] tmp38 = tup_215 - tmp39 = update_Transform3D_sp_3(tmp38, c4) + tmp39 = update_Transform3D_sp_3(tmp38, 0, 0, c4) tmp40 = -(s2) - tmp41 = update_Transform3D_sp_11(tmp39, tmp40) - tmp42 = update_Transform3D_sp_12(tmp41, s2) - update_Transform3D_sp_4(tmp42, c4) + tmp41 = update_Transform3D_sp_11(tmp39, 0, 1, tmp40) + tmp42 = update_Transform3D_sp_12(tmp41, 1, 0, s2) + update_Transform3D_sp_4(tmp42, 1, 1, c4) fun scale(sx, sy, sz) = let {tmp25, tmp26, tmp27, tup_186, tup_187, tup_188, tup_189, tup_190} tup_186 = [1, 0, 0, 0] @@ -155,9 +155,9 @@ module Transform3D with tup_189 = [0, 0, 0, 1] tup_190 = [tup_186, tup_187, tup_188, tup_189] tmp25 = tup_190 - tmp26 = update_Transform3D_sp_3(tmp25, sx) - tmp27 = update_Transform3D_sp_4(tmp26, sy) - update_Transform3D_sp_5(tmp27, sz) + tmp26 = update_Transform3D_sp_3(tmp25, 0, 0, sx) + tmp27 = update_Transform3D_sp_4(tmp26, 1, 1, sy) + update_Transform3D_sp_5(tmp27, 2, 2, sz) fun transform(dx, dy, dz) = let {tmp22, tmp23, tmp24, tup_176, tup_177, tup_178, tup_179, tup_180} tup_176 = [1, 0, 0, 0] @@ -166,9 +166,9 @@ module Transform3D with tup_179 = [0, 0, 0, 1] tup_180 = [tup_176, tup_177, tup_178, tup_179] tmp22 = tup_180 - tmp23 = update_Transform3D_sp_0(tmp22, dx) - tmp24 = update_Transform3D_sp_1(tmp23, dy) - update_Transform3D_sp_2(tmp24, dz) + tmp23 = update_Transform3D_sp_0(tmp22, 0, 3, dx) + tmp24 = update_Transform3D_sp_1(tmp23, 1, 3, dy) + update_Transform3D_sp_2(tmp24, 2, 3, dz) fun update(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) fun zeros(r, c) = let {m4, tmp21, tup_1} @@ -176,7 +176,7 @@ module Transform3D with tup_1 = [] m4 = Transform3D."Mx$Transform3D".init(r, tup_1) iterInit(m4, r, c, r) - private fun ident_Transform3D_sp_0() = + private fun ident_Transform3D_sp_0(w) = let {tup_171, tup_172, tup_173, tup_174, tup_175} tup_171 = [1, 0, 0, 0] tup_172 = [0, 1, 0, 0] @@ -184,42 +184,42 @@ module Transform3D with tup_174 = [0, 0, 0, 1] tup_175 = [tup_171, tup_172, tup_173, tup_174] tup_175 - private fun iterCol_Transform3D_sp_0(m, x, y, colX, i) = + private fun iterCol_Transform3D_sp_0(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Transform3D_sp_1(x, y, colX, i, colX) + tmp7 = iter_Transform3D_sp_1(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 3 - iterCol_Transform3D_sp_1(tmp8, x, y, colX, i) - private fun iterCol_Transform3D_sp_1(m, x, y, colX, i) = + iterCol_Transform3D_sp_1(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_1(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 1 tmp6 = 1 - tmp7 = iter_Transform3D_sp_3(x, y, colX, i, colX) + tmp7 = iter_Transform3D_sp_3(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 1, tmp7) tmp9 = 2 - iterCol_Transform3D_sp_2(tmp8, x, y, colX, i) - private fun iterCol_Transform3D_sp_10(m, x, y) = + iterCol_Transform3D_sp_2(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_10(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Transform3D_sp_11(m, x, y) = + private fun iterCol_Transform3D_sp_11(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Transform3D_sp_21(x, y) + tmp7 = iter_Transform3D_sp_21(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, 0, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_12(tmp8, x, y) - private fun iterCol_Transform3D_sp_12(m, x, y) = + iterCol_Transform3D_sp_12(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_12(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Transform3D_sp_13(m, x, y) = + private fun iterCol_Transform3D_sp_13(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 @@ -227,12 +227,12 @@ module Transform3D with tmp7 = 1 tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, 0, 1) tmp9 = 0 - iterCol_Transform3D_sp_14(tmp8, x, y) - private fun iterCol_Transform3D_sp_14(m, x, y) = + iterCol_Transform3D_sp_14(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_14(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Transform3D_sp_15(m, x, y, colY, j) = + private fun iterCol_Transform3D_sp_15(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -240,11 +240,11 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Transform3D_sp_31(x, y, tmp6) + tmp7 = iter_Transform3D_sp_31(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 0, tmp5, tmp7) tmp9 = j - 1 - iterCol_Transform3D_sp_15(tmp8, x, y, colY, tmp9) - private fun iterCol_Transform3D_sp_16(m, x, y, colY, j) = + iterCol_Transform3D_sp_15(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_16(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -252,11 +252,11 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Transform3D_sp_36(x, y, tmp6) + tmp7 = iter_Transform3D_sp_36(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, tmp5, tmp7) tmp9 = j - 1 - iterCol_Transform3D_sp_16(tmp8, x, y, colY, tmp9) - private fun iterCol_Transform3D_sp_17(m, x, y, colY, j) = + iterCol_Transform3D_sp_16(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_17(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -264,11 +264,11 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Transform3D_sp_41(x, y, tmp6) + tmp7 = iter_Transform3D_sp_41(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, tmp5, tmp7) tmp9 = j - 1 - iterCol_Transform3D_sp_17(tmp8, x, y, colY, tmp9) - private fun iterCol_Transform3D_sp_18(m, x, y, colY, j) = + iterCol_Transform3D_sp_17(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_18(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = ===(j, 0) if scrut1 is @@ -276,51 +276,51 @@ module Transform3D with else tmp5 = colY - j tmp6 = colY - j - tmp7 = iter_Transform3D_sp_46(x, y, tmp6) + tmp7 = iter_Transform3D_sp_46(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, tmp5, tmp7) tmp9 = j - 1 - iterCol_Transform3D_sp_18(tmp8, x, y, colY, tmp9) - private fun iterCol_Transform3D_sp_2(m, x, y, colX, i) = + iterCol_Transform3D_sp_18(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_2(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 2 tmp6 = 2 - tmp7 = iter_Transform3D_sp_5(x, y, colX, i, colX) + tmp7 = iter_Transform3D_sp_5(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 2, tmp7) tmp9 = 1 - iterCol_Transform3D_sp_3(tmp8, x, y, colX, i) - private fun iterCol_Transform3D_sp_3(m, x, y, colX, i) = + iterCol_Transform3D_sp_3(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_3(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 3 tmp6 = 3 - tmp7 = iter_Transform3D_sp_7(x, y, colX, i, colX) + tmp7 = iter_Transform3D_sp_7(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 3, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_4(tmp8, x, y, colX, i) - private fun iterCol_Transform3D_sp_4(m, x, y, colX, i) = + iterCol_Transform3D_sp_4(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_4(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Transform3D_sp_5(m, x, y, colX, i) = + private fun iterCol_Transform3D_sp_5(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Transform3D_sp_9(x, y, colX, i, colX) + tmp7 = iter_Transform3D_sp_9(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_6(tmp8, x, y, colX, i) - private fun iterCol_Transform3D_sp_6(m, x, y, colX, i) = + iterCol_Transform3D_sp_6(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_6(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Transform3D_sp_7(m, x, y) = + private fun iterCol_Transform3D_sp_7(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_501, tup_502, tup_503, tup_504, tup_505} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Transform3D_sp_11(x, y) + tmp7 = iter_Transform3D_sp_11(0, x, y, colX, i, tmp6, colX) tup_501 = [0] tup_502 = [0] tup_503 = [0] @@ -328,21 +328,21 @@ module Transform3D with tup_505 = [tup_501, tup_502, tup_503, tup_504] tmp8 = Transform3D."Mx$Transform3D".set2D(tup_505, 0, 0, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_8(tmp8, x, y) - private fun iterCol_Transform3D_sp_8(m, x, y) = + iterCol_Transform3D_sp_8(tmp8, x, y, colX, colY, i, tmp9) + private fun iterCol_Transform3D_sp_8(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = true m - private fun iterCol_Transform3D_sp_9(m, x, y) = + private fun iterCol_Transform3D_sp_9(m, x, y, colX, colY, i, j) = let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} scrut1 = false tmp5 = 0 tmp6 = 0 - tmp7 = iter_Transform3D_sp_16(x, y) + tmp7 = iter_Transform3D_sp_16(0, x, y, colX, i, tmp6, colX) tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, 0, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_10(tmp8, x, y) - private fun iterID_Transform3D_sp_0(m) = + iterCol_Transform3D_sp_10(tmp8, x, y, colX, colY, i, tmp9) + private fun iterID_Transform3D_sp_0(m, w, i) = let {tup_161, tup_162, tup_163, tup_164, tup_165} tup_161 = [1, 0, 0, 0] tup_162 = [0, 1, 0, 0] @@ -350,7 +350,7 @@ module Transform3D with tup_164 = [0, 0, 0, 1] tup_165 = [tup_161, tup_162, tup_163, tup_164] tup_165 - private fun iterID_Transform3D_sp_1(m) = + private fun iterID_Transform3D_sp_1(m, w, i) = let {tup_151, tup_152, tup_153, tup_154, tup_155} tup_151 = [1, 0, 0, 0] tup_152 = [0, 1, 0, 0] @@ -358,7 +358,7 @@ module Transform3D with tup_154 = [0, 0, 0, 1] tup_155 = [tup_151, tup_152, tup_153, tup_154] tup_155 - private fun iterID_Transform3D_sp_2(m) = + private fun iterID_Transform3D_sp_2(m, w, i) = let {tup_141, tup_142, tup_143, tup_144, tup_145} tup_141 = [1, 0, 0, 0] tup_142 = [0, 1, 0, 0] @@ -366,7 +366,7 @@ module Transform3D with tup_144 = [0, 0, 0, 1] tup_145 = [tup_141, tup_142, tup_143, tup_144] tup_145 - private fun iterID_Transform3D_sp_3(m) = + private fun iterID_Transform3D_sp_3(m, w, i) = let {tup_131, tup_132, tup_133, tup_134, tup_135} tup_131 = [1, 0, 0, 0] tup_132 = [0, 1, 0, 0] @@ -374,7 +374,7 @@ module Transform3D with tup_134 = [0, 0, 0, 1] tup_135 = [tup_131, tup_132, tup_133, tup_134] tup_135 - private fun iterID_Transform3D_sp_4(m) = + private fun iterID_Transform3D_sp_4(m, w, i) = let {tup_121, tup_122, tup_123, tup_124, tup_125} tup_121 = [1, 0, 0, 0] tup_122 = [0, 1, 0, 0] @@ -382,7 +382,7 @@ module Transform3D with tup_124 = [0, 0, 0, 1] tup_125 = [tup_121, tup_122, tup_123, tup_124] tup_125 - private fun iterInit_Transform3D_sp_0(m) = + private fun iterInit_Transform3D_sp_0(m, r, c, i) = let {tup_76, tup_77, tup_78, tup_79, tup_80} tup_76 = [0, 0, 0, 0] tup_77 = [0, 0, 0, 0] @@ -390,7 +390,7 @@ module Transform3D with tup_79 = [0, 0, 0, 0] tup_80 = [tup_76, tup_77, tup_78, tup_79] tup_80 - private fun iterInit_Transform3D_sp_1(m) = + private fun iterInit_Transform3D_sp_1(m, r, c, i) = let {tup_66, tup_67, tup_68, tup_69, tup_70} tup_66 = [0, 0, 0, 0] tup_67 = [0, 0, 0, 0] @@ -398,7 +398,7 @@ module Transform3D with tup_69 = [0, 0, 0, 0] tup_70 = [tup_66, tup_67, tup_68, tup_69] tup_70 - private fun iterInit_Transform3D_sp_10(m) = + private fun iterInit_Transform3D_sp_10(m, r, c, i) = let {tup_451, tup_452, tup_453, tup_454, tup_455} tup_451 = [0] tup_452 = [0] @@ -406,7 +406,7 @@ module Transform3D with tup_454 = [0] tup_455 = [tup_451, tup_452, tup_453, tup_454] tup_455 - private fun iterInit_Transform3D_sp_11(m) = + private fun iterInit_Transform3D_sp_11(m, r, c, i) = let {tup_441, tup_442, tup_443, tup_444, tup_445} tup_441 = [0] tup_442 = [0] @@ -414,7 +414,7 @@ module Transform3D with tup_444 = [0] tup_445 = [tup_441, tup_442, tup_443, tup_444] tup_445 - private fun iterInit_Transform3D_sp_12(m, c) = + private fun iterInit_Transform3D_sp_12(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_511, tup_512, tup_513, tup_514, tup_515} scrut3 = false tmp13 = 0 @@ -426,36 +426,36 @@ module Transform3D with tup_515 = [tup_511, tup_512, tup_513, tup_514] tmp15 = Transform3D."Mx$Transform3D".set1D(tup_515, 0, tmp14) tmp16 = 3 - iterInit_Transform3D_sp_13(tmp15, c) - private fun iterInit_Transform3D_sp_13(m, c) = + iterInit_Transform3D_sp_13(tmp15, r, c, tmp16) + private fun iterInit_Transform3D_sp_13(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 1 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) tmp15 = Transform3D."Mx$Transform3D".set1D(m, 1, tmp14) tmp16 = 2 - iterInit_Transform3D_sp_14(tmp15, c) - private fun iterInit_Transform3D_sp_14(m, c) = + iterInit_Transform3D_sp_14(tmp15, r, c, tmp16) + private fun iterInit_Transform3D_sp_14(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 2 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) tmp15 = Transform3D."Mx$Transform3D".set1D(m, 2, tmp14) tmp16 = 1 - iterInit_Transform3D_sp_15(tmp15, c) - private fun iterInit_Transform3D_sp_15(m, c) = + iterInit_Transform3D_sp_15(tmp15, r, c, tmp16) + private fun iterInit_Transform3D_sp_15(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 3 tmp14 = Transform3D."Mx$Transform3D".init(c, 0) tmp15 = Transform3D."Mx$Transform3D".set1D(m, 3, tmp14) tmp16 = 0 - iterInit_Transform3D_sp_16(tmp15, c) - private fun iterInit_Transform3D_sp_16(m, c) = + iterInit_Transform3D_sp_16(tmp15, r, c, tmp16) + private fun iterInit_Transform3D_sp_16(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = true m - private fun iterInit_Transform3D_sp_2(m) = + private fun iterInit_Transform3D_sp_2(m, r, c, i) = let {tup_56, tup_57, tup_58, tup_59, tup_60} tup_56 = [0, 0, 0, 0] tup_57 = [0, 0, 0, 0] @@ -463,7 +463,7 @@ module Transform3D with tup_59 = [0, 0, 0, 0] tup_60 = [tup_56, tup_57, tup_58, tup_59] tup_60 - private fun iterInit_Transform3D_sp_3(m) = + private fun iterInit_Transform3D_sp_3(m, r, c, i) = let {tup_46, tup_47, tup_48, tup_49, tup_50} tup_46 = [0, 0, 0, 0] tup_47 = [0, 0, 0, 0] @@ -471,7 +471,7 @@ module Transform3D with tup_49 = [0, 0, 0, 0] tup_50 = [tup_46, tup_47, tup_48, tup_49] tup_50 - private fun iterInit_Transform3D_sp_4(m) = + private fun iterInit_Transform3D_sp_4(m, r, c, i) = let {tup_36, tup_37, tup_38, tup_39, tup_40} tup_36 = [0, 0, 0, 0] tup_37 = [0, 0, 0, 0] @@ -479,7 +479,7 @@ module Transform3D with tup_39 = [0, 0, 0, 0] tup_40 = [tup_36, tup_37, tup_38, tup_39] tup_40 - private fun iterInit_Transform3D_sp_5(m, r, i) = + private fun iterInit_Transform3D_sp_5(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_222, tup_223} scrut3 = ===(i, 0) if scrut3 is @@ -491,8 +491,8 @@ module Transform3D with tup_223 = [0, 0, 0, 0] tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_223) tmp16 = i - 1 - iterInit_Transform3D_sp_5(tmp15, r, tmp16) - private fun iterInit_Transform3D_sp_6(m, r, i) = + iterInit_Transform3D_sp_5(tmp15, r, c, tmp16) + private fun iterInit_Transform3D_sp_6(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_265, tup_266} scrut3 = ===(i, 0) if scrut3 is @@ -504,8 +504,8 @@ module Transform3D with tup_266 = [0] tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_266) tmp16 = i - 1 - iterInit_Transform3D_sp_6(tmp15, r, tmp16) - private fun iterInit_Transform3D_sp_7(m) = + iterInit_Transform3D_sp_6(tmp15, r, c, tmp16) + private fun iterInit_Transform3D_sp_7(m, r, c, i) = let {tup_481, tup_482, tup_483, tup_484, tup_485} tup_481 = [0] tup_482 = [0] @@ -513,7 +513,7 @@ module Transform3D with tup_484 = [0] tup_485 = [tup_481, tup_482, tup_483, tup_484] tup_485 - private fun iterInit_Transform3D_sp_8(m) = + private fun iterInit_Transform3D_sp_8(m, r, c, i) = let {tup_471, tup_472, tup_473, tup_474, tup_475} tup_471 = [0] tup_472 = [0] @@ -521,7 +521,7 @@ module Transform3D with tup_474 = [0] tup_475 = [tup_471, tup_472, tup_473, tup_474] tup_475 - private fun iterInit_Transform3D_sp_9(m) = + private fun iterInit_Transform3D_sp_9(m, r, c, i) = let {tup_461, tup_462, tup_463, tup_464, tup_465} tup_461 = [0] tup_462 = [0] @@ -529,91 +529,91 @@ module Transform3D with tup_464 = [0] tup_465 = [tup_461, tup_462, tup_463, tup_464] tup_465 - private fun iterRow_Transform3D_sp_0(m, x, y, rowX, colX, i) = + private fun iterRow_Transform3D_sp_0(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) if scrut2 is true then m else tmp10 = rowX - i - tmp11 = iterCol_Transform3D_sp_0(m, x, y, colX, tmp10) + tmp11 = iterCol_Transform3D_sp_0(m, x, y, colX, colY, tmp10, colY) tmp12 = i - 1 - iterRow_Transform3D_sp_0(tmp11, x, y, rowX, colX, tmp12) - private fun iterRow_Transform3D_sp_1(m, x, y, rowX, colX, i) = + iterRow_Transform3D_sp_0(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iterRow_Transform3D_sp_1(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = ===(i, 0) if scrut2 is true then m else tmp10 = rowX - i - tmp11 = iterCol_Transform3D_sp_5(m, x, y, colX, tmp10) + tmp11 = iterCol_Transform3D_sp_5(m, x, y, colX, colY, tmp10, colY) tmp12 = i - 1 - iterRow_Transform3D_sp_1(tmp11, x, y, rowX, colX, tmp12) - private fun iterRow_Transform3D_sp_10(m, x, y, colY) = + iterRow_Transform3D_sp_1(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iterRow_Transform3D_sp_10(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 3 - tmp11 = iterCol_Transform3D_sp_18(m, x, y, colY, colY) + tmp11 = iterCol_Transform3D_sp_18(m, x, y, colX, colY, tmp10, colY) tmp12 = 0 - iterRow_Transform3D_sp_11(tmp11, x, y, colY) - private fun iterRow_Transform3D_sp_11(m, x, y, colY) = + iterRow_Transform3D_sp_11(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iterRow_Transform3D_sp_11(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = true m - private fun iterRow_Transform3D_sp_2(m, x, y) = + private fun iterRow_Transform3D_sp_2(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 0 - tmp11 = iterCol_Transform3D_sp_7(m, x, y) + tmp11 = iterCol_Transform3D_sp_7(m, x, y, colX, colY, tmp10, colY) tmp12 = 3 - iterRow_Transform3D_sp_3(tmp11, x, y) - private fun iterRow_Transform3D_sp_3(m, x, y) = + iterRow_Transform3D_sp_3(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iterRow_Transform3D_sp_3(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 1 - tmp11 = iterCol_Transform3D_sp_9(m, x, y) + tmp11 = iterCol_Transform3D_sp_9(m, x, y, colX, colY, tmp10, colY) tmp12 = 2 - iterRow_Transform3D_sp_4(tmp11, x, y) - private fun iterRow_Transform3D_sp_4(m, x, y) = + iterRow_Transform3D_sp_4(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iterRow_Transform3D_sp_4(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 2 - tmp11 = iterCol_Transform3D_sp_11(m, x, y) + tmp11 = iterCol_Transform3D_sp_11(m, x, y, colX, colY, tmp10, colY) tmp12 = 1 - iterRow_Transform3D_sp_5(tmp11, x, y) - private fun iterRow_Transform3D_sp_5(m, x, y) = + iterRow_Transform3D_sp_5(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iterRow_Transform3D_sp_5(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 3 - tmp11 = iterCol_Transform3D_sp_13(m, x, y) + tmp11 = iterCol_Transform3D_sp_13(m, x, y, colX, colY, tmp10, colY) tmp12 = 0 - iterRow_Transform3D_sp_6(tmp11, x, y) - private fun iterRow_Transform3D_sp_6(m, x, y) = + iterRow_Transform3D_sp_6(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iterRow_Transform3D_sp_6(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = true m - private fun iterRow_Transform3D_sp_7(m, x, y, colY) = + private fun iterRow_Transform3D_sp_7(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 0 - tmp11 = iterCol_Transform3D_sp_15(m, x, y, colY, colY) + tmp11 = iterCol_Transform3D_sp_15(m, x, y, colX, colY, tmp10, colY) tmp12 = 3 - iterRow_Transform3D_sp_8(tmp11, x, y, colY) - private fun iterRow_Transform3D_sp_8(m, x, y, colY) = + iterRow_Transform3D_sp_8(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iterRow_Transform3D_sp_8(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 1 - tmp11 = iterCol_Transform3D_sp_16(m, x, y, colY, colY) + tmp11 = iterCol_Transform3D_sp_16(m, x, y, colX, colY, tmp10, colY) tmp12 = 2 - iterRow_Transform3D_sp_9(tmp11, x, y, colY) - private fun iterRow_Transform3D_sp_9(m, x, y, colY) = + iterRow_Transform3D_sp_9(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iterRow_Transform3D_sp_9(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp10, tmp11, tmp12} scrut2 = false tmp10 = 2 - tmp11 = iterCol_Transform3D_sp_17(m, x, y, colY, colY) + tmp11 = iterCol_Transform3D_sp_17(m, x, y, colX, colY, tmp10, colY) tmp12 = 1 - iterRow_Transform3D_sp_10(tmp11, x, y, colY) - private fun iter_Transform3D_sp_0(x, y, colX, i, j, k) = + iterRow_Transform3D_sp_10(tmp11, x, y, rowX, colX, colY, tmp12) + private fun iter_Transform3D_sp_0(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is @@ -625,7 +625,7 @@ module Transform3D with tmp4 = k - 1 iter(tmp3, x, y, colX, i, j, tmp4) else 0 - private fun iter_Transform3D_sp_1(x, y, colX, i, k) = + private fun iter_Transform3D_sp_1(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_224, tup_225, tup_226, tup_227, tup_228} scrut = >(k, 0) if scrut is @@ -635,9 +635,9 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_2(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_2(tmp3, x, y, colX, i, j, tmp4) else 0 - private fun iter_Transform3D_sp_10(sum, x, y, colX, i, k) = + private fun iter_Transform3D_sp_10(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is @@ -647,9 +647,9 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_10(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_10(tmp3, x, y, colX, i, j, tmp4) else sum - private fun iter_Transform3D_sp_11(x, y) = + private fun iter_Transform3D_sp_11(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -657,8 +657,8 @@ module Transform3D with tmp2 = *(0.4, y.(0).(0)) tmp3 = 0 + tmp2 tmp4 = 3 - iter_Transform3D_sp_12(tmp3, x, y) - private fun iter_Transform3D_sp_12(sum, x, y) = + iter_Transform3D_sp_12(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_12(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -666,8 +666,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 2 - iter_Transform3D_sp_13(tmp3, x, y) - private fun iter_Transform3D_sp_13(sum, x, y) = + iter_Transform3D_sp_13(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_13(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -675,8 +675,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Transform3D_sp_14(tmp3, x, y) - private fun iter_Transform3D_sp_14(sum, x, y) = + iter_Transform3D_sp_14(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_14(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -684,12 +684,12 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 0 - iter_Transform3D_sp_15(tmp3, x, y) - private fun iter_Transform3D_sp_15(sum, x, y) = + iter_Transform3D_sp_15(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_15(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - private fun iter_Transform3D_sp_16(x, y) = + private fun iter_Transform3D_sp_16(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -697,8 +697,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Transform3D_sp_17(x, y) - private fun iter_Transform3D_sp_17(x, y) = + iter_Transform3D_sp_17(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_17(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -706,8 +706,8 @@ module Transform3D with tmp2 = *(0.19, y.(1).(0)) tmp3 = 0 + tmp2 tmp4 = 2 - iter_Transform3D_sp_18(tmp3, x, y) - private fun iter_Transform3D_sp_18(sum, x, y) = + iter_Transform3D_sp_18(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_18(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -715,8 +715,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Transform3D_sp_19(tmp3, x, y) - private fun iter_Transform3D_sp_19(sum, x, y) = + iter_Transform3D_sp_19(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_19(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -724,8 +724,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 0 - iter_Transform3D_sp_20(tmp3, x, y) - private fun iter_Transform3D_sp_2(sum, x, y, colX, i, k) = + iter_Transform3D_sp_20(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_2(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_229, tup_230, tup_231, tup_232, tup_233} scrut = >(k, 0) if scrut is @@ -735,13 +735,13 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_2(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_2(tmp3, x, y, colX, i, j, tmp4) else sum - private fun iter_Transform3D_sp_20(sum, x, y) = + private fun iter_Transform3D_sp_20(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - private fun iter_Transform3D_sp_21(x, y) = + private fun iter_Transform3D_sp_21(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -749,8 +749,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Transform3D_sp_22(x, y) - private fun iter_Transform3D_sp_22(x, y) = + iter_Transform3D_sp_22(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_22(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -758,8 +758,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 2 - iter_Transform3D_sp_23(x, y) - private fun iter_Transform3D_sp_23(x, y) = + iter_Transform3D_sp_23(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_23(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -767,8 +767,8 @@ module Transform3D with tmp2 = *(0.19, y.(2).(0)) tmp3 = 0 + tmp2 tmp4 = 1 - iter_Transform3D_sp_24(tmp3, x, y) - private fun iter_Transform3D_sp_24(sum, x, y) = + iter_Transform3D_sp_24(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_24(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -776,16 +776,16 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 0 - iter_Transform3D_sp_25(tmp3, x, y) - private fun iter_Transform3D_sp_25(sum, x, y) = + iter_Transform3D_sp_25(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_25(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - private fun iter_Transform3D_sp_26(x, y) = 1 - private fun iter_Transform3D_sp_27(x, y) = 1 - private fun iter_Transform3D_sp_28(x, y) = 1 - private fun iter_Transform3D_sp_29(x, y) = 1 - private fun iter_Transform3D_sp_3(x, y, colX, i, k) = + private fun iter_Transform3D_sp_26(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_27(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_28(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_29(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_3(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_234, tup_235, tup_236, tup_237, tup_238} scrut = >(k, 0) if scrut is @@ -795,10 +795,10 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_4(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_4(tmp3, x, y, colX, i, j, tmp4) else 0 - private fun iter_Transform3D_sp_30(x, y) = 1 - private fun iter_Transform3D_sp_31(x, y, j) = + private fun iter_Transform3D_sp_30(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_31(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -806,8 +806,8 @@ module Transform3D with tmp2 = *(1, y.(0).(j)) tmp3 = 0 + tmp2 tmp4 = 3 - iter_Transform3D_sp_32(tmp3, x, y, j) - private fun iter_Transform3D_sp_32(sum, x, y, j) = + iter_Transform3D_sp_32(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_32(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -815,8 +815,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 2 - iter_Transform3D_sp_33(tmp3, x, y, j) - private fun iter_Transform3D_sp_33(sum, x, y, j) = + iter_Transform3D_sp_33(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_33(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -824,8 +824,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Transform3D_sp_34(tmp3, x, y, j) - private fun iter_Transform3D_sp_34(sum, x, y, j) = + iter_Transform3D_sp_34(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_34(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -833,12 +833,12 @@ module Transform3D with tmp2 = *(11, y.(3).(j)) tmp3 = sum + tmp2 tmp4 = 0 - iter_Transform3D_sp_35(tmp3, x, y, j) - private fun iter_Transform3D_sp_35(sum, x, y, j) = + iter_Transform3D_sp_35(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_35(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - private fun iter_Transform3D_sp_36(x, y, j) = + private fun iter_Transform3D_sp_36(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -846,8 +846,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Transform3D_sp_37(x, y, j) - private fun iter_Transform3D_sp_37(x, y, j) = + iter_Transform3D_sp_37(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_37(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -855,8 +855,8 @@ module Transform3D with tmp2 = *(1, y.(1).(j)) tmp3 = 0 + tmp2 tmp4 = 2 - iter_Transform3D_sp_38(tmp3, x, y, j) - private fun iter_Transform3D_sp_38(sum, x, y, j) = + iter_Transform3D_sp_38(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_38(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -864,8 +864,8 @@ module Transform3D with tmp2 = 0 tmp3 = sum + 0 tmp4 = 1 - iter_Transform3D_sp_39(tmp3, x, y, j) - private fun iter_Transform3D_sp_39(sum, x, y, j) = + iter_Transform3D_sp_39(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_39(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -873,8 +873,8 @@ module Transform3D with tmp2 = *(4, y.(3).(j)) tmp3 = sum + tmp2 tmp4 = 0 - iter_Transform3D_sp_40(tmp3, x, y, j) - private fun iter_Transform3D_sp_4(sum, x, y, colX, i, k) = + iter_Transform3D_sp_40(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_4(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_239, tup_240, tup_241, tup_242, tup_243} scrut = >(k, 0) if scrut is @@ -884,13 +884,13 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_4(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_4(tmp3, x, y, colX, i, j, tmp4) else sum - private fun iter_Transform3D_sp_40(sum, x, y, j) = + private fun iter_Transform3D_sp_40(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - private fun iter_Transform3D_sp_41(x, y, j) = + private fun iter_Transform3D_sp_41(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -898,8 +898,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Transform3D_sp_42(x, y, j) - private fun iter_Transform3D_sp_42(x, y, j) = + iter_Transform3D_sp_42(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_42(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -907,8 +907,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 2 - iter_Transform3D_sp_43(x, y, j) - private fun iter_Transform3D_sp_43(x, y, j) = + iter_Transform3D_sp_43(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_43(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -916,8 +916,8 @@ module Transform3D with tmp2 = *(1, y.(2).(j)) tmp3 = 0 + tmp2 tmp4 = 1 - iter_Transform3D_sp_44(tmp3, x, y, j) - private fun iter_Transform3D_sp_44(sum, x, y, j) = + iter_Transform3D_sp_44(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_44(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -925,12 +925,12 @@ module Transform3D with tmp2 = *(51, y.(3).(j)) tmp3 = sum + tmp2 tmp4 = 0 - iter_Transform3D_sp_45(tmp3, x, y, j) - private fun iter_Transform3D_sp_45(sum, x, y, j) = + iter_Transform3D_sp_45(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_45(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - private fun iter_Transform3D_sp_46(x, y, j) = + private fun iter_Transform3D_sp_46(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 0 @@ -938,8 +938,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 3 - iter_Transform3D_sp_47(x, y, j) - private fun iter_Transform3D_sp_47(x, y, j) = + iter_Transform3D_sp_47(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_47(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 1 @@ -947,8 +947,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 2 - iter_Transform3D_sp_48(x, y, j) - private fun iter_Transform3D_sp_48(x, y, j) = + iter_Transform3D_sp_48(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_48(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 2 @@ -956,8 +956,8 @@ module Transform3D with tmp2 = 0 tmp3 = 0 tmp4 = 1 - iter_Transform3D_sp_49(x, y, j) - private fun iter_Transform3D_sp_49(x, y, j) = + iter_Transform3D_sp_49(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_49(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = true tmp = 3 @@ -965,8 +965,8 @@ module Transform3D with tmp2 = *(1, y.(3).(j)) tmp3 = 0 + tmp2 tmp4 = 0 - iter_Transform3D_sp_50(tmp3, x, y, j) - private fun iter_Transform3D_sp_5(x, y, colX, i, k) = + iter_Transform3D_sp_50(tmp3, x, y, colX, i, j, tmp4) + private fun iter_Transform3D_sp_5(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_244, tup_245, tup_246, tup_247, tup_248} scrut = >(k, 0) if scrut is @@ -976,13 +976,13 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_6(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_6(tmp3, x, y, colX, i, j, tmp4) else 0 - private fun iter_Transform3D_sp_50(sum, x, y, j) = + private fun iter_Transform3D_sp_50(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = false sum - private fun iter_Transform3D_sp_6(sum, x, y, colX, i, k) = + private fun iter_Transform3D_sp_6(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_249, tup_250, tup_251, tup_252, tup_253} scrut = >(k, 0) if scrut is @@ -992,9 +992,9 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_6(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_6(tmp3, x, y, colX, i, j, tmp4) else sum - private fun iter_Transform3D_sp_7(x, y, colX, i, k) = + private fun iter_Transform3D_sp_7(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_254, tup_255, tup_256, tup_257, tup_258} scrut = >(k, 0) if scrut is @@ -1004,9 +1004,9 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(3)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_8(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_8(tmp3, x, y, colX, i, j, tmp4) else 0 - private fun iter_Transform3D_sp_8(sum, x, y, colX, i, k) = + private fun iter_Transform3D_sp_8(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_259, tup_260, tup_261, tup_262, tup_263} scrut = >(k, 0) if scrut is @@ -1016,9 +1016,9 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(3)) tmp3 = sum + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_8(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_8(tmp3, x, y, colX, i, j, tmp4) else sum - private fun iter_Transform3D_sp_9(x, y, colX, i, k) = + private fun iter_Transform3D_sp_9(sum, x, y, colX, i, j, k) = let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} scrut = >(k, 0) if scrut is @@ -1028,13 +1028,13 @@ module Transform3D with tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) tmp3 = 0 + tmp2 tmp4 = k - 1 - iter_Transform3D_sp_10(tmp3, x, y, colX, i, tmp4) + iter_Transform3D_sp_10(tmp3, x, y, colX, i, j, tmp4) else 0 private fun model_Transform3D_sp_0(local, position, scaling, rotation) = let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_282, tup_283, tup_284, tup_285, tup_286, tup_342, tup_343, tup_344, tup_345, tup_346, tup_402, tup_403, tup_404, tup_405, tup_406} - tmp43 = rotateZ_Transform3D_sp_0() - tmp44 = rotateY_Transform3D_sp_0() - tmp45 = rotateX_Transform3D_sp_0() + tmp43 = rotateZ_Transform3D_sp_0(rotation.2) + tmp44 = rotateY_Transform3D_sp_0(rotation.1) + tmp45 = rotateX_Transform3D_sp_0(rotation.0) tup_282 = [1, 0, 0, 0] tup_283 = [0, 1, 0, 0] tup_284 = [0, 0, 1, 0] @@ -1071,16 +1071,16 @@ module Transform3D with colX3 = x.0.length rowY = 4 colY2 = 4 - res = zeros_Transform3D_sp_1(rowX1) - iterRow_Transform3D_sp_0(res, x, y, rowX1, colX3, rowX1) + res = zeros_Transform3D_sp_1(rowX1, colY2) + iterRow_Transform3D_sp_0(res, x, y, rowX1, colX3, colY2, rowX1) private fun multiply_Transform3D_sp_1(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = x.length colX3 = x.0.length rowY = 4 colY2 = 1 - res = zeros_Transform3D_sp_2(rowX1) - iterRow_Transform3D_sp_1(res, x, y, rowX1, colX3, rowX1) + res = zeros_Transform3D_sp_2(rowX1, colY2) + iterRow_Transform3D_sp_1(res, x, y, rowX1, colX3, colY2, rowX1) private fun multiply_Transform3D_sp_2(x, y) = let {rowX1, colX3, rowY, colY2, res, tup_496, tup_497, tup_498, tup_499, tup_500} rowX1 = 4 @@ -1093,16 +1093,16 @@ module Transform3D with tup_499 = [0] tup_500 = [tup_496, tup_497, tup_498, tup_499] res = tup_500 - iterRow_Transform3D_sp_2(res, x, y) + iterRow_Transform3D_sp_2(res, x, y, rowX1, colX3, colY2, rowX1) private fun multiply_Transform3D_sp_3(x, y) = let {rowX1, colX3, rowY, colY2, res} rowX1 = 4 colX3 = 4 rowY = y.length colY2 = y.0.length - res = zeros_Transform3D_sp_4(colY2) - iterRow_Transform3D_sp_7(res, x, y, colY2) - private fun rotateX_Transform3D_sp_0() = + res = zeros_Transform3D_sp_4(rowX1, colY2) + iterRow_Transform3D_sp_7(res, x, y, rowX1, colX3, colY2, rowX1) + private fun rotateX_Transform3D_sp_0(angle) = let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_277, tup_278, tup_279, tup_280, tup_281} s = globalThis.Math.sin(2.51327412) c2 = globalThis.Math.cos(2.51327412) @@ -1112,12 +1112,12 @@ module Transform3D with tup_280 = [0, 0, 0, 1] tup_281 = [tup_277, tup_278, tup_279, tup_280] tmp28 = tup_281 - tmp29 = update_Transform3D_sp_6(tmp28, c2) + tmp29 = update_Transform3D_sp_6(tmp28, 1, 1, c2) tmp30 = -(s) - tmp31 = update_Transform3D_sp_7(tmp29, tmp30) - tmp32 = update_Transform3D_sp_8(tmp31, s) - update_Transform3D_sp_5(tmp32, c2) - private fun rotateY_Transform3D_sp_0() = + tmp31 = update_Transform3D_sp_7(tmp29, 1, 2, tmp30) + tmp32 = update_Transform3D_sp_8(tmp31, 2, 1, s) + update_Transform3D_sp_5(tmp32, 2, 2, c2) + private fun rotateY_Transform3D_sp_0(angle) = let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_272, tup_273, tup_274, tup_275, tup_276} s1 = globalThis.Math.sin(3.1415926535) c3 = globalThis.Math.cos(3.1415926535) @@ -1127,12 +1127,12 @@ module Transform3D with tup_275 = [0, 0, 0, 1] tup_276 = [tup_272, tup_273, tup_274, tup_275] tmp33 = tup_276 - tmp34 = update_Transform3D_sp_3(tmp33, c3) - tmp35 = update_Transform3D_sp_9(tmp34, s1) + tmp34 = update_Transform3D_sp_3(tmp33, 0, 0, c3) + tmp35 = update_Transform3D_sp_9(tmp34, 0, 2, s1) tmp36 = -(s1) - tmp37 = update_Transform3D_sp_10(tmp35, tmp36) - update_Transform3D_sp_5(tmp37, c3) - private fun rotateZ_Transform3D_sp_0() = + tmp37 = update_Transform3D_sp_10(tmp35, 2, 0, tmp36) + update_Transform3D_sp_5(tmp37, 2, 2, c3) + private fun rotateZ_Transform3D_sp_0(angle) = let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_267, tup_268, tup_269, tup_270, tup_271} s2 = globalThis.Math.sin(0) c4 = globalThis.Math.cos(0) @@ -1142,12 +1142,12 @@ module Transform3D with tup_270 = [0, 0, 0, 1] tup_271 = [tup_267, tup_268, tup_269, tup_270] tmp38 = tup_271 - tmp39 = update_Transform3D_sp_3(tmp38, c4) + tmp39 = update_Transform3D_sp_3(tmp38, 0, 0, c4) tmp40 = -(s2) - tmp41 = update_Transform3D_sp_11(tmp39, tmp40) - tmp42 = update_Transform3D_sp_12(tmp41, s2) - update_Transform3D_sp_4(tmp42, c4) - private fun scale_Transform3D_sp_0() = + tmp41 = update_Transform3D_sp_11(tmp39, 0, 1, tmp40) + tmp42 = update_Transform3D_sp_12(tmp41, 1, 0, s2) + update_Transform3D_sp_4(tmp42, 1, 1, c4) + private fun scale_Transform3D_sp_0(sx, sy, sz) = let {tup_397, tup_398, tup_399, tup_400, tup_401} tup_397 = [0.4, 0, 0, 0] tup_398 = [0, 0.19, 0, 0] @@ -1155,7 +1155,7 @@ module Transform3D with tup_400 = [0, 0, 0, 1] tup_401 = [tup_397, tup_398, tup_399, tup_400] tup_401 - private fun transform_Transform3D_sp_0() = + private fun transform_Transform3D_sp_0(dx, dy, dz) = let {tup_337, tup_338, tup_339, tup_340, tup_341} tup_337 = [1, 0, 0, 11] tup_338 = [0, 1, 0, 4] @@ -1163,7 +1163,7 @@ module Transform3D with tup_340 = [0, 0, 0, 1] tup_341 = [tup_337, tup_338, tup_339, tup_340] tup_341 - private fun update_Transform3D_sp_0(m, v) = + private fun update_Transform3D_sp_0(m, i, j, v) = let {tup_181, tup_182, tup_183, tup_184, tup_185} tup_181 = [1, 0, 0, 0] tup_182 = [0, 1, 0, 0] @@ -1171,11 +1171,11 @@ module Transform3D with tup_184 = [0, 0, 0, 1] tup_185 = [tup_181, tup_182, tup_183, tup_184] Transform3D."Mx$Transform3D".set2D(tup_185, 0, 3, v) - private fun update_Transform3D_sp_1(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 3, v) - private fun update_Transform3D_sp_10(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 0, v) - private fun update_Transform3D_sp_11(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 1, v) - private fun update_Transform3D_sp_12(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 0, v) - private fun update_Transform3D_sp_13(m) = + private fun update_Transform3D_sp_1(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 3, v) + private fun update_Transform3D_sp_10(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 0, v) + private fun update_Transform3D_sp_11(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 1, v) + private fun update_Transform3D_sp_12(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 0, v) + private fun update_Transform3D_sp_13(m, i, j, v) = let {tup_297, tup_298, tup_299, tup_300, tup_301} tup_297 = [1, 0, 0, 11] tup_298 = [0, 1, 0, 0] @@ -1183,7 +1183,7 @@ module Transform3D with tup_300 = [0, 0, 0, 1] tup_301 = [tup_297, tup_298, tup_299, tup_300] tup_301 - private fun update_Transform3D_sp_14(m) = + private fun update_Transform3D_sp_14(m, i, j, v) = let {tup_312, tup_313, tup_314, tup_315, tup_316} tup_312 = [1, 0, 0, 11] tup_313 = [0, 1, 0, 4] @@ -1191,7 +1191,7 @@ module Transform3D with tup_315 = [0, 0, 0, 1] tup_316 = [tup_312, tup_313, tup_314, tup_315] tup_316 - private fun update_Transform3D_sp_15(m) = + private fun update_Transform3D_sp_15(m, i, j, v) = let {tup_327, tup_328, tup_329, tup_330, tup_331} tup_327 = [1, 0, 0, 11] tup_328 = [0, 1, 0, 4] @@ -1199,7 +1199,7 @@ module Transform3D with tup_330 = [0, 0, 0, 1] tup_331 = [tup_327, tup_328, tup_329, tup_330] tup_331 - private fun update_Transform3D_sp_16(m) = + private fun update_Transform3D_sp_16(m, i, j, v) = let {tup_357, tup_358, tup_359, tup_360, tup_361} tup_357 = [0.4, 0, 0, 0] tup_358 = [0, 1, 0, 0] @@ -1207,7 +1207,7 @@ module Transform3D with tup_360 = [0, 0, 0, 1] tup_361 = [tup_357, tup_358, tup_359, tup_360] tup_361 - private fun update_Transform3D_sp_17(m) = + private fun update_Transform3D_sp_17(m, i, j, v) = let {tup_372, tup_373, tup_374, tup_375, tup_376} tup_372 = [0.4, 0, 0, 0] tup_373 = [0, 0.19, 0, 0] @@ -1215,7 +1215,7 @@ module Transform3D with tup_375 = [0, 0, 0, 1] tup_376 = [tup_372, tup_373, tup_374, tup_375] tup_376 - private fun update_Transform3D_sp_18(m) = + private fun update_Transform3D_sp_18(m, i, j, v) = let {tup_387, tup_388, tup_389, tup_390, tup_391} tup_387 = [0.4, 0, 0, 0] tup_388 = [0, 0.19, 0, 0] @@ -1223,8 +1223,8 @@ module Transform3D with tup_390 = [0, 0, 0, 1] tup_391 = [tup_387, tup_388, tup_389, tup_390] tup_391 - private fun update_Transform3D_sp_2(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 3, v) - private fun update_Transform3D_sp_3(m, v) = + private fun update_Transform3D_sp_2(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 3, v) + private fun update_Transform3D_sp_3(m, i, j, v) = let {tup_191, tup_192, tup_193, tup_194, tup_195} tup_191 = [1, 0, 0, 0] tup_192 = [0, 1, 0, 0] @@ -1232,9 +1232,9 @@ module Transform3D with tup_194 = [0, 0, 0, 1] tup_195 = [tup_191, tup_192, tup_193, tup_194] Transform3D."Mx$Transform3D".set2D(tup_195, 0, 0, v) - private fun update_Transform3D_sp_4(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 1, v) - private fun update_Transform3D_sp_5(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 2, v) - private fun update_Transform3D_sp_6(m, v) = + private fun update_Transform3D_sp_4(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 1, v) + private fun update_Transform3D_sp_5(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 2, v) + private fun update_Transform3D_sp_6(m, i, j, v) = let {tup_201, tup_202, tup_203, tup_204, tup_205} tup_201 = [1, 0, 0, 0] tup_202 = [0, 1, 0, 0] @@ -1242,10 +1242,10 @@ module Transform3D with tup_204 = [0, 0, 0, 1] tup_205 = [tup_201, tup_202, tup_203, tup_204] Transform3D."Mx$Transform3D".set2D(tup_205, 1, 1, v) - private fun update_Transform3D_sp_7(m, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 2, v) - private fun update_Transform3D_sp_8(m, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 1, v) - private fun update_Transform3D_sp_9(m, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 2, v) - private fun zeros_Transform3D_sp_0() = + private fun update_Transform3D_sp_7(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 2, v) + private fun update_Transform3D_sp_8(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 1, v) + private fun update_Transform3D_sp_9(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 2, v) + private fun zeros_Transform3D_sp_0(r, c) = let {tup_86, tup_87, tup_88, tup_89, tup_90} tup_86 = [0, 0, 0, 0] tup_87 = [0, 0, 0, 0] @@ -1253,19 +1253,19 @@ module Transform3D with tup_89 = [0, 0, 0, 0] tup_90 = [tup_86, tup_87, tup_88, tup_89] tup_90 - private fun zeros_Transform3D_sp_1(r) = + private fun zeros_Transform3D_sp_1(r, c) = let {m4, tmp21, tup_221} tmp21 = [] tup_221 = [] m4 = Transform3D."Mx$Transform3D".init(r, tup_221) - iterInit_Transform3D_sp_5(m4, r, r) - private fun zeros_Transform3D_sp_2(r) = + iterInit_Transform3D_sp_5(m4, r, c, r) + private fun zeros_Transform3D_sp_2(r, c) = let {m4, tmp21, tup_264} tmp21 = [] tup_264 = [] m4 = Transform3D."Mx$Transform3D".init(r, tup_264) - iterInit_Transform3D_sp_6(m4, r, r) - private fun zeros_Transform3D_sp_3() = + iterInit_Transform3D_sp_6(m4, r, c, r) + private fun zeros_Transform3D_sp_3(r, c) = let {tup_491, tup_492, tup_493, tup_494, tup_495} tup_491 = [0] tup_492 = [0] @@ -1273,7 +1273,7 @@ module Transform3D with tup_494 = [0] tup_495 = [tup_491, tup_492, tup_493, tup_494] tup_495 - private fun zeros_Transform3D_sp_4(c) = + private fun zeros_Transform3D_sp_4(r, c) = let {m4, tmp21, tup_506, tup_507, tup_508, tup_509, tup_510} tmp21 = [] tup_506 = [] @@ -1282,4 +1282,4 @@ module Transform3D with tup_509 = [] tup_510 = [tup_506, tup_507, tup_508, tup_509] m4 = tup_510 - iterInit_Transform3D_sp_12(m4, c) \ No newline at end of file + iterInit_Transform3D_sp_12(m4, r, c, r) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls b/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls index ed35853cba..dbc8e81958 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls @@ -15,11 +15,11 @@ staged module Foo with Foo."foo_gen"(mkLit(0)) -//│ = ["foo_Foo_sp_2", {Lit(1)}, [true]] +//│ = ["foo_Foo_sp_2", {Lit(1)}] print(Foo."cache$Foo") //│ > module Foo with //│ > () -//│ > private fun foo_Foo_sp_2() = 1 +//│ > private fun foo_Foo_sp_2(x) = 1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e674ba2936..03c7bee6a5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -53,16 +53,16 @@ print(Simple."cache$Simple") //│ > fun test() = 20 //│ > fun test2(n) = //│ > let {dyn, tmp10} -//│ > dyn = pyth_Simple_sp_1(n) +//│ > dyn = pyth_Simple_sp_1(n, 2) //│ > tmp10 = *(dyn, 2) //│ > fib(tmp10) -//│ > private fun f_Simple_sp_0() = 4 -//│ > private fun fib_Simple_sp_0() = 3 -//│ > private fun fib_Simple_sp_1() = 2 -//│ > private fun fib_Simple_sp_2() = 1 -//│ > private fun fib_Simple_sp_3() = 1 -//│ > private fun pyth_Simple_sp_0() = 20 -//│ > private fun pyth_Simple_sp_1(x) = +//│ > private fun f_Simple_sp_0(x, y) = 4 +//│ > private fun fib_Simple_sp_0(n) = 3 +//│ > private fun fib_Simple_sp_1(n) = 2 +//│ > private fun fib_Simple_sp_2(n) = 1 +//│ > private fun fib_Simple_sp_3(n) = 1 +//│ > private fun pyth_Simple_sp_0(x, y) = 20 +//│ > private fun pyth_Simple_sp_1(x, y) = //│ > let {tmp6, tmp7} //│ > tmp6 = Simple."NonStaged$Simple".sq(x) //│ > tmp7 = 4 @@ -88,10 +88,10 @@ staged module If with 4 If."test_gen"() -//│ = ["test", {Lit("C(2) C else ")}, []] +//│ = ["test", {Lit("C(2) C else ")}] If."test2_gen"(mkLit(1), mkDyn()) -//│ = ["test2_If_sp_0", {Lit(1),Lit(4)}, [true, false]] +//│ = ["test2_If_sp_0", {Lit(1),Lit(4)}] print(If."cache$If") //│ > module If with @@ -99,8 +99,8 @@ print(If."cache$If") //│ > fun test() = "C(2) C else " //│ > private fun f_If_sp_0(x) = "C(2) " //│ > private fun f_If_sp_1(x) = "C " -//│ > private fun f_If_sp_2() = "else " -//│ > private fun test2_If_sp_0(y) = +//│ > private fun f_If_sp_2(x) = "else " +//│ > private fun test2_If_sp_0(x, y) = //│ > let {tmp6} //│ > if y is //│ > 1 then 1 @@ -139,7 +139,7 @@ print(If2."cache$If2") //│ > y = x.n //│ > tmp = () //│ > y + 1 -//│ > private fun f_If2_sp_2() = 1 +//│ > private fun f_If2_sp_2(x) = 1 staged module LinearAlgebra with fun _dot(v1, v2, n, acc) = @@ -158,32 +158,32 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ > tmp3 = [x, 1, 2] //│ > tmp4 = [3, 4, 1] //│ > dot_LinearAlgebra_sp_0(tmp3, tmp4) -//│ > private fun _dot_LinearAlgebra_sp_0(v1, v2) = +//│ > private fun _dot_LinearAlgebra_sp_0(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 1 //│ > tmp1 = *(v1.(0), 3) //│ > tmp2 = tmp1 + 0 -//│ > _dot_LinearAlgebra_sp_1(v1, v2, tmp2) -//│ > private fun _dot_LinearAlgebra_sp_1(v1, v2, acc) = +//│ > _dot_LinearAlgebra_sp_1(v1, v2, tmp, tmp2) +//│ > private fun _dot_LinearAlgebra_sp_1(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 2 //│ > tmp1 = 4 //│ > tmp2 = 4 + acc -//│ > _dot_LinearAlgebra_sp_2(v1, v2, tmp2) -//│ > private fun _dot_LinearAlgebra_sp_2(v1, v2, acc) = +//│ > _dot_LinearAlgebra_sp_2(v1, v2, tmp, tmp2) +//│ > private fun _dot_LinearAlgebra_sp_2(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = false //│ > tmp = 3 //│ > tmp1 = 2 //│ > tmp2 = 2 + acc -//│ > _dot_LinearAlgebra_sp_3(v1, v2, tmp2) -//│ > private fun _dot_LinearAlgebra_sp_3(v1, v2, acc) = +//│ > _dot_LinearAlgebra_sp_3(v1, v2, tmp, tmp2) +//│ > private fun _dot_LinearAlgebra_sp_3(v1, v2, n, acc) = //│ > let {scrut, tmp, tmp1, tmp2} //│ > scrut = true //│ > acc -//│ > private fun dot_LinearAlgebra_sp_0(v1, v2) = _dot_LinearAlgebra_sp_0(v1, v2) +//│ > private fun dot_LinearAlgebra_sp_0(v1, v2) = _dot_LinearAlgebra_sp_0(v1, v2, 0, 0) staged class L1(val y) with fun call(x) = x + 2 + y @@ -203,13 +203,13 @@ staged module Dispatching with twice(m, 5) Dispatching."test_gen"(mkLit(true)) -//│ = ["test_Dispatching_sp_0", {Lit(9)}, [true]] +//│ = ["test_Dispatching_sp_0", {Lit(9)}] Dispatching."test_gen"(mkLit(false)) -//│ = ["test_Dispatching_sp_1", {Lit(29)}, [true]] +//│ = ["test_Dispatching_sp_1", {Lit(29)}] Dispatching."test_gen"(mkDyn()) -//│ = ["test", {Lit(15),Lit(17),Lit(29),Lit(9)}, [false]] +//│ = ["test", {Lit(15),Lit(17),Lit(29),Lit(9)}] print(Dispatching."cache$Dispatching") //│ > module Dispatching with @@ -221,12 +221,12 @@ print(Dispatching."cache$Dispatching") //│ > tmp2 = new! L2.class(2) //│ > tmp3 = new! L3.class(3) //│ > m = pick_Dispatching_sp_2(tmp2, tmp3, b) -//│ > twice_Dispatching_sp_3(m) -//│ > private fun pick_Dispatching_sp_0(x, y) = +//│ > twice_Dispatching_sp_3(m, 5) +//│ > private fun pick_Dispatching_sp_0(x, y, b) = //│ > let {obj_2} //│ > obj_2 = new! L2.class(2) //│ > obj_2 -//│ > private fun pick_Dispatching_sp_1(x, y) = +//│ > private fun pick_Dispatching_sp_1(x, y, b) = //│ > let {obj_5} //│ > obj_5 = new! L3.class(3) //│ > obj_5 @@ -239,18 +239,18 @@ print(Dispatching."cache$Dispatching") //│ > else //│ > obj_8 = new! L3.class(3) //│ > obj_8 -//│ > private fun test_Dispatching_sp_0() = 9 -//│ > private fun test_Dispatching_sp_1() = 29 -//│ > private fun twice_Dispatching_sp_0(f) = 11 -//│ > private fun twice_Dispatching_sp_1(f) = 9 -//│ > private fun twice_Dispatching_sp_2(f) = 29 -//│ > private fun twice_Dispatching_sp_3(f) = +//│ > private fun test_Dispatching_sp_0(b) = 9 +//│ > private fun test_Dispatching_sp_1(b) = 29 +//│ > private fun twice_Dispatching_sp_0(f, x) = 11 +//│ > private fun twice_Dispatching_sp_1(f, x) = 9 +//│ > private fun twice_Dispatching_sp_2(f, x) = 29 +//│ > private fun twice_Dispatching_sp_3(f, x) = //│ > let {tmp} //│ > if f is //│ > L2 then -//│ > tmp = f.call_L2_sp_0() +//│ > tmp = f.call_L2_sp_0(x) //│ > L3 then -//│ > tmp = f.call_L3_sp_0() +//│ > tmp = f.call_L3_sp_0(x) //│ > if f is //│ > L2 then f.call_L2_sp_2(tmp) //│ > L3 then f.call_L3_sp_2(tmp) @@ -260,17 +260,17 @@ print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(val y) with //│ > () -//│ > private fun call_L1_sp_0() = 8 -//│ > private fun call_L1_sp_1() = 11 +//│ > private fun call_L1_sp_0(x) = 8 +//│ > private fun call_L1_sp_1(x) = 11 //│ > class L2(val y) with //│ > () -//│ > private fun call_L2_sp_0() = 7 -//│ > private fun call_L2_sp_1() = 9 +//│ > private fun call_L2_sp_0(x) = 7 +//│ > private fun call_L2_sp_1(x) = 9 //│ > private fun call_L2_sp_2(x) = x + 2 //│ > class L3(val y) with //│ > () -//│ > private fun call_L3_sp_0() = 13 -//│ > private fun call_L3_sp_1() = 29 +//│ > private fun call_L3_sp_0(x) = 13 +//│ > private fun call_L3_sp_1(x) = 29 //│ > private fun call_L3_sp_2(x) = //│ > let {tmp1} //│ > tmp1 = *(x, 2) @@ -289,7 +289,7 @@ staged module Dispatching2 with fun baz(b) = Foo(Bar(1)).foo(b) Dispatching2."baz_gen"(mkDyn()) -//│ = ["baz", {Lit(1),Lit(2),Lit(3)}, [false]] +//│ = ["baz", {Lit(1),Lit(2),Lit(3)}] staged class A(val x: Int) with fun f(y: Int) = x + y @@ -305,14 +305,14 @@ This."test2_gen"(mkLit(1)) print(This."cache$This") //│ > module This with //│ > () -//│ > private fun test2_This_sp_0() = 2 -//│ > private fun test_This_sp_0() = 3 +//│ > private fun test2_This_sp_0(y) = 2 +//│ > private fun test_This_sp_0(x) = 3 print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(val x) with //│ > () -//│ > private fun f_A_sp_0() = 2 +//│ > private fun f_A_sp_0(y) = 2 //│ > class B(val x) with //│ > () //│ > private fun f_B_sp_0(y) = 3 @@ -330,7 +330,7 @@ staged module Inheritance with else "not B" Inheritance."test_gen"() -//│ = ["test", {Lit(5)}, []] +//│ = ["test", {Lit(5)}] staged module NonTermination with fun f(x, y) = if y @@ -346,16 +346,16 @@ staged module GlobalFunction with fun test(x) = g(x, x) GlobalFunction."test_gen"(mkLit(1)) -//│ = ["test_GlobalFunction_sp_0", {Dyn()}, [true]] +//│ = ["test_GlobalFunction_sp_0", {Dyn()}] staged module Comparison with fun test(x) = x < 5 Comparison."test_gen"(union(mkLit(3), mkLit(4))) -//│ = ["test_Comparison_sp_0", {Lit(true)}, [false]] +//│ = ["test_Comparison_sp_0", {Lit(true)}] Comparison."test_gen"(union(mkLit(4), mkLit(6))) -//│ = ["test_Comparison_sp_1", {Dyn()}, [false]] +//│ = ["test_Comparison_sp_1", {Dyn()}] class C module Opaque with @@ -363,7 +363,7 @@ module Opaque with staged module M with fun f() = Opaque.f() M."f_gen"() -//│ = ["f", {Dyn()}, []] +//│ = ["f", {Dyn()}] staged module M with fun f(x, y) = x * y @@ -375,11 +375,11 @@ M."cache$M" //│ = module M with \ //│ () \ //│ fun f(x, y) = *(x, y) \ -//│ fun g(y) = f_M_sp_0(y) \ -//│ private fun f_M_sp_0(y) = *(2, y) +//│ fun g(y) = f_M_sp_0(2, y) \ +//│ private fun f_M_sp_0(x, y) = *(2, y) staged module M with fun f(x) = x.2 M."f_gen"(mkArr([mkLit(1), mkDyn(), mkLit(2)])) -//│ = ["f_M_sp_0", {Lit(2)}, [false]] +//│ = ["f_M_sp_0", {Lit(2)}] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 5404ac7f33..57fc53f28b 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -13,11 +13,11 @@ staged module M with fun f_gen M.f_gen(mkDyn()) -//│ = ["f", {Dyn()}, [false]] +//│ = ["f", {Dyn()}] M.f_gen(mkLit(2)) -//│ = ["f_M_sp_0", {Lit(4)}, [true]] +//│ = ["f_M_sp_0", {Lit(4)}] print(M."cache$M") @@ -27,7 +27,7 @@ print(M."cache$M") //│ > let {y} //│ > y = *(x, 2) //│ > y -//│ > private fun f_M_sp_0() = 4 +//│ > private fun f_M_sp_0(x) = 4 staged module Clash with @@ -36,4 +36,4 @@ staged module Clash with fun f_Clash_sp_0() = 0 Clash.f_gen(mkLit(1)) -//│ = ["f_Clash_sp_1", {Lit(1)}, [true]] +//│ = ["f_Clash_sp_1", {Lit(1)}] From ecea593d2299ce4befebbd8ee704435ee479049d Mon Sep 17 00:00:00 2001 From: Ching Long Tin <26105652+ChingLongTin@users.noreply.github.com> Date: Mon, 11 May 2026 16:37:01 +0800 Subject: [PATCH 600/654] Update hkmc2/shared/src/test/mlscript-compile/Block.mls Co-authored-by: Fa1sePRoMiSe --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index b20f1cb604..1dfc7f08fc 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -195,7 +195,7 @@ class Printer(val owner: Opt[Class]) with // but this one must use the function argument instead of a lambda... "let {" + symbols.map(showSymbol).join(", ") + "}" + showRestBlock(rest) End() then "()" - _ then "" + b + _ then "" // removes trailing newline fun showRestBlock(b : Block): Str = From 992300430557b0d965b09e051d52004d3daa1d1c Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Tue, 12 May 2026 18:25:54 +0800 Subject: [PATCH 601/654] Fix name conflicts with previous stage module and missing redirection --- .../codegen/ReflectionInstrumenter.scala | 2 +- .../src/test/mlscript-compile/Block.mls | 17 ++-- .../mlscript-compile/staging/StagedClass.mls | 10 +++ .../staging/out/CombinedModule.mls | 10 +-- .../staging/out/ImportingFiles.mls | 2 +- .../staging/out/Inheritance.mls | 2 +- .../staging/out/LinkingGeneratedClasses.mls | 8 +- .../staging/out/SimpleStagedExample.mls | 2 +- .../staging/out/StagedClass.mls | 35 ++++++-- .../staging/out/Transform3D.mls | 90 +++++++++---------- .../test/mlscript/block-staging/Generate.mls | 28 ++++++ .../mlscript/block-staging/GenerateMult.mls | 3 +- .../test/mlscript/block-staging/ShapeProp.mls | 4 +- 13 files changed, 141 insertions(+), 72 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index da0212a81f..755ee41e81 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -493,7 +493,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // grab all defn seen so far // TODO: this could be reduced to only contain all the symbols used within the module val previousStageValues = if forClass then Nil else - scope.getBindings.collect[(DefinitionSymbol[? <: ModuleOrObjectDef | ClassDef], String)]({ + scope.getBindings.toList.collect[(DefinitionSymbol[? <: ModuleOrObjectDef | ClassDef], String)]({ // FIXME: this `toList` should be removed, but now we get something lost without it. case (m: ModuleOrObjectSymbol, s) if m != State.unitSymbol && m != ownerSym => (m, s) case (c: ClassSymbol, s) if !ctx.builtins.virtualClasses(c) && c != ownerSym => (c, s) }).map((key, nme) => diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 665e09f031..5629c193e0 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -31,6 +31,8 @@ module StagingUtility with fun getActualClass(c) = if not (c."class" is undefined) then c.class else c + fun legacyName(name) = name + "__Legacy" + fun getStagedClassInfo(c) = let actualClass = getActualClass(c) let clsName = actualClass.(Symbols.definitionMetadata).1 @@ -44,7 +46,7 @@ module StagingUtility with let info = getStagedClassInfo(c) info.0.(getCacheName(info.1, true)) -open StagingUtility {isStagedClass, getClassCache} +open StagingUtility {isStagedClass, getClassCache, legacyName} type Opt[A] = Option[A] @@ -152,8 +154,13 @@ class Printer(val owner: Opt[Symbol]) with else false fun showSymbol(s: Symbol) = - if s is ModuleSymbol | ConcreteClassSymbol and owner is Some(owner) and s.redirect and not isGeneratedStagedClass(s) - then owner.name + ".\"" + s.name + "$" + owner.name + "\"" + if s.redirect and not isGeneratedStagedClass(s) then + if owner is + Some(owner) and owner is ModuleSymbol then // TODO: this must be a top-level module symbol + legacyName(owner.name) + ".\"" + s.name + "$" + owner.name + "\"" + Some(owner) then + owner.name + ".\"" + s.name + "$" + owner.name + "\"" + else s.name.replaceAll("$", "_") else s.name.replaceAll("$", "_") fun showPath(p: Path): Str = @@ -306,7 +313,7 @@ let configs = fun codegen(name, cache, source, file) = let fullpath = path.join of process.cwd(), file - let code = "import \"" + source + "\"\n" + indent(cache.toString()) + let code = "import \"" + source + "\" as " + legacyName(name) + "\n" + indent(cache.toString()) if not fs.existsSync(fullpath) do fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") @@ -323,7 +330,7 @@ fun generateAll(name, file, ...modules) = let code = fold((res, p) => if p is [mod, name, source] then mod.propagate() - [res.0 + "import \"" + source + "\"\n", res.1 + indent(mod.("cache$" + name).toString()) + "\n"] + [res.0 + "import \"" + source + "\" as " + legacyName(name) + "\n", res.1 + indent(mod.("cache$" + name).toString()) + "\n"] )(["", "", ""], ...modules) let originData = fs.readFileSync(fullpath, "utf8") let newData = configs + code.0 + "\n" + "module " + name + " with" + indent("\n" + code.1) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls index 245f116545..ae11456ac2 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/StagedClass.mls @@ -1,3 +1,6 @@ +module Helper with + fun foo(x) = x + 1 + staged module StagedClass with class Foo class Bar(val x) with @@ -18,3 +21,10 @@ staged module StagedClass with fun g() = new D() staged class C() with fun h() = new D() + staged class X(val x) with + fun f(y) = if x < y then new Bar(x) else new Bar(y) + fun g(y) = Helper.foo(x + y) + fun h(y) = helpFoo(x + y) + fun xx() = new X(0).f(1) + fun helpFoo(x) = Helper.foo(x) + diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index e8e46d2b31..0d96c3ac75 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -1,6 +1,6 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) -import "../SimpleStagedExample.mjs" -import "../LinkingGeneratedClasses.mjs" +import "../SimpleStagedExample.mjs" as SimpleStagedExample__Legacy +import "../LinkingGeneratedClasses.mjs" as LinkingGeneratedClasses__Legacy module CombinedModule with module SimpleStagedExample with @@ -66,15 +66,15 @@ module CombinedModule with class D fun f() = let {obj_5} - obj_5 = new! LinkingGeneratedClasses."Function$$LinkingGeneratedClasses"() + obj_5 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() obj_5 fun g() = let {obj_7} - obj_7 = new! LinkingGeneratedClasses."Function$1$LinkingGeneratedClasses"() + obj_7 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() obj_7 fun test1 = let {obj_1} - obj_1 = new! LinkingGeneratedClasses."C$LinkingGeneratedClasses"() + obj_1 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() obj_1 fun test2 = let {obj_2} diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls index 4c5071ba79..c58fa0b455 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/ImportingFiles.mls @@ -1,5 +1,5 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) -import "../ImportingFiles.mls" +import "../ImportingFiles.mls" as ImportingFiles__Legacy module ImportingFiles with () fun f() = 21 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls index ce62729004..a82143b998 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls @@ -1,5 +1,5 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) -import "../Inheritance.mls" +import "../Inheritance.mls" as Inheritance__Legacy module Inheritance with class B(val x) with () diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 4caf2ab51b..0bb97aa4f7 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,18 +1,18 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) -import "../LinkingGeneratedClasses.mls" +import "../LinkingGeneratedClasses.mls" as LinkingGeneratedClasses__Legacy module LinkingGeneratedClasses with class D fun f() = let {obj_5} - obj_5 = new! LinkingGeneratedClasses."Function$$LinkingGeneratedClasses"() + obj_5 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() obj_5 fun g() = let {obj_7} - obj_7 = new! LinkingGeneratedClasses."Function$1$LinkingGeneratedClasses"() + obj_7 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() obj_7 fun test1 = let {obj_2} - obj_2 = new! LinkingGeneratedClasses."C$LinkingGeneratedClasses"() + obj_2 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() obj_2 fun test2 = let {obj_3} diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 0fec110675..86e54c1791 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -1,5 +1,5 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) -import "../SimpleStagedExample.mls" +import "../SimpleStagedExample.mls" as SimpleStagedExample__Legacy module SimpleStagedExample with class Bar(val x) with () diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index a64cc387ab..82f7e45e44 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -1,5 +1,5 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) -import "../StagedClass.mls" +import "../StagedClass.mls" as StagedClass__Legacy module StagedClass with class Foo class Bar(val x) with @@ -21,6 +21,26 @@ module StagedClass with let {obj_8} obj_8 = new! D() obj_8 + class X(val x) with + () + fun f(y) = + let {scrut} + scrut = <(x, y) + if scrut is + true then new StagedClass.Bar(x) + else new StagedClass.Bar(y) + fun g(y) = + let {tmp1} + tmp1 = x + y + X."Helper$X".foo(tmp1) + fun h(y) = + let {tmp2} + tmp2 = x + y + StagedClass.helpFoo(tmp2) + private fun f_X_sp_0(y) = + let {obj_11} + obj_11 = new! Bar(0) + obj_11 fun bar(b) = if b is true then Bar(0) @@ -30,7 +50,7 @@ module StagedClass with true then Baz(1) else new Baz(2) fun f(x) = - let {x__, y1, arg_Baz_0_, arg_Bar_0_} + let {x__, y4, arg_Baz_0_, arg_Bar_0_} if x is Foo then 0 Bar then @@ -39,8 +59,8 @@ module StagedClass with x__ Baz then arg_Baz_0_ = x.x - y1 = arg_Baz_0_ - y1 + 1 + y4 = arg_Baz_0_ + y4 + 1 else -1 fun foo() = let {obj_9} @@ -49,4 +69,9 @@ module StagedClass with fun g() = let {obj_10} obj_10 = new! D() - obj_10 \ No newline at end of file + obj_10 + fun helpFoo(x) = StagedClass__Legacy."Helper$StagedClass".foo(x) + fun xx() = + let {obj_12} + obj_12 = new! Bar(0) + obj_12 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 28eac624db..58107ef3e8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -1,5 +1,5 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) -import "../Transform3D.mls" +import "../Transform3D.mls" as Transform3D__Legacy module Transform3D with () fun ident(w) = @@ -27,7 +27,7 @@ module Transform3D with tmp5 = colY - j tmp6 = colY - j tmp7 = iter_Transform3D_sp_0(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, tmp5, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, tmp5, tmp7) tmp9 = j - 1 iterCol(tmp8, x, y, colX, colY, i, tmp9) fun iterID(m, w, i) = @@ -38,7 +38,7 @@ module Transform3D with else tmp17 = w - i tmp18 = w - i - tmp19 = Transform3D."Mx$Transform3D".set2D(m, tmp17, tmp18, 1) + tmp19 = Transform3D__Legacy."Mx$Transform3D".set2D(m, tmp17, tmp18, 1) tmp20 = i - 1 iterID(tmp19, w, tmp20) fun iterInit(m, r, c, i) = @@ -48,8 +48,8 @@ module Transform3D with true then m else tmp13 = r - i - tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tmp14) + tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, tmp13, tmp14) tmp16 = i - 1 iterInit(tmp15, r, c, tmp16) fun iterRow(m, x, y, rowX, colX, colY, i) = @@ -169,12 +169,12 @@ module Transform3D with tmp23 = update_Transform3D_sp_0(tmp22, 0, 3, dx) tmp24 = update_Transform3D_sp_1(tmp23, 1, 3, dy) update_Transform3D_sp_2(tmp24, 2, 3, dz) - fun update(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, i, j, v) + fun update(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, j, v) fun zeros(r, c) = let {m4, tmp21, tup_1} tmp21 = [] tup_1 = [] - m4 = Transform3D."Mx$Transform3D".init(r, tup_1) + m4 = Transform3D__Legacy."Mx$Transform3D".init(r, tup_1) iterInit(m4, r, c, r) private fun ident_Transform3D_sp_0(w) = let {tup_171, tup_172, tup_173, tup_174, tup_175} @@ -190,7 +190,7 @@ module Transform3D with tmp5 = 0 tmp6 = 0 tmp7 = iter_Transform3D_sp_1(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 3 iterCol_Transform3D_sp_1(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_1(m, x, y, colX, colY, i, j) = @@ -199,7 +199,7 @@ module Transform3D with tmp5 = 1 tmp6 = 1 tmp7 = iter_Transform3D_sp_3(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 1, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 1, tmp7) tmp9 = 2 iterCol_Transform3D_sp_2(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_10(m, x, y, colX, colY, i, j) = @@ -212,7 +212,7 @@ module Transform3D with tmp5 = 0 tmp6 = 0 tmp7 = iter_Transform3D_sp_21(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, 0, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 0, tmp7) tmp9 = 0 iterCol_Transform3D_sp_12(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_12(m, x, y, colX, colY, i, j) = @@ -225,7 +225,7 @@ module Transform3D with tmp5 = 0 tmp6 = 0 tmp7 = 1 - tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, 0, 1) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 3, 0, 1) tmp9 = 0 iterCol_Transform3D_sp_14(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_14(m, x, y, colX, colY, i, j) = @@ -241,7 +241,7 @@ module Transform3D with tmp5 = colY - j tmp6 = colY - j tmp7 = iter_Transform3D_sp_31(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, 0, tmp5, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 0, tmp5, tmp7) tmp9 = j - 1 iterCol_Transform3D_sp_15(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_16(m, x, y, colX, colY, i, j) = @@ -253,7 +253,7 @@ module Transform3D with tmp5 = colY - j tmp6 = colY - j tmp7 = iter_Transform3D_sp_36(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, tmp5, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, tmp5, tmp7) tmp9 = j - 1 iterCol_Transform3D_sp_16(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_17(m, x, y, colX, colY, i, j) = @@ -265,7 +265,7 @@ module Transform3D with tmp5 = colY - j tmp6 = colY - j tmp7 = iter_Transform3D_sp_41(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, 2, tmp5, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, tmp5, tmp7) tmp9 = j - 1 iterCol_Transform3D_sp_17(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_18(m, x, y, colX, colY, i, j) = @@ -277,7 +277,7 @@ module Transform3D with tmp5 = colY - j tmp6 = colY - j tmp7 = iter_Transform3D_sp_46(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, 3, tmp5, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 3, tmp5, tmp7) tmp9 = j - 1 iterCol_Transform3D_sp_18(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_2(m, x, y, colX, colY, i, j) = @@ -286,7 +286,7 @@ module Transform3D with tmp5 = 2 tmp6 = 2 tmp7 = iter_Transform3D_sp_5(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 2, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 2, tmp7) tmp9 = 1 iterCol_Transform3D_sp_3(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_3(m, x, y, colX, colY, i, j) = @@ -295,7 +295,7 @@ module Transform3D with tmp5 = 3 tmp6 = 3 tmp7 = iter_Transform3D_sp_7(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 3, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 3, tmp7) tmp9 = 0 iterCol_Transform3D_sp_4(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_4(m, x, y, colX, colY, i, j) = @@ -308,7 +308,7 @@ module Transform3D with tmp5 = 0 tmp6 = 0 tmp7 = iter_Transform3D_sp_9(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, i, 0, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 0 iterCol_Transform3D_sp_6(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_6(m, x, y, colX, colY, i, j) = @@ -326,7 +326,7 @@ module Transform3D with tup_503 = [0] tup_504 = [0] tup_505 = [tup_501, tup_502, tup_503, tup_504] - tmp8 = Transform3D."Mx$Transform3D".set2D(tup_505, 0, 0, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(tup_505, 0, 0, tmp7) tmp9 = 0 iterCol_Transform3D_sp_8(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_8(m, x, y, colX, colY, i, j) = @@ -339,7 +339,7 @@ module Transform3D with tmp5 = 0 tmp6 = 0 tmp7 = iter_Transform3D_sp_16(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D."Mx$Transform3D".set2D(m, 1, 0, tmp7) + tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 0, tmp7) tmp9 = 0 iterCol_Transform3D_sp_10(tmp8, x, y, colX, colY, i, tmp9) private fun iterID_Transform3D_sp_0(m, w, i) = @@ -418,37 +418,37 @@ module Transform3D with let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_511, tup_512, tup_513, tup_514, tup_515} scrut3 = false tmp13 = 0 - tmp14 = Transform3D."Mx$Transform3D".init(c, 0) + tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) tup_511 = [] tup_512 = [] tup_513 = [] tup_514 = [] tup_515 = [tup_511, tup_512, tup_513, tup_514] - tmp15 = Transform3D."Mx$Transform3D".set1D(tup_515, 0, tmp14) + tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(tup_515, 0, tmp14) tmp16 = 3 iterInit_Transform3D_sp_13(tmp15, r, c, tmp16) private fun iterInit_Transform3D_sp_13(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 1 - tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, 1, tmp14) + tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, 1, tmp14) tmp16 = 2 iterInit_Transform3D_sp_14(tmp15, r, c, tmp16) private fun iterInit_Transform3D_sp_14(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 2 - tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, 2, tmp14) + tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, 2, tmp14) tmp16 = 1 iterInit_Transform3D_sp_15(tmp15, r, c, tmp16) private fun iterInit_Transform3D_sp_15(m, r, c, i) = let {scrut3, tmp13, tmp14, tmp15, tmp16} scrut3 = false tmp13 = 3 - tmp14 = Transform3D."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D."Mx$Transform3D".set1D(m, 3, tmp14) + tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) + tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, 3, tmp14) tmp16 = 0 iterInit_Transform3D_sp_16(tmp15, r, c, tmp16) private fun iterInit_Transform3D_sp_16(m, r, c, i) = @@ -489,7 +489,7 @@ module Transform3D with tup_222 = [0, 0, 0, 0] tmp14 = tup_222 tup_223 = [0, 0, 0, 0] - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_223) + tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, tmp13, tup_223) tmp16 = i - 1 iterInit_Transform3D_sp_5(tmp15, r, c, tmp16) private fun iterInit_Transform3D_sp_6(m, r, c, i) = @@ -502,7 +502,7 @@ module Transform3D with tup_265 = [0] tmp14 = tup_265 tup_266 = [0] - tmp15 = Transform3D."Mx$Transform3D".set1D(m, tmp13, tup_266) + tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, tmp13, tup_266) tmp16 = i - 1 iterInit_Transform3D_sp_6(tmp15, r, c, tmp16) private fun iterInit_Transform3D_sp_7(m, r, c, i) = @@ -1170,11 +1170,11 @@ module Transform3D with tup_183 = [0, 0, 1, 0] tup_184 = [0, 0, 0, 1] tup_185 = [tup_181, tup_182, tup_183, tup_184] - Transform3D."Mx$Transform3D".set2D(tup_185, 0, 3, v) - private fun update_Transform3D_sp_1(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 3, v) - private fun update_Transform3D_sp_10(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 0, v) - private fun update_Transform3D_sp_11(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 1, v) - private fun update_Transform3D_sp_12(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 0, v) + Transform3D__Legacy."Mx$Transform3D".set2D(tup_185, 0, 3, v) + private fun update_Transform3D_sp_1(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 3, v) + private fun update_Transform3D_sp_10(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 0, v) + private fun update_Transform3D_sp_11(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 0, 1, v) + private fun update_Transform3D_sp_12(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 0, v) private fun update_Transform3D_sp_13(m, i, j, v) = let {tup_297, tup_298, tup_299, tup_300, tup_301} tup_297 = [1, 0, 0, 11] @@ -1223,7 +1223,7 @@ module Transform3D with tup_390 = [0, 0, 0, 1] tup_391 = [tup_387, tup_388, tup_389, tup_390] tup_391 - private fun update_Transform3D_sp_2(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 3, v) + private fun update_Transform3D_sp_2(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 3, v) private fun update_Transform3D_sp_3(m, i, j, v) = let {tup_191, tup_192, tup_193, tup_194, tup_195} tup_191 = [1, 0, 0, 0] @@ -1231,9 +1231,9 @@ module Transform3D with tup_193 = [0, 0, 1, 0] tup_194 = [0, 0, 0, 1] tup_195 = [tup_191, tup_192, tup_193, tup_194] - Transform3D."Mx$Transform3D".set2D(tup_195, 0, 0, v) - private fun update_Transform3D_sp_4(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 1, v) - private fun update_Transform3D_sp_5(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 2, v) + Transform3D__Legacy."Mx$Transform3D".set2D(tup_195, 0, 0, v) + private fun update_Transform3D_sp_4(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 1, v) + private fun update_Transform3D_sp_5(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 2, v) private fun update_Transform3D_sp_6(m, i, j, v) = let {tup_201, tup_202, tup_203, tup_204, tup_205} tup_201 = [1, 0, 0, 0] @@ -1241,10 +1241,10 @@ module Transform3D with tup_203 = [0, 0, 1, 0] tup_204 = [0, 0, 0, 1] tup_205 = [tup_201, tup_202, tup_203, tup_204] - Transform3D."Mx$Transform3D".set2D(tup_205, 1, 1, v) - private fun update_Transform3D_sp_7(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 1, 2, v) - private fun update_Transform3D_sp_8(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 2, 1, v) - private fun update_Transform3D_sp_9(m, i, j, v) = Transform3D."Mx$Transform3D".set2D(m, 0, 2, v) + Transform3D__Legacy."Mx$Transform3D".set2D(tup_205, 1, 1, v) + private fun update_Transform3D_sp_7(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 2, v) + private fun update_Transform3D_sp_8(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 1, v) + private fun update_Transform3D_sp_9(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 0, 2, v) private fun zeros_Transform3D_sp_0(r, c) = let {tup_86, tup_87, tup_88, tup_89, tup_90} tup_86 = [0, 0, 0, 0] @@ -1257,13 +1257,13 @@ module Transform3D with let {m4, tmp21, tup_221} tmp21 = [] tup_221 = [] - m4 = Transform3D."Mx$Transform3D".init(r, tup_221) + m4 = Transform3D__Legacy."Mx$Transform3D".init(r, tup_221) iterInit_Transform3D_sp_5(m4, r, c, r) private fun zeros_Transform3D_sp_2(r, c) = let {m4, tmp21, tup_264} tmp21 = [] tup_264 = [] - m4 = Transform3D."Mx$Transform3D".init(r, tup_264) + m4 = Transform3D__Legacy."Mx$Transform3D".init(r, tup_264) iterInit_Transform3D_sp_6(m4, r, c, r) private fun zeros_Transform3D_sp_3(r, c) = let {tup_491, tup_492, tup_493, tup_494, tup_495} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index ee127d0d79..3cee32ee25 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -104,6 +104,34 @@ if StagedClass.C().h() is else 0 //│ = 1 +:expect 3 +StagedClass.xx().f(1, 2) +//│ = 3 + + +StagedClass.X(1).f(0) +//│ = Bar(0) + + +:expect 1 +if StagedClass.X(1).f(0) is + StagedClass.Bar then 1 + else 0 +//│ = 1 + + +:fixme we need to support redirection in classes +:expect 2 +StagedClass.X(0).g(1) +//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'foo') +//│ ═══[RUNTIME ERROR] Expected: '2', got: 'undefined' + + +:expect 2 +StagedClass.X(0).h(1) +//│ = 2 + + import "../../mlscript-compile/staging/ImportingFiles.mls" gen(ImportingFiles, "ImportingFiles") diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls index 5ee77b8e78..2f21f1784a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls @@ -25,9 +25,8 @@ SimpleStagedExample.f(1, 5) SimpleStagedExample.fib(5) //│ = 5 -:fixme we want to link to the previous stage, not the current LinkingGeneratedClasses.test1 -//│ ═══[RUNTIME ERROR] TypeError: CombinedModule.LinkingGeneratedClasses.C$LinkingGeneratedClasses is not a constructor +//│ = C LinkingGeneratedClasses.test2 //│ = D diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 03c7bee6a5..c004f813aa 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -64,7 +64,7 @@ print(Simple."cache$Simple") //│ > private fun pyth_Simple_sp_0(x, y) = 20 //│ > private fun pyth_Simple_sp_1(x, y) = //│ > let {tmp6, tmp7} -//│ > tmp6 = Simple."NonStaged$Simple".sq(x) +//│ > tmp6 = Simple__Legacy."NonStaged$Simple".sq(x) //│ > tmp7 = 4 //│ > tmp6 + 4 @@ -130,7 +130,7 @@ print(If2."cache$If2") //│ > fun test() = 3 //│ > fun test2(dyn) = //│ > let {tmp2} -//│ > tmp2 = If2."C$If2"(dyn) +//│ > tmp2 = If2__Legacy."C$If2"(dyn) //│ > f_If2_sp_1(tmp2) //│ > fun test3() = 1 //│ > private fun f_If2_sp_0(x) = 3 From 7284a67c81b975bbf3b1bb9b4616c0e5dcd14d88 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 12 May 2026 23:07:05 +0800 Subject: [PATCH 602/654] limit class redirection to top-level classes --- .../scala/hkmc2/codegen/ReflectionInstrumenter.scala | 1 + .../test/mlscript-compile/staging/AdjacentClasses.mls | 4 ++++ .../mlscript-compile/staging/out/AdjacentClasses.mls | 11 +++++++++++ .../src/test/mlscript/block-staging/Generate.mls | 11 +++++++++++ 4 files changed, 27 insertions(+) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/AdjacentClasses.mls create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 755ee41e81..885fa119e2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -124,6 +124,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val rename = sym match case _ if pOpt.isDefined => false case _ if preserveName => scope.allocateOrGetName(sym); false + case c: ClassSymbol if c.defn.exists(_.owner.isDefined) => false // avoid name collision case _: TempSymbol | _: VarSymbol | _: BaseTypeSymbol => true // FIXME: there may be more types of symbols that need to be renamed during staging diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/AdjacentClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/AdjacentClasses.mls new file mode 100644 index 0000000000..54c9598cc7 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/AdjacentClasses.mls @@ -0,0 +1,4 @@ +staged module AdjacentClasses with + staged class C(val x) + staged class D() with + fun f() = new C(1) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls new file mode 100644 index 0000000000..bbc6aa4c72 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls @@ -0,0 +1,11 @@ +#config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) +import "../AdjacentClasses.mls" as AdjacentClasses__Legacy +module AdjacentClasses with + class C(val x) with + () + class D() with + () + fun f() = + let {obj_13} + obj_13 = new C(1) + obj_13 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 3cee32ee25..8b714293ee 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -137,3 +137,14 @@ import "../../mlscript-compile/staging/ImportingFiles.mls" gen(ImportingFiles, "ImportingFiles") import "../../mlscript-compile/staging/out/ImportingFiles.mls" +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. + +import "../../mlscript-compile/staging/AdjacentClasses.mls" + +gen(AdjacentClasses, "AdjacentClasses") + +:expect C(1) +AdjacentClasses.D().f() +//│ = C(1) From 751e92dd5e96dc1dc4326d9ca87f72af74f92ea8 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 12 May 2026 23:10:12 +0800 Subject: [PATCH 603/654] clean up codegen --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 3 ++- .../mlscript-compile/staging/out/CombinedModule.mls | 2 +- .../staging/out/LinkingGeneratedClasses.mls | 2 +- .../test/mlscript-compile/staging/out/StagedClass.mls | 10 +++++----- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 5629c193e0..d793b6ad0e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -206,7 +206,8 @@ class Printer(val owner: Opt[Symbol]) with else showPath(fun_) + "(" + showArgs(args) + ")" Instantiate(cls, args) then let classPath = showInstantiatePath(cls) - let prefix = if cls is ValueRef(ClassSymbol) and owner is Some(owner) then "new! " + classPath else "new " + classPath + // redirections must be dynamic selections, hence the use of new! is required + let prefix = if cls is ValueRef(cSym) and cSym.redirect and owner is Some(owner) then "new! " + classPath else "new " + classPath prefix + "(" + showArgs(args) + ")" Tuple(elems) then "[" + showArgs(elems) + "]" _ then "" diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index 0d96c3ac75..d937399f5e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -78,6 +78,6 @@ module CombinedModule with obj_1 fun test2 = let {obj_2} - obj_2 = new! D() + obj_2 = new D() obj_2 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 0bb97aa4f7..94bc5b5b5e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -16,5 +16,5 @@ module LinkingGeneratedClasses with obj_2 fun test2 = let {obj_3} - obj_3 = new! D() + obj_3 = new D() obj_3 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index 82f7e45e44..baf183b742 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -19,7 +19,7 @@ module StagedClass with () fun h() = let {obj_8} - obj_8 = new! D() + obj_8 = new D() obj_8 class X(val x) with () @@ -39,7 +39,7 @@ module StagedClass with StagedClass.helpFoo(tmp2) private fun f_X_sp_0(y) = let {obj_11} - obj_11 = new! Bar(0) + obj_11 = new Bar(0) obj_11 fun bar(b) = if b is @@ -64,14 +64,14 @@ module StagedClass with else -1 fun foo() = let {obj_9} - obj_9 = new! Foo() + obj_9 = new Foo() obj_9 fun g() = let {obj_10} - obj_10 = new! D() + obj_10 = new D() obj_10 fun helpFoo(x) = StagedClass__Legacy."Helper$StagedClass".foo(x) fun xx() = let {obj_12} - obj_12 = new! Bar(0) + obj_12 = new Bar(0) obj_12 \ No newline at end of file From 01a3bc9ad8c444f8f515f1ed102f01be39fc9b76 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 13 May 2026 01:03:28 +0800 Subject: [PATCH 604/654] WIP: fix tests --- .../main/scala/hkmc2/codegen/Lowering.scala | 5 +- .../codegen/ReflectionInstrumenter.scala | 6 +- .../test/mlscript/block-staging/Nested.mls | 92 +++++++++++++------ .../mlscript/block-staging/StageSymbols.mls | 92 +++++++++++++++++-- 4 files changed, 151 insertions(+), 44 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 3c8a508f04..2bd16abe55 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -280,16 +280,13 @@ class Lowering()(using Config, TL, Raise, State, Ctx): mod.classCompanion match case S(comp) => comp.defn.getOrElse(wat("Module companion without definition", mod.companion)) case N => - val stagedAnnots = mod.annotations.collect { - case Annot.Modifier(Keyword.`staged`) => Annot.Modifier(Keyword.`staged`) - } ClassDef.Plain(mod.owner, syntax.Cls, new ClassSymbol(Tree.DummyTypeDef(syntax.Cls), mod.sym.id), mod.bsym, Nil, N, ObjBody(Blk(Nil, UnitVal())), S(mod.sym), - stagedAnnots, + Nil, ) case _ => _defn reportAnnotations(defn, defn.extraAnnotations) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index ad19d8239b..08a7bf8cad 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -436,7 +436,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S (helperMethods.flatten, b => Begin(cacheDecl(generatorMapDecl(End())), debugCont(b))) override def applyObjBody(companion: ClsLikeBody) = - if companion.isStaged then + if companion.isStaged then // staged modules val (sym, ctor, methods) = (companion.isym, companion.ctor, companion.methods) // avoid name clash of cache and generator map for derived staged classes @@ -455,7 +455,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S override def applyBlock(b: Block): Block = b match // staged classes - case Define(defn: ClsLikeDefn, rest) if defn.isym.defn.exists(_.hasStagedModifier.isDefined) => + case Define(defn: ClsLikeDefn, rest) if defn.isStaged => if !defn.privateFields.isEmpty then raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) return End() @@ -495,7 +495,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val newModule = defn.copy(sym = sym, companion = S(newCompanion))(defn.configOverride, defn.annotations.filter: case Annot.Modifier(Keyword.`staged`) => false case _ => true) - Define(newModule, rest) + Define(newModule, applyBlock(rest)) case b => super.applyBlock(b) def mkDefnMap(b: Block): Unit = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index 28cf032982..851810beb2 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -17,52 +17,84 @@ staged module LiftedNested with fun g() = 1 g() //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let g⁰, LiftedNested⁰; +//│ let g⁰, LiftedNested⁰, symbolMap, tmp, tmp1, tmp2; +//│ set tmp = new globalThis⁰.this.Map﹖(); +//│ set tmp1 = new globalThis⁰.this.Map﹖(); +//│ set tmp2 = new Block⁰.SymbolMap﹖(tmp, tmp1); +//│ set symbolMap = tmp2; //│ define g⁰ as staged fun g¹() { //│ return 1 //│ }; //│ define LiftedNested⁰ as class LiftedNested¹ //│ staged module LiftedNested² { //│ constructor { -//│ let tmp, tmp1, tmp2, tmp3; -//│ set tmp2 = LiftedNested².this.ctor$_instr﹖(); -//│ set tmp3 = Block⁰.printCode﹖(tmp2); -//│ set tmp = LiftedNested².this.f_instr﹖(); -//│ set tmp1 = Block⁰.printCode﹖(tmp); -//│ runtime⁰.Unit﹖ +//│ let tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, sym, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16; +//│ begin +//│ set tmp6 = LiftedNested².this.f_instr﹖(); +//│ set tmp7 = [tmp6, 1]; +//│ set tmp8 = ["f", tmp7]; +//│ set tmp9 = [tmp8]; +//│ set tmp10 = new globalThis⁰.this.Map﹖(tmp9); +//│ set sym = Block⁰.ModuleSymbol﹖("LiftedNested", LiftedNested²); +//│ set tmp11 = symbolMap.checkMap﹖("moduleMap", LiftedNested², sym); +//│ set tmp12 = new SpecializeHelpers⁰.FunCache﹖(tmp11, tmp10); +//│ define cache$LiftedNested⁰ as val cache$LiftedNested¹ = tmp12; +//│ set tmp3 = ["f", LiftedNested².this.f_gen﹖]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = new globalThis⁰.this.Map﹖(tmp4); +//│ define generatorMap$LiftedNested⁰ as val generatorMap$LiftedNested¹ = tmp5; +//│ end; +//│ set tmp13 = LiftedNested².this.cache$LiftedNested﹖.toString﹖(); +//│ set tmp14 = globalThis⁰.this.console﹖.log﹖(tmp13); +//│ set tmp15 = globalThis⁰.this.console﹖.log﹖(LiftedNested².this.generatorMap$LiftedNested﹖); +//│ set tmp16 = globalThis⁰.this.console﹖.log﹖(symbolMap); +//│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { -//│ let end, tmp, tmp1, tmp2, tmp3; +//│ let sym, tmp3, tmp4, end, tmp5; +//│ set sym = Block⁰.Symbol﹖("ctor$"); +//│ set tmp3 = []; +//│ set tmp4 = [tmp3]; //│ set end = Block⁰.End﹖(); -//│ set tmp = Block⁰.Symbol﹖("ctor$"); -//│ set tmp1 = []; -//│ set tmp2 = [tmp1]; -//│ set tmp3 = Block⁰.FunDefn﹖(tmp, tmp2, end, true); -//│ return tmp3 -//│ } -//│ method f⁰ = fun f¹() { -//│ return g¹() +//│ set tmp5 = Block⁰.FunDefn﹖(sym, tmp4, end); +//│ return tmp5 //│ } //│ method f_instr⁰ = fun f_instr¹() { -//│ let sym, var1, tmp, app, return1, tmp1, tmp2, tmp3, tmp4; -//│ set sym = Block⁰.Symbol﹖("g"); -//│ set var1 = Block⁰.ValueRef﹖(sym); -//│ set tmp = []; -//│ set app = Block⁰.Call﹖(var1, tmp); +//│ let sym, tmp3, tmp4, sym1, var1, tmp5, app, return1, tmp6; +//│ set sym = Block⁰.Symbol﹖("f"); +//│ set tmp3 = []; +//│ set tmp4 = [tmp3]; +//│ set sym1 = Block⁰.Symbol﹖("g"); +//│ set var1 = Block⁰.ValueRef﹖(sym1); +//│ set tmp5 = []; +//│ set app = Block⁰.Call﹖(var1, tmp5); //│ set return1 = Block⁰.Return﹖(app, false); -//│ set tmp1 = Block⁰.Symbol﹖("f"); -//│ set tmp2 = []; -//│ set tmp3 = [tmp2]; -//│ set tmp4 = Block⁰.FunDefn﹖(tmp1, tmp3, return1, true); -//│ return tmp4 +//│ set tmp6 = Block⁰.FunDefn﹖(sym, tmp4, return1); +//│ return tmp6 +//│ } +//│ method f_gen⁰ = fun f_gen¹() { +//│ let tmp3, tmp4, tmp5; +//│ set tmp3 = []; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = SpecializeHelpers⁰.specialize﹖(LiftedNested².this.cache$LiftedNested﹖, "f", LiftedNested².this.f_instr﹖, tmp4); +//│ return tmp5 //│ } //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > fun ctor_() = () -//│ > fun f() = g() - - +//│ > module LiftedNested with +//│ > () +//│ > fun f() = g() +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class LiftedNested] { +//│ > 'cache$LiftedNested': [FunCache], +//│ > 'generatorMap$LiftedNested': [Map] +//│ > } => ModuleSymbol { name: 'LiftedNested', value: [Function] } +//│ > } +//│ > } staged module LiftedLambda with fun foo(x) = y => x + y //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 186d59d539..6cdbdb2039 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -193,20 +193,80 @@ staged module M with staged module M with fun f() = x => x fun g()() = 1 +//│ > class Function$ extends globalThis.Function() with +//│ > () +//│ > fun call() = lambda_() +//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } +//│ > class Function$1 extends globalThis.Function() with +//│ > () +//│ > fun call(x) = lambda(x) +//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > SymbolMap { +//│ > classMap: Map(3) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [class Function$1 extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$1', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } //│ > module M with //│ > () //│ > fun f() = //│ > let {tmp} -//│ > tmp = new Function_ +//│ > tmp = new Function_1 //│ > tmp //│ > fun g() = //│ > let {tmp1} -//│ > tmp1 = new Function_1 +//│ > tmp1 = new Function_ //│ > tmp1 //│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } //│ > SymbolMap { -//│ > classMap: Map(2) { -//│ > [class Function$1 extends Function] { +//│ > classMap: Map(3) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } => ConcreteClassSymbol { //│ > name: 'Function$', @@ -214,7 +274,15 @@ staged module M with //│ > paramsOpt: None {}, //│ > auxParams: [] //│ > }, -//│ > [class Function$ extends Function] { +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [class Function$1 extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], //│ > Symbol(mlscript.definitionMetadata): [Array] //│ > } => ConcreteClassSymbol { //│ > name: 'Function$1', @@ -232,8 +300,18 @@ staged module M with :noModuleCheck let x = M."f_instr"().body.rest.rhs.cls.l.value let y = M."g_instr"().body.rest.rhs.cls.l.value -//│ x = class Function$ -//│ y = class Function$ +//│ x = class Function$ { +//│ class$cache$Function$: class Function$1 extends globalThis.Function() with \ +//│ () \ +//│ fun call(x) = lambda(x), +//│ class$generatorMap$Function$: Map(1) {"call" => fun call_gen} +//│ } +//│ y = class Function$ { +//│ class$cache$Function$: class Function$ extends globalThis.Function() with \ +//│ () \ +//│ fun call() = lambda_(), +//│ class$generatorMap$Function$: Map(1) {"call" => fun call_gen} +//│ } staged module Shadowing with fun f(x, x) = x From 03f9b42f93c95e66b6a423617e8d6c02cc4dd919 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Fri, 15 May 2026 15:06:32 +0800 Subject: [PATCH 605/654] Rerun test --- hkmc2/shared/src/test/mlscript/block-staging/Generate.mls | 3 --- 1 file changed, 3 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 8b714293ee..5590fd10f5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -137,9 +137,6 @@ import "../../mlscript-compile/staging/ImportingFiles.mls" gen(ImportingFiles, "ImportingFiles") import "../../mlscript-compile/staging/out/ImportingFiles.mls" -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. import "../../mlscript-compile/staging/AdjacentClasses.mls" From 9bc976b4c983d640ca6271593c9103fe81c57809 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Fri, 15 May 2026 15:30:24 +0800 Subject: [PATCH 606/654] Fix code printing --- .../scala/hkmc2/codegen/ReflectionInstrumenter.scala | 8 +------- hkmc2/shared/src/test/mlscript-compile/Block.mls | 10 +++++++++- .../mlscript-compile/staging/SimpleStagedExample.mls | 2 ++ .../mlscript-compile/staging/out/CombinedModule.mls | 1 + .../staging/out/SimpleStagedExample.mls | 1 + .../src/test/mlscript/block-staging/Generate.mls | 5 +++++ 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 885fa119e2..b87f20873e 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -196,12 +196,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S dfltStaged: (dflt, ctx) => blockCtor("Match", Ls(x, arms, dflt, e), symName)(k(_, ctx)) - private def desugarEscaping(l: Value.Lit) = l.lit match - case s: Tree.StrLit => - val desugard = s.idStr - Value.Lit(Tree.StrLit(desugard.substring(1, desugard.length() - 1))) - case _ => l - // transformations of Block def transformPath(p: Path)(using ctx: Context)(k: (Path, Context) => Block): Block = @@ -212,7 +206,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformSymbol(disamb.getOrElse(l)): (sym, ctx) => blockCtor("ValueRef", Ls(sym), "var")(k(_, ctx)) case l: Value.Lit => - blockCtor("ValueLit", Ls(desugarEscaping(l)), "lit")(k(_, ctx)) + blockCtor("ValueLit", Ls(l), "lit")(k(_, ctx)) case s @ Select(p, Tree.Ident(name)) => transformPath(p): (x, ctx) => s.symbol match diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d793b6ad0e..8a38d13f7a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -142,7 +142,13 @@ class Printer(val owner: Opt[Symbol]) with if l is undefined then "undefined" null then "null" - Str then "\"" + l.toString() + "\"" + Str then "\"" + l + .replaceAll("\\", "\\\\") + .replaceAll("\"", "\\\"") + .replaceAll("\n", "\\n") + .replaceAll("\t", "\\t") + .replaceAll("\r", "\\r") + + "\"" else l.toString() fun showDefnSymbol(s: Symbol) = @@ -199,6 +205,8 @@ class Printer(val owner: Opt[Symbol]) with if r is Path then showPath(r) Call(fun_, args) and + args is [arg] and fun_ is + ValueRef(Symbol("!")) then "not " + showArg(arg) // use infix to avoid parsing + and - as taking a unary argument args is [lhs, rhs] and fun_ is ValueRef(Symbol("+")) then showArg(lhs) + " + " + showArg(rhs) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls index c52755ed6a..906045beae 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/SimpleStagedExample.mls @@ -22,5 +22,7 @@ staged module SimpleStagedExample with let y = if x is 0 then 1 else 0 let z = if y is Num then 0 else 1 y + z + fun bazbaz(x) = not x + diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index d937399f5e..554345ad3c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -22,6 +22,7 @@ module CombinedModule with else x.bar() private fun foo_Foo_sp_0(b) = 2 fun baz() = 2 + fun bazbaz(x) = not x fun f(x, y) = x + y fun fib(n) = let {n1, tmp2, tmp3, tmp4, tmp5} diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index 86e54c1791..a0105adf9a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -19,6 +19,7 @@ module SimpleStagedExample with else x.bar() private fun foo_Foo_sp_0(b) = 2 fun baz() = 2 + fun bazbaz(x) = not x fun f(x, y) = x + y fun fib(n) = let {n1, tmp2, tmp3, tmp4, tmp5} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 5590fd10f5..0c9387cc62 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -30,6 +30,11 @@ SimpleStagedExample.baz() //│ = 2 +:expect false +SimpleStagedExample.bazbaz(true) +//│ = false + + import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" gen(LinkingGeneratedClasses, "LinkingGeneratedClasses") From 19c6e6080ca2372595963fde63c7e67e2321aba4 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 16 May 2026 13:50:23 +0800 Subject: [PATCH 607/654] cleanup --- .../codegen/ReflectionInstrumenter.scala | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index b87f20873e..be74526206 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -23,6 +23,9 @@ case class Context(cache: HashMap[Path | Symbol, Path], allowMultipleParamList: def addCache(p: Path | Symbol, v: Path): Context = Context(cache.clone() += (p -> v), allowMultipleParamList) def delCache(p: Path | Symbol): Context = Context(cache.clone() -= p, allowMultipleParamList) +object Context: + def apply(allowMultipleParamList: Bool): Context = Context(new HashMap(), allowMultipleParamList) + extension [A, B](ls: Iterable[(A => B) => B]) def collectApply(f: Ls[A] => B): B = // defer applying k while prepending new elements to the list @@ -114,12 +117,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // preserveName overrides the renaming of symbols within the function // if sym is ClassSymbol, we may need pOpt to link to the path pointing to the value of the symbol - def transformSymbol(sym: Symbol, preserveName: Bool = false, pOpt: Option[Path] = N, symName: Str = "sym")(using stagingCtx: Context)(k: (Path, Context) => Block): Block = + def transformSymbol(sym: Symbol, preserveName: Bool = false, pOpt: Option[Path] = N, symName: Str = "sym")(using ctx: Context)(k: (Path, Context) => Block): Block = def cachedK(p: Path, ctx: Context) = k(p, ctx.addCache(sym, p)) def checkMap(mapType: Str, key: Path, p: Path, ctx: Context) = call(State.runtimeSymbol.asPath.selSN("SymbolMap").selSN(mapType), Ls(key, p))(cachedK(_, ctx)) - stagingCtx.getCache(sym).map(cachedK(_, stagingCtx)).getOrElse: + ctx.getCache(sym).map(cachedK(_, ctx)).getOrElse: // add name to scope to avoid shadowing by other symbols val rename = sym match case _ if pOpt.isDefined => false @@ -140,9 +143,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // no need to perform caching for redirecting call transformSymbol(t.defn.get.sym.asClsOrMod.get, rename, pOpt, symName)(k) case _: NoSymbol => - blockCtor("NoSymbol", Nil, symName)(cachedK(_, stagingCtx)) - case clsSym: ClassSymbol if ctx.builtins.virtualClasses(clsSym) => - blockCtor("VirtualClassSymbol", Ls(toValue(name)), symName)(checkMap("checkClassMap", toValue(name), _, stagingCtx)) + blockCtor("NoSymbol", Nil, symName)(cachedK(_, ctx)) + case clsSym: ClassSymbol if Elaborator.ctx.builtins.virtualClasses(clsSym) => + blockCtor("VirtualClassSymbol", Ls(toValue(name)), symName)(checkMap("checkClassMap", toValue(name), _, ctx)) case baseSym: BaseTypeSymbol => val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) @@ -164,9 +167,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S tuple(auxParams): auxParams => blockCtor("ConcreteClassSymbol", Ls(toValue(name), path, paramsOpt, auxParams, toValue(rename)), symName)(checkMap("checkClassMap", path, _, ctx)) case _: ModuleOrObjectSymbol => - blockCtor("ModuleSymbol", Ls(toValue(name), path, toValue(rename)), symName)(checkMap("checkModuleMap", path, _, stagingCtx)) + blockCtor("ModuleSymbol", Ls(toValue(name), path, toValue(rename)), symName)(checkMap("checkModuleMap", path, _, ctx)) case _ => - blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, stagingCtx)) + blockCtor("Symbol", Ls(toValue(name)), symName)(cachedK(_, ctx)) def transformOption[A](xOpt: Opt[A], f: A => ((Path, Context) => Block) => Block)(using Context)(k: (Path, Context) => Block): Block = xOpt match case S(x) => f(x)((p, ctx) => optionSome(p)(k(_, ctx))) @@ -362,7 +365,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformBlock(f.body)(using ctx): (body, ctx) => blockCtor("FunDefn", Ls(sym, paramList, body))(k(_, ctx)) - def stageMethod(f: FunDefn, ctx: Context = Context(new HashMap())): FunDefn = + def stageMethod(f: FunDefn, ctx: Context = Context(false)): FunDefn = val stageSymName = f.sym.nme + "_instr" val stageSym = BlockMemberSymbol(stageSymName, Nil, false) @@ -405,7 +408,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val ns = s.map(applyLocal) if (nb is bd) && (s is ns) then b else Scoped(ns, nb) case _ => applySubBlock(b) - stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(new HashMap(), true)) + stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(true)) def stageMethods(ownerSym: DefinitionSymbol[? <: ClassLikeDef], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str, nestedPropagates: Ls[Path])(methods: Ls[FunDefn]): (FunDefn, Ls[FunDefn], Block => Block) = @@ -444,7 +447,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def cacheDecl(rest: Block) = val pOpt = if !forClass then S(Value.Ref(ownerSym)) else N - transformSymbol(ownerSym, pOpt = pOpt)(using Context(new HashMap())): (stagedSym, _) => + transformSymbol(ownerSym, pOpt = pOpt)(using Context(false)): (stagedSym, _) => ctor(State.globalThisSymbol.asPath.selSN("Map"), Nil): cacheMap => reservedNameValues.collectApply: defs => tuple(defs): reservedNames => From 1e9f1826ac1e57c5d6808f3ceb686b759b451dcd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 16 May 2026 23:58:04 +0800 Subject: [PATCH 608/654] group config into a class --- .../codegen/ReflectionInstrumenter.scala | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index be74526206..0d5d7d4e87 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -409,9 +409,15 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S if (nb is bd) && (s is ns) then b else Scoped(ns, nb) case _ => applySubBlock(b) stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(true)) - - def stageMethods(ownerSym: DefinitionSymbol[? <: ClassLikeDef], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str, nestedPropagates: Ls[Path])(methods: Ls[FunDefn]): (FunDefn, Ls[FunDefn], Block => Block) = + case class StagingCfg(ownerSym: DefinitionSymbol[? <: ClassLikeDef], modSym: InnerSymbol, nestedPropagates: Ls[Path]): + val forClass = ownerSym != modSym + val suffix = "$" + scope.allocateOrGetName(ownerSym) + val cacheNme = (if forClass then "class$" else "") + "cache" + suffix + val generatorMapNme = (if forClass then "class$" else "") + "generatorMap" + suffix + + def stageMethods(cfg: StagingCfg)(methods: Ls[FunDefn]): (FunDefn, Ls[FunDefn], Block => Block) = + import cfg._ // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol(cacheNme, Nil, true) val cacheTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(cacheNme)) @@ -530,16 +536,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val (sym, ctor, methods) = (companion.isym, companion.ctor, companion.methods) // avoid name clash of cache and generator map for derived staged classes val modSym = sym - val suffix = "$" + scope.allocateOrGetName(sym) - val cacheNme = "cache" + suffix - val generatorMapNme = "generatorMap" + suffix val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(PlainParamList(Nil)), ctor)(N, Nil) val newCtorFun = stageCtor(ctorFun) val nestedPropagates = defn.body.blk.stats.collect: case cls: ClassDef if cls.hasStagedModifier.isDefined => modSym.asPath.sel(Tree.Ident(cls.sym.nme), cls.sym) - - val (entryFun, newMethods, cont) = stageMethods(companion.isym, modSym, false, cacheNme, generatorMapNme, nestedPropagates)(methods) + + val cfg = new StagingCfg(companion.isym, modSym, nestedPropagates) + val (entryFun, newMethods, cont) = stageMethods(cfg)(methods) companion.copy( methods = entryFun :: newCtorFun :: newMethods, @@ -572,16 +576,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S (defn.sym, defn.ctor, ctorParams, defn.methods) val modSym = companion.isym - val suffix = "$" + scope.allocateOrGetName(defn.isym) - val cacheNme = "class$cache" + suffix - val generatorMapNme = "class$generatorMap" + suffix val preCtorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("preCtor$", Nil, false), ctorParams, preCtor)(N, Nil) val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("class$ctor$", Nil, false), ctorParams, ctor)(N, Nil) val newPreCtorFun = stageCtor(preCtorFun) val newCtorFun = stageCtor(ctorFun) - val (entryFun, newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme, Nil)(methods) + val cfg = new StagingCfg(defn.isym, modSym, Nil) + val (entryFun, newMethods, cont) = stageMethods(cfg)(methods) val (companionEntryFun, companionMethods) = companion.methods.partition(_.sym.nme == "generate") val combinedEntryFun: FunDefn = companionEntryFun match case Nil => entryFun From a9603629732239567bd4a0619dbf83a449ed673e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 17 May 2026 00:00:44 +0800 Subject: [PATCH 609/654] nit --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 0d5d7d4e87..10ec81fd76 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -499,7 +499,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val previousStageValues = if forClass then Nil else scope.getBindings.toList.collect[(DefinitionSymbol[? <: ModuleOrObjectDef | ClassDef], String)]({ // FIXME: this `toList` should be removed, but now we get something lost without it. case (m: ModuleOrObjectSymbol, s) if m != State.unitSymbol && m != ownerSym => (m, s) - case (c: ClassSymbol, s) if !ctx.builtins.virtualClasses(c) && c != ownerSym => (c, s) + case (c: ClassSymbol, s) if !Elaborator.ctx.builtins.virtualClasses(c) && c != ownerSym => (c, s) }).map((key, nme) => val name = nme + "$" + scope.allocateOrGetName(ownerSym) val tsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(name)) From 5379002ef982b2158266cabf00fb55008b8b7186 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 17 May 2026 01:17:59 +0800 Subject: [PATCH 610/654] adjust printing to print referenced top-level staged classes --- .../codegen/ReflectionInstrumenter.scala | 36 +++++++++++++++---- .../src/test/mlscript-compile/Block.mls | 19 +++++++--- .../staging/LinkingGeneratedClasses.mls | 5 ++- .../staging/out/CombinedModule.mls | 12 ++++++- .../staging/out/Inheritance.mls | 1 + .../staging/out/LinkingGeneratedClasses.mls | 12 ++++++- .../staging/out/Transform3D.mls | 1 + .../test/mlscript/block-staging/Generate.mls | 6 +++- .../mlscript/block-staging/GenerateMult.mls | 2 +- .../test/mlscript/block-staging/Nested.mls | 15 ++++---- .../test/mlscript/block-staging/ShapeProp.mls | 14 ++++---- .../test/mlscript/block-staging/Syntax.mls | 9 ++--- 12 files changed, 98 insertions(+), 34 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 10ec81fd76..ce5e95da46 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -4,7 +4,7 @@ package codegen import utils.* import hkmc2.Message.MessageContext -import scala.collection.mutable.HashMap +import scala.collection.mutable.{HashMap, HashSet} import scala.util.chaining.* import mlscript.utils.*, shorthands.* @@ -410,7 +410,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case _ => applySubBlock(b) stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(true)) - case class StagingCfg(ownerSym: DefinitionSymbol[? <: ClassLikeDef], modSym: InnerSymbol, nestedPropagates: Ls[Path]): + case class StagingCfg(ownerSym: DefinitionSymbol[? <: ClassLikeDef], modSym: InnerSymbol, nestedPropagates: Ls[Path], codegenClasses: Ls[BlockMemberSymbol]): val forClass = ownerSym != modSym val suffix = "$" + scope.allocateOrGetName(ownerSym) val cacheNme = (if forClass then "class$" else "") + "cache" + suffix @@ -485,8 +485,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, body)(N, Nil) def genOutputBody(sourceSym: VarSymbol, psym: VarSymbol) = - call(modSym.asPath.selSN(propFunDef.sym.nme), Nil, true, "tmp")(_ => - call(blockMod("codegen"), toValue(modSym.nme) :: cachePath :: sourceSym.asPath :: psym.asPath :: Nil, true, "tmp")(_ => End())) + call(modSym.asPath.selSN(propFunDef.sym.nme), Nil, true, "tmp"): _ => + tuple(codegenClasses): codegenClasses => + call(blockMod("codegen"), Ls(toValue(modSym.nme), cachePath, sourceSym, psym, codegenClasses), true, "tmp")(_ => End()) val entryFunDef = val sym = BlockMemberSymbol("generate", Nil) val sourceSym = VarSymbol(Ident("source")) @@ -494,6 +495,13 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val params = PlainParamList(Param.simple(sourceSym) :: Param.simple(psym) :: Nil) FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, genOutputBody(sourceSym, psym))(N, Nil) + val toCodeDef = + val sym = BlockMemberSymbol("toCode", Nil) + val params = PlainParamList(Nil) + val body = tuple(codegenClasses): codegenClasses => + call(blockMod("toCode"), Ls(toValue(modSym.nme), cachePath, codegenClasses), true, "tmp")(p => Return(p, false)) + FunDefn.withFreshSymbol(S(modSym), sym, params :: Nil, body)(N, Nil) + // grab all defn seen so far // TODO: this could be reduced to only contain all the symbols used within the module val previousStageValues = if forClass then Nil else @@ -528,7 +536,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S Define(ValDefn(tsym, sym, key)(N, Nil), acc) }) - (entryFunDef, propFunDef :: stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(previousStageDecl(b)))) + (entryFunDef, propFunDef :: toCodeDef :: stagedMethods ++ generatorMethods, b => cacheDecl(generatorMapDecl(previousStageDecl(b)))) override def applyObjBody(companion: ClsLikeBody) = companion.isym.defn match // staged modules @@ -538,11 +546,25 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val modSym = sym val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(PlainParamList(Nil)), ctor)(N, Nil) val newCtorFun = stageCtor(ctorFun) + + // print top-level staged classes to be printed in the next stage + class UsedStagedClassesCollector extends BlockTraverser: + val used: HashSet[BlockMemberSymbol] = new HashSet() + override def applySymbol(sym: Symbol) = sym match + case c: ClassSymbol if c.defn.exists(defn => defn.hasStagedModifier.isDefined && defn.owner.isEmpty) => + println(c) + used += c.defn.get.bsym + case _ => () + val collector = (new UsedStagedClassesCollector) + collector.applyCompanionModule(companion) + val codegenClasses = collector.used + println(codegenClasses) + val nestedPropagates = defn.body.blk.stats.collect: case cls: ClassDef if cls.hasStagedModifier.isDefined => modSym.asPath.sel(Tree.Ident(cls.sym.nme), cls.sym) - val cfg = new StagingCfg(companion.isym, modSym, nestedPropagates) + val cfg = new StagingCfg(companion.isym, modSym, nestedPropagates, codegenClasses.toList) val (entryFun, newMethods, cont) = stageMethods(cfg)(methods) companion.copy( @@ -582,7 +604,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val newPreCtorFun = stageCtor(preCtorFun) val newCtorFun = stageCtor(ctorFun) - val cfg = new StagingCfg(defn.isym, modSym, Nil) + val cfg = new StagingCfg(defn.isym, modSym, Nil, Nil) val (entryFun, newMethods, cont) = stageMethods(cfg)(methods) val (companionEntryFun, companionMethods) = companion.methods.partition(_.sym.nme == "generate") val combinedEntryFun: FunDefn = companionEntryFun match diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 8a38d13f7a..7119b2228f 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -215,7 +215,9 @@ class Printer(val owner: Opt[Symbol]) with Instantiate(cls, args) then let classPath = showInstantiatePath(cls) // redirections must be dynamic selections, hence the use of new! is required - let prefix = if cls is ValueRef(cSym) and cSym.redirect and owner is Some(owner) then "new! " + classPath else "new " + classPath + let prefix = if cls is ValueRef(cSym) and cSym.redirect and owner is Some(owner) and not isGeneratedStagedClass(cSym) + then "new! " + classPath + else "new " + classPath prefix + "(" + showArgs(args) + ")" Tuple(elems) then "[" + showArgs(elems) + "]" _ then "" @@ -320,9 +322,16 @@ let configs = ] "#config(" + options.join(", ") + ")\n" -fun codegen(name, cache, source, file) = +fun mkImport(source, name) = + "import \"" + source + "\" as " + legacyName(name) + +fun toCode(name, cache, usedStagedClasses) = + let prefix = usedStagedClasses.map(getClassCache(_).toString() + "\n") + prefix + indent(cache.toString()) + +fun codegen(name, cache, source, file, usedStagedClasses) = let fullpath = path.join of process.cwd(), file - let code = "import \"" + source + "\" as " + legacyName(name) + "\n" + indent(cache.toString()) + let code = mkImport(source, name) + "\n" + toCode(name, cache, usedStagedClasses) if not fs.existsSync(fullpath) do fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") @@ -339,8 +348,8 @@ fun generateAll(name, file, ...modules) = let code = fold((res, p) => if p is [mod, name, source] then mod.propagate() - [res.0 + "import \"" + source + "\" as " + legacyName(name) + "\n", res.1 + indent(mod.("cache$" + name).toString()) + "\n"] - )(["", "", ""], ...modules) + [res.0 + mkImport(source, name) + "\n", res.1 + mod.toCode() + "\n"] + )(["", ""], ...modules) let originData = fs.readFileSync(fullpath, "utf8") let newData = configs + code.0 + "\n" + "module " + name + " with" + indent("\n" + code.1) if newData != originData do diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls index 45705e7307..8cafed1953 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/LinkingGeneratedClasses.mls @@ -1,9 +1,12 @@ #config(funcToCls: true) class C +staged class S with + fun f(x) = x staged module LinkingGeneratedClasses with class D fun test1 = new C - fun test2 = new D + fun test2(x) = if x then (new S).f(1) else new S + fun test3 = new D fun f() = x => x fun g() = x => x + 2 diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index 554345ad3c..e831ab6cfa 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -63,6 +63,9 @@ module CombinedModule with private fun fib_SimpleStagedExample_sp_7(n) = 2 private fun fib_SimpleStagedExample_sp_8(n) = 1 private fun fib_SimpleStagedExample_sp_9(n) = 1 + class S with + () + private fun f_S_sp_0(x) = 1 module LinkingGeneratedClasses with class D fun f() = @@ -77,7 +80,14 @@ module CombinedModule with let {obj_1} obj_1 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() obj_1 - fun test2 = + fun test2(x) = + let {tmp} + if x is + true then + tmp = new S() + tmp.f_S_sp_0(1) + else new S() + fun test3 = let {obj_2} obj_2 = new D() obj_2 diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls index a82143b998..8429a0b4e2 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls @@ -1,5 +1,6 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../Inheritance.mls" as Inheritance__Legacy + module Inheritance with class B(val x) with () diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 94bc5b5b5e..47ecd40b8a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -1,5 +1,8 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../LinkingGeneratedClasses.mls" as LinkingGeneratedClasses__Legacy +class S with + () + private fun f_S_sp_0(x) = 1 module LinkingGeneratedClasses with class D fun f() = @@ -14,7 +17,14 @@ module LinkingGeneratedClasses with let {obj_2} obj_2 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() obj_2 - fun test2 = + fun test2(x) = + let {tmp} + if x is + true then + tmp = new S() + tmp.f_S_sp_0(1) + else new S() + fun test3 = let {obj_3} obj_3 = new D() obj_3 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 58107ef3e8..eafcc73689 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -1,5 +1,6 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../Transform3D.mls" as Transform3D__Legacy + module Transform3D with () fun ident(w) = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 0c9387cc62..6936f8d6d7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -45,8 +45,12 @@ import "../../mlscript-compile/staging/out/LinkingGeneratedClasses.mls" LinkingGeneratedClasses.test1 //│ = C +:expect S +LinkingGeneratedClasses.test2(false) +//│ = S + :expect D -LinkingGeneratedClasses.test2 +LinkingGeneratedClasses.test3 //│ = D :expect 3 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls index 2f21f1784a..c48baa68e5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls @@ -28,5 +28,5 @@ SimpleStagedExample.fib(5) LinkingGeneratedClasses.test1 //│ = C -LinkingGeneratedClasses.test2 +LinkingGeneratedClasses.test3 //│ = D diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index 410884a978..1cf51ddf17 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -39,9 +39,10 @@ staged module LiftedNested with //│ end //│ } //│ method generate⁰ = fun generate¹(source, path) { -//│ let tmp, tmp1; +//│ let tmp, tmp1, tmp2; //│ set tmp = LiftedNested².this.propagate﹖(); -//│ set tmp1 = Block⁰.codegen﹖("LiftedNested", LiftedNested².this.cache$LiftedNested﹖, source, path); +//│ set tmp1 = []; +//│ set tmp2 = Block⁰.codegen﹖("LiftedNested", LiftedNested².this.cache$LiftedNested﹖, source, path, tmp1); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { @@ -121,9 +122,10 @@ staged module LiftedLambda with //│ end //│ } //│ method generate² = fun generate³(source, path) { -//│ let tmp, tmp1; +//│ let tmp, tmp1, tmp2; //│ set tmp = LiftedLambda².this.propagate﹖(); -//│ set tmp1 = Block⁰.codegen﹖("LiftedLambda", LiftedLambda².this.cache$LiftedLambda﹖, source, path); +//│ set tmp1 = []; +//│ set tmp2 = Block⁰.codegen﹖("LiftedLambda", LiftedLambda².this.cache$LiftedLambda﹖, source, path, tmp1); //│ end //│ } //│ method ctor$_instr² = fun ctor$_instr³() { @@ -221,9 +223,10 @@ staged module LiftedMultParams with //│ end //│ } //│ method generate⁴ = fun generate⁵(source, path) { -//│ let tmp, tmp1; +//│ let tmp, tmp1, tmp2; //│ set tmp = LiftedMultParams².this.propagate﹖(); -//│ set tmp1 = Block⁰.codegen﹖("LiftedMultParams", LiftedMultParams².this.cache$LiftedMultParams﹖, source, path); +//│ set tmp1 = []; +//│ set tmp2 = Block⁰.codegen﹖("LiftedMultParams", LiftedMultParams².this.cache$LiftedMultParams﹖, source, path, tmp1); //│ end //│ } //│ method ctor$_instr⁴ = fun ctor$_instr⁵() { diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index c004f813aa..62b9a69a15 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -216,28 +216,28 @@ print(Dispatching."cache$Dispatching") //│ > () //│ > fun test(b) = //│ > let {y1, m, tmp1, tmp2, tmp3} -//│ > tmp1 = new! L1.class(1) +//│ > tmp1 = new L1.class(1) //│ > y1 = 11 -//│ > tmp2 = new! L2.class(2) -//│ > tmp3 = new! L3.class(3) +//│ > tmp2 = new L2.class(2) +//│ > tmp3 = new L3.class(3) //│ > m = pick_Dispatching_sp_2(tmp2, tmp3, b) //│ > twice_Dispatching_sp_3(m, 5) //│ > private fun pick_Dispatching_sp_0(x, y, b) = //│ > let {obj_2} -//│ > obj_2 = new! L2.class(2) +//│ > obj_2 = new L2.class(2) //│ > obj_2 //│ > private fun pick_Dispatching_sp_1(x, y, b) = //│ > let {obj_5} -//│ > obj_5 = new! L3.class(3) +//│ > obj_5 = new L3.class(3) //│ > obj_5 //│ > private fun pick_Dispatching_sp_2(x, y, b) = //│ > let {obj_7, obj_8} //│ > if b is //│ > true then -//│ > obj_7 = new! L2.class(2) +//│ > obj_7 = new L2.class(2) //│ > obj_7 //│ > else -//│ > obj_8 = new! L3.class(3) +//│ > obj_8 = new L3.class(3) //│ > obj_8 //│ > private fun test_Dispatching_sp_0(b) = 9 //│ > private fun test_Dispatching_sp_1(b) = 29 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index a821d4672b..1caf58554c 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -38,9 +38,10 @@ staged module A //│ end //│ } //│ method generate⁰ = fun generate¹(source, path) { -//│ let tmp, tmp1; +//│ let tmp, tmp1, tmp2; //│ set tmp = A².this.propagate﹖(); -//│ set tmp1 = Block⁰.codegen﹖("A", A².this.cache$A﹖, source, path); +//│ set tmp1 = []; +//│ set tmp2 = Block⁰.codegen﹖("A", A².this.cache$A﹖, source, path, tmp1); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { @@ -66,8 +67,8 @@ fun g(@static x) = x :e fun h(@dynamic @static x) = x //│ ╔══[COMPILATION ERROR] At most one reflection constraint can be added for each parameter. -//│ ║ l.67: fun h(@dynamic @static x) = x +//│ ║ l.68: fun h(@dynamic @static x) = x //│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Name not found: x -//│ ║ l.67: fun h(@dynamic @static x) = x +//│ ║ l.68: fun h(@dynamic @static x) = x //│ ╙── ^ From 1ea501dd3f27c8a1a97006deb0b7eabc6f65f9f0 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 17 May 2026 01:19:31 +0800 Subject: [PATCH 611/654] rerun tests --- .../staging/out/Inheritance.mls | 1 - .../staging/out/Transform3D.mls | 1 - .../src/test/mlscript/block-staging/Nested.mls | 18 ++++++++++++++++++ .../src/test/mlscript/block-staging/Syntax.mls | 16 +++++++++++++--- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls index 8429a0b4e2..a82143b998 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Inheritance.mls @@ -1,6 +1,5 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../Inheritance.mls" as Inheritance__Legacy - module Inheritance with class B(val x) with () diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index eafcc73689..58107ef3e8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -1,6 +1,5 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../Transform3D.mls" as Transform3D__Legacy - module Transform3D with () fun ident(w) = diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index 1cf51ddf17..075ba971f8 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -60,6 +60,12 @@ staged module LiftedNested with //│ set gen_call = LiftedNested².this.f_gen﹖(); //│ end //│ } +//│ method toCode⁰ = fun toCode¹() { +//│ let tmp, tmp1; +//│ set tmp = []; +//│ set tmp1 = Block⁰.toCode﹖("LiftedNested", LiftedNested².this.cache$LiftedNested﹖, tmp); +//│ return tmp1 +//│ } //│ method f_instr⁰ = fun f_instr¹() { //│ let sym, tmp, tmp1, sym1, var1, tmp2, app, return1, tmp3; //│ set sym = Block⁰.Symbol﹖("f"); @@ -143,6 +149,12 @@ staged module LiftedLambda with //│ set gen_call = LiftedLambda².this.foo_gen﹖(tmp_dyn); //│ end //│ } +//│ method toCode² = fun toCode³() { +//│ let tmp, tmp1; +//│ set tmp = []; +//│ set tmp1 = Block⁰.toCode﹖("LiftedLambda", LiftedLambda².this.cache$LiftedLambda﹖, tmp); +//│ return tmp1 +//│ } //│ method foo_instr⁰ = fun foo_instr¹() { //│ let x, tmp, sym, tmp1, sym1, tmp2, tmp3, tmp4, sym2, tmp5, tmp6, var1, tmp7, tmp8, tmp9, sym3, tmp10, tmp11, tmp12, sym4, tmp13, var2, tmp14, inst, return1, assign, tmp15, tmp16; //│ set sym = Block⁰.Symbol﹖("foo"); @@ -244,6 +256,12 @@ staged module LiftedMultParams with //│ set gen_call = LiftedMultParams².this.foo_gen﹖(tmp_dyn); //│ end //│ } +//│ method toCode⁴ = fun toCode⁵() { +//│ let tmp, tmp1; +//│ set tmp = []; +//│ set tmp1 = Block⁰.toCode﹖("LiftedMultParams", LiftedMultParams².this.cache$LiftedMultParams﹖, tmp); +//│ return tmp1 +//│ } //│ method foo_instr² = fun foo_instr³() { //│ let x, tmp, sym, tmp1, sym1, tmp2, tmp3, tmp4, sym2, tmp5, tmp6, var1, tmp7, tmp8, tmp9, sym3, tmp10, tmp11, tmp12, sym4, tmp13, var2, tmp14, inst, return1, assign, tmp15, tmp16; //│ set sym = Block⁰.Symbol﹖("foo"); diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 1caf58554c..fb51672dd1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -53,7 +53,17 @@ staged module A //│ set tmp2 = Block⁰.FunDefn﹖(sym, tmp1, end); //│ return tmp2 //│ } -//│ method propagate⁰ = fun propagate¹() { let tmp_dyn; set tmp_dyn = ShapeSet⁰.mkDyn﹖(); end } +//│ method propagate⁰ = fun propagate¹() { +//│ let tmp_dyn; +//│ set tmp_dyn = ShapeSet⁰.mkDyn﹖(); +//│ end +//│ } +//│ method toCode⁰ = fun toCode¹() { +//│ let tmp, tmp1; +//│ set tmp = []; +//│ set tmp1 = Block⁰.toCode﹖("A", A².this.cache$A﹖, tmp); +//│ return tmp1 +//│ } //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— @@ -67,8 +77,8 @@ fun g(@static x) = x :e fun h(@dynamic @static x) = x //│ ╔══[COMPILATION ERROR] At most one reflection constraint can be added for each parameter. -//│ ║ l.68: fun h(@dynamic @static x) = x +//│ ║ l.78: fun h(@dynamic @static x) = x //│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Name not found: x -//│ ║ l.68: fun h(@dynamic @static x) = x +//│ ║ l.78: fun h(@dynamic @static x) = x //│ ╙── ^ From 1d4aa1ddabaf3796d0a5b8b066d570e506d632e9 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sun, 17 May 2026 01:22:52 +0800 Subject: [PATCH 612/654] remove debug printing --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 2 -- 1 file changed, 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index ce5e95da46..510f64d230 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -552,13 +552,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val used: HashSet[BlockMemberSymbol] = new HashSet() override def applySymbol(sym: Symbol) = sym match case c: ClassSymbol if c.defn.exists(defn => defn.hasStagedModifier.isDefined && defn.owner.isEmpty) => - println(c) used += c.defn.get.bsym case _ => () val collector = (new UsedStagedClassesCollector) collector.applyCompanionModule(companion) val codegenClasses = collector.used - println(codegenClasses) val nestedPropagates = defn.body.blk.stats.collect: case cls: ClassDef if cls.hasStagedModifier.isDefined => From 36f1a0b593ff8a34e2cedcd03d68e16969b74025 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 21 May 2026 02:32:21 +0800 Subject: [PATCH 613/654] rerun tests --- hkmc2/shared/src/test/mlscript/deforest/fusibility.mls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls b/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls index 8e84588f85..8a555b5911 100644 --- a/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls +++ b/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls @@ -162,9 +162,9 @@ fun c2(x) = if x is AA(AA(_)) then 1 else 0 let p = AA(AA(AA(10))) c1(p) + c2(p) //│ deforest > >>> non-affine syms >>> -//│ deforest > p@5 -//│ deforest > tmp@1 +//│ deforest > p@1 //│ deforest > tmp@2 +//│ deforest > tmp@3 //│ deforest > <<< non-affine syms <<< //│ deforest > >>> fusing >>> //│ deforest > <<< fusing <<< From 0f2f7b0108855738d7afb3dab28f43160a09ff26 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 25 May 2026 10:13:31 +0800 Subject: [PATCH 614/654] rerun test --- hkmc2/shared/src/test/mlscript/deforest/fusibility.mls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls b/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls index 7d32a04988..b9ed6fa6a8 100644 --- a/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls +++ b/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls @@ -162,9 +162,9 @@ fun c2(x) = if x is AA(AA(_)) then 1 else 0 let p = AA(AA(AA(10))) c1(p) + c2(p) //│ deforest > >>> non-affine syms >>> -//│ deforest > p@1 +//│ deforest > p@5 +//│ deforest > tmp@1 //│ deforest > tmp@2 -//│ deforest > tmp@3 //│ deforest > <<< non-affine syms <<< //│ deforest > >>> fusing >>> //│ deforest > <<< fusing <<< From 9000bb8953681b4a3a54db8b3746e4c62b52b684 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 25 May 2026 12:47:08 +0800 Subject: [PATCH 615/654] remove redundant assignment --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 2 -- .../shared/src/test/mlscript/block-staging/Functions.mls | 8 +------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index b65639d15c..e4da291a5d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -290,7 +290,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case Assign(x, r, b) => transformSymbol(x): (xSym, ctx) => blockCtor("ValueRef", Ls(xSym)): xStaged => - (Assign(x, xStaged, _)): transformResult(r)(using ctx.addCache(x.asPath, xStaged)): (y, ctx) => transformBlock(b)(using ctx): (z, ctx) => blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) @@ -302,7 +301,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformResult(r): (y, ctx) => transformSymbol(ts)(using ctx): (xSym, ctx) => blockCtor("ValueRef", Ls(xSym)): xStaged => - (Assign(ts, xStaged, _)): given Context = ctx.addCache(Select(lhs, nme)(S(ts)), xStaged) transformBlock(rest): (z, ctx) => blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 2da77db164..afd0facdba 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -395,12 +395,6 @@ staged module LabelBreak with else 1 + 1 + 1 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ║ l.389: let x = 1 -//│ ║ ^ -//│ ╟── which references the symbol introduced here -//│ ║ l.389: let x = 1 -//│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. :e @@ -411,7 +405,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Field assignment is not supported in staged modules: a //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.411: fun g() = {1 : 2} +//│ ║ l.405: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. From 8319b06be97504b51bc256de05fe21235ceed14c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Mon, 25 May 2026 13:33:15 +0800 Subject: [PATCH 616/654] update test --- hkmc2/shared/src/test/mlscript/deforest/fusibility.mls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls b/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls index 34f7e5ced1..560ff224a9 100644 --- a/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls +++ b/hkmc2/shared/src/test/mlscript/deforest/fusibility.mls @@ -162,9 +162,9 @@ fun c2(x) = if x is AA(AA(_)) then 1 else 0 let p = AA(AA(AA(10))) c1(p) + c2(p) //│ deforest > >>> non-affine syms >>> -//│ deforest > p@5 -//│ deforest > tmp@1 +//│ deforest > p@1 //│ deforest > tmp@2 +//│ deforest > tmp@3 //│ deforest > <<< non-affine syms <<< //│ deforest > >>> fusing >>> //│ deforest > <<< fusing <<< From 568ff22c86176771a6034c93f50e2b2dbda8a4ee Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 26 May 2026 22:01:46 +0800 Subject: [PATCH 617/654] update prector printing --- .../shared/src/test/mlscript-compile/SpecializeHelpers.mls | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a9f6c85ce9..b1e20ec152 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -71,7 +71,11 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any fun inlineAssigments(ctx: Map[Symbol, String])(b) = if b is Return(res) then inlineResult(ctx)(res) - Scoped(_, rest) then inlineAssigments(ctx)(rest) + Scoped(syms, rest) then + let ctx = syms.reduce((ctx, sym) => ctx.set(sym, sym.nme), ctx) + inlineAssigments(ctx)(rest) + // print the last call to the parent + Assign(NoSymbol, rhs, End) then inlineResult(ctx)(rhs) Assign(lhs, rhs, rest) then inlineAssigments(ctx.set(lhs, inlineResult(ctx)(rhs)))(rest) End then "" else throw Error("unexpected Block type in constructor: " + b.toString()) From ea358f2ceb3b64c41ada4d08d34af8d595d3c2d1 Mon Sep 17 00:00:00 2001 From: Lionel Parreaux Date: Mon, 25 May 2026 18:18:38 +0800 Subject: [PATCH 618/654] Remove implicit Return flag --- .../src/main/scala/hkmc2/codegen/Block.scala | 27 ++-- .../scala/hkmc2/codegen/BlockSimplifier.scala | 9 +- .../hkmc2/codegen/BlockTransformer.scala | 4 +- .../scala/hkmc2/codegen/BlockTraverser.scala | 2 +- .../hkmc2/codegen/BufferableTransform.scala | 2 +- .../scala/hkmc2/codegen/EtaExpansion.scala | 13 +- .../FirstClassFunctionTransformer.scala | 8 +- .../scala/hkmc2/codegen/HandlerLowering.scala | 19 +-- .../src/main/scala/hkmc2/codegen/Lifter.scala | 4 +- .../main/scala/hkmc2/codegen/Lowering.scala | 8 +- .../main/scala/hkmc2/codegen/Printer.scala | 2 +- .../codegen/ReflectionInstrumenter.scala | 8 +- .../hkmc2/codegen/StackSafeTransform.scala | 6 +- .../main/scala/hkmc2/codegen/TailRecOpt.scala | 8 +- .../scala/hkmc2/codegen/UsedVarAnalyzer.scala | 2 +- .../scala/hkmc2/codegen/WorkerWrapper.scala | 1 - .../hkmc2/codegen/deforest/Rewrite.scala | 14 +-- .../codegen/flowAnalysis/FlowAnalysis.scala | 4 +- .../scala/hkmc2/codegen/js/JSBuilder.scala | 12 +- .../scala/hkmc2/codegen/llir/Builder.scala | 12 +- .../hkmc2/codegen/wasm/text/WatBuilder.scala | 21 +--- .../scala/hkmc2/semantics/Elaborator.scala | 1 + .../main/scala/hkmc2/semantics/Symbol.scala | 3 +- .../hkmc2/semantics/ucs/Normalization.scala | 6 +- .../src/test/mlscript-compile/Block.mls | 4 +- .../backlog/NonReturningStatements.mls | 2 +- .../src/test/mlscript/backlog/ToTriage.mls | 4 +- .../shared/src/test/mlscript/basics/AppOp.mls | 2 +- .../src/test/mlscript/basics/Assert.mls | 22 ++-- .../src/test/mlscript/basics/BadDefs.mls | 4 +- .../mlscript/basics/BadMemberProjections.mls | 19 +-- .../src/test/mlscript/basics/BadParams.mls | 2 +- .../src/test/mlscript/basics/Declare.mls | 2 +- .../shared/src/test/mlscript/basics/Drop.mls | 6 +- .../test/mlscript/basics/DynamicFields.mls | 4 +- .../mlscript/basics/DynamicInstantiation.mls | 4 +- .../test/mlscript/basics/DynamicSelection.mls | 4 +- .../test/mlscript/basics/FunnyRecordKeys.mls | 12 +- .../mlscript/basics/MemberProjections.mls | 2 +- .../test/mlscript/basics/MiscArrayTests.mls | 8 +- .../mlscript/basics/MultiParamListClasses.mls | 8 +- .../test/mlscript/basics/MultiParamLists.mls | 8 +- .../mlscript/basics/MultilineExpressions.mls | 2 +- .../src/test/mlscript/basics/MutVal.mls | 2 +- .../mlscript/basics/PureTermStatements.mls | 2 +- .../mlscript/basics/ShortcircuitingOps.mls | 11 +- .../src/test/mlscript/basics/StrTest.mls | 2 +- .../src/test/mlscript/basics/Underscores.mls | 6 +- .../test/mlscript/basics/ValMemberSymbols.mls | 16 +-- .../test/mlscript/block-staging/Nested.mls | 2 +- .../test/mlscript/block-staging/PrintCode.mls | 38 +++--- .../src/test/mlscript/codegen/BadNew.mls | 2 +- .../src/test/mlscript/codegen/BadOpen.mls | 2 +- .../src/test/mlscript/codegen/BasicTerms.mls | 18 ++- .../test/mlscript/codegen/BlockPrinter.mls | 34 ++--- .../src/test/mlscript/codegen/BuiltinOps.mls | 12 +- .../test/mlscript/codegen/BuiltinSymbols.mls | 2 +- .../test/mlscript/codegen/CaseShorthand.mls | 19 +-- .../test/mlscript/codegen/ClassMatching.mls | 16 +-- .../src/test/mlscript/codegen/Comma.mls | 2 +- .../src/test/mlscript/codegen/ConsoleLog.mls | 12 +- .../mlscript/codegen/CurriedFunctions.mls | 8 +- .../test/mlscript/codegen/DelayedLetInit.mls | 20 ++- .../test/mlscript/codegen/FieldSymbols.mls | 2 +- .../codegen/FirstClassFunctionTransform.mls | 36 +++--- .../src/test/mlscript/codegen/Formatting.mls | 18 +-- .../src/test/mlscript/codegen/FunInClass.mls | 4 +- .../src/test/mlscript/codegen/Functions.mls | 2 +- .../src/test/mlscript/codegen/Getters.mls | 4 +- .../src/test/mlscript/codegen/GlobalThis.mls | 7 +- .../src/test/mlscript/codegen/Hygiene.mls | 4 +- .../test/mlscript/codegen/ImportExample.mls | 6 +- .../src/test/mlscript/codegen/ImportMLs.mls | 4 +- .../src/test/mlscript/codegen/ImportedOps.mls | 8 +- .../test/mlscript/codegen/InlineLambdas.mls | 8 +- .../mlscript/codegen/InlineMultiArgLists.mls | 8 +- .../src/test/mlscript/codegen/Inliner.mls | 28 +++-- .../src/test/mlscript/codegen/Lambdas.mls | 4 +- .../test/mlscript/codegen/MergeMatchArms.mls | 86 ++++++------- .../shared/src/test/mlscript/codegen/Misc.mls | 2 +- .../test/mlscript/codegen/ModuleMethods.mls | 2 +- .../src/test/mlscript/codegen/Modules.mls | 8 +- .../src/test/mlscript/codegen/NestedLoops.mls | 2 +- .../test/mlscript/codegen/NestedScoped.mls | 10 +- .../test/mlscript/codegen/OpenWildcard.mls | 8 +- .../test/mlscript/codegen/ParamClasses.mls | 30 ++--- .../src/test/mlscript/codegen/PartialApps.mls | 12 +- .../test/mlscript/codegen/PlainClasses.mls | 39 +++--- .../src/test/mlscript/codegen/PredefUsage.mls | 2 +- .../shared/src/test/mlscript/codegen/Pwd.mls | 3 +- .../src/test/mlscript/codegen/Quasiquotes.mls | 4 +- .../src/test/mlscript/codegen/RandomStuff.mls | 4 +- .../shared/src/test/mlscript/codegen/Repl.mls | 16 +-- .../test/mlscript/codegen/RuntimeUsage.mls | 2 +- .../test/mlscript/codegen/SanityChecks.mls | 11 +- .../src/test/mlscript/codegen/SetIn.mls | 17 ++- .../src/test/mlscript/codegen/Spreads.mls | 2 +- .../mlscript/codegen/ThisCallVariations.mls | 4 +- .../src/test/mlscript/codegen/ThisCalls.mls | 2 +- .../src/test/mlscript/codegen/Throw.mls | 2 +- .../test/mlscript/codegen/TraceLogIndent.mls | 8 +- .../src/test/mlscript/codegen/UnitValue.mls | 2 +- .../src/test/mlscript/codegen/While.mls | 37 +++--- .../test/mlscript/codegen/WhileDefaults.mls | 2 +- .../src/test/mlscript/ctx/ClassCtxParams.mls | 2 +- .../src/test/mlscript/ctx/EtaExpansion.mls | 4 +- .../test/mlscript/ctx/MissingDefinitions2.mls | 2 +- .../test/mlscript/dead-param-elim/basic.mls | 28 ++--- .../test/mlscript/dead-param-elim/clash.mls | 2 +- .../mlscript/dead-param-elim/class-in-fun.mls | 2 +- .../mlscript/dead-param-elim/config-flags.mls | 6 +- .../mlscript/dead-param-elim/dead-ref.mls | 6 +- .../test/mlscript/dead-param-elim/lambda.mls | 2 +- .../dead-param-elim/multiArgLists.mls | 10 +- .../mlscript/dead-param-elim/recursive.mls | 10 +- .../mlscript/dead-param-elim/refresher.mls | 2 +- .../src/test/mlscript/deforest/basic.mls | 6 +- .../src/test/mlscript/deforest/cyclic.mls | 2 +- .../test/mlscript/deforest/determinism.mls | 4 +- .../deforest/eta-expansion/recursive.mls | 4 +- .../src/test/mlscript/deforest/simple.mls | 2 +- .../src/test/mlscript/deforest/todos.mls | 2 +- .../src/test/mlscript/flows/SelExpansion.mls | 12 +- .../handlers/CurriedFunctionCalls.mls | 4 +- .../src/test/mlscript/handlers/Effects.mls | 29 +++-- .../test/mlscript/handlers/NoStackSafety.mls | 2 +- .../handlers/NonLocalLabelControlFlow.mls | 4 +- .../mlscript/handlers/RecursiveHandlers.mls | 27 ++-- .../test/mlscript/handlers/SetInHandlers.mls | 2 +- .../test/mlscript/handlers/StackSafety.mls | 10 +- .../handlers/TailCallOptimization.mls | 3 +- .../src/test/mlscript/interop/Arrays.mls | 16 +-- .../src/test/mlscript/interop/CtorBypass.mls | 2 +- .../test/mlscript/invalml/InvalMLCodeGen.mls | 39 +++--- .../test/mlscript/invalml/InvalMLGetters.mls | 4 +- .../src/test/mlscript/lifter/ClassInFun.mls | 2 +- .../src/test/mlscript/lifter/DefnsInClass.mls | 2 +- .../src/test/mlscript/lifter/FunInFun.mls | 10 +- .../test/mlscript/lifter/ModulesObjects.mls | 4 +- .../mlscript/lifter/PrivateMutableFields.mls | 3 +- .../test/mlscript/lifter/StackSafetyLift.mls | 10 +- .../src/test/mlscript/meta/ImporterTest.mls | 4 +- .../src/test/mlscript/opt/BasicVarPropag.mls | 53 ++++---- .../mlscript/opt/CapturedVariableMutation.mls | 2 +- .../src/test/mlscript/opt/ConstantFolding.mls | 8 +- .../mlscript/opt/DeadAssignmentRemoval.mls | 4 +- .../test/mlscript/opt/DeadBranchRemoval.mls | 8 +- .../src/test/mlscript/opt/DeadObjRemoval.mls | 12 +- .../src/test/mlscript/opt/DeadSelRemoval.mls | 10 +- .../src/test/mlscript/opt/DeadStatRemoval.mls | 6 +- .../src/test/mlscript/opt/DeadVarRemoval.mls | 4 +- .../test/mlscript/opt/IllFormedAccesses.mls | 6 +- .../test/mlscript/opt/MatchSimplification.mls | 4 +- .../test/mlscript/opt/PureCallPropagation.mls | 20 +-- .../test/mlscript/opt/UnspecifiedBehavior.mls | 8 +- .../src/test/mlscript/opt/ValPropag.mls | 6 +- .../src/test/mlscript/opt/WorkerWrapper.mls | 6 +- .../src/test/mlscript/parser/PrefixOps.mls | 6 +- .../test/mlscript/std/FingerTreeListTest.mls | 5 +- .../src/test/mlscript/std/PredefTest.mls | 2 +- .../test/mlscript/tailrec/MultiArgLists.mls | 8 +- .../src/test/mlscript/tailrec/TailRecOpt.mls | 4 +- .../mlscript/ucs/future/SymbolicClass.mls | 4 +- .../test/mlscript/ucs/general/JoinPoints.mls | 4 +- .../ucs/general/LogicalConnectives.mls | 8 +- .../ucs/normalization/Deduplication.mls | 116 +++++++----------- .../ucs/normalization/DeduplicationWhile.mls | 6 +- .../normalization/ExcessiveDeduplication.mls | 27 ++-- .../ucs/normalization/SimplePairMatches.mls | 2 +- .../test/mlscript/ups/recursion/NatBox.mls | 4 +- .../shared/src/test/mlscript/wasm/Basics.mls | 34 ++--- .../test/mlscript/wasm/BuiltinOperators.mls | 29 +++-- .../test/mlscript/wasm/ClassInheritance.mls | 4 +- .../src/test/mlscript/wasm/ClassMethods.mls | 11 +- .../src/test/mlscript/wasm/ControlFlow.mls | 10 +- .../src/test/mlscript/wasm/Matching.mls | 8 +- .../src/test/mlscript/wasm/ReplImports.mls | 10 +- .../src/test/mlscript/wasm/ScopedLocals.mls | 25 ++-- .../src/test/mlscript/wasm/SingletonUnit.mls | 8 +- .../src/test/mlscript/wasm/Singletons.mls | 7 +- .../shared/src/test/mlscript/wasm/Strings.mls | 40 +++--- .../shared/src/test/mlscript/wasm/Tuples.mls | 29 ++--- .../src/test/mlscript/wasm/VirtualMethods.mls | 25 ++-- .../test/scala/hkmc2/JSBackendDiffMaker.scala | 11 +- 184 files changed, 933 insertions(+), 957 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala index 31d7be8bfb..688a9351fe 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Block.scala @@ -54,7 +54,7 @@ sealed abstract class Block extends Product: case Unreachable(msg) => s"Unreachable(${msg})" case Break(lbl) => s"Break(${lbl.showDbg})" case Continue(lbl) => s"Continue(${lbl.showDbg})" - case Return(res, implct) => s"Return(${res.showDbg}, implct = $implct)" + case Return(res) => s"Return(${res.showDbg})" case Match(scrut, arms, dflt, rest) => val armsStr = arms.map((pat, arm) => s"case ${pat.showDbg} => ${arm.showDbg}").mkString("\n") val dfltStr = dflt.map(d => s"default => ${d.showDbg}\n").getOrElse("") @@ -97,7 +97,7 @@ sealed abstract class Block extends Product: lazy val isAbortive: Bool = this match case _: End => false case _: Throw | _: Break | _: Continue | _: Unreachable => true - case ret: Return => !ret.implct + case _: Return => true case Begin(sub, rst) => sub.isAbortive || rst.isAbortive case Assign(_, _, rst) => rst.isAbortive case AssignField(_, _, _, rst) => rst.isAbortive @@ -134,7 +134,7 @@ sealed abstract class Block extends Product: case Scoped(syms, body) => body.definedVars ++ syms lazy val size: Int = 1 + this.match - case Return(r: Result, _) => r.size + case Return(r: Result) => r.size case Throw(r: Result) => r.size case _: End | _: Break | _: Continue | _: Unreachable => 0 case Begin(sub, rst) => sub.size + rst.size @@ -163,7 +163,7 @@ sealed abstract class Block extends Product: scrut.freeVars ++ dflt.toList.flatMap(_.freeVars) ++ rest.freeVars ++ arms.flatMap: (pat, arm) => arm.freeVars -- pat.freeVars - case Return(res, implct) => res.freeVars + case Return(res) => res.freeVars case Throw(exc) => exc.freeVars case Label(label, _, body, rest) => (body.freeVars - label) ++ rest.freeVars case Break(label) => Set.single(label) @@ -183,7 +183,7 @@ sealed abstract class Block extends Product: scrut.freeVarsLLIR ++ dflt.toList.flatMap(_.freeVarsLLIR) ++ rest.freeVarsLLIR ++ arms.flatMap: (pat, arm) => arm.freeVarsLLIR -- pat.freeVarsLLIR - case Return(res, implct) => res.freeVarsLLIR + case Return(res) => res.freeVarsLLIR case Throw(exc) => exc.freeVarsLLIR case Label(label, _, body, rest) => (body.freeVarsLLIR - label) ++ rest.freeVarsLLIR case Break(label) => Set.empty @@ -209,8 +209,8 @@ sealed abstract class Block extends Product: case Label(_, _, body, rest) => body :: rest :: Nil case Scoped(_, body) => body :: Nil - // TODO rm Lam from values and thus the need for these cases - case Return(r, _) => r.subBlocks + // TODO rm Lam from results and thus the need for these cases + case Return(r) => r.subBlocks case Throw(r) => r.subBlocks case _: Return | _: Throw | _: Break | _: Continue | _: End | _: Unreachable => Nil @@ -356,11 +356,7 @@ case class Match( rest: Block, ) extends Block with ProductWithTail with NonBlockTail -// * `implct`: metadata indicating whether this is a JS implicit return, without the `return` keyword. -// * This is currenlty only used for the main blocks of modules and diff-test blocks; -// * for all intents and purposes, one can view an implicit return as a normal return. -// * I would remove it, but it helps print cleaner outputs for diff tests (eg, using `:sir`). -case class Return(res: Result, implct: Bool) extends BlockTail +case class Return(res: Result) extends BlockTail case class Throw(exc: Result) extends BlockTail @@ -536,7 +532,7 @@ object HandleBlock: handler.params, Scoped(Set(sym, rSym), Define( fDef, - Return(suspend(cls.asPath, Value.Ref(sym, S(fDef.dSym))), false))))(N, annotations = Nil) + Return(suspend(cls.asPath, Value.Ref(sym, S(fDef.dSym)))))))(N, annotations = Nil) val clsDefn = ClsLikeDefn( N, // no owner @@ -547,7 +543,7 @@ object HandleBlock: N, Nil, S(par), handlerMtds, Nil, Nil, // Apparently, the lifter is not happy with any assignment in the preCtor... - Return(Call(Value.Ref(State.builtinOpsMap("super")), args.map(_.asArg) ne_:: Nil)(true, true, false), true), + Assign(State.noSymbol, Call(Value.Ref(State.builtinOpsMap("super")), args.map(_.asArg) ne_:: Nil)(true, true, false), End()), End(), N, N, @@ -1045,7 +1041,7 @@ extension (k: Block => Block) def ifthen(scrut: Path, cse: Case, trm: Block, els: Opt[Block] = N): Block => Block = k.chain(Match(scrut, cse -> trm :: Nil, els, _)) def label(label: LabelSymbol, loop: Bool, body: Block) = k.chain(Label(label, loop, body, _)) - def ret(r: Result) = k.rest(Return(r, false)) + def ret(r: Result) = k.rest(Return(r)) def scopedVars(s: collection.Set[Local]) = k.chain(Scoped(s, _)) def staticif(b: Boolean, f: (Block => Block) => (Block => Block)) = if b then k.transform(f) else k def foldLeft[A](xs: Iterable[A])(f: (Block => Block, A) => Block => Block) = xs.foldLeft(k)(f) @@ -1054,4 +1050,3 @@ def blockBuilder: Block => Block = identity extension (l: Local) def asPath: Path = Value.Ref(l, N) - diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockSimplifier.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockSimplifier.scala index 2a90e89145..1a692092a2 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockSimplifier.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockSimplifier.scala @@ -206,8 +206,7 @@ class BlockSimplifier bod.analyze && !BrokenLabels.analyze(bod).contains(lbl) // if `bod` breaks to `lbl`, then we must consider `rst` || rst.analyze - case _: Throw | Return(_, false) | _: Unreachable | _: Continue | _: Break => true - case Return(_, true) => false + case _: Throw | _: Return | _: Unreachable | _: Continue | _: Break => true case _: End => false end AbortiveAnalysis @@ -502,11 +501,11 @@ class BlockSimplifier // * Discard local variables that are assigned just to be returned // * Note: the reason we do this here and not in DeadCodeElim is that we need to check `capturedVars` - case Assign(lhs: LocalVar, rhs, Return(Value.Ref(ret, N), implct)) + case Assign(lhs: LocalVar, rhs, Return(Value.Ref(ret, N))) if !inDryRun && (ret is lhs) && !capturedVars(lhs) && !symbolsToPreserve(lhs) => registerChange(s"tail-return ${lhs.showDbg} ~> ${rhs.showDbg}") - applyBlock(Return(rhs, implct)) + applyBlock(Return(rhs)) case ass @ Assign(lhs: LocalVar, rhs, rst) if !capturedVars(lhs) => // log(s"Propagating ${lhs} := ${rhs} (${assignedResults.get(lhs)})") @@ -1102,7 +1101,7 @@ class BlockSimplifier res override def applyBlock(b: Block): Block = b match - case Return(res, false) if !currentlyNested => + case Return(res) if !currentlyNested => applyResult(res): r2 => Assign(resSym, r2, Break(lblSym)) case _ => super.applyBlock(b) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockTransformer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockTransformer.scala index 6cac8024d8..1f8c66ea28 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockTransformer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockTransformer.scala @@ -40,9 +40,9 @@ class BlockTransformer(subst: SymbolSubst): case Continue(lbl) => val lbl2 = lbl.subst if lbl2 is lbl then b else Continue(lbl2) - case Return(res, implct) => + case Return(res) => applyResult(res): res2 => - if res2 is res then b else Return(res2, implct) + if res2 is res then b else Return(res2) case Throw(exc) => applyResult(exc): exc2 => if exc2 is exc then b else Throw(exc2) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockTraverser.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockTraverser.scala index 453823d0dd..ef06156222 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockTraverser.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/BlockTraverser.scala @@ -32,7 +32,7 @@ class BlockTraverser: case _: End | _: Unreachable => () case Break(lbl) => applyLocal(lbl) case Continue(lbl) => applyLocal(lbl) - case Return(res, implct) => applyResult(res) + case Return(res) => applyResult(res) case Throw(exc) => applyResult(exc) case Match(scrut, arms, dflt, rst) => val scrut2 = applyPath(scrut) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/BufferableTransform.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/BufferableTransform.scala index fd31ba1303..c441cda2da 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/BufferableTransform.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/BufferableTransform.scala @@ -79,7 +79,7 @@ class BufferableTransform()(using Ctx, State, Raise): val blk = mkFieldReplacer(buf, idx, symMap).applyBlock(f.body) FunDefn(f.owner, f.sym, TermSymbol(f.dSym.k, f.dSym.owner, f.dSym.id), PlainParamList( Param(FldFlags.empty, buf, N, Modulefulness.none) :: Param(FldFlags.empty, idx, N, Modulefulness.none) :: Nil) :: newParams, - if isCtor then Begin(blk, Return(idx.asPath, false)) else blk)(configOverride = f.configOverride, annotations = f.annotations) + if isCtor then Begin(blk, Return(idx.asPath)) else blk)(configOverride = f.configOverride, annotations = f.annotations) val fakeCtor = transformFunDefn(FunDefn.withFreshSymbol( S(companionSym), BlockMemberSymbol("ctor", Nil, false), diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/EtaExpansion.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/EtaExpansion.scala index efe2ac1063..81b57b8bae 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/EtaExpansion.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/EtaExpansion.scala @@ -184,21 +184,20 @@ class EtaExpansionRewrite(val etaExpansionSolver: EtaExpansionSolver)(using Rais Call(base, activeEtaArgss.ne_!)(isMlsFun = true, mayRaiseEffects = true, explicitTailCall = false) override def applyBlock(b: Block): Block = b match - case Return(res, implct) if activeEtaArgss.nonEmpty => + case Return(res) if activeEtaArgss.nonEmpty => applyResult(res): res2 => - if activeEtaArgss.isEmpty then Return(res2, implct) + if activeEtaArgss.isEmpty then Return(res2) else res2 match case p: Path => - Return(etaCall(p).withLocOf(res2), implct) + Return(etaCall(p).withLocOf(res2)) case c @ Call(fun, argss) => Return( - Call(fun, (argss ++ activeEtaArgss).ne_!)(c.isMlsFun, c.mayRaiseEffects, c.explicitTailCall), - implct) + Call(fun, (argss ++ activeEtaArgss).ne_!)(c.isMlsFun, c.mayRaiseEffects, c.explicitTailCall)) case _ => val tmp = TempSymbol(N, "eta$res") Scoped( Set.single(tmp), - Assign(tmp, res2, Return(etaCall(tmp.asPath).withLocOf(res2), implct))) + Assign(tmp, res2, Return(etaCall(tmp.asPath).withLocOf(res2)))) case _ => super.applyBlock(b) override def applyDefn(defn: Defn)(k: Defn => Block): Block = defn match @@ -225,7 +224,7 @@ class EtaExpansionRewrite(val etaExpansionSolver: EtaExpansionSolver)(using Rais val body2 = withEtaArgss(etaParams.map(_.args)): applyFunBodyLikeBlock(lam.body) val wrappedBody = etaParams.map(_.params).foldRight(body2): (params, body) => - Return(Lambda(params, body)(Nil), implct = false) + Return(Lambda(params, body)(Nil)) if (wrappedBody is lam.body) then lam else Lambda(lam.params, wrappedBody)(lam.annot).withLocOf(lam) end Rewriter diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala index a322a0c929..9d3bfe738d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/FirstClassFunctionTransformer.scala @@ -28,10 +28,12 @@ class FirstClassFunctionTransformer ) val defSym = new BlockMemberSymbol("Function$", Nil, false) val callDef = FunDefn.withFreshSymbol(Some(clsSym), new BlockMemberSymbol("call", Nil, true), params :: Nil, - Return(Call(p, params.params.map(_.sym.asPath.asArg) ne_:: Nil)(true, false, false), false))(N, annotations = Nil) + Return(Call(p, params.params.map(_.sym.asPath.asArg) ne_:: Nil)(true, false, false)))(N, annotations = Nil) ClsLikeDefn(None, clsSym, defSym, None, syntax.Cls, None, Nil, Some(Select(Value.Ref(State.globalThisSymbol, Some(State.globalThisSymbol)), Tree.Ident("Function"))(Some(ctx.builtins.Function))), - callDef :: Nil, Nil, Nil, Return(Call(Value.Ref(State.builtinOpsMap("super")), Nil ne_:: Nil)(false, false, false), true), End(), None, None)(N, annotations = Nil) + callDef :: Nil, Nil, Nil, Assign.discard( + Call(Value.Ref(State.builtinOpsMap("super")), Nil ne_:: Nil)(false, false, false), + End()), End(), None, None)(N, annotations = Nil) private def getParamList(l: BlockMemberSymbol): Option[ParamList] = funDefns.get(l) match case Some(fd) => fd.params.headOption.map(pl => @@ -109,7 +111,7 @@ class FirstClassFunctionTransformer val newBody = rec(rest) val funSym = new BlockMemberSymbol("lambda$", Nil, false) val funDef = FunDefn.withFreshSymbol(None, funSym, head :: Nil, newBody)(N, annotations = Nil) - Scoped(Set(funSym), Define(funDef, Return(Value.Ref(funDef.sym, Some(funDef.dSym)), false))) + Scoped(Set(funSym), Define(funDef, Return(Value.Ref(funDef.sym, Some(funDef.dSym))))) case Nil => fd.body FunDefn.withFreshSymbol(fd.owner, fd.sym, head :: Nil, rec(tail))(fd.configOverride, fd.annotations) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/HandlerLowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/HandlerLowering.scala index 73095f92b0..2825804bcd 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/HandlerLowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/HandlerLowering.scala @@ -71,7 +71,7 @@ object HandlerLowering: resumeInfo.argLists ++: (intLit(restoreList.length) :: restoreList.map(_.asPath)) - ).map(_.asArg) ne_:: Nil)(true, true, false), false) + ).map(_.asArg) ne_:: Nil)(true, true, false)) // argLists: length-encoded argument list used for resumption. // currentLocals: All locals to be saved and reloaded, this cannot include any variables in outer scopes @@ -138,18 +138,18 @@ class HandlerLowering(paths: HandlerPaths, opt: EffectHandlers)(using TL, Raise, object StateTransition: private val transitionSymbol = freshTmp("transition") def apply(uid: StateId) = - Return(PureCall(Value.Ref(transitionSymbol), List(Value.Lit(Tree.IntLit(uid)))), false) + Return(PureCall(Value.Ref(transitionSymbol), List(Value.Lit(Tree.IntLit(uid))))) def unapply(blk: Block) = blk match - case Return(PureCall(Value.Ref(`transitionSymbol`, _), List(Value.Lit(Tree.IntLit(uid)))), false) => + case Return(PureCall(Value.Ref(`transitionSymbol`, _), List(Value.Lit(Tree.IntLit(uid))))) => S(uid) case _ => N object Unwind: private val unwindSymbol = freshTmp("unwind") def apply(uid: StateId, loc: Value) = - Return(PureCall(Value.Ref(unwindSymbol), List(Value.Lit(Tree.IntLit(uid)), loc)), false) + Return(PureCall(Value.Ref(unwindSymbol), List(Value.Lit(Tree.IntLit(uid)), loc))) def unapply(blk: Block) = blk match - case Return(PureCall(Value.Ref(`unwindSymbol`, _), List(Value.Lit(Tree.IntLit(uid)), loc: Value)), false) => + case Return(PureCall(Value.Ref(`unwindSymbol`, _), List(Value.Lit(Tree.IntLit(uid)), loc: Value))) => S(uid, loc) case _ => N @@ -227,7 +227,7 @@ class HandlerLowering(paths: HandlerPaths, opt: EffectHandlers)(using TL, Raise, val nonTrivialBlockChecker = new BlockDataTransformer(SymbolSubst.Id): override def applyBlock(b: Block) = b match // Special handling for tail calls - case Return(c @ Call(fun, args), false) => + case Return(c @ Call(fun, args)) => containsCall = true b // Prevents the recursion into applyResult case _ => super.applyBlock(b) @@ -303,13 +303,6 @@ class HandlerLowering(paths: HandlerPaths, opt: EffectHandlers)(using TL, Raise, else blk - // Currently, implicit returns are only used in top level and tail call of constructor - // The former case never enters the partitioning function, so it must be the later case here. - // We no longer handle the later case, hence we can ignore this case. - // case Return(_, true) => afterEnd match - // case None => End() - // case Some(id) => StateTransition(id) - // identity cases case Define(defn, rest) => Define(defn, go(rest)) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lifter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lifter.scala index 42ce43becf..6a9047c0b1 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lifter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lifter.scala @@ -1018,7 +1018,7 @@ class Lifter(topLevelBlk: Block)(using State, Raise, Config): case None => syms.map(s => Arg(N, s.asPath)) val call = Call(Value.Ref(fun.sym, S(fun.dSym)), args ne_:: Nil)(true, true, false) - val bod = Return(call, false) + val bod = Return(call) FunDefn( N, @@ -1149,7 +1149,7 @@ class Lifter(topLevelBlk: Block)(using State, Raise, Config): val ref = Value.Ref(obj.cls.sym, S(obj.cls.isym)) val inst = Instantiate(false, ref, argsList) - val bod = Return(inst, false) + val bod = Return(inst) FunDefn(N, flattenedSym, flattenedDSym, allParamLists, bod)(N, annotations = Nil) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala index 406d1e6ddf..9d815e61ef 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala @@ -25,12 +25,12 @@ import hkmc2.syntax.{Fun, Keyword} abstract class TailOp extends (Result => Block) object Ret extends TailOp: - def apply(r: Result): Block = Return(r, implct = false) + def apply(r: Result): Block = Return(r) object ImplctRet extends TailOp: def apply(r: Result): Block = r match case Value.Lit(Tree.UnitLit(false)) => End() - case _ => Return(r, implct = true) + case _ => Return(r) object Thrw extends TailOp: def apply(r: Result): Block = Throw(r) @@ -160,7 +160,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx, SymbolPrinter): isTailCall = false, args.headOption, N, // TODO: location? - )(c => Return(c, implct = true)) + )(c => Assign(State.noSymbol, c, End())) // * Used to work around Scala's @tailrec annotation for those few calls that are not in tail position. final def term_nonTail(t: st, inStmtPos: Bool = false)(k: Result => Block)(using LoweringCtx): Block = @@ -460,7 +460,7 @@ class Lowering()(using Config, TL, Raise, State, Ctx, SymbolPrinter): val freshParams = (ps.params zip freshSyms).map((p, s) => Param(p.flags, s, N, p.modulefulness)) val freshParamList = ParamList(ps.flags, freshParams, N) val freshArgs = freshSyms.map(s => Arg(N, Value.Ref(s))) - Lambda(freshParamList, Return(etaExpand(rest, accArgss :+ freshArgs), implct = false))(Nil) + Lambda(freshParamList, Return(etaExpand(rest, accArgss :+ freshArgs)))(Nil) k(etaExpand(remainingParamss, acc.reverse)) // * Resolve the class definition to get the constructor param lists. // * The class path typically resolves to a TermSymbol (the constructor function), diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala index 3141b5b0c7..6000cc27d3 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/Printer.scala @@ -42,7 +42,7 @@ class Printer(using Raise, ShowCfg, SymbolPrinter, Config): .mkDocument(sep = doc" # ") val docDefault = dflt.fold(doc"")(e => doc" # else #{ # ${print(e)} #} ") doc"match ${print(scrut)} #{ # ${docCases}$docDefault #} # ${print(rest)}" - case Return(res, implct) => if implct then print(res) else doc"return ${print(res)}" + case Return(res) => doc"return ${print(res)}" case Throw(exc) => doc"throw ${print(exc)}" case Label(label, loop, body, rest) => val l2 = scope.allocateOrGetName(label) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e4da291a5d..64fed143d0 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -284,9 +284,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S End() def transformBlock(b: Block)(using ctx: Context)(k: (Path, Context) => Block): Block = b match - case Return(res, implct) => + case Return(res) => transformResult(res): (x, ctx) => - blockCtor("Return", Ls(x, toValue(implct)), "return")(k(_, ctx)) + blockCtor("Return", Ls(x), "return")(k(_, ctx)) case Assign(x, r, b) => transformSymbol(x): (xSym, ctx) => blockCtor("ValueRef", Ls(xSym)): xStaged => @@ -369,7 +369,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(stageSymName)) val argSyms = f.params.flatMap(_.params).map(_.sym) val newBody = - val rest = transformFunDefn(f)(using ctx)((block, _) => Return(block, false)) + val rest = transformFunDefn(f)(using ctx)((block, _) => Return(block)) (Scoped(Set(argSyms*), rest)) FunDefn.withFreshSymbol(f.dSym.owner, stageSym, Ls(PlainParamList(Nil)), newBody)(N, Nil) @@ -388,7 +388,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val body = params.map(ps => tuple(ps.params.map(_.sym))).collectApply: tups => tuple(tups): args => call(helperMod("specialize"), Ls(cache, toValue(f.sym.nme), stagedPath, args)): res => - Return(res, false) + Return(res) FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(N, Nil) def stageCtor(ctorFun: FunDefn): FunDefn = diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/StackSafeTransform.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/StackSafeTransform.scala index af0a959fdd..d7c939546b 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/StackSafeTransform.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/StackSafeTransform.scala @@ -25,7 +25,7 @@ class StackSafeTransform(depthLimit: Int, paths: HandlerPaths, stackSafetyMap: S // Increases the stack depth, assigns the call to a value, then decreases the stack depth // then binds that value to a desired block def extractRes(res: Result, isTailCall: Bool, f: Result => Block, sym: Symbol, curDepth: => Symbol): Block = - if isTailCall then Return(res, false) + if isTailCall then Return(res) else blockBuilder .assign(sym, res) @@ -62,10 +62,10 @@ class StackSafeTransform(depthLimit: Int, paths: HandlerPaths, stackSafetyMap: S case _: FunDefn | _: ValDefn => super.applyDefn(defn)(k) override def applyBlock(b: Block): Block = b match - case Return(res, implct) if usesStack(res) => + case Return(res) if usesStack(res) => val tmp = TempSymbol(N, "res") super.applyResult(res): res => - Scoped(Set.single(tmp), extract(res, true, Return(_, implct), tmp, curDepth)) + Scoped(Set.single(tmp), extract(res, true, Return(_), tmp, curDepth)) // Optimization to avoid generation of unnecessary variables case Assign(lhs, r, rest) => if usesStack(r) then diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/TailRecOpt.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/TailRecOpt.scala index ab08b6a5aa..9994a368d4 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/TailRecOpt.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/TailRecOpt.scala @@ -82,8 +82,8 @@ class TailRecOpt(using State, TL, Raise): object TailCallShape: def unapply(b: Block): Opt[(TermSymbol, Call)] = b match - case Return(c @ CallToFun(r), _) => S((r, c)) - case Assign(a, c @ CallToFun(r), Return(Value.Ref(b, _), _)) if a === b => S((r, c)) + case Return(c @ CallToFun(r)) => S((r, c)) + case Assign(a, c @ CallToFun(r), Return(Value.Ref(b, _))) if a === b => S((r, c)) case _ => N @@ -122,7 +122,7 @@ class TailRecOpt(using State, TL, Raise): case None => if c.explicitTailCall then raise(ErrorReport(msg"Only functions in this compilation unit may be marked @tailcall." -> c.toLoc :: Nil)) - case Return(c: Call, _) => + case Return(c: Call) => if c.explicitTailCall then raise(ErrorReport(msg"Only direct calls in tail position may be marked @tailcall." -> c.toLoc :: Nil)) case _ => super.applyBlock(b) @@ -500,7 +500,6 @@ class TailRecOpt(using State, TL, Raise): ::: List.fill(maxParamLen - paramArgs.length)(Value.Lit(Tree.UnitLit(false)).asArg) val newBod = Return( Call(sel, args ne_:: Nil)(true, false, false), - false ) FunDefn(f.owner, f.sym, f.dSym, f.params, newBod)(N, f.annotations) @@ -532,7 +531,6 @@ class TailRecOpt(using State, TL, Raise): case None => Value.Ref(loopBms, S(loopDSym)) val wrapperBod = Return( Call(internalSel, paramArgs ne_:: Nil)(true, false, false), - false ) val wrapperDefn = FunDefn(f.owner, f.sym, f.dSym, f.params, wrapperBod)( f.configOverride, annotations = f.annotations) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/UsedVarAnalyzer.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/UsedVarAnalyzer.scala index dd95faeddb..33be26b79a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/UsedVarAnalyzer.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/UsedVarAnalyzer.scala @@ -338,7 +338,7 @@ class UsedVarAnalyzer(b: Block, scopeData: ScopeData)(using State): rec(sub) |> merge rec(finallyDo) |> merge applySubBlock(rest) - case Return(res, false) => + case Return(res) => applyResult(res) hasReader = Set.empty hasMutator = Set.empty diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/WorkerWrapper.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/WorkerWrapper.scala index a782ca4e6d..8f996a8a0f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/WorkerWrapper.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/WorkerWrapper.scala @@ -71,7 +71,6 @@ class WorkerWrapper Arg(N, Value.Ref(param.sym)) val wrapperBody = Return( Call(worker.asPath, workerArgs ne_:: Nil)(isMlsFun = true, mayRaiseEffects = true, explicitTailCall = false), - implct = false, ) val wrapper = FunDefn( fun.owner, diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Rewrite.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Rewrite.scala index f69c5403bb..8ae0c9a552 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Rewrite.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/deforest/Rewrite.scala @@ -379,7 +379,7 @@ class DeforestRewriter(val solver: DeforestFusionSolver)(using Raise): args.map(a => Arg(N, a.toValueRef)) ne_:: Nil )(true, false, false) def mkReturnCall(target: (BlockMemberSymbol, TermSymbol), args: Ls[Symbol]): Block = - Return(mkCall(target, args), false) + Return(mkCall(target, args)) class Rewriter(instId: InstantiationId) extends BlockTransformer(_symSubst): extension (resId: ResultId) def concreteId = ConcreteId(resId, instId) @@ -463,8 +463,7 @@ class DeforestRewriter(val solver: DeforestFusionSolver)(using Raise): val callWithFvs = dtorBranchFnFvs(scrut.uid.concreteId) applyPath(scrut): newScrut => Return( - Call(newScrut, callWithFvs.map(s => Arg(N, s.toValueRef)) ne_:: Nil)(true, false, false), - false) + Call(newScrut, callWithFvs.map(s => Arg(N, s.toValueRef)) ne_:: Nil)(true, false, false)) case Break(label) => val labelRestFunId = label.withInstId(instId) restFunSyms.get(labelRestFunId) match @@ -472,7 +471,6 @@ class DeforestRewriter(val solver: DeforestFusionSolver)(using Raise): case Some(labelRestFunSym) => val labelRestFunFvs = restFnFvs(labelRestFunId) mkReturnCall(labelRestFunSym, labelRestFunFvs) - case Return(res, true) => super.applyBlock(Return(res, false)) case _ => super.applyBlock(b) end Rewriter @@ -558,7 +556,7 @@ class DeforestRewriter(val solver: DeforestFusionSolver)(using Raise): transformedOgBody, mkReturnCall(parentFunSym, parentFunFvs)) case None => - Begin(transformedOgBody, Return(Value.Lit(Tree.UnitLit(true)), false)) + Begin(transformedOgBody, Return(Value.Lit(Tree.UnitLit(true)))) val refreshedFvSymbols = restFnFvs(restFunId).map(s => s -> new VarSymbol(Tree.Ident(s"fv_${s.nme}"))) val bodyWithCorrectSymbols = new RefreshSymbol(refreshedFvSymbols.toMap).applyBlock(actualBody) FunDefn(tsym.owner, bms, tsym, refreshedFvSymbols.unzip._2.asParamList :: Nil, bodyWithCorrectSymbols)(N, annotations = PrivateModifier :: Nil) @@ -594,13 +592,9 @@ class DeforestRewriter(val solver: DeforestFusionSolver)(using Raise): k(cls) case _ => k(transformed) - object implicitRetPass extends BlockTransformerShallow(_symSubst): - override def applyBlock(b: Block): Block = b match - case Return(res, false) => Return(res, true) - case _ => super.applyBlock(b) Scoped( Set.from(newPolyFuns.map(_.sym) ++ newTopLevelBranchFuns.map(_.sym) ++ newTopLevelRestFuns.map(_.sym)), - implicitRetPass.applyBlock(mainRewriter.applyBlock(pre.pgrm.main))) + mainRewriter.applyBlock(pre.pgrm.main)) (newPolyFuns ++ newTopLevelBranchFuns ++ newTopLevelRestFuns).foldRight(newMainBody): (fdef, rest) => Define(fdef, rest) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/flowAnalysis/FlowAnalysis.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/flowAnalysis/FlowAnalysis.scala index 060f653092..d6839c06e1 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/flowAnalysis/FlowAnalysis.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/flowAnalysis/FlowAnalysis.scala @@ -502,7 +502,7 @@ class FlowPreAnalyzer(val pgrm: Program)(using for (sym, n) <- mergedBranchUsage do currentAffinityCount(sym) = currentAffinityCount(sym) + n applyBlock(rest) - case Return(res, implct) => applyResult(res) + case Return(res) => applyResult(res) case lbl@Label(label, loop, body, rest) => ctxTracker.inLabelBody(lbl): applyBlock(body) @@ -882,7 +882,7 @@ class FlowConstraintsCollector( def processBlock(b: Block)(using cc: ConstraintsCollector, blkRes: ConsStrat): Unit = val instId = cc.instId b match - case Return(res, implct) => cc.constrain(processResult(res), blkRes) + case Return(res) => cc.constrain(processResult(res), blkRes) case Throw(exc) => constrainOpaqueResult(exc) case Match(scrut, arms, dflt, rest) => val scrutStrat = processResult(scrut) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/js/JSBuilder.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/js/JSBuilder.scala index 326ba2dc70..2c7124fc3d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/js/JSBuilder.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/js/JSBuilder.scala @@ -394,7 +394,7 @@ class JSBuilder(using Config, TL, State, Ctx) extends CodeBuilder: case FunDefn(own, sym, dSym, ps :: pss, bod) => val result = pss.foldRight(bod): case (ps, block) => - Return(Lambda(ps, block)(Nil), false) + Return(Lambda(ps, block)(Nil)) val displayName = if sym.nameIsMeaningful then S(dSym.name) else N // * We may need to set up the function in a nested scope in one case below, so this is marked as lazy. @@ -434,7 +434,7 @@ class JSBuilder(using Config, TL, State, Ctx) extends CodeBuilder: case td @ FunDefn(params = ps :: pss, body = bod) => val result = pss.foldRight(bod): case (ps, block) => - Return(Lambda(ps, block)(Nil), false) + Return(Lambda(ps, block)(Nil)) val (params, bodyDoc) = scope.nest.givenIn: setupFunction(S(td.sym.nme), ps, result, isLambda = false) doc" # $mtdPrefix${td.sym.nme}($params) ${ braced(bodyDoc) }" @@ -506,7 +506,8 @@ class JSBuilder(using Config, TL, State, Ctx) extends CodeBuilder: val ctorCode = scope.nest.givenIn: val preCtorCode = nonNestedScoped(preCtor)(bd => block(bd, true)) - doc"$preCtorCode$singletonInit${nonNestedScoped(ctor)(bd => block(bd, endSemi = true))}${ + val defaultSuperCall = if par.isDefined && preCtor.isEmpty then doc" # super();" else doc"" + doc"$defaultSuperCall$preCtorCode$singletonInit${nonNestedScoped(ctor)(bd => block(bd, endSemi = true))}${ kind match case syntax.Obj => doc" # ${defineProperty(doc"this", "class", doc"${scope.lookup_!(isym, isym.toLoc)}")};" @@ -639,9 +640,8 @@ class JSBuilder(using Config, TL, State, Ctx) extends CodeBuilder: doc" # $resJS" - case Return(Value.Lit(UnitLit(false)), false) => doc" # return${mkSemi}" - case Return(res, true) => doc" # ${result(res)}${mkSemi}" - case Return(res, false) => doc" # return ${result(res)}${mkSemi}" + case Return(Value.Lit(UnitLit(false))) => doc" # return${mkSemi}" + case Return(res) => doc" # return ${result(res)}${mkSemi}" case Match(scrut, Nil, els, rest) => val e = els match diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/llir/Builder.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/llir/Builder.scala index f4226ce64b..1f4c2a0d3c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/llir/Builder.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/llir/Builder.scala @@ -176,7 +176,7 @@ final class LlirBuilder(using Elaborator.State)(tl: TraceLogger, uid: FreshInt): bErrStop(msg"Function without arguments not supported: ${params.length.toString}") else val fstParams = params.head - val wrappedLambda = params.tail.foldRight(body)((params, acc) => Return(Lambda(params, acc)(Nil), false)) + val wrappedLambda = params.tail.foldRight(body)((params, acc) => Return(Lambda(params, acc)(Nil))) bLam(Lambda(fstParams, wrappedLambda)(Nil), S(sym.nme), S(sym))(k)(using ctx) private def bFunDef(e: FunDefn)(using ctx: Ctx)(using Raise, Scope): Func = @@ -189,7 +189,7 @@ final class LlirBuilder(using Elaborator.State)(tl: TraceLogger, uid: FreshInt): val paramsList = params.head.params val ctx2 = paramsList.foldLeft(ctx)((acc, x) => acc.addName(x.sym, x.sym)).nonTopLevel val pl = paramsList.map(_.sym) - val wrappedLambda = params.tail.foldRight(body)((params, acc) => Return(Lambda(params, acc)(Nil), false)) + val wrappedLambda = params.tail.foldRight(body)((params, acc) => Return(Lambda(params, acc)(Nil))) Func( uid.make, sym, params = pl, resultNum = 1, body = bBlockWithEndCont(wrappedLambda)(x => Node.Result(Ls(x)))(using ctx2) @@ -206,7 +206,7 @@ final class LlirBuilder(using Elaborator.State)(tl: TraceLogger, uid: FreshInt): val paramsList = params.head.params val ctx2 = paramsList.foldLeft(ctx)((acc, x) => acc.addName(x.sym, x.sym)).nonTopLevel val pl = paramsList.map(_.sym) - val wrappedLambda = params.tail.foldRight(body)((params, acc) => Return(Lambda(params, acc)(Nil), false)) + val wrappedLambda = params.tail.foldRight(body)((params, acc) => Return(Lambda(params, acc)(Nil))) Func( uid.make, sym, params = pl, resultNum = 1, body = bBlockWithEndCont(wrappedLambda)(x => Node.Result(Ls(x)))(using ctx2) @@ -290,7 +290,7 @@ final class LlirBuilder(using Elaborator.State)(tl: TraceLogger, uid: FreshInt): (0 until f.paramsSize).zip(tempSymbols).map((_n, sym) => Param(FldFlags.empty, sym, N, Modulefulness.none)).toList) val app = Call(v, tempSymbols.map(x => Arg(N, Value.Ref(x))).toList ne_:: Nil)(true, false, false) - bLam(Lambda(paramsList, Return(app, false))(Nil), S(l.nme), N)(k) + bLam(Lambda(paramsList, Return(app))(Nil), S(l.nme), N)(k) case None => k(ctx.findName(l) |> sr) case Value.This(sym) => bErrStop(msg"Unsupported value: This") @@ -487,7 +487,7 @@ final class LlirBuilder(using Elaborator.State)(tl: TraceLogger, uid: FreshInt): ) summon[Ctx].def_acc += jpdef Node.Case(e, casesList, defaultCase) - case Return(res, implct) => bResult(res)(x => Node.Result(Ls(x))) + case Return(res) => bResult(res)(x => Node.Result(Ls(x))) case Throw(Instantiate(false, Select(Value.Ref(_, _), ident), Ls(Arg(N, Value.Lit(Tree.StrLit(e)))) :: Nil)) if ident.name === "Error" => @@ -559,7 +559,7 @@ final class LlirBuilder(using Elaborator.State)(tl: TraceLogger, uid: FreshInt): override def applyBlock(b: Block): Unit = b match case Match(scrut, arms, dflt, rest) => applyBlock(rest) - case Return(res, implct) => + case Return(res) => case Throw(exc) => case Label(label, loop, body, rest) => applyBlock(rest) case Break(label) => diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/wasm/text/WatBuilder.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/wasm/text/WatBuilder.scala index ad961ce141..16c047ea74 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/wasm/text/WatBuilder.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/wasm/text/WatBuilder.scala @@ -914,7 +914,9 @@ class WatBuilder(using TraceLogger, State) extends CodeBuilder: def splitSuperTail(block: Block): Opt[Block -> Ls[Arg]] = block match case End(_) => N - case Return(Call(Value.Ref(bs: BuiltinSymbol, _), argss), true) if bs eq State.builtinOpsMap("super") => + case Assign(lhs, Call(Value.Ref(bs: BuiltinSymbol, _), argss), _: End) + if (lhs is State.noSymbol) && (bs is State.superSymbol) + => S(End("") -> argss.flatten) case b: NonBlockTail => splitSuperTail(b.rest).map: (prefix, args) => @@ -1786,7 +1788,7 @@ class WatBuilder(using TraceLogger, State) extends CodeBuilder: val result = pss.foldRight(bod): case (ps, block) => - Return(Lambda(ps, block)(Nil), false) + Return(Lambda(ps, block)(Nil)) val (bodyWat, fnCtx) = setupFunction(N, ps, result) if sym.nameIsMeaningful then val funcTy = ctx.addType( @@ -2022,20 +2024,7 @@ class WatBuilder(using TraceLogger, State) extends CodeBuilder: ) end match - case Return(res, true) => - val resWat = result(res) - resWat.resultType match - case S(refTy: RefType) => - refTy.heapType match - case HeapType.Func => - errExpr(Ls(msg"Returning function instances is not supported" -> res.toLoc)) - case typeidx: TypeIdx if ctx.getTypeInfo_!(typeidx).compType.isInstanceOf[FunctionType] => - errExpr(Ls(msg"Returning function instances is not supported" -> res.toLoc)) - case _ => () - case _ => () - - resWat - case Return(res, false) => + case Return(res) => val resWat = result(res) resWat.resultType match case S(refTy: RefType) => diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala index c74d1ebce6..4aa054b05a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Elaborator.scala @@ -401,6 +401,7 @@ object Elaborator: def init(using State): Ctx = Ctx.empty.copy(env = Map( "globalThis" -> globalThisSymbol, )) + val superSymbol = builtinOpsMap("super") def dbg: Bool = false def dbgRefNum(num: Int): Str = if dbg then s"#$num" else "" diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/Symbol.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/Symbol.scala index 3a4ba0fb26..2d8459538c 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/Symbol.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/Symbol.scala @@ -243,7 +243,7 @@ class BuiltinSymbol def subst(using sub: SymbolSubst): BuiltinSymbol = sub.mapBuiltInSym(this) - def isPure: Bool = true // * For now, all builtins are pure + def isPure: Bool = nme =/= "super" // * For now, all other builtins are pure // * A basic approximation of builtin operator types lazy val signature : semantics.flow.Producer = @@ -503,4 +503,3 @@ class TopLevelSymbol(blockNme: Str)(using State) override def prefix: Str = "globalThis:" def subst(using sub: SymbolSubst): TopLevelSymbol = sub.mapTopLevelSym(this) - diff --git a/hkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scala b/hkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scala index d1ab8daef8..4d6102f744 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/semantics/ucs/Normalization.scala @@ -367,7 +367,7 @@ class Normalization(lowering: Lowering)(using tl: TL)(using Raise, Ctx, State) e // NOTE: `shouldRewriteWhile` is not the same as `config.rewriteWhileLoops` // as shouldRewriteWhile is always true when effect handler lowering is on lazy val loopCont = if config.shouldRewriteWhile - then Return(Call(Value.Ref(f, S(tSym)), Nil ne_:: Nil)(true, true, false), false) + then Return(Call(Value.Ref(f, S(tSym)), Nil ne_:: Nil)(true, true, false)) else Continue(loopLabel) val cont = form match @@ -461,14 +461,14 @@ class Normalization(lowering: Lowering)(using tl: TL)(using Raise, Ctx, State) e val loopEnd: Path = Select(Value.Ref(State.runtimeSymbol), Tree.Ident("LoopEnd"))(S(State.loopEndSymbol)) val blk = blockBuilder - .define(FunDefn(N, f, tSym, PlainParamList(Nil) :: Nil, Begin(body, Return(loopEnd, false)))(configOverride = N, annotations = Nil)) + .define(FunDefn(N, f, tSym, PlainParamList(Nil) :: Nil, Begin(body, Return(loopEnd)))(configOverride = N, annotations = Nil)) .assign(loopResult, Call(Value.Ref(f, S(tSym)), Nil ne_:: Nil)(true, true, false)) if summon[LoweringCtx].mayRet then blk .assign(isReturned, Call(Value.Ref(State.builtinOpsMap("!==")), (loopResult.asPath.asArg :: loopEnd.asArg :: Nil) ne_:: Nil)(true, false, false)) .ifthen(Value.Ref(isReturned), Case.Lit(Tree.BoolLit(true)), - Return(Value.Ref(loopResult), false), + Return(Value.Ref(loopResult)), N ) .rest(rest) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 1dfc7f08fc..1abc4d2923 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -84,7 +84,7 @@ class ClsLikeBody(val isym: Symbol, val methods: Array[FunDefn], val publicField class Block with constructor Match(val scrut: Path, val arms: Array[Arm], val dflt: Opt[Block], val rest: Block) - Return(val res: Result, val implct: Bool) + Return(val res: Result) Assign(val lhs: Symbol, val rhs: Result, val rest: Block) Define(val defn: Defn, val rest: Block) Scoped(val symbols: Array[Symbol], val rest: Block) @@ -184,7 +184,7 @@ class Printer(val owner: Opt[Class]) with + showResult(rhs) + showRestBlock(rest) Define(d, rest) then showDefn(d) + showRestBlock(rest) - Return(res, _) then + Return(res) then showResult(res) Match(scrut, arms, dflt, rest) then "if " + showPath(scrut) + " is" diff --git a/hkmc2/shared/src/test/mlscript/backlog/NonReturningStatements.mls b/hkmc2/shared/src/test/mlscript/backlog/NonReturningStatements.mls index 90f302e405..4911696eb3 100644 --- a/hkmc2/shared/src/test/mlscript/backlog/NonReturningStatements.mls +++ b/hkmc2/shared/src/test/mlscript/backlog/NonReturningStatements.mls @@ -31,7 +31,7 @@ fun foo = :sjs foo //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ foo2() +//│ return foo2() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ > ... diff --git a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls index 05265ba575..a3a50a01c4 100644 --- a/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls +++ b/hkmc2/shared/src/test/mlscript/backlog/ToTriage.mls @@ -48,7 +48,7 @@ val Infinity = 1 :sjs Infinity //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Infinity +//│ return Infinity //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Infinity @@ -218,7 +218,7 @@ open Stack { Nil, :: } //│ ║ l.216: 1 :: Nil //│ ╙── ^^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(Stack["::"](1, Stack.Nil)) +//│ return runtime.safeCall(Stack["::"](1, Stack.Nil)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: Stack.:: is not a function diff --git a/hkmc2/shared/src/test/mlscript/basics/AppOp.mls b/hkmc2/shared/src/test/mlscript/basics/AppOp.mls index d0018364ac..a4b8ddb8b7 100644 --- a/hkmc2/shared/src/test/mlscript/basics/AppOp.mls +++ b/hkmc2/shared/src/test/mlscript/basics/AppOp.mls @@ -43,7 +43,7 @@ add@1@2 :fixme @(id, 123) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Predef.apply(123) +//│ return Predef.apply(123) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: f is not a function diff --git a/hkmc2/shared/src/test/mlscript/basics/Assert.mls b/hkmc2/shared/src/test/mlscript/basics/Assert.mls index 1a557f6e92..aa1909c97d 100644 --- a/hkmc2/shared/src/test/mlscript/basics/Assert.mls +++ b/hkmc2/shared/src/test/mlscript/basics/Assert.mls @@ -7,12 +7,15 @@ let xs = [1, 2, 3] :sjs assert true //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ if (true === true) { runtime.Unit } else { runtime.safeCall(runtime.assertFail("Assert.mls", "9")) } +//│ if (true === true) { +//│ return runtime.Unit +//│ } +//│ return runtime.safeCall(runtime.assertFail("Assert.mls", "9")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— :re assert false -//│ ═══[RUNTIME ERROR] Error: Assertion failed (Assert.mls:15) +//│ ═══[RUNTIME ERROR] Error: Assertion failed (Assert.mls:18) assert xs is Array @@ -25,10 +28,11 @@ assert(true); 123 //│ let scrut; //│ scrut = 123; //│ if (scrut === true) { -//│ runtime.Unit -//│ } else { runtime.safeCall(runtime.assertFail("Assert.mls", "24")) } +//│ return runtime.Unit +//│ } +//│ return runtime.safeCall(runtime.assertFail("Assert.mls", "27")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ ═══[RUNTIME ERROR] Error: Assertion failed (Assert.mls:24) +//│ ═══[RUNTIME ERROR] Error: Assertion failed (Assert.mls:27) // * FIXME: the `else` is parsed as part of the `assert`! :sjs @@ -39,9 +43,11 @@ if 1 is //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ if (1 === 2) { //│ if (true === true) { -//│ runtime.Unit -//│ } else { 3 } -//│ } else { throw globalThis.Object.freeze(new globalThis.Error("match error")) } +//│ return runtime.Unit +//│ } +//│ return 3; +//│ } +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: match error diff --git a/hkmc2/shared/src/test/mlscript/basics/BadDefs.mls b/hkmc2/shared/src/test/mlscript/basics/BadDefs.mls index 9f58d24354..0b31abc18a 100644 --- a/hkmc2/shared/src/test/mlscript/basics/BadDefs.mls +++ b/hkmc2/shared/src/test/mlscript/basics/BadDefs.mls @@ -22,7 +22,7 @@ val ++ = 0 :sjs ++ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ $_$_ +//│ return $_$_ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -54,7 +54,7 @@ fun ++ z = 0 :sjs ++ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 0 +//│ return 0 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 diff --git a/hkmc2/shared/src/test/mlscript/basics/BadMemberProjections.mls b/hkmc2/shared/src/test/mlscript/basics/BadMemberProjections.mls index 069a1bb888..74ba5ed90c 100644 --- a/hkmc2/shared/src/test/mlscript/basics/BadMemberProjections.mls +++ b/hkmc2/shared/src/test/mlscript/basics/BadMemberProjections.mls @@ -14,8 +14,10 @@ //│ ╙── ^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let lambda; -//│ lambda = (undefined, function (self, ...args) { return runtime.safeCall(self.x(...args)) }); -//│ lambda +//│ lambda = (undefined, function (self, ...args) { +//│ return runtime.safeCall(self.x(...args)) +//│ }); +//│ return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -24,12 +26,12 @@ :re 1::x() //│ ╔══[COMPILATION ERROR] Integer literal is not a known class. -//│ ║ l.25: 1::x() +//│ ║ l.27: 1::x() //│ ║ ^ //│ ╟── Note: any expression of the form `‹expression›::‹identifier›` is a member projection; //│ ╙── add a space before ‹identifier› to make it an operator application. //│ ╔══[COMPILATION ERROR] Expected a statically known class; found integer literal. -//│ ║ l.25: 1::x() +//│ ║ l.27: 1::x() //│ ╙── ^ //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— //│ let lambda1; @@ -38,7 +40,6 @@ //│ return runtime.safeCall(self.x(...args)) //│ }); //│ block$res2 = runtime.safeCall(lambda1()); -//│ undefined //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: Function expected at least 1 argument but got 0 @@ -57,24 +58,24 @@ let x = 1 :e "A"::x //│ ╔══[COMPILATION ERROR] String literal is not a known class. -//│ ║ l.58: "A"::x +//│ ║ l.59: "A"::x //│ ║ ^^^ //│ ╟── Note: any expression of the form `‹expression›::‹identifier›` is a member projection; //│ ╙── add a space before ‹identifier› to make it an operator application. //│ ╔══[COMPILATION ERROR] Expected a statically known class; found string literal. -//│ ║ l.58: "A"::x +//│ ║ l.59: "A"::x //│ ╙── ^^^ //│ = fun :e "A" ::x //│ ╔══[COMPILATION ERROR] String literal is not a known class. -//│ ║ l.70: "A" ::x +//│ ║ l.71: "A" ::x //│ ║ ^^^ //│ ╟── Note: any expression of the form `‹expression›::‹identifier›` is a member projection; //│ ╙── add a space before ‹identifier› to make it an operator application. //│ ╔══[COMPILATION ERROR] Expected a statically known class; found string literal. -//│ ║ l.70: "A" ::x +//│ ║ l.71: "A" ::x //│ ╙── ^^^ //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/basics/BadParams.mls b/hkmc2/shared/src/test/mlscript/basics/BadParams.mls index dabc9a8e24..44d1cb7c85 100644 --- a/hkmc2/shared/src/test/mlscript/basics/BadParams.mls +++ b/hkmc2/shared/src/test/mlscript/basics/BadParams.mls @@ -45,7 +45,7 @@ fun f(val x) = x :sjs (x, x) => x //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda4; lambda4 = (undefined, function (x, x1) { return x1 }); lambda4 +//│ let lambda4; lambda4 = (undefined, function (x, x1) { return x1 }); return lambda4 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/basics/Declare.mls b/hkmc2/shared/src/test/mlscript/basics/Declare.mls index 415c7e28e3..1634979358 100644 --- a/hkmc2/shared/src/test/mlscript/basics/Declare.mls +++ b/hkmc2/shared/src/test/mlscript/basics/Declare.mls @@ -11,7 +11,7 @@ declare fun foo: Int :sjs foo //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.foo +//│ return globalThis.foo //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— diff --git a/hkmc2/shared/src/test/mlscript/basics/Drop.mls b/hkmc2/shared/src/test/mlscript/basics/Drop.mls index ebe6acee1e..38e48fb867 100644 --- a/hkmc2/shared/src/test/mlscript/basics/Drop.mls +++ b/hkmc2/shared/src/test/mlscript/basics/Drop.mls @@ -4,7 +4,7 @@ :sjs drop id(2 + 2) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Predef.id(4); runtime.Unit +//│ Predef.id(4); return runtime.Unit //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— @@ -12,14 +12,14 @@ drop id(2 + 2) :sjs drop { a: 0, b: 1 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.Unit +//│ return runtime.Unit //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let a⁰, b⁰, tmp, tmp1; //│ set a⁰ = 0; //│ set tmp = { "a": a⁰ }; //│ set b⁰ = 1; //│ set tmp1 = { "b": b⁰ }; -//│ runtime⁰.Unit⁰ +//│ return runtime⁰.Unit⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— :sjs diff --git a/hkmc2/shared/src/test/mlscript/basics/DynamicFields.mls b/hkmc2/shared/src/test/mlscript/basics/DynamicFields.mls index 2ebf22c73b..9d457f2690 100644 --- a/hkmc2/shared/src/test/mlscript/basics/DynamicFields.mls +++ b/hkmc2/shared/src/test/mlscript/basics/DynamicFields.mls @@ -7,14 +7,14 @@ let xs = mut [1, 2, 3] :sjs xs.(0) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ xs[0] +//│ return xs[0] //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 :sjs set xs.(0) = 4 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ xs[0] = 4; runtime.Unit +//│ xs[0] = 4; return runtime.Unit //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— xs.(0) diff --git a/hkmc2/shared/src/test/mlscript/basics/DynamicInstantiation.mls b/hkmc2/shared/src/test/mlscript/basics/DynamicInstantiation.mls index 201f9ace8c..d5212ed75d 100644 --- a/hkmc2/shared/src/test/mlscript/basics/DynamicInstantiation.mls +++ b/hkmc2/shared/src/test/mlscript/basics/DynamicInstantiation.mls @@ -6,7 +6,7 @@ class C :sjs new! C //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new C1()) +//│ return globalThis.Object.freeze(new C1()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = C @@ -39,7 +39,7 @@ new! id(C) //│ rhs = Tup of Ls of //│ Ident of "C" //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new Predef.id(C1)) +//│ return globalThis.Object.freeze(new Predef.id(C1)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: Predef.id is not a constructor diff --git a/hkmc2/shared/src/test/mlscript/basics/DynamicSelection.mls b/hkmc2/shared/src/test/mlscript/basics/DynamicSelection.mls index d8af275824..067ca85f37 100644 --- a/hkmc2/shared/src/test/mlscript/basics/DynamicSelection.mls +++ b/hkmc2/shared/src/test/mlscript/basics/DynamicSelection.mls @@ -47,7 +47,7 @@ r ! a :sjs !(r) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ r.value +//│ return r.value //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -92,7 +92,7 @@ t.01 :sjs (!) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda; lambda = (undefined, function (arg) { return ! arg }); lambda +//│ let lambda; lambda = (undefined, function (arg) { return ! arg }); return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/basics/FunnyRecordKeys.mls b/hkmc2/shared/src/test/mlscript/basics/FunnyRecordKeys.mls index 4cc846fed5..7a7f06e138 100644 --- a/hkmc2/shared/src/test/mlscript/basics/FunnyRecordKeys.mls +++ b/hkmc2/shared/src/test/mlscript/basics/FunnyRecordKeys.mls @@ -6,41 +6,41 @@ { a: 1 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze({ a: 1 }) +//│ return globalThis.Object.freeze({ a: 1 }) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = {a: 1} { "a": 1 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze({ a: 1 }) +//│ return globalThis.Object.freeze({ a: 1 }) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = {a: 1} :sjs { " ": 1 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze({ " ": 1 }) +//│ return globalThis.Object.freeze({ " ": 1 }) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = {" ": 1} :sjs { 0: 1 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze({ 0: 1 }) +//│ return globalThis.Object.freeze({ 0: 1 }) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = {"0": 1} :sjs { (0): 1 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze({ 0: 1 }) +//│ return globalThis.Object.freeze({ 0: 1 }) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = {"0": 1} :sjs { (id(0)): 1 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp; tmp = Predef.id(0); globalThis.Object.freeze({ [tmp]: 1 }) +//│ let tmp; tmp = Predef.id(0); return globalThis.Object.freeze({ [tmp]: 1 }) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = {"0": 1} diff --git a/hkmc2/shared/src/test/mlscript/basics/MemberProjections.mls b/hkmc2/shared/src/test/mlscript/basics/MemberProjections.mls index f710d232c0..bdbd21d3a9 100644 --- a/hkmc2/shared/src/test/mlscript/basics/MemberProjections.mls +++ b/hkmc2/shared/src/test/mlscript/basics/MemberProjections.mls @@ -139,7 +139,7 @@ Foo::n(foo, 2) //│ lambda2 = (undefined, function (self, ...args7) { //│ return runtime.safeCall(self.n(...args7)) //│ }); -//│ runtime.safeCall(lambda2(foo, 2)) +//│ return runtime.safeCall(lambda2(foo, 2)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 125 diff --git a/hkmc2/shared/src/test/mlscript/basics/MiscArrayTests.mls b/hkmc2/shared/src/test/mlscript/basics/MiscArrayTests.mls index 609d3ccc1c..a1ce2285b7 100644 --- a/hkmc2/shared/src/test/mlscript/basics/MiscArrayTests.mls +++ b/hkmc2/shared/src/test/mlscript/basics/MiscArrayTests.mls @@ -55,9 +55,11 @@ xs \ //│ ╙── ^^^^^^^^^^^^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let lambda5, tmp1; -//│ lambda5 = (undefined, function (x) { return x * 2 }); +//│ lambda5 = (undefined, function (x) { +//│ return x * 2 +//│ }); //│ tmp1 = map(lambda5); -//│ Predef.passTo(xs1, tmp1) +//│ return Predef.passTo(xs1, tmp1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: Function 'map' expected 2 arguments but got 1 @@ -66,7 +68,7 @@ xs \ xs\ map(x => x * 2) //│ ╔══[COMPILATION ERROR] Expected 2 arguments, got 1 -//│ ║ l.67: map(x => x * 2) +//│ ║ l.69: map(x => x * 2) //│ ╙── ^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] Error: Function 'map' expected 2 arguments but got 1 diff --git a/hkmc2/shared/src/test/mlscript/basics/MultiParamListClasses.mls b/hkmc2/shared/src/test/mlscript/basics/MultiParamListClasses.mls index 11bff3f2bd..38a425a170 100644 --- a/hkmc2/shared/src/test/mlscript/basics/MultiParamListClasses.mls +++ b/hkmc2/shared/src/test/mlscript/basics/MultiParamListClasses.mls @@ -16,7 +16,7 @@ Foo(1, 2)(3) :sir Foo(1, 2)(3)(4) //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let baseCall; set baseCall = Foo⁰(1, 2)(3); baseCall(4) +//│ let baseCall; set baseCall = Foo⁰(1, 2)(3); return baseCall(4) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: baseCall is not a function @@ -31,7 +31,7 @@ new Foo(1, 2)(3) :sir new Foo(1, 2)(3)(4) //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let baseInst; set baseInst = new Foo¹(1, 2)(3); baseInst(4) +//│ let baseInst; set baseInst = new Foo¹(1, 2)(3); return baseInst(4) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: baseInst is not a function @@ -39,14 +39,14 @@ new Foo(1, 2)(3)(4) :sir new Foo(1, 2)(3) //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ new Foo¹(1, 2)(3) +//│ return new Foo¹(1, 2)(3) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Foo(1, 2) :sir new Foo(1, 2) //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let lambda⁰; @private define lambda⁰ as fun lambda¹(z) { return new Foo¹(1, 2)(z) }; lambda¹ +//│ let lambda⁰; @private define lambda⁰ as fun lambda¹(z) { return new Foo¹(1, 2)(z) }; return lambda¹ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/basics/MultiParamLists.mls b/hkmc2/shared/src/test/mlscript/basics/MultiParamLists.mls index fbf08340ec..3aa06fd0e9 100644 --- a/hkmc2/shared/src/test/mlscript/basics/MultiParamLists.mls +++ b/hkmc2/shared/src/test/mlscript/basics/MultiParamLists.mls @@ -11,7 +11,7 @@ fun f(n1: Int): Int = n1 f(42) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 42 +//│ return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -29,7 +29,7 @@ fun f(n1: Int)(n2: Int): Int = (10 * n1 + n2) f(4)(2) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 42 +//│ return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -51,7 +51,7 @@ fun f(n1: Int)(n2: Int)(n3: Int): Int = 10 * (10 * n1 + n2) + n3 f(4)(2)(0) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ f$worker(4, 2, 0) +//│ return f$worker(4, 2, 0) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 420 @@ -77,7 +77,7 @@ fun f(n1: Int)(n2: Int)(n3: Int)(n4: Int): Int = 10 * (10 * (10 * n1 + n2) + n3) f(3)(0)(3)(1) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ f$worker1(3, 0, 3, 1) +//│ return f$worker1(3, 0, 3, 1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3031 diff --git a/hkmc2/shared/src/test/mlscript/basics/MultilineExpressions.mls b/hkmc2/shared/src/test/mlscript/basics/MultilineExpressions.mls index f780f9f5d2..b879d20c41 100644 --- a/hkmc2/shared/src/test/mlscript/basics/MultilineExpressions.mls +++ b/hkmc2/shared/src/test/mlscript/basics/MultilineExpressions.mls @@ -80,7 +80,7 @@ if 1 + 2 //│ kw = Keywrd of keyword 'then' //│ rhs = IntLit of 0 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ if (7 === true) { 0 } else { throw globalThis.Object.freeze(new globalThis.Error("match error")) } +//│ if (7 === true) { return 0 } throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: match error diff --git a/hkmc2/shared/src/test/mlscript/basics/MutVal.mls b/hkmc2/shared/src/test/mlscript/basics/MutVal.mls index 5ba7d5bae3..85c0c3b579 100644 --- a/hkmc2/shared/src/test/mlscript/basics/MutVal.mls +++ b/hkmc2/shared/src/test/mlscript/basics/MutVal.mls @@ -7,7 +7,7 @@ mut val cached: Int = 1 :sjs set cached = 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ cached = 2; runtime.Unit +//│ cached = 2; return runtime.Unit //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— cached diff --git a/hkmc2/shared/src/test/mlscript/basics/PureTermStatements.mls b/hkmc2/shared/src/test/mlscript/basics/PureTermStatements.mls index 86df1ea462..d3a01a0e13 100644 --- a/hkmc2/shared/src/test/mlscript/basics/PureTermStatements.mls +++ b/hkmc2/shared/src/test/mlscript/basics/PureTermStatements.mls @@ -85,7 +85,7 @@ fun foo() = :sjs 1; id(2) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp; tmp = Predef.id(2); tmp +//│ let tmp; tmp = Predef.id(2); return tmp //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 diff --git a/hkmc2/shared/src/test/mlscript/basics/ShortcircuitingOps.mls b/hkmc2/shared/src/test/mlscript/basics/ShortcircuitingOps.mls index 3fddd6da2a..1506f7c48e 100644 --- a/hkmc2/shared/src/test/mlscript/basics/ShortcircuitingOps.mls +++ b/hkmc2/shared/src/test/mlscript/basics/ShortcircuitingOps.mls @@ -4,7 +4,7 @@ :sjs 1 && 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ if (1 === true) { 2 } else { false } +//│ if (1 === true) { return 2 } return false; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = false @@ -32,15 +32,16 @@ print(1 && loudTrue) //│ if (1 === true) { //│ let inlinedVal; //│ inlinedVal = loud(true); -//│ Predef.print(inlinedVal) -//│ } else { Predef.print(false) } +//│ return Predef.print(inlinedVal) +//│ } +//│ return Predef.print(false); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > false :sjs 1 || 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ if (1 === false) { 2 } else { true } +//│ if (1 === false) { return 2 } return true; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true @@ -77,7 +78,7 @@ fold(||)(0, false, 42, 123) //│ return true; //│ }); //│ callPrefix = runtime.safeCall(Predef.fold(lambda)); -//│ runtime.safeCall(callPrefix(0, false, 42, 123)) +//│ return runtime.safeCall(callPrefix(0, false, 42, 123)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true diff --git a/hkmc2/shared/src/test/mlscript/basics/StrTest.mls b/hkmc2/shared/src/test/mlscript/basics/StrTest.mls index f2a83de8f9..f1b421c67e 100644 --- a/hkmc2/shared/src/test/mlscript/basics/StrTest.mls +++ b/hkmc2/shared/src/test/mlscript/basics/StrTest.mls @@ -8,7 +8,7 @@ open StrOps :sjs "a" is Str //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ if (typeof "a" === 'string') { true } else { false } +//│ if (typeof "a" === 'string') { return true } return false; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true diff --git a/hkmc2/shared/src/test/mlscript/basics/Underscores.mls b/hkmc2/shared/src/test/mlscript/basics/Underscores.mls index e51175d6be..508394c068 100644 --- a/hkmc2/shared/src/test/mlscript/basics/Underscores.mls +++ b/hkmc2/shared/src/test/mlscript/basics/Underscores.mls @@ -4,7 +4,7 @@ :sjs _ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda; lambda = (undefined, function (_0) { return _0 }); lambda +//│ let lambda; lambda = (undefined, function (_0) { return _0 }); return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -37,7 +37,7 @@ inc(2) :sjs _ + _ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda4; lambda4 = (undefined, function (_0, _1) { return _0 + _1 }); lambda4 +//│ let lambda4; lambda4 = (undefined, function (_0, _1) { return _0 + _1 }); return lambda4 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -102,7 +102,7 @@ _ is Int //│ if (globalThis.Number.isInteger(_0)) { return true } //│ return false; //│ }); -//│ lambda8 +//│ return lambda8 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/basics/ValMemberSymbols.mls b/hkmc2/shared/src/test/mlscript/basics/ValMemberSymbols.mls index 7e04c3e374..864e7590f9 100644 --- a/hkmc2/shared/src/test/mlscript/basics/ValMemberSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/basics/ValMemberSymbols.mls @@ -16,7 +16,7 @@ let a = A(1) :sir a.x //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ a⁰.x﹖ +//│ return a⁰.x﹖ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -24,7 +24,7 @@ a.x :sir a.A#x //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ a⁰.x¹ +//│ return a⁰.x¹ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -35,7 +35,7 @@ A::x //│ let lambda⁰; //│ @private //│ define lambda⁰ as fun lambda¹(self, ...args) { return self.x¹(...args) }; -//│ lambda¹ +//│ return lambda¹ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -56,7 +56,7 @@ case A(x) then x //│ throw new globalThis⁰.Error⁰("match error") //│ end //│ }; -//│ lambda³ +//│ return lambda³ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -73,14 +73,14 @@ let a = A()(1) :sir a.x //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ a¹.x﹖ +//│ return a¹.x﹖ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 :sir a.A#x //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ a¹.x³ +//│ return a¹.x³ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -90,7 +90,7 @@ A::x //│ let lambda⁴; //│ @private //│ define lambda⁴ as fun lambda⁵(self, ...args) { return self.x³(...args) }; -//│ lambda⁵ +//│ return lambda⁵ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -110,7 +110,7 @@ case A as a then a.x //│ throw new globalThis⁰.Error⁰("match error") //│ end //│ }; -//│ lambda⁷ +//│ return lambda⁷ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index 151adf9cd9..701a4bddac 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -69,7 +69,7 @@ staged module LiftedNested with //│ set var1 = Block⁰.ValueRef﹖(sym1); //│ set tmp5 = []; //│ set app = Block⁰.Call﹖(var1, tmp5); -//│ set return1 = Block⁰.Return﹖(app, false); +//│ set return1 = Block⁰.Return﹖(app); //│ set tmp6 = Block⁰.FunDefn﹖(sym, tmp4, return1); //│ return tmp6 //│ } diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 51715a0b11..ebfb83743a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -9,7 +9,7 @@ open Option fun printCode(x) = Printer.default.printCode(x) -printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false))) +printCode(FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1)))) //│ > fun f(x) = 1 printCode(ValueLit(true)) @@ -44,8 +44,8 @@ printCode(Tuple([Arg(ValueRef(Symbol("x"))), Arg(ValueRef(Symbol("y")))])) //│ > new D(0) //│ > [x, y] -let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) -//│ f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1), false)) +:silent +let f = FunDefn(Symbol("f"), [[Symbol("x")]], Return(ValueLit(1))) printCode(f) printCode(ClsLikeDefn(dSym, [f], [])) @@ -55,34 +55,28 @@ printCode(ClsLikeDefn(bSym, [], [])) //│ > fun f(x) = 1 //│ > class B -printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), Return(ValueRef(Symbol("x")), true)))) +printCode(Scoped([Symbol("x"), Symbol("y")], Assign(Symbol("x"), ValueLit(4.2), Return(ValueRef(Symbol("x")))))) //│ > let {x, y} //│ > x = 4.2 //│ > x -printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2), false)), Arm(Cls(dSym, ValueRef(dSym)), Return(ValueLit(3), false))], Some(Return(ValueRef(Symbol("x")), false)), End())) -//│ > if x is -//│ > 1 then 2 -//│ > D then 3 -//│ > else x - printCode(Define(ValDefn(Some(dSym), Symbol("x"), ValueLit(1)), End())) //│ > val x = 1 printCode(Define(ValDefn(None, Symbol("a"), ValueLit(1)), End())) //│ > val a = 1 -printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2), false)), Arm(Cls(bSym, ValueRef(bSym)), Return(ValueLit(3), false))], Some(Return(ValueRef(Symbol("x")), false)), End())) +printCode(Match(ValueRef(Symbol("x")), [Arm(Lit(1), Return(ValueLit(2))), Arm(Cls(bSym, ValueRef(bSym)), Return(ValueLit(3)))], Some(Return(ValueRef(Symbol("x")))), End())) //│ > if x is //│ > 1 then 2 //│ > B then 3 //│ > else x printCode(Scoped([Symbol("y")], Match( - ValueLit(1), - [Arm(Lit(1), Return(ValueLit(1), false))], - Some(Return(ValueLit(1), false)), - Return(ValueRef(Symbol("y")), false)))) + ValueLit(1), + [Arm(Lit(1), Return(ValueLit(1)))], + Some(Return(ValueLit(1))), + Return(ValueRef(Symbol("y")))))) //│ > let {y} //│ > if 1 is //│ > 1 then 1 @@ -91,8 +85,8 @@ printCode(Scoped([Symbol("y")], Match( printCode(Scoped([Symbol("y")], Match( ValueLit(1), - [Arm(Lit(1), Assign(Symbol("y"), ValueLit(1), Return(ValueRef(Symbol("y")), false)))], - Some(Assign(Symbol("y"), ValueLit(2), Return(ValueRef(Symbol("y")), false))), + [Arm(Lit(1), Assign(Symbol("y"), ValueLit(1), Return(ValueRef(Symbol("y")))))], + Some(Assign(Symbol("y"), ValueLit(2), Return(ValueRef(Symbol("y"))))), End()))) //│ > let {y} //│ > if 1 is @@ -104,14 +98,14 @@ printCode(Scoped([Symbol("y")], Match( //│ > y printCode(Scoped([Symbol("y")], Match( - ValueLit(1), + ValueLit(1), [Arm(Lit(1), Match( ValueLit(2), - [Arm(Lit(2), Assign(Symbol("y"), ValueLit(1), Return(ValueRef(Symbol("y")), false)))], - Some(Assign(Symbol("y"), ValueLit(2), Return(ValueRef(Symbol("y")), false))), + [Arm(Lit(2), Assign(Symbol("y"), ValueLit(1), Return(ValueRef(Symbol("y")))))], + Some(Assign(Symbol("y"), ValueLit(2), Return(ValueRef(Symbol("y"))))), End() - ))], - Some(Assign(Symbol("y"), ValueLit(3), Return(ValueRef(Symbol("y")), false))), + ))], + Some(Assign(Symbol("y"), ValueLit(3), Return(ValueRef(Symbol("y"))))), End()))) //│ > let {y} //│ > if 1 is diff --git a/hkmc2/shared/src/test/mlscript/codegen/BadNew.mls b/hkmc2/shared/src/test/mlscript/codegen/BadNew.mls index aae57733d4..91195b5413 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/BadNew.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/BadNew.mls @@ -31,7 +31,7 @@ new 2 + 2 :re new! 2 + 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp1; tmp1 = globalThis.Object.freeze(new 2()); tmp1 + 2 +//│ let tmp1; tmp1 = globalThis.Object.freeze(new 2()); return tmp1 + 2 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: 2 is not a constructor diff --git a/hkmc2/shared/src/test/mlscript/codegen/BadOpen.mls b/hkmc2/shared/src/test/mlscript/codegen/BadOpen.mls index 8c6518bc5a..9bb0c5e49e 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/BadOpen.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/BadOpen.mls @@ -35,7 +35,7 @@ open Foo { y } :sjs y //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Foo1.y +//│ return Foo1.y //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— diff --git a/hkmc2/shared/src/test/mlscript/codegen/BasicTerms.mls b/hkmc2/shared/src/test/mlscript/codegen/BasicTerms.mls index 07e5c15c1b..d177753b3c 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/BasicTerms.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/BasicTerms.mls @@ -6,7 +6,7 @@ 1 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 1 +//│ return 1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -18,22 +18,20 @@ //│ ║ l.15: 1 //│ ╙── ^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 2 +//│ return 2 //│ ╔══[WARNING] Pure expression in statement position //│ ║ l.15: 1 //│ ╙── ^ //│ —————————————| Lowered IR Tree |———————————————————————————————————————————————————————————————————— //│ Program: -//│ main = Return: -//│ res = Lit of IntLit of 2 -//│ implct = true +//│ main = Return of Lit of IntLit of 2 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 print("Hi") //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Predef.print("Hi") +//│ return Predef.print("Hi") //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > Hi @@ -41,7 +39,7 @@ print("Hi") print("Hi") 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Predef.print("Hi"); 2 +//│ Predef.print("Hi"); return 2 //│ —————————————| Lowered IR Tree |———————————————————————————————————————————————————————————————————— //│ Program: //│ main = Assign: @@ -56,9 +54,7 @@ print("Hi") //│ Ls of //│ Arg: //│ value = Lit of StrLit of "Hi" -//│ rest = Return: \ -//│ res = Lit of IntLit of 2 -//│ implct = true +//│ rest = Return of Lit of IntLit of 2 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > Hi //│ = 2 @@ -67,7 +63,7 @@ print("Hi") :re 2(2) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(2(2)) +//│ return runtime.safeCall(2(2)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: 2 is not a function diff --git a/hkmc2/shared/src/test/mlscript/codegen/BlockPrinter.mls b/hkmc2/shared/src/test/mlscript/codegen/BlockPrinter.mls index 81bbf147c2..a0dda98de7 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/BlockPrinter.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/BlockPrinter.mls @@ -14,7 +14,7 @@ 2 + 2 + 2 //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let tmp; set tmp = +⁰(2, 2); +⁰(tmp, 2) +//│ let tmp; set tmp = +⁰(2, 2); return +⁰(tmp, 2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 6 @@ -28,8 +28,7 @@ x + 1 //│ body = Assign: //│ lhs = x⁰ //│ rhs = Lit of IntLit of 1 -//│ rest = Return: \ -//│ res = Call: +//│ rest = Return of Call: //│ fun = Ref: //│ l = builtin:+⁰ //│ argss = Ls of @@ -39,23 +38,22 @@ x + 1 //│ l = x⁰ //│ Arg: //│ value = Lit of IntLit of 1 -//│ implct = true //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let x⁰; set x⁰ = 1; +⁰(x⁰, 1) +//│ let x⁰; set x⁰ = 1; return +⁰(x⁰, 1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 //│ x = 1 x //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ x⁰ +//│ return x⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 let x = 1 x + 1 //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let x¹; set x¹ = 1; +⁰(x¹, 1) +//│ let x¹; set x¹ = 1; return +⁰(x¹, 1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 //│ x = 1 @@ -68,9 +66,9 @@ x + 1 val x = 1 x + 1 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let x2; x2 = 1; x2 + 1 +//│ let x2; x2 = 1; return x2 + 1 //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let x²; define x² as val x³ = 1; +⁰(x³, 1) +//│ let x²; define x² as val x³ = 1; return +⁰(x³, 1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 //│ x = 1 @@ -97,7 +95,7 @@ case //│ throw new globalThis⁰.Error⁰("match error") //│ end //│ }; -//│ lambda¹ +//│ return lambda¹ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -157,7 +155,7 @@ new C(123) //│ constructor C¹ { set C².this.x = x; end } //│ }; //│ do C¹(123); -//│ new C²(123) +//│ return new C²(123) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = C(_) @@ -183,13 +181,15 @@ A.x //│ set C⁵.this.x = x; //│ end //│ } -//│ method f⁴ = fun f⁵(x1) { return 2 } +//│ method f⁴ = fun f⁵(x1) { +//│ return 2 +//│ } //│ }; //│ end //│ } //│ method g⁰ = fun g¹(x) { return 3 } //│ }; -//│ A².x⁹ +//│ return A².x⁹ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -200,7 +200,7 @@ A.x //│ let A³; //│ define A³ as class A⁴ //│ module A⁵ { val x¹¹; constructor { define x¹¹ as val x¹² = 3; end } }; -//│ A⁵.x¹² +//│ return A⁵.x¹² //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 @@ -213,7 +213,7 @@ class B(x) extends A with //│ define B⁰ as class B²(x) { //│ private val x¹³; //│ val y¹; -//│ constructor B¹ { super⁰(); set B².this.x = x; define y¹ as val y² = 2; end } +//│ constructor B¹ { do super⁰(); end; set B².this.x = x; define y¹ as val y² = 2; end } //│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— @@ -254,7 +254,7 @@ x.0 //│ undefined => //│ throw new globalThis⁰.Error﹖("Access to required field '0' yielded 'undefined'") //│ else -//│ selRes +//│ return selRes //│ end /* (Unreachable:) rest of abortive match */ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -263,7 +263,7 @@ x.0 let y = { x: 2 } y!x //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let y³, x¹⁵; set x¹⁵ = 2; set y³ = { "x": x¹⁵ }; y³!"x" +//│ let y³, x¹⁵; set x¹⁵ = 2; set y³ = { "x": x¹⁵ }; return y³!"x" //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 //│ y = {x: 2} diff --git a/hkmc2/shared/src/test/mlscript/codegen/BuiltinOps.mls b/hkmc2/shared/src/test/mlscript/codegen/BuiltinOps.mls index a3760bc873..9e8fa71e8c 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/BuiltinOps.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/BuiltinOps.mls @@ -4,21 +4,21 @@ :sjs 2 + 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 4 +//│ return 4 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 4 :sjs 2 +. 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 4 +//│ return 4 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 4 :sjs +2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 2 +//│ return 2 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -82,7 +82,7 @@ id(+)(1) //│ return arg1 + arg2 //│ }); //│ baseCall1 = Predef.id(lambda4); -//│ runtime.safeCall(baseCall1(1)) +//│ return runtime.safeCall(baseCall1(1)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: Function expected 2 arguments but got 1 @@ -92,7 +92,7 @@ fun (+) lol(a, b) = [a, b] :sjs 1 + 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze([ 1, 2 ]) +//│ return globalThis.Object.freeze([ 1, 2 ]) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [1, 2] @@ -105,7 +105,7 @@ id(~)(2) //│ return ~ arg //│ }); //│ baseCall2 = Predef.id(lambda5); -//│ runtime.safeCall(baseCall2(2)) +//│ return runtime.safeCall(baseCall2(2)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = -3 diff --git a/hkmc2/shared/src/test/mlscript/codegen/BuiltinSymbols.mls b/hkmc2/shared/src/test/mlscript/codegen/BuiltinSymbols.mls index 7693fc6df4..bf1de2421a 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/BuiltinSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/BuiltinSymbols.mls @@ -27,7 +27,7 @@ Bool :soir (case Bool then 1)(true) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ match true Bool⁰ => 1 else throw new globalThis⁰.Error⁰("match error") end +//│ match true Bool⁰ => return 1 else throw new globalThis⁰.Error⁰("match error") end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 diff --git a/hkmc2/shared/src/test/mlscript/codegen/CaseShorthand.mls b/hkmc2/shared/src/test/mlscript/codegen/CaseShorthand.mls index 16f9410f11..d7f2934dff 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/CaseShorthand.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/CaseShorthand.mls @@ -7,7 +7,7 @@ case x then x :sjs case { x then x } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda1; lambda1 = (undefined, function (caseScrut) { return caseScrut }); lambda1 +//│ let lambda1; lambda1 = (undefined, function (caseScrut) { return caseScrut }); return lambda1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -22,7 +22,7 @@ x => if x is //│ } //│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ }); -//│ lambda2 +//│ return lambda2 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -36,7 +36,7 @@ case 0 then true //│ } //│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ }); -//│ lambda3 +//│ return lambda3 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -48,10 +48,13 @@ case //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let lambda4; //│ lambda4 = (undefined, function (caseScrut) { -//│ if (caseScrut === 0) { Predef.print(1); return runtime.Unit } +//│ if (caseScrut === 0) { +//│ Predef.print(1); +//│ return runtime.Unit +//│ } //│ return runtime.Unit; //│ }); -//│ lambda4 +//│ return lambda4 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -74,10 +77,10 @@ case :todo // TODO: support this braceless syntax? case [x] then x, [] then 0 //│ ╔══[COMPILATION ERROR] Unexpected infix use of keyword 'then' here -//│ ║ l.75: case [x] then x, [] then 0 +//│ ║ l.78: case [x] then x, [] then 0 //│ ╙── ^^^^^^^^^ //│ ╔══[WARNING] Pure expression in statement position -//│ ║ l.75: case [x] then x, [] then 0 +//│ ║ l.78: case [x] then x, [] then 0 //│ ╙── ^^^^^^^^^^^^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. @@ -91,7 +94,7 @@ case //│ if (caseScrut === 0) { return true } //│ return false; //│ }); -//│ lambda10 +//│ return lambda10 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/codegen/ClassMatching.mls b/hkmc2/shared/src/test/mlscript/codegen/ClassMatching.mls index 316a72eff2..8cbdcb006b 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ClassMatching.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ClassMatching.mls @@ -12,8 +12,9 @@ if Some(0) is Some(x) then x //│ let scrut; //│ scrut = Some1(0); //│ if (scrut instanceof Some1.class) { -//│ scrut.value -//│ } else { throw globalThis.Object.freeze(new globalThis.Error("match error")) } +//│ return scrut.value +//│ } +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -26,8 +27,9 @@ if s is Some(x) then x //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ if (s instanceof Some1.class) { -//│ s.value -//│ } else { throw globalThis.Object.freeze(new globalThis.Error("match error")) } +//│ return s.value +//│ } +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -63,7 +65,7 @@ if s is //│ break split_default$ //│ end //│ throw new globalThis⁰.Error⁰("match error") -//│ tmp +//│ return tmp //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— //│ let arg$Some$0$, tmp; //│ block split_root$: @@ -81,7 +83,7 @@ if s is //│ set tmp = 1; //│ break split_root$ //│ throw new globalThis⁰.Error⁰("match error") -//│ tmp +//│ return tmp //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: match error @@ -101,7 +103,7 @@ x => if x is Some(x) then x //│ } //│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ }); -//│ lambda +//│ return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/codegen/Comma.mls b/hkmc2/shared/src/test/mlscript/codegen/Comma.mls index 2abfd5efca..faf901b723 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Comma.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Comma.mls @@ -17,7 +17,7 @@ fun f() = { console.log("ok"), 42 } fun f() = console.log("ok"), 42 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let f2; f2 = function f() { return runtime.safeCall(globalThis.console.log("ok")) }; 42 +//│ let f2; f2 = function f() { return runtime.safeCall(globalThis.console.log("ok")) }; return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 diff --git a/hkmc2/shared/src/test/mlscript/codegen/ConsoleLog.mls b/hkmc2/shared/src/test/mlscript/codegen/ConsoleLog.mls index f0e3890d1a..1d3ef73438 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ConsoleLog.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ConsoleLog.mls @@ -15,7 +15,9 @@ console.log("a") console.log("b") 123 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(globalThis.console.log("a")); runtime.safeCall(globalThis.console.log("b")); 123 +//│ runtime.safeCall(globalThis.console.log("a")); +//│ runtime.safeCall(globalThis.console.log("b")); +//│ return 123 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > a //│ > b @@ -24,21 +26,21 @@ console.log("b") let l = console.log l(123) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let l; l = globalThis.console.log; runtime.safeCall(l(123)) +//│ let l; l = globalThis.console.log; return runtime.safeCall(l(123)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 123 //│ l = fun log 42 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 42 +//│ return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 console.log("a") //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(globalThis.console.log("a")) +//│ return runtime.safeCall(globalThis.console.log("a")) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > a @@ -57,7 +59,7 @@ y * 2 //│ runtime.safeCall(globalThis.console.log("b")); //│ y = 124; //│ runtime.safeCall(globalThis.console.log("c")); -//│ 248 +//│ return 248 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > a //│ > b diff --git a/hkmc2/shared/src/test/mlscript/codegen/CurriedFunctions.mls b/hkmc2/shared/src/test/mlscript/codegen/CurriedFunctions.mls index f619e02c60..e6b9220364 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/CurriedFunctions.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/CurriedFunctions.mls @@ -21,7 +21,7 @@ foo(1)(2)(3) //│ return lambda⁰ //│ }; //│ set inlinedVal = foo$worker¹(1, 2); -//│ inlinedVal(3) +//│ return inlinedVal(3) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 6 @@ -50,7 +50,7 @@ foo(1)(2)(3) //│ return lambda$here //│ }; //│ set baseCall = foo³(1)(2); -//│ baseCall(3) +//│ return baseCall(3) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— //│ let foo², lambda$⁰; //│ @inline @private @@ -61,7 +61,7 @@ foo(1)(2)(3) //│ }; //│ @inline //│ define foo² as fun foo³(x)(y) { return lambda$¹(x, y) }; -//│ 6 +//│ return 6 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 6 @@ -87,7 +87,7 @@ foo(loudly(1))(loudly(2))(loudly(3))(loudly(4)) //│ set tmp2 = loudly⁰(3); //│ set callPrefix = baseCall(tmp2); //│ set tmp3 = loudly⁰(4); -//│ callPrefix(tmp3) +//│ return callPrefix(tmp3) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi 1 //│ > hi 2 diff --git a/hkmc2/shared/src/test/mlscript/codegen/DelayedLetInit.mls b/hkmc2/shared/src/test/mlscript/codegen/DelayedLetInit.mls index e676a75541..a57c58278f 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/DelayedLetInit.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/DelayedLetInit.mls @@ -13,7 +13,7 @@ let x print(x) //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ block$res2 = runtime.checkCall(Predef.print(x)); undefined +//│ block$res2 = runtime.checkCall(Predef.print(x)); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > undefined @@ -24,7 +24,7 @@ x = 1 x //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ block$res4 = x; undefined +//│ block$res4 = x; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -36,7 +36,7 @@ x = 2 x //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ block$res6 = x; undefined +//│ block$res6 = x; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -70,7 +70,7 @@ fun f() = 1 f //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ block$res10 = f; undefined +//│ block$res10 = f; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun f @@ -89,7 +89,7 @@ f(x) = x + 1 f(1) //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ block$res12 = runtime.safeCall(f1(1)); undefined +//│ block$res12 = runtime.safeCall(f1(1)); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -114,7 +114,6 @@ else foo = 1 //│ let foo1; //│ if (true === true) { //│ block$res14 = undefined; -//│ undefined //│ } else { throw globalThis.Object.freeze(new globalThis.Error("match error")) } //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ foo = undefined @@ -130,8 +129,7 @@ else //│ if (true === true) { //│ foo2 = 0; //│ block$res15 = runtime.Unit; -//│ undefined -//│ } else { foo2 = 1; block$res15 = runtime.Unit; undefined } +//│ } else { foo2 = 1; block$res15 = runtime.Unit; } //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ foo = 0 @@ -149,12 +147,12 @@ fun f() = f() //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ block$res17 = runtime.checkCall(f3()); undefined +//│ block$res17 = runtime.checkCall(f3()); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— foo //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ block$res18 = foo2; undefined +//│ block$res18 = foo2; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -162,7 +160,7 @@ foo :fixme fun f() = foo = 0 //│ ╔══[PARSE ERROR] Expected end of input; found '=' keyword instead -//│ ║ l.163: fun f() = foo = 0 +//│ ║ l.161: fun f() = foo = 0 //│ ╙── ^ //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— //│ let f4; diff --git a/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls b/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls index 0fa232c2f1..35c280f753 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FieldSymbols.mls @@ -89,7 +89,7 @@ case //│ throw new globalThis⁰.Error⁰("match error") //│ end //│ }; -//│ lambda¹ +//│ return lambda¹ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls index 5221694b06..7e0b531ce6 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FirstClassFunctionTransform.mls @@ -28,7 +28,7 @@ x => x //│ method call⁰ = fun call¹(x) { return lambda¹(x) } //│ }; //│ set tmp = new Function$¹(); -//│ tmp +//│ return tmp //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = class anonymous @@ -50,7 +50,7 @@ f(0, 0, true) :sir (x => x)(42) //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let lambda²; define lambda² as fun lambda³(x) { return x }; lambda³(42) +//│ let lambda²; define lambda² as fun lambda³(x) { return x }; return lambda³(42) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -75,7 +75,7 @@ bar(foo) //│ method call² = fun call³(x) { return foo¹(x) } //│ }; //│ set tmp = new Function$³(); -//│ bar¹(tmp) +//│ return bar¹(tmp) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -153,10 +153,12 @@ Foo(1).foo(x => x - 1) //│ return -⁰(x, 1) //│ }; //│ define Function$⁴ as class Function$⁵ { -//│ method call⁴ = fun call⁵(x) { return lambda⁵(x) } +//│ method call⁴ = fun call⁵(x) { +//│ return lambda⁵(x) +//│ } //│ }; //│ set tmp1 = new Function$⁵(); -//│ tmp.foo²(tmp1) +//│ return tmp.foo²(tmp1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -182,7 +184,7 @@ foo()(1) //│ return tmp //│ }; //│ set baseCall = foo⁴(); -//│ baseCall.call﹖(1) +//│ return baseCall.call﹖(1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -232,7 +234,8 @@ module Foo with //│ private val Bar⁰; //│ private val z⁰; //│ constructor(Bar, z) { -//│ super⁰(); +//│ do super⁰(); +//│ end; //│ set Function$⁹.this.Bar = Bar; //│ set Function$⁹.this.z = z; //│ end @@ -284,7 +287,7 @@ y => x + y //│ method call¹⁰ = fun call¹¹(y) { return lambda¹¹(y) } //│ }; //│ set tmp = new Function$¹¹(); -//│ tmp +//│ return tmp //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = class anonymous @@ -375,7 +378,7 @@ foo.Foo#x :ge foo.f(0) //│ ╔══[COMPILATION ERROR] Cannot determine if f is a function object. -//│ ║ l.376: foo.f(0) +//│ ║ l.379: foo.f(0) //│ ╙── ^^^^^ //│ = 1 @@ -393,7 +396,7 @@ foo.Foo#f(0) :ge foo.x(0) //│ ╔══[COMPILATION ERROR] Cannot determine if x is a function object. -//│ ║ l.394: foo.x(0) +//│ ║ l.397: foo.x(0) //│ ╙── ^^^^^ @@ -468,7 +471,8 @@ fun foo(x)(y) = x + y //│ define Function$¹² as class Function$¹³ { //│ private val x¹; //│ constructor(x) { -//│ super⁰(); +//│ do super⁰(); +//│ end; //│ set Function$¹³.this.x = x; //│ end //│ } @@ -510,7 +514,7 @@ print("abc") :e foo(print) //│ ╔══[COMPILATION ERROR] Cannot get print's parameter list. -//│ ║ l.511: foo(print) +//│ ║ l.515: foo(print) //│ ╙── ^^^^^ //│ ═══[RUNTIME ERROR] Error: Function 'call' expected 0 arguments but got 1 @@ -522,15 +526,17 @@ foo(print(_)) :expect ["abc"] foo(tuple) //│ ╔══[COMPILATION ERROR] Cannot get tuple's parameter list. -//│ ║ l.523: foo(tuple) +//│ ║ l.527: foo(tuple) //│ ╙── ^^^^^ //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let Function$¹⁴, tmp; //│ define Function$¹⁴ as class Function$¹⁵ { -//│ method call¹⁴ = fun call¹⁵() { return Predef⁰.tuple⁰() } +//│ method call¹⁴ = fun call¹⁵() { +//│ return Predef⁰.tuple⁰() +//│ } //│ }; //│ set tmp = new Function$¹⁵(); -//│ foo⁷(tmp) +//│ return foo⁷(tmp) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: Function 'call' expected 0 arguments but got 1 //│ ═══[RUNTIME ERROR] Expected: '["abc"]', got: 'undefined' diff --git a/hkmc2/shared/src/test/mlscript/codegen/Formatting.mls b/hkmc2/shared/src/test/mlscript/codegen/Formatting.mls index 13f43d161e..673fc1c5cf 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Formatting.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Formatting.mls @@ -17,25 +17,27 @@ let discard = drop _ discard of { a: 0, b: 11111 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp; tmp = globalThis.Object.freeze({ a: 0, b: 11111 }); runtime.safeCall(discard(tmp)) +//│ let tmp; tmp = globalThis.Object.freeze({ a: 0, b: 11111 }); return runtime.safeCall(discard(tmp)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— discard of { a: 0, b: 11111 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp1; tmp1 = globalThis.Object.freeze({ a: 0, b: 11111 }); runtime.safeCall(discard(tmp1)) +//│ let tmp1; +//│ tmp1 = globalThis.Object.freeze({ a: 0, b: 11111 }); +//│ return runtime.safeCall(discard(tmp1)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— discard of { aaaa: 1 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp2; tmp2 = globalThis.Object.freeze({ aaaa: 1 }); runtime.safeCall(discard(tmp2)) +//│ let tmp2; tmp2 = globalThis.Object.freeze({ aaaa: 1 }); return runtime.safeCall(discard(tmp2)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— discard of { aaaaaaaaa: 1, bbbb: 2 } //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let tmp3; //│ tmp3 = globalThis.Object.freeze({ aaaaaaaaa: 1, bbbb: 2 }); -//│ runtime.safeCall(discard(tmp3)) +//│ return runtime.safeCall(discard(tmp3)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— discard of { aaaaaaaaa: 1, bbbbbbbb: 2, ccccccccc: 3, dddddddddd: 4 } @@ -47,7 +49,7 @@ discard of { aaaaaaaaa: 1, bbbbbbbb: 2, ccccccccc: 3, dddddddddd: 4 } //│ ccccccccc: 3, //│ dddddddddd: 4 //│ }); -//│ runtime.safeCall(discard(tmp4)) +//│ return runtime.safeCall(discard(tmp4)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— @@ -58,7 +60,7 @@ discard of [ "aaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbb" ] //│ "aaaaaaaaaaaaaaa", //│ "bbbbbbbbbbbbbbbb" //│ ]); -//│ runtime.safeCall(discard(tmp5)) +//│ return runtime.safeCall(discard(tmp5)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— discard of [ "aaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbb", "ccccccccccccccccc", "dddddddddddddddddd" ] @@ -70,7 +72,7 @@ discard of [ "aaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbb", "ccccccccccccccccc", "dddddd //│ "ccccccccccccccccc", //│ "dddddddddddddddddd" //│ ]); -//│ runtime.safeCall(discard(tmp6)) +//│ return runtime.safeCall(discard(tmp6)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— discard of [[ "aaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbb", "ccccccccccccccccc", "dddddddddddddddddd" ]] @@ -83,7 +85,7 @@ discard of [[ "aaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbb", "ccccccccccccccccc", "ddddd //│ "dddddddddddddddddd" //│ ]); //│ tmp8 = globalThis.Object.freeze([ tmp7 ]); -//│ runtime.safeCall(discard(tmp8)) +//│ return runtime.safeCall(discard(tmp8)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— diff --git a/hkmc2/shared/src/test/mlscript/codegen/FunInClass.mls b/hkmc2/shared/src/test/mlscript/codegen/FunInClass.mls index 4650332516..736612015f 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/FunInClass.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/FunInClass.mls @@ -166,7 +166,7 @@ Foo(123) //│ toString() { return runtime.render(this); } //│ static [definitionMetadata] = ["class", "Foo", ["a"]]; //│ }); -//│ Foo1(123) +//│ return Foo1(123) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Foo(123) @@ -199,6 +199,6 @@ Bar(1) //│ toString() { return runtime.render(this); } //│ static [definitionMetadata] = ["class", "Bar", ["x"]]; //│ }); -//│ Bar1(1) +//│ return Bar1(1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Bar(1) diff --git a/hkmc2/shared/src/test/mlscript/codegen/Functions.mls b/hkmc2/shared/src/test/mlscript/codegen/Functions.mls index 39cc1bd02c..efc59bf80d 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Functions.mls @@ -95,7 +95,7 @@ fun test2(y) = y + 1 //│ > undefined //│ REPL> Parsed: //│ > undefined -//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res18)); undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res18));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > undefined //│ > undefined diff --git a/hkmc2/shared/src/test/mlscript/codegen/Getters.mls b/hkmc2/shared/src/test/mlscript/codegen/Getters.mls index 8e18699ebb..5e4b60de08 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Getters.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Getters.mls @@ -13,7 +13,7 @@ fun t = 42 :sjs t //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ t() +//│ return t() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -125,7 +125,7 @@ module M with :sjs M.t //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ M1.t +//│ return M1.t //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 diff --git a/hkmc2/shared/src/test/mlscript/codegen/GlobalThis.mls b/hkmc2/shared/src/test/mlscript/codegen/GlobalThis.mls index 46af4acd58..06369d88bb 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/GlobalThis.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/GlobalThis.mls @@ -22,8 +22,9 @@ globalThis if false then 0 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ if (false === true) { -//│ 0 -//│ } else { throw globalThis.Object.freeze(new globalThis.Error("match error")) } +//│ return 0 +//│ } +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'freeze') //│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'freeze') @@ -43,7 +44,7 @@ foo() //│ } //│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ }; -//│ foo() +//│ return foo() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'freeze') //│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'freeze') diff --git a/hkmc2/shared/src/test/mlscript/codegen/Hygiene.mls b/hkmc2/shared/src/test/mlscript/codegen/Hygiene.mls index b28bbe990b..c6190d87c7 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Hygiene.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Hygiene.mls @@ -41,7 +41,7 @@ print(Test) :sjs Test.foo() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Test1.foo() +//│ return Test1.foo() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > Test { x: 12, class: object Test } //│ = 12 @@ -64,7 +64,7 @@ let f = () => x let x = 2 f() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let x, f, x1, f1; x = 1; f1 = function f() { return x }; f = f1; x1 = 2; x +//│ let x, f, x1, f1; x = 1; f1 = function f() { return x }; f = f1; x1 = 2; return x //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 //│ f = fun f diff --git a/hkmc2/shared/src/test/mlscript/codegen/ImportExample.mls b/hkmc2/shared/src/test/mlscript/codegen/ImportExample.mls index be16fe53c7..0a14bd534f 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ImportExample.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ImportExample.mls @@ -34,7 +34,7 @@ let n = 42 :sjs n / 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ n / 2 +//│ return n / 2 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 21 @@ -46,7 +46,7 @@ open Example :sjs inc / 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Example.funnySlash(Example.inc, 2) +//│ return Example.funnySlash(Example.inc, 2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 @@ -54,7 +54,7 @@ inc / 2 :re n / 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Example.funnySlash(n, 2) +//│ return Example.funnySlash(n, 2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: f is not a function diff --git a/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls b/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls index ebfd1f43a9..9281eb5258 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ImportMLs.mls @@ -20,7 +20,7 @@ open Option :sjs None isDefined() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Option.isDefined(Option.None) +//│ return Option.isDefined(Option.None) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = false @@ -40,7 +40,7 @@ Some(1) :sjs (new Some(1)) isDefined() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp3; tmp3 = globalThis.Object.freeze(new Option.Some.class(1)); Option.isDefined(tmp3) +//│ let tmp3; tmp3 = globalThis.Object.freeze(new Option.Some.class(1)); return Option.isDefined(tmp3) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true diff --git a/hkmc2/shared/src/test/mlscript/codegen/ImportedOps.mls b/hkmc2/shared/src/test/mlscript/codegen/ImportedOps.mls index 6dc7845941..5ac68242ef 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ImportedOps.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ImportedOps.mls @@ -12,8 +12,12 @@ fun foo() = foo() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let foo; -//│ foo = function foo() { let tmp; tmp = M1.concat("a", "b"); return M1.concat(tmp, "c") }; -//│ foo() +//│ foo = function foo() { +//│ let tmp; +//│ tmp = M1.concat("a", "b"); +//│ return M1.concat(tmp, "c") +//│ }; +//│ return foo() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "abc" diff --git a/hkmc2/shared/src/test/mlscript/codegen/InlineLambdas.mls b/hkmc2/shared/src/test/mlscript/codegen/InlineLambdas.mls index 53602df21d..e0f8e06c10 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/InlineLambdas.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/InlineLambdas.mls @@ -13,7 +13,7 @@ //│ tmp3 = tmp2 + 1; //│ return tmp3 + 1 //│ }); -//│ runtime.safeCall(lambda(1)) +//│ return runtime.safeCall(lambda(1)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 6 @@ -30,21 +30,21 @@ //│ tmp4 = tmp3 + 1; //│ return tmp4 + 1 //│ }); -//│ runtime.safeCall(lambda1(1)) +//│ return runtime.safeCall(lambda1(1)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 7 :sjs (x => x) + 1 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda2; lambda2 = (undefined, function (x) { return x }); lambda2 + 1 +//│ let lambda2; lambda2 = (undefined, function (x) { return x }); return lambda2 + 1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "function (x) { runtime.checkArgs(\"\", 1, true, arguments.length); return x }1" :sjs 1 + (x => x) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda3; lambda3 = (undefined, function (x) { return x }); 1 + lambda3 +//│ let lambda3; lambda3 = (undefined, function (x) { return x }); return 1 + lambda3 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "1function (x) { runtime.checkArgs(\"\", 1, true, arguments.length); return x }" diff --git a/hkmc2/shared/src/test/mlscript/codegen/InlineMultiArgLists.mls b/hkmc2/shared/src/test/mlscript/codegen/InlineMultiArgLists.mls index cb56bc6d5b..e4f4765f64 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/InlineMultiArgLists.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/InlineMultiArgLists.mls @@ -8,7 +8,7 @@ private fun add(x)(y) = x + y add(1)(2) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let add⁰; @inline @private define add⁰ as fun add¹(x)(y) { return +⁰(x, y) }; 3 +//│ let add⁰; @inline @private define add⁰ as fun add¹(x)(y) { return +⁰(x, y) }; return 3 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 @@ -28,7 +28,7 @@ mkAdder(10)(20) //│ define lambda as fun lambda⁰(y) { return +⁰(x, y) }; //│ return lambda⁰ //│ }; -//│ 30 +//│ return 30 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 30 @@ -42,7 +42,7 @@ f(5) //│ @inline @private //│ define add2⁰ as fun add2¹(x)(y) { return +⁰(x, y) }; //│ set f⁰ = add2¹(10); -//│ 15 +//│ return 15 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 15 //│ f = fun @@ -56,7 +56,7 @@ triple(1)(2)(3) //│ let triple⁰; //│ @inline @private //│ define triple⁰ as fun triple¹(x)(y)(z) { let tmp; set tmp = +⁰(x, y); return +⁰(tmp, z) }; -//│ 6 +//│ return 6 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 6 diff --git a/hkmc2/shared/src/test/mlscript/codegen/Inliner.mls b/hkmc2/shared/src/test/mlscript/codegen/Inliner.mls index 3eac2ae34d..c0584f7850 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Inliner.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Inliner.mls @@ -7,7 +7,7 @@ fun f() = 0 f() //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f⁰; define f⁰ as fun f¹() { return 0 }; 0 +//│ let f⁰; define f⁰ as fun f¹() { return 0 }; return 0 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -15,7 +15,7 @@ f() fun f(x) = x f(100) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f²; define f² as fun f³(x) { return x }; 100 +//│ let f²; define f² as fun f³(x) { return x }; return 100 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 100 @@ -51,7 +51,7 @@ print(f(1, 2, ...[1])) //│ do Predef⁰.print⁰(6); //│ set tmp = [1]; //│ set tmp1 = f⁷(1, 2, ...tmp); -//│ Predef⁰.print⁰(tmp1) +//│ return Predef⁰.print⁰(tmp1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 6 //│ > 4 @@ -66,10 +66,12 @@ let f(...us, v) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— //│ let f⁸, us⁰, v⁰; -//│ define f⁸ as fun f⁹(x, ...ys) { return [x, ys] }; +//│ define f⁸ as fun f⁹(x, ...ys) { +//│ return [x, ys] +//│ }; //│ set us⁰ = [1, 2, 3]; //│ set v⁰ = 4; -//│ f⁹(...us⁰, 4) +//│ return f⁹(...us⁰, 4) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [1, [2, 3, 4]] //│ us = [1, 2, 3] @@ -93,7 +95,7 @@ f(1, ...[2], ...[3]) //│ do f¹¹(1, ...tmp); //│ set tmp1 = [2]; //│ set tmp2 = [3]; -//│ f¹¹(1, ...tmp1, ...tmp2) +//│ return f¹¹(1, ...tmp1, ...tmp2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ > [2] @@ -126,7 +128,7 @@ f(1, 2, 3, 4) //│ do Predef⁰.print⁰(c¹); //│ set c² = mut [3, 4]; //│ do Predef⁰.print⁰(3); -//│ Predef⁰.print⁰(c²) +//│ return Predef⁰.print⁰(c²) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 3 //│ > [] @@ -162,7 +164,7 @@ f(1, 2, 3, ...[4]) //│ ]); //│ f7(1, 2, ...tmp6); //│ tmp7 = globalThis.Object.freeze([ 4 ]); -//│ f7(1, 2, 3, ...tmp7) +//│ return f7(1, 2, 3, ...tmp7) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 3 //│ > [3] @@ -182,7 +184,7 @@ fun f() = g(true) f() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let f8; f8 = function f() { return true }; true +//│ let f8; f8 = function f() { return true }; return true //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true @@ -196,7 +198,7 @@ fun f() = g(g(true)) f() //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f¹⁴; define f¹⁴ as fun f¹⁵() { return true }; true +//│ let f¹⁴; define f¹⁴ as fun f¹⁵() { return true }; return true //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true @@ -222,7 +224,7 @@ f(1)(2)(3) //│ return tmp10 * 2 //│ }; //│ f10 = function f(a) { return (b) => { return (c3) => { return f11(a, b, c3) } } }; -//│ 14 +//│ return 14 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 14 @@ -256,7 +258,7 @@ foo(1)(2)(3) //│ return lam$¹(x, y) //│ }; //│ do Predef⁰.print⁰(7); -//│ 6 +//│ return 6 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 7 //│ = 6 @@ -332,7 +334,7 @@ f() //│ return runtime⁰.Unit⁰ //│ end //│ }; -//│ f²³() +//│ return f²³() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— diff --git a/hkmc2/shared/src/test/mlscript/codegen/Lambdas.mls b/hkmc2/shared/src/test/mlscript/codegen/Lambdas.mls index 77edb5deb4..2f26b90155 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Lambdas.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Lambdas.mls @@ -8,14 +8,14 @@ x => let y = x y //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda; lambda = (undefined, function (x) { return x }); lambda +//│ let lambda; lambda = (undefined, function (x) { return x }); return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun (acc, _) => acc //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda1; lambda1 = (undefined, function (acc, _) { return acc }); lambda1 +//│ let lambda1; lambda1 = (undefined, function (acc, _) { return acc }); return lambda1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/codegen/MergeMatchArms.mls b/hkmc2/shared/src/test/mlscript/codegen/MergeMatchArms.mls index 02e8a2fa25..7c82216e21 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/MergeMatchArms.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/MergeMatchArms.mls @@ -23,17 +23,15 @@ if a is D then 4 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ if (a instanceof A1.class) { -//│ 1 +//│ return 1 //│ } else if (a instanceof B1.class) { -//│ 2 +//│ return 2 //│ } else if (a instanceof C1.class) { -//│ 3 +//│ return 3 //│ } else if (a instanceof D1.class) { -//│ 4 -//│ } else { -//│ throw globalThis.Object.freeze(new globalThis.Error("match error")) +//│ return 4 //│ } -//│ /* Rest moved to non-abortive branch(es) */ +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -48,15 +46,13 @@ if a is C then 3 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ if (a instanceof A1.class) { -//│ 1 +//│ return 1 //│ } else if (a instanceof B1.class) { -//│ 2 +//│ return 2 //│ } else if (a instanceof C1.class) { -//│ 3 -//│ } else { -//│ throw globalThis.Object.freeze(new globalThis.Error("match error")) +//│ return 3 //│ } -//│ /* Rest moved to non-abortive branch(es) */ +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -88,7 +84,7 @@ if a is //│ } //│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ } -//│ tmp +//│ return tmp //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -129,7 +125,7 @@ print(x) //│ throw globalThis.Object.freeze(new globalThis.Error("match error")) //│ } //│ x = tmp1; -//│ Predef.print(tmp1) +//│ return Predef.print(tmp1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ x = 1 @@ -144,13 +140,11 @@ if a is B then 2 + tmp //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ if (a instanceof A1.class) { -//│ 1 +//│ return 1 //│ } else if (a instanceof B1.class) { -//│ 4 -//│ } else { -//│ throw globalThis.Object.freeze(new globalThis.Error("match error")) +//│ return 4 //│ } -//│ /* Rest moved to non-abortive branch(es) */ +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -169,17 +163,13 @@ if a is //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let tmp2; //│ if (a instanceof A1.class) { -//│ 1 -//│ } else { -//│ tmp2 = printAndId(3); -//│ if (a instanceof B1.class) { -//│ 2 + tmp2 -//│ } else { -//│ throw globalThis.Object.freeze(new globalThis.Error("match error")) -//│ } -//│ /* Rest moved to non-abortive branch(es) */ +//│ return 1 +//│ } +//│ tmp2 = printAndId(3); +//│ if (a instanceof B1.class) { +//│ return 2 + tmp2 //│ } -//│ /* Rest moved to non-abortive branch(es) */ +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -196,15 +186,13 @@ if a is print(x) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ if (a instanceof A1.class) { -//│ 1 +//│ return 1 //│ } else if (a instanceof B1.class) { -//│ Predef.print(2) +//│ return Predef.print(2) //│ } else if (a instanceof C1.class) { -//│ Predef.print(3) -//│ } else { -//│ throw globalThis.Object.freeze(new globalThis.Error("match error")) +//│ return Predef.print(3) //│ } -//│ /* Rest moved to non-abortive branch(es) */ +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -225,22 +213,20 @@ if a is //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let tmp3, tmp4, tmp5; //│ if (a instanceof B1.class) { -//│ 1 +//│ return 1 +//│ } +//│ if (a instanceof A1.class) { +//│ tmp3 = 2; +//│ } else if (a instanceof C1.class) { +//│ tmp3 = 3; //│ } else { -//│ if (a instanceof A1.class) { -//│ tmp3 = 2; -//│ } else if (a instanceof C1.class) { -//│ tmp3 = 3; -//│ } else { -//│ throw globalThis.Object.freeze(new globalThis.Error("match error")) -//│ } -//│ Predef.print(tmp3); -//│ tmp4 = tmp3 + 1; -//│ Predef.print(tmp4); -//│ tmp5 = tmp3 + 2; -//│ Predef.print(tmp5) +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")) //│ } -//│ /* Rest moved to non-abortive branch(es) */ +//│ Predef.print(tmp3); +//│ tmp4 = tmp3 + 1; +//│ Predef.print(tmp4); +//│ tmp5 = tmp3 + 2; +//│ return Predef.print(tmp5); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 2 //│ > 3 diff --git a/hkmc2/shared/src/test/mlscript/codegen/Misc.mls b/hkmc2/shared/src/test/mlscript/codegen/Misc.mls index 78c978d3ce..4d07b442cd 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Misc.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Misc.mls @@ -22,7 +22,7 @@ 1 + 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 3 +//│ return 3 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 diff --git a/hkmc2/shared/src/test/mlscript/codegen/ModuleMethods.mls b/hkmc2/shared/src/test/mlscript/codegen/ModuleMethods.mls index 9fa87e8f70..10ba631d46 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ModuleMethods.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ModuleMethods.mls @@ -8,7 +8,7 @@ module Example with :ssjs Example.f(123) //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ block$res2 = runtime.checkCall(Example1.f(123)); undefined +//│ block$res2 = runtime.checkCall(Example1.f(123)); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [123, 456] diff --git a/hkmc2/shared/src/test/mlscript/codegen/Modules.mls b/hkmc2/shared/src/test/mlscript/codegen/Modules.mls index 6e24d31d69..15b6819c90 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Modules.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Modules.mls @@ -17,7 +17,7 @@ module None :sjs None //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ None1 +//│ return None1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = class None @@ -25,7 +25,7 @@ None :re None() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(None1()) +//│ return runtime.safeCall(None1()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: Class constructor None cannot be invoked without 'new' @@ -44,7 +44,7 @@ new! None //│ ║ l.42: new! None //│ ╙── ^^^^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new None1()) +//│ return globalThis.Object.freeze(new None1()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = None @@ -134,7 +134,7 @@ module M with :sjs M.m //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ M3.m +//│ return M3.m //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = class M { m: ref'1 } as ref'1 diff --git a/hkmc2/shared/src/test/mlscript/codegen/NestedLoops.mls b/hkmc2/shared/src/test/mlscript/codegen/NestedLoops.mls index d946748b3e..80fdeddf32 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/NestedLoops.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/NestedLoops.mls @@ -42,7 +42,7 @@ c //│ else //│ end //│ end -//│ c⁰ +//│ return c⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 25 //│ c = 25 diff --git a/hkmc2/shared/src/test/mlscript/codegen/NestedScoped.mls b/hkmc2/shared/src/test/mlscript/codegen/NestedScoped.mls index 3096a717b6..0270b9a2ea 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/NestedScoped.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/NestedScoped.mls @@ -9,9 +9,9 @@ :sjs scope.locally of 42 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 42 +//│ return 42 //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ 42 +//│ return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -19,7 +19,7 @@ scope.locally of 42 :sir let x = 42 in x //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let x⁰; set x⁰ = 42; x⁰ +//│ let x⁰; set x⁰ = 42; return x⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -28,7 +28,7 @@ let x = 42 in x scope.locally of let x = 42 in x //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let x¹; set x¹ = 42; x¹ +//│ let x¹; set x¹ = 42; return x¹ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -48,7 +48,7 @@ scope.locally of scope.locally of ( x ) //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let x²; set x² = 42; x² +//│ let x²; set x² = 42; return x² //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 diff --git a/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls b/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls index b27e4dfad3..4abffeeaec 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/OpenWildcard.mls @@ -16,7 +16,7 @@ open Option :sjs None isDefined() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Option.isDefined(Option.None) +//│ return Option.isDefined(Option.None) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = false @@ -61,7 +61,7 @@ val Option = "Oops" :sjs Some(123) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Option.Some(123) +//│ return Option.Some(123) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Some(123) @@ -77,14 +77,14 @@ open Option :sjs Some //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Option.Some +//│ return Option.Some //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun Some { class: class Some } :sjs None //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Option3.None +//│ return Option3.None //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 123 diff --git a/hkmc2/shared/src/test/mlscript/codegen/ParamClasses.mls b/hkmc2/shared/src/test/mlscript/codegen/ParamClasses.mls index 349261de5a..886a750c3a 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ParamClasses.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ParamClasses.mls @@ -21,19 +21,19 @@ data class Foo() Foo //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Foo1 +//│ return Foo1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun Foo { class: class Foo } Foo() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Foo1() +//│ return Foo1() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Foo() Foo.class //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Foo1.class +//│ return Foo1.class //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = class Foo @@ -58,26 +58,26 @@ data class Foo(a) Foo //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Foo3 +//│ return Foo3 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun Foo { class: class Foo } Foo(1) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Foo3(1) +//│ return Foo3(1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Foo(1) Foo(1).a //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp; tmp = Foo3(1); tmp.a +//│ let tmp; tmp = Foo3(1); return tmp.a //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 fun foo(y) = Foo(y) foo(27) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let foo; foo = function foo(y) { return Foo3(y) }; Foo3(27) +//│ let foo; foo = function foo(y) { return Foo3(y) }; return Foo3(27) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Foo(27) @@ -121,13 +121,13 @@ let f = new! foo(1, 2) f.a //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ f1.a +//│ return f1.a //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 f.b //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ f1.b +//│ return f1.b //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -139,19 +139,19 @@ let f = Foo(1, 2) f.a //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ f2.a +//│ return f2.a //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 f.b //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ f2.b +//│ return f2.b //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 Foo(print(1), print(2)) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp1, tmp2; tmp1 = Predef.print(1); tmp2 = Predef.print(2); Foo5(tmp1, tmp2) +//│ let tmp1, tmp2; tmp1 = Predef.print(1); tmp2 = Predef.print(2); return Foo5(tmp1, tmp2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ > 2 @@ -191,7 +191,7 @@ let i = new Inner(100) i.i1(20) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(i.i1(20)) +//│ return runtime.safeCall(i.i1(20)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 120 @@ -242,7 +242,7 @@ class Foo(x, val y, z, val z, z) with Foo(10, 20, 30, 40, 50) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Foo7(10, 20, 30, 40, 50) +//│ return Foo7(10, 20, 30, 40, 50) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > x = 1 //│ > y = 21 @@ -277,7 +277,7 @@ class Foo(val z, val z) Foo(1, 2) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Foo9(1, 2) +//│ return Foo9(1, 2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Foo(undefined, undefined) diff --git a/hkmc2/shared/src/test/mlscript/codegen/PartialApps.mls b/hkmc2/shared/src/test/mlscript/codegen/PartialApps.mls index c3968f07ab..92c6963035 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/PartialApps.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/PartialApps.mls @@ -227,14 +227,18 @@ _ - _ of 1, 2 :sjs 1 \ (_ - 2) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda32; lambda32 = (undefined, function (_0) { return _0 - 2 }); Predef.passTo(1, lambda32) +//│ let lambda32; +//│ lambda32 = (undefined, function (_0) { return _0 - 2 }); +//│ return Predef.passTo(1, lambda32) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun :sjs 1 \ (_ - 2)() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda33; lambda33 = (undefined, function (_0) { return _0 - 2 }); Predef.passTo(1, lambda33)() +//│ let lambda33; +//│ lambda33 = (undefined, function (_0) { return _0 - 2 }); +//│ return Predef.passTo(1, lambda33)() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = -1 @@ -247,10 +251,10 @@ _ - _ of 1, 2 :w let f = if _ then 1 else 0 //│ ╔══[WARNING] This catch-all clause makes the following branches unreachable. -//│ ║ l.248: let f = if _ then 1 else 0 +//│ ║ l.252: let f = if _ then 1 else 0 //│ ║ ^^^^^^ //│ ╟── This branch is unreachable. -//│ ║ l.248: let f = if _ then 1 else 0 +//│ ║ l.252: let f = if _ then 1 else 0 //│ ╙── ^^^^^^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let f13; f13 = 1; diff --git a/hkmc2/shared/src/test/mlscript/codegen/PlainClasses.mls b/hkmc2/shared/src/test/mlscript/codegen/PlainClasses.mls index 1be9c51bc6..2c13fa3c45 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/PlainClasses.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/PlainClasses.mls @@ -18,7 +18,7 @@ class Foo Foo is Foo //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ if (Foo1 instanceof Foo1) { true } else { false } +//│ if (Foo1 instanceof Foo1) { return true } return false; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = false @@ -26,32 +26,33 @@ Foo is Foo //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let scrut; //│ scrut = globalThis.Object.freeze(new Foo1()); -//│ if (scrut instanceof Foo1) { true } else { false } +//│ if (scrut instanceof Foo1) { return true } +//│ return false; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true new Foo //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new Foo1()) +//│ return globalThis.Object.freeze(new Foo1()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Foo new Foo() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new Foo1()) +//│ return globalThis.Object.freeze(new Foo1()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Foo Foo //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Foo1 +//│ return Foo1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = class Foo :re Foo() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(Foo1()) +//│ return runtime.safeCall(Foo1()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: Class constructor Foo cannot be invoked without 'new' @@ -70,7 +71,7 @@ print("ok") //│ toString() { return runtime.render(this); } //│ static [definitionMetadata] = ["class", "Foo"]; //│ }); -//│ Predef.print("ok") +//│ return Predef.print("ok") //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > ok @@ -107,18 +108,18 @@ let t = test() :e new t //│ ╔══[COMPILATION ERROR] Expected a statically known class; found reference. -//│ ║ l.108: new t +//│ ║ l.109: new t //│ ║ ^ //│ ╙── The 'new' keyword requires a statically known class; use the 'new!' operator for dynamic instantiation. //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new t()) +//│ return globalThis.Object.freeze(new t()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi //│ = Foo new! t //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new t()) +//│ return globalThis.Object.freeze(new t()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi //│ = Foo @@ -126,18 +127,18 @@ new! t :e new t() //│ ╔══[COMPILATION ERROR] Expected a statically known class; found reference. -//│ ║ l.127: new t() +//│ ║ l.128: new t() //│ ║ ^ //│ ╙── The 'new' keyword requires a statically known class; use the 'new!' operator for dynamic instantiation. //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new t()) +//│ return globalThis.Object.freeze(new t()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi //│ = Foo new! t() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new t()) +//│ return globalThis.Object.freeze(new t()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi //│ = Foo @@ -235,7 +236,7 @@ print(a.bar(1)) //│ tmp = runtime.safeCall(a.foo(1)); //│ Predef.print(tmp); //│ tmp1 = runtime.safeCall(a.bar(1)); -//│ Predef.print(tmp1) +//│ return Predef.print(tmp1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ > 2 @@ -250,10 +251,10 @@ class Foo with val x = 2 //│ ╔══[COMPILATION ERROR] Multiple definitions of symbol 'x' //│ ╟── defined here -//│ ║ l.249: val x = 1 +//│ ║ l.250: val x = 1 //│ ║ ^^^^^^^^^ //│ ╟── defined here -//│ ║ l.250: val x = 2 +//│ ║ l.251: val x = 2 //│ ╙── ^^^^^^^^^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let Foo12; @@ -275,10 +276,10 @@ class Foo with val x = 1 let x = 2 //│ ╔══[COMPILATION ERROR] Name 'x' is already used -//│ ║ l.276: let x = 2 +//│ ║ l.277: let x = 2 //│ ║ ^^^^^ //│ ╟── by a member declared in the same block -//│ ║ l.275: val x = 1 +//│ ║ l.276: val x = 1 //│ ╙── ^^^^^^^^^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let Foo14; @@ -304,7 +305,7 @@ class Foo with :e class Foo with val x = 1 //│ ╔══[COMPILATION ERROR] Illegal body of class definition (should be a block; found term definition). -//│ ║ l.305: class Foo with val x = 1 +//│ ║ l.306: class Foo with val x = 1 //│ ╙── ^^^^^^^^^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let Foo16; diff --git a/hkmc2/shared/src/test/mlscript/codegen/PredefUsage.mls b/hkmc2/shared/src/test/mlscript/codegen/PredefUsage.mls index 437570003e..d1c04598de 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/PredefUsage.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/PredefUsage.mls @@ -18,7 +18,7 @@ print(12) :sjs 12 |> print //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Predef.pipeInto(12, Predef.print) +//│ return Predef.pipeInto(12, Predef.print) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 12 diff --git a/hkmc2/shared/src/test/mlscript/codegen/Pwd.mls b/hkmc2/shared/src/test/mlscript/codegen/Pwd.mls index 845b9b1409..74db669543 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Pwd.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Pwd.mls @@ -13,7 +13,8 @@ in folderName2 === folderName1 || folderName2 === "shared" //│ tmp2 = runtime.safeCall(tmp1.split("/")); //│ folderName2 = runtime.safeCall(tmp2.pop()); //│ tmp3 = folderName2 === folderName1; -//│ if (tmp3 === false) { folderName2 === "shared" } else { true } +//│ if (tmp3 === false) { return folderName2 === "shared" } +//│ return true; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true diff --git a/hkmc2/shared/src/test/mlscript/codegen/Quasiquotes.mls b/hkmc2/shared/src/test/mlscript/codegen/Quasiquotes.mls index a44dc65616..23a73f6afa 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Quasiquotes.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Quasiquotes.mls @@ -40,7 +40,7 @@ x `=> //│ x1 = globalThis.Object.freeze(new Term.Ref(tmp5)); //│ Predef.print(x1); //│ arr2 = globalThis.Object.freeze([ tmp5 ]); -//│ globalThis.Object.freeze(new Term.Lam(arr2, x1)) +//│ return globalThis.Object.freeze(new Term.Lam(arr2, x1)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > Ref(Symbol("x")) //│ = Lam([Symbol("x")], Ref(Symbol("x"))) @@ -87,7 +87,7 @@ f`(`0) //│ tmp30 = globalThis.Object.freeze(new Term.Else(tmp31)); //│ tmp25 = globalThis.Object.freeze(new Term.Cons(tmp29, tmp30)); //│ tmp26 = globalThis.Object.freeze(new Term.Let(tmp23, tmp24, tmp25)); -//│ globalThis.Object.freeze(new Term.IfLike(Term.Keyword.If, tmp26)) +//│ return globalThis.Object.freeze(new Term.IfLike(Term.Keyword.If, tmp26)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = IfLike( //│ If, diff --git a/hkmc2/shared/src/test/mlscript/codegen/RandomStuff.mls b/hkmc2/shared/src/test/mlscript/codegen/RandomStuff.mls index dd4692b316..a48cbe1e6b 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/RandomStuff.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/RandomStuff.mls @@ -80,7 +80,7 @@ do //│ loopLabel: while (true) { continue loopLabel; } //│ }); //│ Predef.print(lambda); -//│ runtime.Unit +//│ return runtime.Unit //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > fun //│ f = 1 @@ -104,7 +104,7 @@ fun foo(x) = foo :re foo(1) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(foo4(1)) +//│ return runtime.safeCall(foo4(1)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: foo4 is not a function diff --git a/hkmc2/shared/src/test/mlscript/codegen/Repl.mls b/hkmc2/shared/src/test/mlscript/codegen/Repl.mls index d78a8a813e..ea9fe5297c 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Repl.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Repl.mls @@ -15,7 +15,7 @@ fun res() = 1 //│ > undefined //│ REPL> Parsed: //│ > undefined -//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res3)); undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res3));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > undefined //│ > undefined @@ -28,12 +28,12 @@ fun res() = 1 //│ REPL> Sending: block$res4 = undefined //│ REPL> Collected: //│ > undefined -//│ REPL> Sending: try { block$res4 = 4; undefined; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { block$res4 = 4;; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > undefined //│ REPL> Parsed: //│ > undefined -//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res4)); undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res4));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > 4 //│ > undefined @@ -47,12 +47,12 @@ res //│ REPL> Sending: block$res5 = undefined //│ REPL> Collected: //│ > undefined -//│ REPL> Sending: try { block$res5 = res2; undefined; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { block$res5 = res2;; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > undefined //│ REPL> Parsed: //│ > undefined -//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res5)); undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res5));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > fun res //│ > undefined @@ -67,7 +67,7 @@ let x = 1, print(x), x //│ REPL> Sending: block$res6 = undefined //│ REPL> Collected: //│ > undefined -//│ REPL> Sending: let x;try { x = 1; runtime.checkCall(Predef.print(1)); block$res6 = 1; undefined; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: let x;try { x = 1; runtime.checkCall(Predef.print(1)); block$res6 = 1;; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > 1 //│ > undefined @@ -75,7 +75,7 @@ let x = 1, print(x), x //│ > 1 //│ > undefined //│ > 1 -//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res6)); undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res6));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > 1 //│ > undefined @@ -83,7 +83,7 @@ let x = 1, print(x), x //│ > 1 //│ > undefined //│ = 1 -//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(x)); undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(x));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > 1 //│ > undefined diff --git a/hkmc2/shared/src/test/mlscript/codegen/RuntimeUsage.mls b/hkmc2/shared/src/test/mlscript/codegen/RuntimeUsage.mls index add6bc4344..93706af6d2 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/RuntimeUsage.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/RuntimeUsage.mls @@ -94,7 +94,7 @@ stackLimit :ssjs set stackLimit = 1 //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ Runtime.stackLimit = 1; block$res29 = runtime.Unit; undefined +//│ Runtime.stackLimit = 1; block$res29 = runtime.Unit; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— stackLimit diff --git a/hkmc2/shared/src/test/mlscript/codegen/SanityChecks.mls b/hkmc2/shared/src/test/mlscript/codegen/SanityChecks.mls index fe91984b4e..5f1c369044 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/SanityChecks.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/SanityChecks.mls @@ -13,7 +13,6 @@ f(2, 3) //│ return x + y //│ }; //│ block$res1 = 5; -//│ undefined //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 5 @@ -29,7 +28,6 @@ f(2, 3) //│ }; //│ f1 = f2; //│ block$res2 = 5; -//│ undefined //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 5 //│ f = fun f @@ -55,7 +53,6 @@ id(f2)(2) //│ }; //│ baseCall = Predef.id(f21); //│ block$res5 = runtime.safeCall(baseCall(2)); -//│ undefined //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = NaN @@ -64,7 +61,7 @@ id(f2)(2) id(f)(2) //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— //│ let baseCall1; -//│ baseCall1 = runtime.checkCall(Predef.id(f1)); block$res6 = runtime.safeCall(baseCall1(2)); undefined +//│ baseCall1 = runtime.checkCall(Predef.id(f1)); block$res6 = runtime.safeCall(baseCall1(2)); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: Function 'f' expected 2 arguments but got 1 @@ -86,7 +83,6 @@ id(f)(3)(4) //│ baseCall2 = runtime.checkCall(Predef.id(f3)); //│ callPrefix = runtime.safeCall(baseCall2(3)); //│ block$res7 = runtime.safeCall(callPrefix(4)); -//│ undefined //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = NaN @@ -159,7 +155,6 @@ id(Cls(1, 2)).f(3, 4)(5) //│ tmp5 = runtime.checkCall(Predef.id(tmp4)); //│ callPrefix1 = runtime.safeCall(tmp5.f(3, 4)); //│ block$res12 = runtime.safeCall(callPrefix1(5)); -//│ undefined //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = NaN @@ -201,7 +196,7 @@ if M.A(1).y is //│ throw globalThis.Object.freeze(new globalThis.Error("Access to required field 'y' yielded 'undefined'")) //│ } //│ scrut = runtime.checkCall(Predef.equals(selRes1, 1)); -//│ if (scrut === true) { block$res17 = selRes1; undefined } else { block$res17 = 0; undefined } +//│ if (scrut === true) { block$res17 = selRes1; } else { block$res17 = 0; } //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: Access to required field 'y' yielded 'undefined' @@ -246,7 +241,7 @@ M.A(1).f(0) :ssjs M.g(1, 2) //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ block$res24 = runtime.checkCall(M1.g(1, 2)); undefined +//│ block$res24 = runtime.checkCall(M1.g(1, 2)); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 diff --git a/hkmc2/shared/src/test/mlscript/codegen/SetIn.mls b/hkmc2/shared/src/test/mlscript/codegen/SetIn.mls index 7338d2733a..4193206ba4 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/SetIn.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/SetIn.mls @@ -17,13 +17,13 @@ x :sjs set x = 0 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ x1 = 0; runtime.Unit +//│ x1 = 0; return runtime.Unit //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— :sjs set x += 1 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp; tmp = x1 + 1; x1 = tmp; runtime.Unit +//│ let tmp; tmp = x1 + 1; x1 = tmp; return runtime.Unit //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— x @@ -35,8 +35,13 @@ set x += 1 in print(x) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let old, tmp1, tmp2, tmp3; //│ old = x1; -//│ try { tmp2 = x1 + 1; x1 = tmp2; tmp3 = Predef.print(tmp2); tmp1 = tmp3; } finally { x1 = old; } -//│ tmp1 +//│ try { +//│ tmp2 = x1 + 1; +//│ x1 = tmp2; +//│ tmp3 = Predef.print(tmp2); +//│ tmp1 = tmp3; +//│ } finally { x1 = old; } +//│ return tmp1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 2 @@ -98,7 +103,7 @@ example() //│ tmp5 = runtime.safeCall(get_x()); //│ return Predef.print(tmp5) //│ }; -//│ example2() +//│ return example2() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ > 1 @@ -141,7 +146,7 @@ example() //│ do Predef⁰.print⁰(tmp3); //│ return tmp //│ }; -//│ example¹() +//│ return example¹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ > 0 diff --git a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls index 8b8fe08c13..e4fb4a5ed4 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Spreads.mls @@ -19,7 +19,7 @@ foo(0, ...a) :sjs foo(1, ...[2, 3], 4) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp; tmp = globalThis.Object.freeze([ 2, 3 ]); foo(1, ...tmp, 4) +//│ let tmp; tmp = globalThis.Object.freeze([ 2, 3 ]); return foo(1, ...tmp, 4) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [1, 2, 3, 4] diff --git a/hkmc2/shared/src/test/mlscript/codegen/ThisCallVariations.mls b/hkmc2/shared/src/test/mlscript/codegen/ThisCallVariations.mls index 72a4cf3db8..cf827b1036 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ThisCallVariations.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ThisCallVariations.mls @@ -39,7 +39,7 @@ Example .!. oops(2) //│ rhs = Tup of Ls of //│ IntLit of 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(oops.call(Example1, 2)) +//│ return runtime.safeCall(oops.call(Example1, 2)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [2, 1] @@ -105,7 +105,7 @@ Example .> oops(2) //│ rhs = Tup of Ls of //│ IntLit of 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp7; tmp7 = runtime.safeCall(oops(2)); call1(Example1, tmp7) +//│ let tmp7; tmp7 = runtime.safeCall(oops(2)); return call1(Example1, tmp7) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'a') diff --git a/hkmc2/shared/src/test/mlscript/codegen/ThisCalls.mls b/hkmc2/shared/src/test/mlscript/codegen/ThisCalls.mls index ac9c9e3184..acebbd4e5b 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/ThisCalls.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/ThisCalls.mls @@ -19,7 +19,7 @@ s(123) :sjs ex |>. s(123) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Predef.call(ex, s)(123) +//│ return Predef.call(ex, s)(123) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [123, 456] diff --git a/hkmc2/shared/src/test/mlscript/codegen/Throw.mls b/hkmc2/shared/src/test/mlscript/codegen/Throw.mls index f45af7f41b..8733eeae0e 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/Throw.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/Throw.mls @@ -53,7 +53,7 @@ f(false) //│ } //│ throw runtime.safeCall(globalThis.Error("y")); //│ }; -//│ f3(false) +//│ return f3(false) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: y diff --git a/hkmc2/shared/src/test/mlscript/codegen/TraceLogIndent.mls b/hkmc2/shared/src/test/mlscript/codegen/TraceLogIndent.mls index 2a1365db7d..caa30e878a 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/TraceLogIndent.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/TraceLogIndent.mls @@ -67,7 +67,7 @@ f(1,2)(-3) //│ REPL> Sending: block$res9 = undefined //│ REPL> Collected: //│ > undefined -//│ REPL> Sending: try { block$res9 = runtime.checkCall(f$worker(1, 2, -3)); undefined; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { block$res9 = runtime.checkCall(f$worker(1, 2, -3));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > CALL g(-3) //│ > | CALL g(-2) @@ -93,7 +93,7 @@ f(1,2)(-3) //│ REPL> Sending: runtime.TraceLogger.enabled = false //│ REPL> Collected: //│ > false -//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res9)); undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res9));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > 45 //│ > undefined @@ -107,12 +107,12 @@ f(1,2)(-4) //│ REPL> Sending: block$res10 = undefined //│ REPL> Collected: //│ > undefined -//│ REPL> Sending: try { block$res10 = runtime.checkCall(f$worker(1, 2, -4)); undefined; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { block$res10 = runtime.checkCall(f$worker(1, 2, -4));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > undefined //│ REPL> Parsed: //│ > undefined -//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res10)); undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } +//│ REPL> Sending: try { runtime.checkCall(runtime.printRaw(block$res10));; undefined } catch (e) { console.log('\u200B' + (e.stack ?? e) + '\u200B'); } //│ REPL> Collected: //│ > 45 //│ > undefined diff --git a/hkmc2/shared/src/test/mlscript/codegen/UnitValue.mls b/hkmc2/shared/src/test/mlscript/codegen/UnitValue.mls index 29544046e2..c550c505dd 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/UnitValue.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/UnitValue.mls @@ -38,7 +38,7 @@ print of foo() :sjs print of globalThis.console.log("Hello, world!") //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp; tmp = runtime.safeCall(globalThis.console.log("Hello, world!")); Predef.print(tmp) +//│ let tmp; tmp = runtime.safeCall(globalThis.console.log("Hello, world!")); return Predef.print(tmp) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > Hello, world! //│ > () diff --git a/hkmc2/shared/src/test/mlscript/codegen/While.mls b/hkmc2/shared/src/test/mlscript/codegen/While.mls index 59a530c3b5..af1d66bd9d 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/While.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/While.mls @@ -6,12 +6,7 @@ while false do ??? :ssjs while false then () //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— -//│ lbl1: while (true) { -//│ if (false === true) { continue lbl1 } -//│ break; -//│ } -//│ block$res2 = runtime.Unit; -//│ undefined +//│ lbl1: while (true) { if (false === true) { continue lbl1 } break; } block$res2 = runtime.Unit; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— () => while true then () @@ -21,7 +16,7 @@ while false then () () => while true then 0 //│ ╔══[WARNING] Pure expression in statement position -//│ ║ l.22: while true then 0 +//│ ║ l.17: while true then 0 //│ ╙── ^ //│ = fun @@ -56,11 +51,15 @@ f //│ let f; //│ f = function f() { //│ lbl4: while (true) { -//│ if (x2 === true) { Predef.print("Hello World"); x2 = false; continue lbl4 } +//│ if (x2 === true) { +//│ Predef.print("Hello World"); +//│ x2 = false; +//│ continue lbl4 +//│ } //│ return 42; //│ } //│ }; -//│ f() +//│ return f() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > Hello World //│ = 42 @@ -241,7 +240,7 @@ let x = 1 :sjs while x is {} do() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ lbl7: while (true) { if (x3 instanceof Object) { continue lbl7 } break; } runtime.Unit +//│ lbl7: while (true) { if (x3 instanceof Object) { continue lbl7 } break; } return runtime.Unit //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— @@ -313,10 +312,10 @@ while print("Hello World"); false then 0(0) else 1 //│ ╔══[PARSE ERROR] Unexpected 'then' keyword here -//│ ║ l.313: then 0(0) +//│ ║ l.312: then 0(0) //│ ╙── ^^^^ //│ ╔══[COMPILATION ERROR] Unrecognized term split (false literal) -//│ ║ l.312: while print("Hello World"); false +//│ ║ l.311: while print("Hello World"); false //│ ╙── ^^^^^ //│ > Hello World @@ -325,12 +324,12 @@ while { print("Hello World"), false } then 0(0) else 1 //│ ╔══[COMPILATION ERROR] Unexpected infix use of keyword 'then' here -//│ ║ l.324: while { print("Hello World"), false } +//│ ║ l.323: while { print("Hello World"), false } //│ ║ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -//│ ║ l.325: then 0(0) +//│ ║ l.324: then 0(0) //│ ╙── ^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Illegal position for prefix keyword 'else'. -//│ ║ l.326: else 1 +//│ ║ l.325: else 1 //│ ╙── ^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. @@ -341,14 +340,14 @@ while then 0(0) else 1 //│ ╔══[COMPILATION ERROR] Unexpected infix use of keyword 'then' here -//│ ║ l.339: print("Hello World") +//│ ║ l.338: print("Hello World") //│ ║ ^^^^^^^^^^^^^^^^^^^^ -//│ ║ l.340: false +//│ ║ l.339: false //│ ║ ^^^^^^^^^ -//│ ║ l.341: then 0(0) +//│ ║ l.340: then 0(0) //│ ╙── ^^^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Illegal position for prefix keyword 'else'. -//│ ║ l.342: else 1 +//│ ║ l.341: else 1 //│ ╙── ^^^^ //│ ═══[RUNTIME ERROR] This code cannot be run as its compilation yielded an error. diff --git a/hkmc2/shared/src/test/mlscript/codegen/WhileDefaults.mls b/hkmc2/shared/src/test/mlscript/codegen/WhileDefaults.mls index f68c26b9e9..9231f27125 100644 --- a/hkmc2/shared/src/test/mlscript/codegen/WhileDefaults.mls +++ b/hkmc2/shared/src/test/mlscript/codegen/WhileDefaults.mls @@ -19,7 +19,7 @@ //│ continue lbl; //│ } //│ }); -//│ lambda +//│ return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/ctx/ClassCtxParams.mls b/hkmc2/shared/src/test/mlscript/ctx/ClassCtxParams.mls index 7e925ada11..cb6e047e12 100644 --- a/hkmc2/shared/src/test/mlscript/ctx/ClassCtxParams.mls +++ b/hkmc2/shared/src/test/mlscript/ctx/ClassCtxParams.mls @@ -131,7 +131,7 @@ x => x.Foo#S //│ ║ ^ //│ ╙── Missing instance: Expected: T; Available: Int //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda; lambda = (undefined, function (x) { return x.S }); lambda +//│ let lambda; lambda = (undefined, function (x) { return x.S }); return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/ctx/EtaExpansion.mls b/hkmc2/shared/src/test/mlscript/ctx/EtaExpansion.mls index e23c5b41b4..85cb9c4fbb 100644 --- a/hkmc2/shared/src/test/mlscript/ctx/EtaExpansion.mls +++ b/hkmc2/shared/src/test/mlscript/ctx/EtaExpansion.mls @@ -94,7 +94,7 @@ f3(43)(44) :sir foo() //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ foo⁰()(instance$Ident(Int)⁰) +//│ return foo⁰()(instance$Ident(Int)⁰) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [42] @@ -102,7 +102,7 @@ foo() :sir bar(0.42) //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ bar⁰(0.42)(instance$Ident(Int)⁰) +//│ return bar⁰(0.42)(instance$Ident(Int)⁰) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [0.42, 42] diff --git a/hkmc2/shared/src/test/mlscript/ctx/MissingDefinitions2.mls b/hkmc2/shared/src/test/mlscript/ctx/MissingDefinitions2.mls index 1da0c2c21f..d53861141c 100644 --- a/hkmc2/shared/src/test/mlscript/ctx/MissingDefinitions2.mls +++ b/hkmc2/shared/src/test/mlscript/ctx/MissingDefinitions2.mls @@ -49,7 +49,7 @@ test(1, 2) :re 1 ++ 1 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp1; tmp1 = test(); runtime.safeCall(tmp1(1, 1)) +//│ let tmp1; tmp1 = test(); return runtime.safeCall(tmp1(1, 1)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: test is not a function diff --git a/hkmc2/shared/src/test/mlscript/dead-param-elim/basic.mls b/hkmc2/shared/src/test/mlscript/dead-param-elim/basic.mls index 4f56ecfa19..289c18ebdc 100644 --- a/hkmc2/shared/src/test/mlscript/dead-param-elim/basic.mls +++ b/hkmc2/shared/src/test/mlscript/dead-param-elim/basic.mls @@ -10,7 +10,7 @@ f(42) //│ dead-param-elim > prodfun f#0 @ -> eliminable: {0} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f⁰; @private define f⁰ as fun f¹() { return 0 }; f¹() +//│ let f⁰; @private define f⁰ as fun f¹() { return 0 }; return f¹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -21,7 +21,7 @@ f(1, 2) //│ dead-param-elim > prodfun f#0 @ -> eliminable: {0, 1} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f²; @private define f² as fun f³() { return 0 }; f³() +//│ let f²; @private define f² as fun f³() { return 0 }; return f³() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -32,7 +32,7 @@ f(1)(2) //│ dead-param-elim > prodfun f#0 @ -> eliminable: {0} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f⁴; @private define f⁴ as fun f⁵()(b) { return 0 }; f⁵()(2) +//│ let f⁴; @private define f⁴ as fun f⁵()(b) { return 0 }; return f⁵()(2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -44,7 +44,7 @@ f(42) //│ dead-param-elim > >>> dead-param-elim results >>> //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f⁶; @private define f⁶ as fun f⁷(a) { return a }; f⁷(42) +//│ let f⁶; @private define f⁶ as fun f⁷(a) { return a }; return f⁷(42) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -54,7 +54,7 @@ f(1, 2) //│ dead-param-elim > >>> dead-param-elim results >>> //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f⁸; @private define f⁸ as fun f⁹(a, b) { return +⁰(a, b) }; f⁹(1, 2) +//│ let f⁸; @private define f⁸ as fun f⁹(a, b) { return +⁰(a, b) }; return f⁹(1, 2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 @@ -66,7 +66,7 @@ f(1, 2) //│ dead-param-elim > prodfun f#0 @ -> eliminable: {1} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f¹⁰; @private define f¹⁰ as fun f¹¹(a) { return a }; f¹¹(1) +//│ let f¹⁰; @private define f¹⁰ as fun f¹¹(a) { return a }; return f¹¹(1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -77,7 +77,7 @@ f(1, 2) //│ dead-param-elim > prodfun f#0 @ -> eliminable: {0} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f¹²; @private define f¹² as fun f¹³(b) { return b }; f¹³(2) +//│ let f¹²; @private define f¹² as fun f¹³(b) { return b }; return f¹³(2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -89,7 +89,7 @@ f(1)(2) //│ dead-param-elim > >>> dead-param-elim results >>> //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f¹⁴; @private define f¹⁴ as fun f¹⁵(a)(b) { return a }; f¹⁵(1)(2) +//│ let f¹⁴; @private define f¹⁴ as fun f¹⁵(a)(b) { return a }; return f¹⁵(1)(2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -100,7 +100,7 @@ f(1)(2) //│ dead-param-elim > prodfun f#0 @ -> eliminable: {0} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f¹⁶; @private define f¹⁶ as fun f¹⁷()(b) { return b }; f¹⁷()(2) +//│ let f¹⁶; @private define f¹⁶ as fun f¹⁷()(b) { return b }; return f¹⁷()(2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -115,7 +115,7 @@ f(3) //│ dead-param-elim > prodfun f#0 @ -> eliminable: {0} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f¹⁸; @private define f¹⁸ as fun f¹⁹() { return 0 }; do f¹⁹(); do f¹⁹(); f¹⁹() +//│ let f¹⁸; @private define f¹⁸ as fun f¹⁹() { return 0 }; do f¹⁹(); do f¹⁹(); return f¹⁹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -155,7 +155,7 @@ foo.bar(99) //│ method bar⁰ = fun bar¹(a) { return Foo².this.x⁰ } //│ }; //│ set foo⁰ = Foo¹(1); -//│ foo⁰.bar﹖(99) +//│ return foo⁰.bar﹖(99) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 //│ foo = Foo(_) @@ -303,7 +303,7 @@ noFlag(42) //│ dead-param-elim > prodfun noFlag#0 @ -> eliminable: {0} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let noFlag⁰; @private define noFlag⁰ as fun noFlag¹() { return 0 }; noFlag¹() +//│ let noFlag⁰; @private define noFlag⁰ as fun noFlag¹() { return 0 }; return noFlag¹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -331,7 +331,7 @@ debugMono(42) //│ dead-param-elim > prodfun debugMono#0 @ -> eliminable: {0} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let debugMono⁰; @private define debugMono⁰ as fun debugMono¹() { return 0 }; debugMono¹() +//│ let debugMono⁰; @private define debugMono⁰ as fun debugMono¹() { return 0 }; return debugMono¹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -348,7 +348,7 @@ conflictTest(42) private fun dpeOff(a) = 0 dpeOff(42) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let dpeOff⁰; @private define dpeOff⁰ as fun dpeOff¹(a) { return 0 }; dpeOff¹(42) +//│ let dpeOff⁰; @private define dpeOff⁰ as fun dpeOff¹(a) { return 0 }; return dpeOff¹(42) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 diff --git a/hkmc2/shared/src/test/mlscript/dead-param-elim/clash.mls b/hkmc2/shared/src/test/mlscript/dead-param-elim/clash.mls index 0de89cfe67..5ec3185985 100644 --- a/hkmc2/shared/src/test/mlscript/dead-param-elim/clash.mls +++ b/hkmc2/shared/src/test/mlscript/dead-param-elim/clash.mls @@ -92,7 +92,7 @@ m() //│ let tmp, lambda⁰; //│ set tmp = [1, 2, 3]; //│ define lambda⁰ as fun lambda¹(x, i, a) { return +⁰(x, 1) }; -//│ tmp.map﹖(lambda¹) +//│ return tmp.map﹖(lambda¹) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [2, 3, 4] diff --git a/hkmc2/shared/src/test/mlscript/dead-param-elim/class-in-fun.mls b/hkmc2/shared/src/test/mlscript/dead-param-elim/class-in-fun.mls index 461fe5cf4a..bf689bf5d1 100644 --- a/hkmc2/shared/src/test/mlscript/dead-param-elim/class-in-fun.mls +++ b/hkmc2/shared/src/test/mlscript/dead-param-elim/class-in-fun.mls @@ -31,7 +31,7 @@ f(1, 2).get() //│ @private //│ define f⁰ as fun f¹(used) { return new C¹(used) }; //│ set tmp = f¹(1); -//│ tmp.get﹖() +//│ return tmp.get﹖() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 diff --git a/hkmc2/shared/src/test/mlscript/dead-param-elim/config-flags.mls b/hkmc2/shared/src/test/mlscript/dead-param-elim/config-flags.mls index 2d4fd1c45a..cffd59cdef 100644 --- a/hkmc2/shared/src/test/mlscript/dead-param-elim/config-flags.mls +++ b/hkmc2/shared/src/test/mlscript/dead-param-elim/config-flags.mls @@ -11,7 +11,7 @@ private fun noFlag(a) = 0 noFlag(42) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let noFlag⁰; @private define noFlag⁰ as fun noFlag¹() { return 0 }; noFlag¹() +//│ let noFlag⁰; @private define noFlag⁰ as fun noFlag¹() { return 0 }; return noFlag¹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -39,7 +39,7 @@ debugMono(42) //│ dead-param-elim > prodfun debugMono#0 @ -> eliminable: {0} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let debugMono⁰; @private define debugMono⁰ as fun debugMono¹() { return 0 }; debugMono¹() +//│ let debugMono⁰; @private define debugMono⁰ as fun debugMono¹() { return 0 }; return debugMono¹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -56,7 +56,7 @@ conflictTest(42) private fun dpeOff(a) = 0 dpeOff(42) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let dpeOff⁰; @private define dpeOff⁰ as fun dpeOff¹(a) { return 0 }; dpeOff¹(42) +//│ let dpeOff⁰; @private define dpeOff⁰ as fun dpeOff¹(a) { return 0 }; return dpeOff¹(42) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 diff --git a/hkmc2/shared/src/test/mlscript/dead-param-elim/dead-ref.mls b/hkmc2/shared/src/test/mlscript/dead-param-elim/dead-ref.mls index f9b4e0c403..e14ee4a32c 100644 --- a/hkmc2/shared/src/test/mlscript/dead-param-elim/dead-ref.mls +++ b/hkmc2/shared/src/test/mlscript/dead-param-elim/dead-ref.mls @@ -20,7 +20,7 @@ f(undefined) //│ define f⁰ as fun f¹() { return g¹() }; //│ @private //│ define g⁰ as fun g¹() { return 2 }; -//│ f¹() +//│ return f¹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -45,7 +45,7 @@ if f(42) is Box(v) then 0 //│ set scrut = f³(); //│ match scrut //│ Box¹ => -//│ 0 +//│ return 0 //│ else //│ throw new globalThis⁰.Error⁰("match error") //│ end @@ -63,7 +63,7 @@ f(42) //│ dead-param-elim > prodfun f#0 @ -> eliminable: {0} //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f⁴; @private define f⁴ as fun f⁵() { return 0 }; f⁵() +//│ let f⁴; @private define f⁴ as fun f⁵() { return 0 }; return f⁵() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 diff --git a/hkmc2/shared/src/test/mlscript/dead-param-elim/lambda.mls b/hkmc2/shared/src/test/mlscript/dead-param-elim/lambda.mls index f8dc7c2587..67808baada 100644 --- a/hkmc2/shared/src/test/mlscript/dead-param-elim/lambda.mls +++ b/hkmc2/shared/src/test/mlscript/dead-param-elim/lambda.mls @@ -70,7 +70,7 @@ f(42) //│ dead-param-elim > >>> dead-param-elim results >>> //│ dead-param-elim > <<< dead-param-elim results <<< //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f⁰; @private define f⁰ as fun f¹(a) { return a }; 42 +//│ let f⁰; @private define f⁰ as fun f¹(a) { return a }; return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 diff --git a/hkmc2/shared/src/test/mlscript/dead-param-elim/multiArgLists.mls b/hkmc2/shared/src/test/mlscript/dead-param-elim/multiArgLists.mls index 2088b7c32e..092247ed20 100644 --- a/hkmc2/shared/src/test/mlscript/dead-param-elim/multiArgLists.mls +++ b/hkmc2/shared/src/test/mlscript/dead-param-elim/multiArgLists.mls @@ -7,7 +7,7 @@ private fun f(a)(b) = a f(42)(99) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f⁰; @private define f⁰ as fun f¹(a)(b) { return a }; f¹(42)(99) +//│ let f⁰; @private define f⁰ as fun f¹(a)(b) { return a }; return f¹(42)(99) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -17,7 +17,7 @@ f(42)(99) private fun g(x)(y) = 0 g(1)(2) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let g⁰; @private define g⁰ as fun g¹()(y) { return 0 }; g¹()(2) +//│ let g⁰; @private define g⁰ as fun g¹()(y) { return 0 }; return g¹()(2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -27,7 +27,7 @@ g(1)(2) private fun h(x)(y) = x h(5)(10) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let h⁰; @private define h⁰ as fun h¹(x)(y) { return x }; h¹(5)(10) +//│ let h⁰; @private define h⁰ as fun h¹(x)(y) { return x }; return h¹(5)(10) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 5 @@ -37,7 +37,7 @@ h(5)(10) private fun j(x)(y) = y j(5)(10) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let j⁰; @private define j⁰ as fun j¹()(y) { return y }; j¹()(10) +//│ let j⁰; @private define j⁰ as fun j¹()(y) { return y }; return j¹()(10) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 10 @@ -47,7 +47,7 @@ j(5)(10) private fun k(a)(b)(c) = a + c k(1)(2)(3) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let k⁰; @private define k⁰ as fun k¹(a)(b)(c) { return +⁰(a, c) }; k¹(1)(2)(3) +//│ let k⁰; @private define k⁰ as fun k¹(a)(b)(c) { return +⁰(a, c) }; return k¹(1)(2)(3) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 4 diff --git a/hkmc2/shared/src/test/mlscript/dead-param-elim/recursive.mls b/hkmc2/shared/src/test/mlscript/dead-param-elim/recursive.mls index 6214fe08f0..bb8830bfca 100644 --- a/hkmc2/shared/src/test/mlscript/dead-param-elim/recursive.mls +++ b/hkmc2/shared/src/test/mlscript/dead-param-elim/recursive.mls @@ -26,7 +26,7 @@ countdown(5, 42) //│ return countdown¹(tmp) //│ end //│ }; -//│ countdown¹(5) +//│ return countdown¹(5) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -55,7 +55,7 @@ countdown(5) //│ end //│ unreachable /* Rest of abortive labelled block */ //│ }; -//│ countdown³(5) +//│ return countdown³(5) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -105,7 +105,7 @@ ping(5, 99) //│ return ping¹(tmp) //│ end //│ }; -//│ ping¹(5) +//│ return ping¹(5) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -142,7 +142,7 @@ ping(5, 99) //│ return ping³(tmp, unused) //│ end //│ }; -//│ ping³(5, 99) +//│ return ping³(5, 99) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -196,7 +196,7 @@ ping(5)(99) //│ return ping$worker¹(tmp) //│ end //│ }; -//│ ping$worker¹(5) +//│ return ping$worker¹(5) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 diff --git a/hkmc2/shared/src/test/mlscript/dead-param-elim/refresher.mls b/hkmc2/shared/src/test/mlscript/dead-param-elim/refresher.mls index ed63ddfa76..1396702c13 100644 --- a/hkmc2/shared/src/test/mlscript/dead-param-elim/refresher.mls +++ b/hkmc2/shared/src/test/mlscript/dead-param-elim/refresher.mls @@ -108,7 +108,7 @@ wrapper(42, 0) //│ set tmp1 = tmp.makeB³(); //│ return tmp1.getVal﹖() //│ }; -//│ wrapper_3$wrapper¹(42) +//│ return wrapper_3$wrapper¹(42) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 diff --git a/hkmc2/shared/src/test/mlscript/deforest/basic.mls b/hkmc2/shared/src/test/mlscript/deforest/basic.mls index e1bb9ca9c4..3a52b7e42b 100644 --- a/hkmc2/shared/src/test/mlscript/deforest/basic.mls +++ b/hkmc2/shared/src/test/mlscript/deforest/basic.mls @@ -42,7 +42,7 @@ let useless = if lsit is [a, b] then 0 //│ set tup2_0 = 2; //│ set tup2_1 = 1; //│ set lsit⁰ = $lsit_tup2¹(tup2_0, tup2_1); -//│ lsit⁰() +//│ return lsit⁰() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = null //│ lsit = fun @@ -148,7 +148,7 @@ f(p()) //│ return runtime⁰.Unit⁰ //│ }; //│ set tmp = p_10$p¹(); -//│ f_12$f¹(tmp) +//│ return f_12$f¹(tmp) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = O @@ -252,7 +252,7 @@ if [1, 2] is //│ set tup2_0 = 1; //│ set tup2_1 = 2; //│ set scrut = $scrut_tup2¹(tup2_0, tup2_1); -//│ scrut() +//│ return scrut() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 diff --git a/hkmc2/shared/src/test/mlscript/deforest/cyclic.mls b/hkmc2/shared/src/test/mlscript/deforest/cyclic.mls index 4f35f60436..7f502174cc 100644 --- a/hkmc2/shared/src/test/mlscript/deforest/cyclic.mls +++ b/hkmc2/shared/src/test/mlscript/deforest/cyclic.mls @@ -136,7 +136,7 @@ modSome(Some(17), 3) //│ }; //│ set Some_x = 17; //│ set tmp = modSome_12$x_Some¹(Some_x); -//│ modSome_12$modSome¹(tmp, 3) +//│ return modSome_12$modSome¹(tmp, 3) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Some(2) diff --git a/hkmc2/shared/src/test/mlscript/deforest/determinism.mls b/hkmc2/shared/src/test/mlscript/deforest/determinism.mls index 1ef55c4626..ecc5ab9d34 100644 --- a/hkmc2/shared/src/test/mlscript/deforest/determinism.mls +++ b/hkmc2/shared/src/test/mlscript/deforest/determinism.mls @@ -43,7 +43,7 @@ if B(1,2,3,4,5) is //│ set B_d = 4; //│ set B_e = 5; //│ set scrut = $scrut_B¹(B_a, B_b, B_c, B_d, B_e); -//│ scrut() +//│ return scrut() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -205,6 +205,6 @@ c2 of A(A(A(A(A(A(1)))))) //│ set tmp4 = c2_21$arg$A$0$_A⁵(A_a4); //│ set A_a5 = tmp4; //│ set tmp5 = c2_21$x_A¹(A_a5); -//│ c2_21$c2¹(tmp5) +//│ return c2_21$c2¹(tmp5) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 diff --git a/hkmc2/shared/src/test/mlscript/deforest/eta-expansion/recursive.mls b/hkmc2/shared/src/test/mlscript/deforest/eta-expansion/recursive.mls index d91a8d386f..7c9ee5fe6a 100644 --- a/hkmc2/shared/src/test/mlscript/deforest/eta-expansion/recursive.mls +++ b/hkmc2/shared/src/test/mlscript/deforest/eta-expansion/recursive.mls @@ -79,7 +79,7 @@ sum(enum(5), 0) //│ end //│ unreachable /* Rest of abortive labelled block */ //│ }; -//│ enum_13$enum$worker¹(5, 0, undefined) +//│ return enum_13$enum$worker¹(5, 0, undefined) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 15 @@ -191,7 +191,7 @@ len(flatten(id((1 :: 2 :: Nil) :: (3 :: Nil) :: Nil))) //│ set tmp3 = Cons⁰(tmp2, Nil⁰); //│ set tmp4 = Cons⁰(tmp1, tmp3); //│ set tmp5 = Predef⁰.id⁰(tmp4); -//│ flatten_30$flatten$worker¹(tmp5) +//│ return flatten_30$flatten$worker¹(tmp5) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 diff --git a/hkmc2/shared/src/test/mlscript/deforest/simple.mls b/hkmc2/shared/src/test/mlscript/deforest/simple.mls index 7c1ffc2ad1..3c98705d2a 100644 --- a/hkmc2/shared/src/test/mlscript/deforest/simple.mls +++ b/hkmc2/shared/src/test/mlscript/deforest/simple.mls @@ -594,7 +594,7 @@ f(id(A)) + f(A) //│ set tmp1 = f¹(tmp); //│ set deforest$lam = f_7$x_A¹(); //│ set tmp2 = f_7$f¹(deforest$lam); -//│ +⁰(tmp1, tmp2) +//│ return +⁰(tmp1, tmp2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 diff --git a/hkmc2/shared/src/test/mlscript/deforest/todos.mls b/hkmc2/shared/src/test/mlscript/deforest/todos.mls index 0e94b29acc..23365620e5 100644 --- a/hkmc2/shared/src/test/mlscript/deforest/todos.mls +++ b/hkmc2/shared/src/test/mlscript/deforest/todos.mls @@ -178,7 +178,7 @@ test(p) + f(p) + test(AA(AA(AA(10)))) + test(B) //│ set tmp9 = +⁰(tmp4, tmp8); //│ set deforest$lam = test_31$x_dflt¹(); //│ set tmp10 = test_31$test¹(deforest$lam); -//│ +⁰(tmp9, tmp10) +//│ return +⁰(tmp9, tmp10) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 78 //│ p = AA(AA(AA(10))) diff --git a/hkmc2/shared/src/test/mlscript/flows/SelExpansion.mls b/hkmc2/shared/src/test/mlscript/flows/SelExpansion.mls index e774cbc80b..a51c933e71 100644 --- a/hkmc2/shared/src/test/mlscript/flows/SelExpansion.mls +++ b/hkmc2/shared/src/test/mlscript/flows/SelExpansion.mls @@ -64,7 +64,7 @@ f.foo //│ f⁰ <~ Foo() //│ f⁰ ~> {a: ⋅a⁰} {a: ⋅a¹} {foo: ⋅foo⁰} //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ runtime.safeCall(Foo1.foo(f)) +//│ return runtime.safeCall(Foo1.foo(f)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 123 @@ -219,7 +219,7 @@ new AA.BB.CC().x //│ where //│ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp1; tmp1 = globalThis.Object.freeze(new AA1.BB.CC()); tmp1.x +//│ let tmp1; tmp1 = globalThis.Object.freeze(new AA1.BB.CC()); return tmp1.x //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -230,7 +230,9 @@ new AA.BB.CC().getX //│ where //│ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp2; tmp2 = globalThis.Object.freeze(new AA1.BB.CC()); runtime.safeCall(AA1.BB.CC.getX(tmp2)) +//│ let tmp2; +//│ tmp2 = globalThis.Object.freeze(new AA1.BB.CC()); +//│ return runtime.safeCall(AA1.BB.CC.getX(tmp2)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -261,7 +263,7 @@ let foo = :re foo.test //│ ╔══[COMPILATION ERROR] Cannot access companion A from the context of this selection -//│ ║ l.262: foo.test +//│ ║ l.264: foo.test //│ ╙── ^^^^^^^^ //│ —————————————————| Flowed |————————————————————————————————————————————————————————————————————————— //│ foo¹.test‹?› @@ -300,7 +302,7 @@ let foo = :re foo.test //│ ╔══[COMPILATION ERROR] Cannot access companion A from the context of this selection -//│ ║ l.301: foo.test +//│ ║ l.303: foo.test //│ ╙── ^^^^^^^^ //│ —————————————————| Flowed |————————————————————————————————————————————————————————————————————————— //│ foo².test‹?› diff --git a/hkmc2/shared/src/test/mlscript/handlers/CurriedFunctionCalls.mls b/hkmc2/shared/src/test/mlscript/handlers/CurriedFunctionCalls.mls index d77b6aa8fc..096c1697e7 100644 --- a/hkmc2/shared/src/test/mlscript/handlers/CurriedFunctionCalls.mls +++ b/hkmc2/shared/src/test/mlscript/handlers/CurriedFunctionCalls.mls @@ -19,10 +19,10 @@ f(1)(2) //│ set tmp = f¹(1)(2); //│ match runtime⁰.curEffect﹖ //│ null => -//│ tmp +//│ return tmp //│ else //│ set tmp = runtime⁰.topLevelEffect﹖(false); -//│ tmp +//│ return tmp //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 diff --git a/hkmc2/shared/src/test/mlscript/handlers/Effects.mls b/hkmc2/shared/src/test/mlscript/handlers/Effects.mls index 12d52308ff..7cdd0cf42b 100644 --- a/hkmc2/shared/src/test/mlscript/handlers/Effects.mls +++ b/hkmc2/shared/src/test/mlscript/handlers/Effects.mls @@ -106,12 +106,9 @@ result //│ Handler$h$15 = this //│ } //│ constructor() { -//│ let tmp7; -//│ tmp7 = super(); -//│ if (runtime.curEffect === null) { -//│ tmp7 -//│ } else { -//│ runtime.illegalEffect("in a constructor") +//│ super(); +//│ if (runtime.curEffect !== null) { +//│ runtime.illegalEffect("in a constructor"); //│ } //│ } //│ perform(arg) { @@ -169,7 +166,9 @@ result //│ } //│ }); //│ runtime.enterHandleBlock(h7, handleBlock$7); -//│ if (runtime.curEffect === null) { result } else { runtime.topLevelEffect(false); result } +//│ if (runtime.curEffect === null) { return result } +//│ runtime.topLevelEffect(false); +//│ return result; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "54321" //│ result = "54321" @@ -444,28 +443,28 @@ handle h = Eff with fun perform()(k) = k(()) foo(h) //│ ╔══[WARNING] Modules are not yet lifted. -//│ ║ l.439: module A with +//│ ║ l.438: module A with //│ ╙── ^ //│ ╔══[WARNING] Modules are not yet lifted. -//│ ║ l.435: module A with +//│ ║ l.434: module A with //│ ╙── ^ //│ ╔══[WARNING] Modules are not yet lifted. -//│ ║ l.431: module A with +//│ ║ l.430: module A with //│ ╙── ^ //│ ╔══[WARNING] Modules are not yet lifted. -//│ ║ l.427: module A with +//│ ║ l.426: module A with //│ ╙── ^ //│ ╔══[INTERNAL ERROR] Unexpected nested class: lambdas may not function correctly. -//│ ║ l.427: module A with +//│ ║ l.426: module A with //│ ╙── ^ //│ ╔══[INTERNAL ERROR] Unexpected nested class: lambdas may not function correctly. -//│ ║ l.431: module A with +//│ ║ l.430: module A with //│ ╙── ^ //│ ╔══[INTERNAL ERROR] Unexpected nested class: lambdas may not function correctly. -//│ ║ l.435: module A with +//│ ║ l.434: module A with //│ ╙── ^ //│ ╔══[INTERNAL ERROR] Unexpected nested class: lambdas may not function correctly. -//│ ║ l.439: module A with +//│ ║ l.438: module A with //│ ╙── ^ //│ = 123 diff --git a/hkmc2/shared/src/test/mlscript/handlers/NoStackSafety.mls b/hkmc2/shared/src/test/mlscript/handlers/NoStackSafety.mls index 276496167e..e760f793c2 100644 --- a/hkmc2/shared/src/test/mlscript/handlers/NoStackSafety.mls +++ b/hkmc2/shared/src/test/mlscript/handlers/NoStackSafety.mls @@ -37,7 +37,7 @@ fun hi(n) = n hi(0) //│ /!!!\ Option ':stackSafe' requires ':effectHandlers' to be set //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let hi; hi = function hi(n) { return n }; 0 +//│ let hi; hi = function hi(n) { return n }; return 0 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 diff --git a/hkmc2/shared/src/test/mlscript/handlers/NonLocalLabelControlFlow.mls b/hkmc2/shared/src/test/mlscript/handlers/NonLocalLabelControlFlow.mls index 88795479a0..7ade6fa659 100644 --- a/hkmc2/shared/src/test/mlscript/handlers/NonLocalLabelControlFlow.mls +++ b/hkmc2/shared/src/test/mlscript/handlers/NonLocalLabelControlFlow.mls @@ -205,10 +205,10 @@ continueFromNestedFunctionWithEffects() //│ set tmp = continueFromNestedFunctionWithEffects¹(); //│ match runtime⁰.curEffect﹖ //│ null => -//│ tmp +//│ return tmp //│ else //│ set tmp = runtime⁰.topLevelEffect﹖(false); -//│ tmp +//│ return tmp //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 diff --git a/hkmc2/shared/src/test/mlscript/handlers/RecursiveHandlers.mls b/hkmc2/shared/src/test/mlscript/handlers/RecursiveHandlers.mls index 783881ad0a..273a4d4dba 100644 --- a/hkmc2/shared/src/test/mlscript/handlers/RecursiveHandlers.mls +++ b/hkmc2/shared/src/test/mlscript/handlers/RecursiveHandlers.mls @@ -229,12 +229,9 @@ str //│ Handler$h2$3 = this //│ } //│ constructor() { -//│ let tmp10; -//│ tmp10 = super(); -//│ if (runtime.curEffect === null) { -//│ tmp10 -//│ } else { -//│ runtime.illegalEffect("in a constructor") +//│ super(); +//│ if (runtime.curEffect !== null) { +//│ runtime.illegalEffect("in a constructor"); //│ } //│ } //│ perform(arg) { @@ -271,12 +268,9 @@ str //│ Handler$h1$3 = this //│ } //│ constructor() { -//│ let tmp10; -//│ tmp10 = super(); -//│ if (runtime.curEffect === null) { -//│ tmp10 -//│ } else { -//│ runtime.illegalEffect("in a constructor") +//│ super(); +//│ if (runtime.curEffect !== null) { +//│ runtime.illegalEffect("in a constructor"); //│ } //│ } //│ perform(arg) { @@ -313,8 +307,13 @@ str //│ if (true === true) { //│ h11 = new Handler$h1$3(); //│ runtime.enterHandleBlock(h11, handleBlock$10); -//│ if (runtime.curEffect === null) { str } else { runtime.topLevelEffect(false); str } -//│ } else { str } +//│ if (runtime.curEffect === null) { +//│ return str +//│ } +//│ runtime.topLevelEffect(false); +//│ return str; +//│ } +//│ return str; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "BABABA" //│ str = "BABABA" diff --git a/hkmc2/shared/src/test/mlscript/handlers/SetInHandlers.mls b/hkmc2/shared/src/test/mlscript/handlers/SetInHandlers.mls index 91b1c5bea0..26bb005dc1 100644 --- a/hkmc2/shared/src/test/mlscript/handlers/SetInHandlers.mls +++ b/hkmc2/shared/src/test/mlscript/handlers/SetInHandlers.mls @@ -7,7 +7,7 @@ let x = 1 set x += 1 in print(x) x //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let x, old; x = 1; old = 1; try { x = 2; Predef.print(2); } finally { x = old; } old +//│ let x, old; x = 1; old = 1; try { x = 2; Predef.print(2); } finally { x = old; } return old //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 2 //│ = 1 diff --git a/hkmc2/shared/src/test/mlscript/handlers/StackSafety.mls b/hkmc2/shared/src/test/mlscript/handlers/StackSafety.mls index f5a0578e7c..ccf17ced6a 100644 --- a/hkmc2/shared/src/test/mlscript/handlers/StackSafety.mls +++ b/hkmc2/shared/src/test/mlscript/handlers/StackSafety.mls @@ -34,7 +34,8 @@ hi(0) //│ return hi(0) //│ }); //│ tmp = runtime.runStackSafe(6, $_stack$_safe$_body$_); -//│ if (runtime.curEffect === null) { tmp } else { runtime.topLevelEffect(false) } +//│ if (runtime.curEffect === null) { return tmp } +//│ return runtime.topLevelEffect(false); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -77,7 +78,7 @@ sum(10000) //│ if (runtime.curEffect === null) { //│ pc = 1; //│ } else { -//│ return runtime.unwind(sum, 1, "StackSafety.mls:47:9", null, null, 1, 1, n, 0) +//│ return runtime.unwind(sum, 1, "StackSafety.mls:48:9", null, null, 1, 1, n, 0) //│ } //│ } //│ case 1: @@ -85,14 +86,15 @@ sum(10000) //│ return n + tmp3; //│ } //│ } else { -//│ return runtime.unwind(sum, -1, "StackSafety.mls:44:1", null, null, 1, 1, n, 0) +//│ return runtime.unwind(sum, -1, "StackSafety.mls:45:1", null, null, 1, 1, n, 0) //│ } //│ }; //│ $_stack$_safe$_body$_1 = (undefined, function () { //│ return sum(10000) //│ }); //│ tmp1 = runtime.runStackSafe(1000, $_stack$_safe$_body$_1); -//│ if (runtime.curEffect === null) { tmp1 } else { runtime.topLevelEffect(false) } +//│ if (runtime.curEffect === null) { return tmp1 } +//│ return runtime.topLevelEffect(false); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 50005000 diff --git a/hkmc2/shared/src/test/mlscript/handlers/TailCallOptimization.mls b/hkmc2/shared/src/test/mlscript/handlers/TailCallOptimization.mls index 93ba4fa90a..f21654555e 100644 --- a/hkmc2/shared/src/test/mlscript/handlers/TailCallOptimization.mls +++ b/hkmc2/shared/src/test/mlscript/handlers/TailCallOptimization.mls @@ -56,6 +56,7 @@ hi(0) //│ return hi(0) //│ }); //│ tmp1 = runtime.runStackSafe(1000, $_stack$_safe$_body$_); -//│ if (runtime.curEffect === null) { tmp1 } else { runtime.topLevelEffect(false) } +//│ if (runtime.curEffect === null) { return tmp1 } +//│ return runtime.topLevelEffect(false); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 diff --git a/hkmc2/shared/src/test/mlscript/interop/Arrays.mls b/hkmc2/shared/src/test/mlscript/interop/Arrays.mls index db61c34e0e..372a72581b 100644 --- a/hkmc2/shared/src/test/mlscript/interop/Arrays.mls +++ b/hkmc2/shared/src/test/mlscript/interop/Arrays.mls @@ -14,8 +14,10 @@ arr.map(_ === false) arr.map((e, ...) => e === false) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let lambda1; -//│ lambda1 = (undefined, function (e, ..._) { return e === false }); -//│ runtime.safeCall(arr.map(lambda1)) +//│ lambda1 = (undefined, function (e, ..._) { +//│ return e === false +//│ }); +//│ return runtime.safeCall(arr.map(lambda1)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [false, true] @@ -24,14 +26,14 @@ arr.map((_, ...) => 1) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let lambda2; //│ lambda2 = (undefined, function (_, ..._1) { return 1 }); -//│ runtime.safeCall(arr.map(lambda2)) +//│ return runtime.safeCall(arr.map(lambda2)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [1, 1] :e arr.map((..., ...) => 1) //│ ╔══[COMPILATION ERROR] Spread parameters must be the last in the parameter list. -//│ ║ l.32: arr.map((..., ...) => 1) +//│ ║ l.34: arr.map((..., ...) => 1) //│ ╙── ^^^ //│ = [1, 1] @@ -39,7 +41,7 @@ arr.map((..., ...) => 1) :re arr.map((..., e) => e) //│ ╔══[COMPILATION ERROR] Spread parameters must be the last in the parameter list. -//│ ║ l.40: arr.map((..., e) => e) +//│ ║ l.42: arr.map((..., e) => e) //│ ╙── ^^^ //│ ═══[RUNTIME ERROR] Error: Function expected 2 arguments but got 3 @@ -78,10 +80,10 @@ if arr is Array then "ok" :fixme // TODO handle? if arr is Array(n) then n //│ ╔══[COMPILATION ERROR] Class Array does not have a parameter list -//│ ║ l.79: if arr is Array(n) then n +//│ ║ l.81: if arr is Array(n) then n //│ ║ ^^^^^ //│ ╟── but the pattern has one sub-pattern -//│ ║ l.79: if arr is Array(n) then n +//│ ║ l.81: if arr is Array(n) then n //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: match error diff --git a/hkmc2/shared/src/test/mlscript/interop/CtorBypass.mls b/hkmc2/shared/src/test/mlscript/interop/CtorBypass.mls index 1732c77c68..c3756f7c68 100644 --- a/hkmc2/shared/src/test/mlscript/interop/CtorBypass.mls +++ b/hkmc2/shared/src/test/mlscript/interop/CtorBypass.mls @@ -23,7 +23,7 @@ let b = Object.create(A.prototype) :sjs b is A //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ if (b instanceof A1) { true } else { false } +//│ if (b instanceof A1) { return true } return false; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true diff --git a/hkmc2/shared/src/test/mlscript/invalml/InvalMLCodeGen.mls b/hkmc2/shared/src/test/mlscript/invalml/InvalMLCodeGen.mls index 7b045d4e53..ad5acd3d0a 100644 --- a/hkmc2/shared/src/test/mlscript/invalml/InvalMLCodeGen.mls +++ b/hkmc2/shared/src/test/mlscript/invalml/InvalMLCodeGen.mls @@ -7,7 +7,7 @@ :sjs 42 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 42 +//│ return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 //│ Type: Int @@ -15,7 +15,7 @@ :sjs 1 + 1 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 1 + 1 +//│ return 1 + 1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 //│ Type: Int @@ -24,7 +24,7 @@ :sjs 1.0 +. 2.14 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 1.0 + 2.14 +//│ return 1.0 + 2.14 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3.14 //│ Type: Num @@ -33,7 +33,7 @@ :sjs let x = 1 in x + 1 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 1 + 1 +//│ return 1 + 1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 //│ Type: Int @@ -42,7 +42,7 @@ let x = 1 in x + 1 :sjs "abc" //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ "abc" +//│ return "abc" //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "abc" //│ Type: Str @@ -50,7 +50,7 @@ let x = 1 in x + 1 :sjs false //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ false +//│ return false //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = false //│ Type: Bool @@ -58,7 +58,7 @@ false :sjs (x => x) as [T] -> T -> T //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda1; lambda1 = (undefined, function (x) { return x }); lambda1 +//│ let lambda1; lambda1 = (undefined, function (x) { return x }); return lambda1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun //│ Type: ['T] -> ('T) ->{⊥} 'T @@ -87,7 +87,7 @@ data class Foo(x: Int) :sjs new Foo(42) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ globalThis.Object.freeze(new Foo1.class(42)) +//│ return globalThis.Object.freeze(new Foo1.class(42)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Foo(42) //│ Type: Foo @@ -96,7 +96,7 @@ new Foo(42) :sjs let foo = new Foo(42) in foo.Foo#x //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let foo; foo = globalThis.Object.freeze(new Foo1.class(42)); foo.x +//│ let foo; foo = globalThis.Object.freeze(new Foo1.class(42)); return foo.x //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 //│ Type: Int @@ -112,7 +112,7 @@ fun inc(x) = x + 1 :sjs inc(41) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 41 + 1 +//│ return 41 + 1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 //│ Type: Int @@ -121,7 +121,7 @@ inc(41) :sjs if 1 == 2 then 0 else 42 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let scrut; scrut = 1 == 2; if (scrut === true) { 0 } else { 42 } +//│ let scrut; scrut = 1 == 2; if (scrut === true) { return 0 } return 42; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 //│ Type: Int @@ -130,7 +130,7 @@ if 1 == 2 then 0 else 42 :sjs if 1 is Int then 1 else 0 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ if (globalThis.Number.isInteger(1)) { 1 } else { 0 } +//│ if (globalThis.Number.isInteger(1)) { return 1 } return 0; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 //│ Type: Int @@ -146,7 +146,8 @@ if foo is Foo then 1 else 0 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ let foo1; //│ foo1 = globalThis.Object.freeze(new Foo3.class()); -//│ if (foo1 instanceof Foo3.class) { 1 } else { 0 } +//│ if (foo1 instanceof Foo3.class) { return 1 } +//│ return 0; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 //│ foo = Foo() @@ -202,7 +203,7 @@ fun nott = case :sjs nott of false //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp; tmp = nott(); runtime.safeCall(tmp(false)) +//│ let tmp; tmp = nott(); return runtime.safeCall(tmp(false)) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true //│ Type: Bool @@ -240,7 +241,7 @@ fact(3) :sjs region x in 42 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ new globalThis.Region(); 42 +//│ new globalThis.Region(); return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 //│ Type: Int @@ -249,7 +250,7 @@ region x in 42 :sjs region x in x //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ new globalThis.Region() +//│ return new globalThis.Region() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Region //│ Type: Region[?] @@ -258,7 +259,7 @@ region x in x :sjs region x in x.ref 42 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let x; x = new globalThis.Region(); new globalThis.Ref(x, 42) +//│ let x; x = new globalThis.Region(); return new globalThis.Ref(x, 42) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = Ref(Region, 42) //│ Type: Ref[Int, ?] @@ -267,7 +268,7 @@ region x in x.ref 42 :sjs region x in let y = x.ref 42 in !(y) //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let x1, y; x1 = new globalThis.Region(); y = new globalThis.Ref(x1, 42); y.value +//│ let x1, y; x1 = new globalThis.Region(); y = new globalThis.Ref(x1, 42); return y.value //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 //│ Type: Int @@ -276,7 +277,7 @@ region x in let y = x.ref 42 in !(y) :sjs region x in let y = x.ref 42 in y := 0 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let x2, y1; x2 = new globalThis.Region(); y1 = new globalThis.Ref(x2, 42); y1.value = 0; 0 +//│ let x2, y1; x2 = new globalThis.Region(); y1 = new globalThis.Ref(x2, 42); y1.value = 0; return 0 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 //│ Type: Int diff --git a/hkmc2/shared/src/test/mlscript/invalml/InvalMLGetters.mls b/hkmc2/shared/src/test/mlscript/invalml/InvalMLGetters.mls index 26829f99b1..240264e26d 100644 --- a/hkmc2/shared/src/test/mlscript/invalml/InvalMLGetters.mls +++ b/hkmc2/shared/src/test/mlscript/invalml/InvalMLGetters.mls @@ -60,7 +60,7 @@ test2 :sjs test2() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ test21() +//│ return test21() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun //│ Type: Int -> Int @@ -69,7 +69,7 @@ test2() test2()(5) //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— //│ let baseCall; -//│ baseCall = test21(); block$res8 = runtime.safeCall(baseCall(5)); undefined +//│ baseCall = test21(); block$res8 = runtime.safeCall(baseCall(5)); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 5 //│ Type: Int diff --git a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls index f7a3020961..86e37e1770 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ClassInFun.mls @@ -162,7 +162,7 @@ f().foo() //│ return new Good²()(scope0$cap, x, y) //│ }; //│ set tmp = f³(); -//│ tmp.foo﹖() +//│ return tmp.foo﹖() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 10111 diff --git a/hkmc2/shared/src/test/mlscript/lifter/DefnsInClass.mls b/hkmc2/shared/src/test/mlscript/lifter/DefnsInClass.mls index d02bac5f0f..cbe34f8ad4 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/DefnsInClass.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/DefnsInClass.mls @@ -64,7 +64,7 @@ class A with //│ constructor { define x² as val x³ = g¹; end } //│ }; //│ set tmp = new A⁵(); -//│ tmp.x³() +//│ return tmp.x³() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 diff --git a/hkmc2/shared/src/test/mlscript/lifter/FunInFun.mls b/hkmc2/shared/src/test/mlscript/lifter/FunInFun.mls index db52250241..aa6fd578a1 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/FunInFun.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/FunInFun.mls @@ -81,7 +81,7 @@ f(1, 2) //│ set tmp = foo(used2); //│ return +⁰(tmp, unused2) //│ }; -//│ f¹(1, 2) +//│ return f¹(1, 2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 5 @@ -104,7 +104,7 @@ f(1,2,3,4,5,6) //│ define f² as fun f³(a1, a2, a3, a4, a5, a6) { //│ return g³(a1, a2, a3, a4, a5, a6) //│ }; -//│ f³(1, 2, 3, 4, 5, 6) +//│ return f³(1, 2, 3, 4, 5, 6) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 21 @@ -198,7 +198,7 @@ f(1, 2, 1000) //│ set tmp1 = +⁰(a, tmp); //│ return +⁰(tmp1, unused) //│ }; -//│ f⁵(1, 2, 1000) +//│ return f⁵(1, 2, 1000) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 7 @@ -292,7 +292,7 @@ g()(1) //│ return f$here //│ }; //│ set baseCall = g⁷(); -//│ baseCall(1) +//│ return baseCall(1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -391,7 +391,7 @@ f(0) //│ return x //│ end //│ }; -//│ f⁹(0) +//│ return f⁹(0) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 diff --git a/hkmc2/shared/src/test/mlscript/lifter/ModulesObjects.mls b/hkmc2/shared/src/test/mlscript/lifter/ModulesObjects.mls index d540b992ab..3723af544c 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/ModulesObjects.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/ModulesObjects.mls @@ -47,7 +47,7 @@ foo(10) //│ } //│ }; //│ define foo⁰ as fun foo³(y) { let tmp; set tmp = new M¹(y); return tmp.foo²() }; -//│ foo³(10) +//│ return foo³(10) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— @@ -231,7 +231,7 @@ M.A().get //│ } //│ }; //│ set tmp = M⁵.A²(); -//│ tmp.get¹ +//│ return tmp.get¹ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 4 diff --git a/hkmc2/shared/src/test/mlscript/lifter/PrivateMutableFields.mls b/hkmc2/shared/src/test/mlscript/lifter/PrivateMutableFields.mls index c4ff49ee91..61f01935bc 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/PrivateMutableFields.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/PrivateMutableFields.mls @@ -43,7 +43,8 @@ class Foo(x) with //│ private val y⁰; //│ private val state⁰; //│ constructor(Foo, y) { -//│ super⁰(); +//│ do super⁰(); +//│ end; //│ set $anon¹.this.Foo = Foo; //│ set $anon¹.this.y = y; //│ set $anon¹.this.state = $anon¹.this.Foo¹.x⁰; diff --git a/hkmc2/shared/src/test/mlscript/lifter/StackSafetyLift.mls b/hkmc2/shared/src/test/mlscript/lifter/StackSafetyLift.mls index 0ade24055c..ff4435c2ed 100644 --- a/hkmc2/shared/src/test/mlscript/lifter/StackSafetyLift.mls +++ b/hkmc2/shared/src/test/mlscript/lifter/StackSafetyLift.mls @@ -52,10 +52,10 @@ hi(0) //│ set tmp = runtime⁰.runStackSafe﹖(6, ‹stack safe body›⁰); //│ match runtime⁰.curEffect﹖ //│ null => -//│ tmp +//│ return tmp //│ else //│ set tmp = runtime⁰.topLevelEffect﹖(false); -//│ tmp +//│ return tmp //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -131,10 +131,10 @@ sum(10000) //│ set tmp = runtime⁰.runStackSafe﹖(1000, ‹stack safe body›²); //│ match runtime⁰.curEffect﹖ //│ null => -//│ tmp +//│ return tmp //│ else //│ set tmp = runtime⁰.topLevelEffect﹖(false); -//│ tmp +//│ return tmp //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 50005000 @@ -257,7 +257,7 @@ fun hi(n) = n hi(0) //│ /!!!\ Option ':stackSafe' requires ':effectHandlers' to be set //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let hi²; define hi² as fun hi³(n) { return n }; hi³(0) +//│ let hi²; define hi² as fun hi³(n) { return n }; return hi³(0) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 diff --git a/hkmc2/shared/src/test/mlscript/meta/ImporterTest.mls b/hkmc2/shared/src/test/mlscript/meta/ImporterTest.mls index 606e8073c4..ab0859ecb4 100644 --- a/hkmc2/shared/src/test/mlscript/meta/ImporterTest.mls +++ b/hkmc2/shared/src/test/mlscript/meta/ImporterTest.mls @@ -8,7 +8,7 @@ :sjs hello() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ hello() +//│ return hello() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "Hello!" @@ -18,7 +18,7 @@ fun hello() = "Hello?" :sjs hello() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ hello1() +//│ return hello1() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "Hello?" diff --git a/hkmc2/shared/src/test/mlscript/opt/BasicVarPropag.mls b/hkmc2/shared/src/test/mlscript/opt/BasicVarPropag.mls index 1fcf04edc5..594528159b 100644 --- a/hkmc2/shared/src/test/mlscript/opt/BasicVarPropag.mls +++ b/hkmc2/shared/src/test/mlscript/opt/BasicVarPropag.mls @@ -9,9 +9,9 @@ open scope { locally } let x = 1 x + 2 //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let x⁰; set x⁰ = 1; +⁰(x⁰, 2) +//│ let x⁰; set x⁰ = 1; return +⁰(x⁰, 2) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let x⁰; set x⁰ = 1; 3 +//│ let x⁰; set x⁰ = 1; return 3 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 3 //│ x = 1 @@ -20,7 +20,7 @@ x + 2 :soir x //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ x⁰ +//│ return x⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -29,9 +29,9 @@ x :soir +1 //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ +⁰(1) +//│ return +⁰(1) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ 1 +//│ return 1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -68,7 +68,7 @@ let y = x in y //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let x¹; set x¹ = 1; 1 +//│ let x¹; set x¹ = 1; return 1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 //│ x = 1 @@ -90,9 +90,9 @@ print(x) //│ set tmp = 1; //│ end //│ set x² = tmp; -//│ Predef⁰.print⁰(x²) +//│ return Predef⁰.print⁰(x²) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let x²; do Predef⁰.maybe⁰; set x² = 1; Predef⁰.print⁰(1) +//│ let x²; do Predef⁰.maybe⁰; set x² = 1; return Predef⁰.print⁰(1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ x = 1 @@ -106,9 +106,9 @@ in print(x) //│ set scrut = Predef⁰.maybe⁰; //│ match scrut //│ true => -//│ Predef⁰.print⁰(1) +//│ return Predef⁰.print⁰(1) //│ else -//│ Predef⁰.print⁰(1) +//│ return Predef⁰.print⁰(1) //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 @@ -128,7 +128,7 @@ print(x) //│ set tmp = 2; //│ end //│ set x³ = tmp; -//│ Predef⁰.print⁰(tmp) +//│ return Predef⁰.print⁰(tmp) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ x = 1 @@ -142,9 +142,9 @@ in print(x) //│ set scrut = Predef⁰.maybe⁰; //│ match scrut //│ true => -//│ Predef⁰.print⁰(1) +//│ return Predef⁰.print⁰(1) //│ else -//│ Predef⁰.print⁰(2) +//│ return Predef⁰.print⁰(2) //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 @@ -161,7 +161,7 @@ let x = if maybe z print(x) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let x⁴; do Predef⁰.maybe⁰; set x⁴ = 1; Predef⁰.print⁰(1) +//│ let x⁴; do Predef⁰.maybe⁰; set x⁴ = 1; return Predef⁰.print⁰(1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ x = 1 @@ -187,7 +187,7 @@ print(x) //│ set tmp = 2; //│ end //│ set x⁵ = tmp; -//│ Predef⁰.print⁰(tmp) +//│ return Predef⁰.print⁰(tmp) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ x = 1 @@ -238,7 +238,7 @@ main //│ end //│ return runtime⁰.Unit⁰ //│ }; -//│ main⁷() +//│ return main⁷() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 2 //│ > 1 @@ -314,7 +314,7 @@ print(res) //│ set tmp = Predef⁰.notImplementedError⁰; //│ end //│ set res⁰ = tmp; -//│ Predef⁰.print⁰(tmp) +//│ return Predef⁰.print⁰(tmp) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ res = 1 @@ -339,12 +339,12 @@ print(res) //│ set y = Predef⁰.hide⁰(1); //│ set res¹ = y; //│ end; -//│ Predef⁰.print⁰(res¹) +//│ return Predef⁰.print⁰(res¹) //│ else //│ begin //│ do Predef⁰.notImplementedError⁰; //│ end; -//│ Predef⁰.print⁰(res¹) +//│ return Predef⁰.print⁰(res¹) //│ end //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— //│ let res¹, scrut; @@ -354,10 +354,10 @@ print(res) //│ let y; //│ set y = Predef⁰.hide⁰(1); //│ set res¹ = y; -//│ Predef⁰.print⁰(y) +//│ return Predef⁰.print⁰(y) //│ else //│ do Predef⁰.notImplementedError⁰; -//│ Predef⁰.print⁰(undefined) +//│ return Predef⁰.print⁰(undefined) //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 @@ -384,7 +384,7 @@ hide of print(res) //│ do Predef⁰.notImplementedError⁰; //│ end //│ set tmp = Predef⁰.print⁰(res²); -//│ Predef⁰.hide⁰(tmp) +//│ return Predef⁰.hide⁰(tmp) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— //│ let res², scrut, tmp; //│ set scrut = Predef⁰.maybe⁰; @@ -398,7 +398,7 @@ hide of print(res) //│ do Predef⁰.notImplementedError⁰; //│ end //│ set tmp = Predef⁰.print⁰(res²); -//│ Predef⁰.hide⁰(tmp) +//│ return Predef⁰.hide⁰(tmp) //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— //│ let res2, scrut6, tmp3; //│ scrut6 = Predef.maybe; @@ -411,7 +411,6 @@ hide of print(res) //│ } //│ tmp3 = runtime.checkCall(Predef.print(res2)); //│ block$res22 = runtime.checkCall(Predef.hide(tmp3)); -//│ undefined //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ res = 1 @@ -444,7 +443,7 @@ main //│ define lambda as fun lambda⁰(x) { return x }; //│ return lambda⁰ //│ }; -//│ main⁹() +//│ return main⁹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -461,7 +460,7 @@ main //│ define test as fun test⁰(x) { return x }; //│ return test⁰ //│ }; -//│ main¹¹() +//│ return main¹¹() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun test @@ -472,7 +471,7 @@ let x = 1 in let y = x in y + 1 //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ 2 +//│ return 2 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 diff --git a/hkmc2/shared/src/test/mlscript/opt/CapturedVariableMutation.mls b/hkmc2/shared/src/test/mlscript/opt/CapturedVariableMutation.mls index f0245cc0e8..b738f3ab8c 100644 --- a/hkmc2/shared/src/test/mlscript/opt/CapturedVariableMutation.mls +++ b/hkmc2/shared/src/test/mlscript/opt/CapturedVariableMutation.mls @@ -18,7 +18,7 @@ in //│ match true //│ true => //│ set emptyItemCount⁰ = 0; -//│ Predef⁰.print⁰(1) +//│ return Predef⁰.print⁰(1) //│ else //│ throw new globalThis⁰.Error⁰("match error") //│ end diff --git a/hkmc2/shared/src/test/mlscript/opt/ConstantFolding.mls b/hkmc2/shared/src/test/mlscript/opt/ConstantFolding.mls index a63db3949b..ab583431f8 100644 --- a/hkmc2/shared/src/test/mlscript/opt/ConstantFolding.mls +++ b/hkmc2/shared/src/test/mlscript/opt/ConstantFolding.mls @@ -4,7 +4,7 @@ :soir 2 + 2 //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ 4 +//│ return 4 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 4 @@ -13,7 +13,7 @@ :soir 2 + 2 * 3 > 0 //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ true +//│ return true //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true @@ -26,7 +26,7 @@ in set y += 1 print(x + y) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ Predef⁰.print⁰(6) +//│ return Predef⁰.print⁰(6) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 6 @@ -38,7 +38,7 @@ let last = peek set peek = 1 last //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let peek⁰, last⁰; set peek⁰ = Predef⁰.hide⁰(4); set last⁰ = peek⁰; set peek⁰ = 1; last⁰ +//│ let peek⁰, last⁰; set peek⁰ = Predef⁰.hide⁰(4); set last⁰ = peek⁰; set peek⁰ = 1; return last⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 4 //│ last = 4 diff --git a/hkmc2/shared/src/test/mlscript/opt/DeadAssignmentRemoval.mls b/hkmc2/shared/src/test/mlscript/opt/DeadAssignmentRemoval.mls index 9bb7cdefa6..48025d832b 100644 --- a/hkmc2/shared/src/test/mlscript/opt/DeadAssignmentRemoval.mls +++ b/hkmc2/shared/src/test/mlscript/opt/DeadAssignmentRemoval.mls @@ -12,7 +12,7 @@ in set x = hide(2) print(x) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let tmp; set tmp = Predef⁰.hide⁰(2); Predef⁰.print⁰(tmp) +//│ let tmp; set tmp = Predef⁰.hide⁰(2); return Predef⁰.print⁰(tmp) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 2 @@ -32,7 +32,7 @@ in //│ do Predef⁰.hide⁰(3); //│ set tmp1 = Predef⁰.hide⁰(4); //│ set tmp2 = +⁰(tmp1, 1); -//│ Predef⁰.print⁰(tmp2) +//│ return Predef⁰.print⁰(tmp2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 2 //│ > 5 diff --git a/hkmc2/shared/src/test/mlscript/opt/DeadBranchRemoval.mls b/hkmc2/shared/src/test/mlscript/opt/DeadBranchRemoval.mls index 8a7b2428e1..1f5d249403 100644 --- a/hkmc2/shared/src/test/mlscript/opt/DeadBranchRemoval.mls +++ b/hkmc2/shared/src/test/mlscript/opt/DeadBranchRemoval.mls @@ -17,7 +17,7 @@ if C(123) is C(x) then print(x) D(y) then print(y) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let scrut, arg$C$0$; set scrut = C⁰(123); set arg$C$0$ = scrut.a⁰; Predef⁰.print⁰(arg$C$0$) +//│ let scrut, arg$C$0$; set scrut = C⁰(123); set arg$C$0$ = scrut.a⁰; return Predef⁰.print⁰(arg$C$0$) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 123 @@ -27,7 +27,7 @@ if C(123) is C(x) then print(x) else print("?") //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let scrut, arg$C$0$; set scrut = C⁰(123); set arg$C$0$ = scrut.a⁰; Predef⁰.print⁰(arg$C$0$) +//│ let scrut, arg$C$0$; set scrut = C⁰(123); set arg$C$0$ = scrut.a⁰; return Predef⁰.print⁰(arg$C$0$) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 123 @@ -58,10 +58,10 @@ in if c is //│ match tmp //│ C¹ => //│ set arg$C$0$ = tmp.a⁰; -//│ Predef⁰.print⁰(arg$C$0$) +//│ return Predef⁰.print⁰(arg$C$0$) //│ D¹ => //│ set arg$D$0$ = tmp.b⁰; -//│ Predef⁰.print⁰(arg$D$0$) +//│ return Predef⁰.print⁰(arg$D$0$) //│ else //│ unreachable /* exhaustive match */ //│ end diff --git a/hkmc2/shared/src/test/mlscript/opt/DeadObjRemoval.mls b/hkmc2/shared/src/test/mlscript/opt/DeadObjRemoval.mls index 48a2538473..aa919e1435 100644 --- a/hkmc2/shared/src/test/mlscript/opt/DeadObjRemoval.mls +++ b/hkmc2/shared/src/test/mlscript/opt/DeadObjRemoval.mls @@ -9,9 +9,9 @@ fun f() = 42 f() //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let f; f = function f() { return 42 }; 42 +//│ let f; f = function f() { return 42 }; return 42 //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f⁰; define f⁰ as fun f¹() { return 42 }; 42 +//│ let f⁰; define f⁰ as fun f¹() { return 42 }; return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -44,15 +44,17 @@ f() //│ }); //│ return 42 //│ }; -//│ f1() +//│ return f1() //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— //│ let f²; //│ define f² as fun f³() { //│ let A; -//│ define A as object A⁰ { constructor { do Predef⁰.print⁰("Hello"); end } }; +//│ define A as object A⁰ { +//│ constructor { do Predef⁰.print⁰("Hello"); end } +//│ }; //│ return 42 //│ }; -//│ f³() +//│ return f³() //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > Hello //│ = 42 diff --git a/hkmc2/shared/src/test/mlscript/opt/DeadSelRemoval.mls b/hkmc2/shared/src/test/mlscript/opt/DeadSelRemoval.mls index 1ef94e9982..e74cc1b356 100644 --- a/hkmc2/shared/src/test/mlscript/opt/DeadSelRemoval.mls +++ b/hkmc2/shared/src/test/mlscript/opt/DeadSelRemoval.mls @@ -12,7 +12,7 @@ do val x = 2 + 2 val y = print(2) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ do Predef⁰.print⁰(2); runtime⁰.Unit⁰ +//│ do Predef⁰.print⁰(2); return runtime⁰.Unit⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 2 @@ -40,7 +40,7 @@ Foo.x :soir Foo.x, Foo.x //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ Foo⁰.x⁰ +//│ return Foo⁰.x⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -53,7 +53,7 @@ Foo.x; Foo.x :expect 2 Foo.y, Foo.x //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ do Foo⁰.y⁰; Foo⁰.x⁰ +//│ do Foo⁰.y⁰; return Foo⁰.x⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 2 //│ = 2 @@ -87,10 +87,10 @@ let a = Foo.y in Foo.x 42 ) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let a⁰; define a⁰ as val a¹ = Foo⁰.y⁰; 42 +//│ let a⁰; define a⁰ as val a¹ = Foo⁰.y⁰; return 42 //│ —————————————| JS (sanitized) |————————————————————————————————————————————————————————————————————— //│ let a; -//│ a = Foo1.y; block$res13 = 42; undefined +//│ a = Foo1.y; block$res13 = 42; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 5 //│ = 42 diff --git a/hkmc2/shared/src/test/mlscript/opt/DeadStatRemoval.mls b/hkmc2/shared/src/test/mlscript/opt/DeadStatRemoval.mls index af8984f95b..fead8cfc85 100644 --- a/hkmc2/shared/src/test/mlscript/opt/DeadStatRemoval.mls +++ b/hkmc2/shared/src/test/mlscript/opt/DeadStatRemoval.mls @@ -4,13 +4,13 @@ :soir if 1 === 2 do 2 + 2 //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ runtime⁰.Unit⁰ +//│ return runtime⁰.Unit⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— :soir if 1 == 2 do 2 + 2 //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ do Predef⁰.equals⁰(1, 2); runtime⁰.Unit⁰ +//│ do Predef⁰.equals⁰(1, 2); return runtime⁰.Unit⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— @@ -19,7 +19,7 @@ do val x = 2 + 2 val y = print(2) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ do Predef⁰.print⁰(2); runtime⁰.Unit⁰ +//│ do Predef⁰.print⁰(2); return runtime⁰.Unit⁰ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 2 diff --git a/hkmc2/shared/src/test/mlscript/opt/DeadVarRemoval.mls b/hkmc2/shared/src/test/mlscript/opt/DeadVarRemoval.mls index 5be34e4b76..a35888b142 100644 --- a/hkmc2/shared/src/test/mlscript/opt/DeadVarRemoval.mls +++ b/hkmc2/shared/src/test/mlscript/opt/DeadVarRemoval.mls @@ -4,7 +4,7 @@ :soir let x = 2 + 2 in 1 //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ 1 +//│ return 1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -14,7 +14,7 @@ fun main = 1 main //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let main⁰; define main⁰ as fun main¹() { return 1 }; 1 +//│ let main⁰; define main⁰ as fun main¹() { return 1 }; return 1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 diff --git a/hkmc2/shared/src/test/mlscript/opt/IllFormedAccesses.mls b/hkmc2/shared/src/test/mlscript/opt/IllFormedAccesses.mls index 7026539005..911c6608cf 100644 --- a/hkmc2/shared/src/test/mlscript/opt/IllFormedAccesses.mls +++ b/hkmc2/shared/src/test/mlscript/opt/IllFormedAccesses.mls @@ -17,7 +17,7 @@ let x in //│ set x⁰ = 1; //│ end //│ do Predef⁰.print⁰("don't inline cont."); -//│ Predef⁰.print⁰(x⁰) +//│ return Predef⁰.print⁰(x⁰) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > don't inline cont. //│ > undefined @@ -31,7 +31,7 @@ let x in print("don't inline cont.") print(x) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ do Predef⁰.hide⁰(false); do Predef⁰.print⁰("don't inline cont."); Predef⁰.print⁰(1) +//│ do Predef⁰.hide⁰(false); do Predef⁰.print⁰("don't inline cont."); return Predef⁰.print⁰(1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > don't inline cont. //│ > 1 @@ -52,7 +52,7 @@ let x = undefined in //│ set x¹ = 1; //│ end //│ do Predef⁰.print⁰("don't inline cont."); -//│ Predef⁰.print⁰(x¹) +//│ return Predef⁰.print⁰(x¹) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > don't inline cont. //│ > undefined diff --git a/hkmc2/shared/src/test/mlscript/opt/MatchSimplification.mls b/hkmc2/shared/src/test/mlscript/opt/MatchSimplification.mls index 1fccc0137c..25d994f264 100644 --- a/hkmc2/shared/src/test/mlscript/opt/MatchSimplification.mls +++ b/hkmc2/shared/src/test/mlscript/opt/MatchSimplification.mls @@ -9,7 +9,7 @@ if true then 1 else 0 :soir let x = true in if x then 1 else 0 //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ match true true => 1 else 0 end +//│ match true true => return 1 else return 0 end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -44,7 +44,7 @@ fun f(x) = :soir true is Bool //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ match true Bool⁰ => true else false end +//│ match true Bool⁰ => return true else return false end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true diff --git a/hkmc2/shared/src/test/mlscript/opt/PureCallPropagation.mls b/hkmc2/shared/src/test/mlscript/opt/PureCallPropagation.mls index 3c4b53429b..010bb513a7 100644 --- a/hkmc2/shared/src/test/mlscript/opt/PureCallPropagation.mls +++ b/hkmc2/shared/src/test/mlscript/opt/PureCallPropagation.mls @@ -6,7 +6,7 @@ fun foo(x)(y) = 42 :soir let f = foo(1) in f(2) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ 42 +//│ return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 42 @@ -18,7 +18,7 @@ fun foo(x)(y)(z) = :soir foo(1)(2)(3) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ foo$worker⁰(1, 2, 3) +//│ return foo$worker⁰(1, 2, 3) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi //│ = 6 @@ -35,7 +35,7 @@ f(3) + f(4) //│ do Predef⁰.print⁰("hello"); //│ set inlinedVal = foo$worker⁰(1, 2, 3); //│ set inlinedVal1 = foo$worker⁰(1, 2, 4); -//│ +⁰(inlinedVal, inlinedVal1) +//│ return +⁰(inlinedVal, inlinedVal1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hello //│ > hi @@ -53,7 +53,7 @@ let f = foo(1)(2) in print("hello") f(3) + f(4) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ do Predef⁰.print⁰("hello"); do Predef⁰.print⁰("hi"); do Predef⁰.print⁰("hi"); 13 +//│ do Predef⁰.print⁰("hello"); do Predef⁰.print⁰("hi"); do Predef⁰.print⁰("hi"); return 13 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hello //│ > hi @@ -65,7 +65,7 @@ let f = foo(1)(2) print("hello") f(3) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let f¹; set f¹ = foo⁰(1)(2); do Predef⁰.print⁰("hello"); do Predef⁰.print⁰("hi"); 6 +//│ let f¹; set f¹ = foo⁰(1)(2); do Predef⁰.print⁰("hello"); do Predef⁰.print⁰("hi"); return 6 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hello //│ > hi @@ -97,10 +97,12 @@ f(3) //│ }; //│ do Predef⁰.print⁰("hi"); //│ @private -//│ define lambda⁰ as fun lambda²(z) { return 42 }; +//│ define lambda⁰ as fun lambda²(z) { +//│ return 42 +//│ }; //│ set f² = lambda²; //│ do Predef⁰.print⁰("hello"); -//│ 42 +//│ return 42 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi //│ > hello @@ -113,7 +115,7 @@ f(3) :soir foo(1)(2)(3) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let inlinedVal; set inlinedVal = foo$worker²(1, 2); inlinedVal(3) +//│ let inlinedVal; set inlinedVal = foo$worker²(1, 2); return inlinedVal(3) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi //│ = 42 @@ -130,7 +132,7 @@ f(3) + f(4) //│ do Predef⁰.print⁰("hello"); //│ set tmp = inlinedVal(3); //│ set tmp1 = inlinedVal(4); -//│ +⁰(tmp, tmp1) +//│ return +⁰(tmp, tmp1) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi //│ > hello diff --git a/hkmc2/shared/src/test/mlscript/opt/UnspecifiedBehavior.mls b/hkmc2/shared/src/test/mlscript/opt/UnspecifiedBehavior.mls index c445e0c446..c55c1bbb85 100644 --- a/hkmc2/shared/src/test/mlscript/opt/UnspecifiedBehavior.mls +++ b/hkmc2/shared/src/test/mlscript/opt/UnspecifiedBehavior.mls @@ -29,7 +29,7 @@ hide of hide of hide of hide of hide of x // big expression so it's not folded i //│ set tmp1 = Predef⁰.hide⁰(tmp); //│ set tmp2 = Predef⁰.hide⁰(tmp1); //│ set tmp3 = Predef⁰.hide⁰(tmp2); -//│ Predef⁰.hide⁰(tmp3) +//│ return Predef⁰.hide⁰(tmp3) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi //│ = 2 @@ -52,10 +52,10 @@ x // folded into the `else`; no longer observe the value `2` //│ match scrut //│ true => //│ set x¹ = 2; -//│ 2 +//│ return 2 //│ else //│ do Predef⁰.print⁰("hi"); -//│ undefined +//│ return undefined //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi @@ -69,7 +69,7 @@ x // folded into the `else`; no longer observe the value `2` let x print(x) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let x²; Predef⁰.print⁰(undefined) +//│ let x²; return Predef⁰.print⁰(undefined) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > undefined //│ x = undefined diff --git a/hkmc2/shared/src/test/mlscript/opt/ValPropag.mls b/hkmc2/shared/src/test/mlscript/opt/ValPropag.mls index ca259252f1..fd79450fc2 100644 --- a/hkmc2/shared/src/test/mlscript/opt/ValPropag.mls +++ b/hkmc2/shared/src/test/mlscript/opt/ValPropag.mls @@ -7,7 +7,7 @@ val x = 1 let y = x y //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let x⁰, y⁰; define x⁰ as val x¹ = 1; set y⁰ = x¹; x¹ +//│ let x⁰, y⁰; define x⁰ as val x¹ = 1; set y⁰ = x¹; return x¹ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 //│ x = 1 @@ -19,7 +19,7 @@ let x = 1 val y = x y //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let y¹, x²; set x² = 1; define y¹ as val y² = 1; y² +//│ let y¹, x²; set x² = 1; define y¹ as val y² = 1; return y² //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 //│ x = 1 @@ -31,7 +31,7 @@ y val x = 1 let y = x in print(y) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let x³; define x³ as val x⁴ = 1; Predef⁰.print⁰(x⁴) +//│ let x³; define x³ as val x⁴ = 1; return Predef⁰.print⁰(x⁴) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 //│ x = 1 diff --git a/hkmc2/shared/src/test/mlscript/opt/WorkerWrapper.mls b/hkmc2/shared/src/test/mlscript/opt/WorkerWrapper.mls index e03df17360..2babce022b 100644 --- a/hkmc2/shared/src/test/mlscript/opt/WorkerWrapper.mls +++ b/hkmc2/shared/src/test/mlscript/opt/WorkerWrapper.mls @@ -25,7 +25,7 @@ foo(1)(2) //│ set tmp1 = +⁰(tmp, x); //│ return +⁰(tmp1, y) //│ }; -//│ foo$worker¹(1, 2) +//│ return foo$worker¹(1, 2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 6 @@ -35,7 +35,7 @@ foo(1)(2) fun tiny(x)(y) = y tiny(1)(2) //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ let tiny⁰; @inline define tiny⁰ as fun tiny¹(x)(y) { return y }; 2 +//│ let tiny⁰; @inline define tiny⁰ as fun tiny¹(x)(y) { return y }; return 2 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 2 @@ -55,7 +55,7 @@ noInlineFoo(1)(2) //│ set tmp1 = +⁰(tmp, x); //│ return +⁰(tmp1, y) //│ }; -//│ noInlineFoo¹(1)(2) +//│ return noInlineFoo¹(1)(2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 6 diff --git a/hkmc2/shared/src/test/mlscript/parser/PrefixOps.mls b/hkmc2/shared/src/test/mlscript/parser/PrefixOps.mls index 677f1c1d32..74487283e0 100644 --- a/hkmc2/shared/src/test/mlscript/parser/PrefixOps.mls +++ b/hkmc2/shared/src/test/mlscript/parser/PrefixOps.mls @@ -20,7 +20,7 @@ //│ ║ l.16: 1 //│ ╙── ^ //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 3 +//│ return 3 //│ ╔══[WARNING] Pure expression in statement position //│ ║ l.16: 1 //│ ╙── ^ @@ -32,7 +32,7 @@ + 2 + 3 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 6 +//│ return 6 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 6 @@ -50,7 +50,7 @@ :sjs + //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let lambda; lambda = (undefined, function (arg1, arg2) { return arg1 + arg2 }); lambda +//│ let lambda; lambda = (undefined, function (arg1, arg2) { return arg1 + arg2 }); return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/std/FingerTreeListTest.mls b/hkmc2/shared/src/test/mlscript/std/FingerTreeListTest.mls index 6a368b481a..f02dc3c6f0 100644 --- a/hkmc2/shared/src/test/mlscript/std/FingerTreeListTest.mls +++ b/hkmc2/shared/src/test/mlscript/std/FingerTreeListTest.mls @@ -103,11 +103,12 @@ if xs is //│ if (runtime.Tuple.isArrayLike(xs1) && xs1.length >= 1) { //│ element0$ = runtime.Tuple.get(xs1, 0); //│ middleElements = runtime.Tuple.slice(xs1, 1, 0); -//│ globalThis.Object.freeze([ +//│ return globalThis.Object.freeze([ //│ element0$, //│ middleElements //│ ]) -//│ } else { throw globalThis.Object.freeze(new globalThis.Error("match error")) } +//│ } +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = [1, [2, 3]] diff --git a/hkmc2/shared/src/test/mlscript/std/PredefTest.mls b/hkmc2/shared/src/test/mlscript/std/PredefTest.mls index 6ca4a7e816..c82205e440 100644 --- a/hkmc2/shared/src/test/mlscript/std/PredefTest.mls +++ b/hkmc2/shared/src/test/mlscript/std/PredefTest.mls @@ -103,7 +103,7 @@ tuple passing(1, 2, 3) of 4, 5, 6 :sjs ??? //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Predef.notImplementedError +//│ return Predef.notImplementedError //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] Error: Not implemented diff --git a/hkmc2/shared/src/test/mlscript/tailrec/MultiArgLists.mls b/hkmc2/shared/src/test/mlscript/tailrec/MultiArgLists.mls index be23d3060d..ffc74f8302 100644 --- a/hkmc2/shared/src/test/mlscript/tailrec/MultiArgLists.mls +++ b/hkmc2/shared/src/test/mlscript/tailrec/MultiArgLists.mls @@ -39,7 +39,7 @@ loop(1000)(0) //│ }; //│ @tailrec //│ define loop⁰ as fun loop¹(x)(y) { return loop$tailrec¹(x, y) }; -//│ loop¹(1000)(0) +//│ return loop¹(1000)(0) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 500500 @@ -67,8 +67,10 @@ count(0)(100) //│ end //│ end //│ }; -//│ define count⁰ as fun count¹(start)(stop) { return count$tailrec¹(start, stop) }; -//│ count¹(0)(100) +//│ define count⁰ as fun count¹(start)(stop) { +//│ return count$tailrec¹(start, stop) +//│ }; +//│ return count¹(0)(100) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 100 diff --git a/hkmc2/shared/src/test/mlscript/tailrec/TailRecOpt.mls b/hkmc2/shared/src/test/mlscript/tailrec/TailRecOpt.mls index 215deb21c3..b68324911f 100644 --- a/hkmc2/shared/src/test/mlscript/tailrec/TailRecOpt.mls +++ b/hkmc2/shared/src/test/mlscript/tailrec/TailRecOpt.mls @@ -60,7 +60,7 @@ f(10000, 20000, 0) //│ return g_f¹(0, a, b, c, d) //│ }; //│ define f⁰ as fun f¹(a, b, c) { return g_f¹(1, a, b, c, undefined) }; -//│ f¹(10000, 20000, 0) +//│ return f¹(10000, 20000, 0) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 50000 @@ -96,7 +96,7 @@ A.sum(20000) //│ toString() { return runtime.render(this); } //│ static [definitionMetadata] = ["class", "A"]; //│ }); -//│ A1.sum(20000) +//│ return A1.sum(20000) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 200010000 diff --git a/hkmc2/shared/src/test/mlscript/ucs/future/SymbolicClass.mls b/hkmc2/shared/src/test/mlscript/ucs/future/SymbolicClass.mls index bab517305a..2bddb7c0a2 100644 --- a/hkmc2/shared/src/test/mlscript/ucs/future/SymbolicClass.mls +++ b/hkmc2/shared/src/test/mlscript/ucs/future/SymbolicClass.mls @@ -34,7 +34,7 @@ new 1 :: 2 //│ ║ ^ //│ ╙── The 'new' keyword requires a statically known class; use the 'new!' operator for dynamic instantiation. //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp; tmp = globalThis.Object.freeze(new 1()); Cons1(tmp, 2) +//│ let tmp; tmp = globalThis.Object.freeze(new 1()); return Cons1(tmp, 2) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: 1 is not a constructor @@ -48,7 +48,7 @@ new (1 :: 2) //│ ║ ^^^^^^ //│ ╙── The 'new' keyword requires a statically known class; use the 'new!' operator for dynamic instantiation. //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let tmp1; tmp1 = Cons1(1, 2); globalThis.Object.freeze(new tmp1()) +//│ let tmp1; tmp1 = Cons1(1, 2); return globalThis.Object.freeze(new tmp1()) //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ ═══[RUNTIME ERROR] TypeError: tmp1 is not a constructor diff --git a/hkmc2/shared/src/test/mlscript/ucs/general/JoinPoints.mls b/hkmc2/shared/src/test/mlscript/ucs/general/JoinPoints.mls index 6cfa6dc219..21de3219ed 100644 --- a/hkmc2/shared/src/test/mlscript/ucs/general/JoinPoints.mls +++ b/hkmc2/shared/src/test/mlscript/ucs/general/JoinPoints.mls @@ -12,7 +12,7 @@ x => if x is 0 then 1 //│ } //│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ }); -//│ lambda +//│ return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -34,7 +34,7 @@ x => if x is [[0]] then 1 //│ } //│ throw globalThis.Object.freeze(new globalThis.Error("match error")) //│ }); -//│ lambda1 +//│ return lambda1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/ucs/general/LogicalConnectives.mls b/hkmc2/shared/src/test/mlscript/ucs/general/LogicalConnectives.mls index 8a62bf6b0b..7f9daa9e64 100644 --- a/hkmc2/shared/src/test/mlscript/ucs/general/LogicalConnectives.mls +++ b/hkmc2/shared/src/test/mlscript/ucs/general/LogicalConnectives.mls @@ -28,8 +28,10 @@ true and test(42) //│ let scrut1; //│ if (true === true) { //│ scrut1 = test(42); -//│ if (scrut1 === true) { true } else { false } -//│ } else { false } +//│ if (scrut1 === true) { return true } +//│ return false; +//│ } +//│ return false; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 42 //│ = false @@ -37,7 +39,7 @@ true and test(42) :fixme true or test(42) //│ ╔══[COMPILATION ERROR] Logical `or` is not yet supported. -//│ ║ l.38: true or test(42) +//│ ║ l.40: true or test(42) //│ ╙── ^^^^^^^^^^^^^^^^ //│ > 42 //│ = false diff --git a/hkmc2/shared/src/test/mlscript/ucs/normalization/Deduplication.mls b/hkmc2/shared/src/test/mlscript/ucs/normalization/Deduplication.mls index 0693e6f4c2..209f55f7ce 100644 --- a/hkmc2/shared/src/test/mlscript/ucs/normalization/Deduplication.mls +++ b/hkmc2/shared/src/test/mlscript/ucs/normalization/Deduplication.mls @@ -11,7 +11,7 @@ let z = 0 :sjs if x === 0 then 1 else 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let scrut; scrut = x === 0; if (scrut === true) { 1 } else { 2 } +//│ let scrut; scrut = x === 0; if (scrut === true) { return 1 } return 2; //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -25,7 +25,10 @@ let a = if x === 0 then 1 else 2 :sjs print of if x === 0 then 1 else 2 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ let scrut2; scrut2 = x === 0; if (scrut2 === true) { Predef.print(1) } else { Predef.print(2) } +//│ let scrut2; +//│ scrut2 = x === 0; +//│ if (scrut2 === true) { return Predef.print(1) } +//│ return Predef.print(2); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 1 @@ -45,28 +48,19 @@ if x is //│ case 0: //│ switch (z) { //│ case 0: -//│ "000"; -//│ break; +//│ return "000"; //│ case 1: -//│ "001"; -//│ break; -//│ default: -//│ ""; +//│ return "001"; //│ } -//│ break; +//│ return ""; //│ case 1: -//│ "01"; -//│ break; -//│ default: -//│ ""; +//│ return "01"; //│ } -//│ break; +//│ return ""; //│ case 1: -//│ "1"; -//│ break; -//│ default: -//│ ""; +//│ return "1"; //│ } +//│ return "" //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "000" @@ -107,7 +101,7 @@ if x is //│ } //│ tmp1 = "-------------------------------------------------------------------------"; //│ } -//│ tmp1 +//│ return tmp1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = "000-------------------------------------------------------------------------" @@ -167,28 +161,19 @@ print of if x is //│ case 0: //│ switch (z) { //│ case 0: -//│ Predef.print("000"); -//│ break; +//│ return Predef.print("000"); //│ case 1: -//│ Predef.print("001"); -//│ break; -//│ default: -//│ Predef.print(""); +//│ return Predef.print("001"); //│ } -//│ break; +//│ return Predef.print(""); //│ case 1: -//│ Predef.print("01"); -//│ break; -//│ default: -//│ Predef.print(""); +//│ return Predef.print("01"); //│ } -//│ break; +//│ return Predef.print(""); //│ case 1: -//│ Predef.print("1"); -//│ break; -//│ default: -//│ Predef.print(""); +//│ return Predef.print("1"); //│ } +//│ return Predef.print("") //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 000 @@ -208,28 +193,19 @@ print of if x is //│ case 0: //│ switch (z) { //│ case 0: -//│ Predef.print("000"); -//│ break; +//│ return Predef.print("000"); //│ case 1: -//│ Predef.print("001"); -//│ break; -//│ default: -//│ Predef.print(""); +//│ return Predef.print("001"); //│ } -//│ break; +//│ return Predef.print(""); //│ case 1: -//│ Predef.print("01"); -//│ break; -//│ default: -//│ Predef.print(""); +//│ return Predef.print("01"); //│ } -//│ break; +//│ return Predef.print(""); //│ case 1: -//│ Predef.print("1"); -//│ break; -//│ default: -//│ Predef.print(""); +//│ return Predef.print("1"); //│ } +//│ return Predef.print("") //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 000 @@ -288,36 +264,26 @@ print of if //│ case 0: //│ switch (z) { //│ case 0: -//│ Predef.print("000"); -//│ break; +//│ return Predef.print("000"); //│ case 1: -//│ Predef.print("0_1"); -//│ break; -//│ default: -//│ Predef.print("___"); +//│ return Predef.print("0_1"); //│ } -//│ break; +//│ return Predef.print("___"); //│ case 1: -//│ Predef.print("01_"); -//│ break; -//│ default: -//│ if (z === 1) { -//│ Predef.print("0_1") -//│ } else { -//│ if (y === 2) { -//│ Predef.print("_2_") -//│ } else { -//│ Predef.print("___") -//│ } -//│ } +//│ return Predef.print("01_"); +//│ } +//│ if (z === 1) { +//│ return Predef.print("0_1") +//│ } +//│ if (y === 2) { +//│ return Predef.print("_2_") //│ } -//│ break; +//│ return Predef.print("___"); //│ case 1: -//│ Predef.print("1__"); -//│ break; -//│ default: -//│ if (y === 2) { Predef.print("_2_") } else { Predef.print("___") } +//│ return Predef.print("1__"); //│ } +//│ if (y === 2) { return Predef.print("_2_") } +//│ return Predef.print("___"); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > 000 diff --git a/hkmc2/shared/src/test/mlscript/ucs/normalization/DeduplicationWhile.mls b/hkmc2/shared/src/test/mlscript/ucs/normalization/DeduplicationWhile.mls index d3faa721ad..de50178c17 100644 --- a/hkmc2/shared/src/test/mlscript/ucs/normalization/DeduplicationWhile.mls +++ b/hkmc2/shared/src/test/mlscript/ucs/normalization/DeduplicationWhile.mls @@ -27,7 +27,7 @@ while true and true and false do print(1) else print(2) //│ continue lbl; //│ } //│ }); -//│ lambda1 +//│ return lambda1 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -88,7 +88,7 @@ while x > 0 and x === //│ } //│ return runtime.Unit //│ }); -//│ lambda2 +//│ return lambda2 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun @@ -148,7 +148,7 @@ while x > 0 and x === //│ } //│ return runtime.Unit //│ }); -//│ lambda3 +//│ return lambda3 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/ucs/normalization/ExcessiveDeduplication.mls b/hkmc2/shared/src/test/mlscript/ucs/normalization/ExcessiveDeduplication.mls index 29b732a310..b672be95e8 100644 --- a/hkmc2/shared/src/test/mlscript/ucs/normalization/ExcessiveDeduplication.mls +++ b/hkmc2/shared/src/test/mlscript/ucs/normalization/ExcessiveDeduplication.mls @@ -20,12 +20,10 @@ if y then 0 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ if (x === true) { -//│ 0 -//│ } else { -//│ if (y === true) { -//│ 0 -//│ } else { throw globalThis.Object.freeze(new globalThis.Error("match error")) } +//│ return 0 //│ } +//│ if (y === true) { return 0 } +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -36,12 +34,10 @@ if y then 1 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— //│ if (x === true) { -//│ 0 -//│ } else { -//│ if (y === true) { -//│ 1 -//│ } else { throw globalThis.Object.freeze(new globalThis.Error("match error")) } +//│ return 0 //│ } +//│ if (y === true) { return 1 } +//│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 0 @@ -100,7 +96,6 @@ if //│ throw globalThis.Object.freeze(new globalThis.Error("match error")); //│ } //│ block$res4 = tmp; -//│ undefined //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 1 @@ -126,7 +121,7 @@ if if false do () 123 //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ 123 +//│ return 123 //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let scrut; //│ block split_root$: @@ -139,9 +134,9 @@ if false do () //│ break split_1$ //│ end //│ end -//│ 123 +//│ return 123 //│ ——————————————| Optimized IR |—————————————————————————————————————————————————————————————————————— -//│ 123 +//│ return 123 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 123 @@ -152,7 +147,7 @@ if false do () if false do () 123 //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let scrut; set scrut = false; 123 +//│ let scrut; set scrut = false; return 123 //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = 123 @@ -165,7 +160,7 @@ object Obj with :sjs if Obj.test do () //│ ————————————| JS (unsanitized) |———————————————————————————————————————————————————————————————————— -//│ Obj1.test; runtime.Unit +//│ Obj1.test; return runtime.Unit //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ > hi diff --git a/hkmc2/shared/src/test/mlscript/ucs/normalization/SimplePairMatches.mls b/hkmc2/shared/src/test/mlscript/ucs/normalization/SimplePairMatches.mls index f8637a2934..4971906ac4 100644 --- a/hkmc2/shared/src/test/mlscript/ucs/normalization/SimplePairMatches.mls +++ b/hkmc2/shared/src/test/mlscript/ucs/normalization/SimplePairMatches.mls @@ -23,7 +23,7 @@ x => if x is Pair(A, B) then 1 //│ } //│ throw globalThis.Object.freeze(new globalThis.Error("match error")) //│ }); -//│ lambda +//│ return lambda //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = fun diff --git a/hkmc2/shared/src/test/mlscript/ups/recursion/NatBox.mls b/hkmc2/shared/src/test/mlscript/ups/recursion/NatBox.mls index a8e3ba5051..189e280afe 100644 --- a/hkmc2/shared/src/test/mlscript/ups/recursion/NatBox.mls +++ b/hkmc2/shared/src/test/mlscript/ups/recursion/NatBox.mls @@ -69,9 +69,9 @@ nat(0) is @compile NatBox //│ set matchSuccess = matcher__NatBox$(scrut); //│ match matchSuccess //│ true => -//│ true +//│ return true //│ else -//│ false +//│ return false //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— //│ = true diff --git a/hkmc2/shared/src/test/mlscript/wasm/Basics.mls b/hkmc2/shared/src/test/mlscript/wasm/Basics.mls index 6415578cc1..0086150abc 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/Basics.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/Basics.mls @@ -70,11 +70,12 @@ foo() + foo() //│ (local $foo (ref null any)) //│ (block (result (ref null any)) //│ (nop) -//│ (call $plus_impl -//│ (ref.i31 -//│ (i32.const 42)) -//│ (ref.i31 -//│ (i32.const 42))))) +//│ (return +//│ (call $plus_impl +//│ (ref.i31 +//│ (i32.const 42)) +//│ (ref.i31 +//│ (i32.const 42)))))) //│ (elem $foo declare func $foo) //│ (elem $entry declare func $entry)) //│ Wasm result: @@ -141,9 +142,10 @@ class Foo(val a) //│ (call $Foo_ctor //│ (ref.i31 //│ (i32.const 42)))) -//│ (struct.get $Foo $a -//│ (ref.cast (ref $Foo) -//│ (local.get $tmp)))))) +//│ (return +//│ (struct.get $Foo $a +//│ (ref.cast (ref $Foo) +//│ (local.get $tmp))))))) //│ (elem $Foo_init declare func $Foo_init) //│ (elem $Foo_ctor declare func $Foo_ctor) //│ (elem $entry declare func $entry)) @@ -214,9 +216,10 @@ class Foo(val x) with //│ (call $Foo_ctor //│ (ref.i31 //│ (i32.const 42)))) -//│ (struct.get $Foo $y -//│ (ref.cast (ref $Foo) -//│ (local.get $tmp)))))) +//│ (return +//│ (struct.get $Foo $y +//│ (ref.cast (ref $Foo) +//│ (local.get $tmp))))))) //│ (elem $Foo_init declare func $Foo_init) //│ (elem $Foo_ctor declare func $Foo_ctor) //│ (elem $entry declare func $entry)) @@ -283,9 +286,10 @@ O.y //│ (func $entry (export "entry") (type $entry) (result (ref null any)) //│ (block (result (ref null any)) //│ (nop) -//│ (struct.get $O $y -//│ (ref.cast (ref $O) -//│ (global.get $O$inst))))) +//│ (return +//│ (struct.get $O $y +//│ (ref.cast (ref $O) +//│ (global.get $O$inst)))))) //│ (elem $O_init declare func $O_init) //│ (elem $O_ctor declare func $O_ctor) //│ (elem $start declare func $start) @@ -300,5 +304,5 @@ fun bar() = 42 fun foo() = bar foo()() //│ ╔══[COMPILATION ERROR] Returning function instances is not supported -//│ ║ l.300: fun foo() = bar +//│ ║ l.304: fun foo() = bar //│ ╙── ^^^ diff --git a/hkmc2/shared/src/test/mlscript/wasm/BuiltinOperators.mls b/hkmc2/shared/src/test/mlscript/wasm/BuiltinOperators.mls index f2dfd3a07e..bc1d1c05e2 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/BuiltinOperators.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/BuiltinOperators.mls @@ -12,11 +12,12 @@ //│ (type $entry (func (result (ref null any)))) //│ (import "system" "plus_impl" (func $plus_impl (type $plus_impl))) //│ (func $entry (export "entry") (type $entry) (result (ref null any)) -//│ (call $plus_impl -//│ (ref.i31 -//│ (i32.const 1)) -//│ (ref.i31 -//│ (i32.const 2)))) +//│ (return +//│ (call $plus_impl +//│ (ref.i31 +//│ (i32.const 1)) +//│ (ref.i31 +//│ (i32.const 2))))) //│ (elem $entry declare func $entry)) //│ Wasm result: //│ = 3 @@ -31,9 +32,10 @@ //│ (type $entry (func (result (ref null any)))) //│ (import "system" "neg_impl" (func $neg_impl (type $neg_impl))) //│ (func $entry (export "entry") (type $entry) (result (ref null any)) -//│ (call $neg_impl -//│ (ref.i31 -//│ (i32.const 2)))) +//│ (return +//│ (call $neg_impl +//│ (ref.i31 +//│ (i32.const 2))))) //│ (elem $entry declare func $entry)) //│ Wasm result: //│ = -2 @@ -68,11 +70,12 @@ not true //│ (type $entry (func (result (ref null any)))) //│ (import "system" "eq_impl" (func $eq_impl (type $eq_impl))) //│ (func $entry (export "entry") (type $entry) (result (ref null any)) -//│ (call $eq_impl -//│ (ref.i31 -//│ (i32.const 1)) -//│ (ref.i31 -//│ (i32.const 1)))) +//│ (return +//│ (call $eq_impl +//│ (ref.i31 +//│ (i32.const 1)) +//│ (ref.i31 +//│ (i32.const 1))))) //│ (elem $entry declare func $entry)) //│ Wasm result: //│ = 1 diff --git a/hkmc2/shared/src/test/mlscript/wasm/ClassInheritance.mls b/hkmc2/shared/src/test/mlscript/wasm/ClassInheritance.mls index 3325d9fa8e..f4e213da63 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/ClassInheritance.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/ClassInheritance.mls @@ -169,7 +169,7 @@ c.Parent#x + (c is Parent) //│ (local.get $typeInfoMatch)))) //│ (then //│ (block $arm -//│ (local.set $matchRes +//│ (return //│ (call $plus_impl //│ (struct.get $Parent $x //│ (ref.cast (ref $Parent) @@ -177,7 +177,7 @@ c.Parent#x + (c is Parent) //│ (ref.i31 //│ (i32.const 1)))) //│ (br $match)))))) -//│ (local.set $matchRes +//│ (return //│ (call $plus_impl //│ (struct.get $Parent $x //│ (ref.cast (ref $Parent) diff --git a/hkmc2/shared/src/test/mlscript/wasm/ClassMethods.mls b/hkmc2/shared/src/test/mlscript/wasm/ClassMethods.mls index fefe1500e8..246f42419c 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/ClassMethods.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/ClassMethods.mls @@ -77,9 +77,10 @@ a.A#get() + A(2).get() //│ (local.set $tmp2 //│ (call $A_get //│ (local.get $tmp1))) -//│ (call $plus_impl -//│ (local.get $tmp) -//│ (local.get $tmp2)))))))) +//│ (return +//│ (call $plus_impl +//│ (local.get $tmp) +//│ (local.get $tmp2))))))))) //│ (elem $A_init declare func $A_init) //│ (elem $A_ctor declare func $A_ctor) //│ (elem $A_get declare func $A_get) @@ -178,7 +179,7 @@ let d = Counter(c.Counter#get()) :todo d.Counter#inc().Counter#double().Counter#get() //│ ╔══[COMPILATION ERROR] Cannot find variable `d` (VarSymbol) in local or global scope. -//│ ║ l.175: let d = Counter(c.Counter#get()) +//│ ║ l.176: let d = Counter(c.Counter#get()) //│ ╙── ^ //│ /!!!\ Uncaught error: java.lang.Exception: Internal Error: Missing type definition for symbol `member:Counter` @@ -199,5 +200,5 @@ class A(val x) with fun get() = x A(1).get //│ ╔══[COMPILATION ERROR] `member:get` is neither a field access nor a callable method -//│ ║ l.200: A(1).get +//│ ║ l.201: A(1).get //│ ╙── ^^^^ diff --git a/hkmc2/shared/src/test/mlscript/wasm/ControlFlow.mls b/hkmc2/shared/src/test/mlscript/wasm/ControlFlow.mls index 22fac443bd..1fc45c466a 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/ControlFlow.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/ControlFlow.mls @@ -102,7 +102,8 @@ let i = 0 in //│ (local.set $matchRes //│ (global.get $Unit$inst)))) //│ (local.get $matchRes)))))) -//│ (local.get $i)))) +//│ (return +//│ (local.get $i))))) //│ (elem $Unit_init declare func $Unit_init) //│ (elem $Unit_Unit declare func $Unit_Unit) //│ (elem $start declare func $start) @@ -230,9 +231,10 @@ tailMatchAllValue(1) //│ (local $tailMatchAllValue (ref null any)) //│ (block (result (ref null any)) //│ (nop) -//│ (call $tailMatchAllValue -//│ (ref.i31 -//│ (i32.const 1))))) +//│ (return +//│ (call $tailMatchAllValue +//│ (ref.i31 +//│ (i32.const 1)))))) //│ (elem $tailMatchAllValue declare func $tailMatchAllValue) //│ (elem $entry declare func $entry)) //│ Wasm result: diff --git a/hkmc2/shared/src/test/mlscript/wasm/Matching.mls b/hkmc2/shared/src/test/mlscript/wasm/Matching.mls index 4327dc54e1..bbd424dd8e 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/Matching.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/Matching.mls @@ -194,11 +194,11 @@ if Bar(true) is //│ (i32.const 1)) //│ (then //│ (block $arm -//│ (local.set $matchRes1 +//│ (return //│ (ref.i31 //│ (i32.const 3))) //│ (br $match1)))) -//│ (local.set $matchRes1 +//│ (return //│ (ref.i31 //│ (i32.const 4)))) //│ (local.get $matchRes1)))) @@ -247,12 +247,12 @@ if Bar(true) is //│ (local.get $typeInfoMatch1)))) //│ (then //│ (block $arm -//│ (local.set $matchRes +//│ (return //│ (struct.get $Baz $z //│ (ref.cast (ref $Baz) //│ (local.get $scrut)))) //│ (br $match)))))) -//│ (local.set $matchRes +//│ (return //│ (ref.i31 //│ (i32.const 2)))) //│ (local.get $matchRes)))))) diff --git a/hkmc2/shared/src/test/mlscript/wasm/ReplImports.mls b/hkmc2/shared/src/test/mlscript/wasm/ReplImports.mls index a36adf575e..046728f832 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/ReplImports.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/ReplImports.mls @@ -33,9 +33,10 @@ counter //│ (import "repl" "counter" (global $counter (mut (ref null any)))) //│ (import "repl" "step" (global $step (mut (ref null any)))) //│ (func $entry (export "entry") (type $entry) (result (ref null any)) -//│ (call $plus_impl -//│ (global.get $counter) -//│ (global.get $step))) +//│ (return +//│ (call $plus_impl +//│ (global.get $counter) +//│ (global.get $step)))) //│ (elem $entry declare func $entry)) //│ Wasm result: //│ = 3 @@ -56,7 +57,8 @@ unit //│ (import "repl" "Unit_typeinfo" (global $Unit_typeinfo (ref $Unit_typeinfo))) //│ (import "repl" "Unit$inst" (global $Unit (mut (ref null $Unit)))) //│ (func $entry (export "entry") (type $entry) (result (ref null any)) -//│ (global.get $Unit)) +//│ (return +//│ (global.get $Unit))) //│ (elem $entry declare func $entry)) //│ Wasm result: //│ = {} diff --git a/hkmc2/shared/src/test/mlscript/wasm/ScopedLocals.mls b/hkmc2/shared/src/test/mlscript/wasm/ScopedLocals.mls index 1d83c6e99a..cc19959348 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/ScopedLocals.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/ScopedLocals.mls @@ -25,11 +25,12 @@ topA + topB //│ (global.set $topB //│ (ref.i31 //│ (i32.const 2))) -//│ (call $plus_impl -//│ (ref.i31 -//│ (i32.const 1)) -//│ (ref.i31 -//│ (i32.const 2)))))) +//│ (return +//│ (call $plus_impl +//│ (ref.i31 +//│ (i32.const 1)) +//│ (ref.i31 +//│ (i32.const 2))))))) //│ (elem $entry declare func $entry)) //│ Wasm result: //│ = 3 @@ -72,9 +73,10 @@ chain(1) //│ (local $chain (ref null any)) //│ (block (result (ref null any)) //│ (nop) -//│ (call $chain -//│ (ref.i31 -//│ (i32.const 1))))) +//│ (return +//│ (call $chain +//│ (ref.i31 +//│ (i32.const 1)))))) //│ (elem $chain declare func $chain) //│ (elem $entry declare func $entry)) //│ Wasm result: @@ -185,9 +187,10 @@ class Foo(val a, val b) //│ (i32.const 42)) //│ (ref.i31 //│ (i32.const 1)))) -//│ (struct.get $Foo $a -//│ (ref.cast (ref $Foo) -//│ (local.get $tmp)))))) +//│ (return +//│ (struct.get $Foo $a +//│ (ref.cast (ref $Foo) +//│ (local.get $tmp))))))) //│ (elem $Foo_init declare func $Foo_init) //│ (elem $Foo_ctor declare func $Foo_ctor) //│ (elem $entry declare func $entry)) diff --git a/hkmc2/shared/src/test/mlscript/wasm/SingletonUnit.mls b/hkmc2/shared/src/test/mlscript/wasm/SingletonUnit.mls index f8cfa5d0e8..f1479afa2f 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/SingletonUnit.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/SingletonUnit.mls @@ -41,7 +41,8 @@ //│ (ref.cast (ref null $Unit) //│ (call $Unit_Unit))))) //│ (func $entry (export "entry") (type $entry) (result (ref null any)) -//│ (global.get $Unit$inst)) +//│ (return +//│ (global.get $Unit$inst))) //│ (elem $Unit_init declare func $Unit_init) //│ (elem $Unit_Unit declare func $Unit_Unit) //│ (elem $start declare func $start) @@ -95,8 +96,9 @@ x //│ (global.set $x //│ (ref.i31 //│ (i32.const 1))) -//│ (ref.i31 -//│ (i32.const 1)))) +//│ (return +//│ (ref.i31 +//│ (i32.const 1))))) //│ (elem $entry declare func $entry)) //│ Wasm result: //│ = 1 diff --git a/hkmc2/shared/src/test/mlscript/wasm/Singletons.mls b/hkmc2/shared/src/test/mlscript/wasm/Singletons.mls index 52fa1c97be..64a2892d2d 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/Singletons.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/Singletons.mls @@ -92,9 +92,10 @@ Bar.y //│ (nop) //│ (block (result (ref null any)) //│ (nop) -//│ (struct.get $Bar $y -//│ (ref.cast (ref $Bar) -//│ (global.get $Bar$inst)))))) +//│ (return +//│ (struct.get $Bar $y +//│ (ref.cast (ref $Bar) +//│ (global.get $Bar$inst))))))) //│ (elem $Foo_init declare func $Foo_init) //│ (elem $Foo_ctor declare func $Foo_ctor) //│ (elem $Bar_init declare func $Bar_init) diff --git a/hkmc2/shared/src/test/mlscript/wasm/Strings.mls b/hkmc2/shared/src/test/mlscript/wasm/Strings.mls index c430a1f124..a607a59488 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/Strings.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/Strings.mls @@ -56,20 +56,21 @@ let dup2 = "dup" //│ (i32.const 0)) //│ (ref.i31 //│ (i32.const 6))))) -//│ (if (result (ref null any)) -//│ (ref.test (ref null $TupleArrayMut) -//│ (local.tee $tuple -//│ (local.get $tmp))) -//│ (then -//│ (array.get $TupleArrayMut -//│ (ref.cast (ref $TupleArrayMut) -//│ (local.get $tuple)) -//│ (i32.const 1))) -//│ (else -//│ (array.get $TupleArray -//│ (ref.cast (ref $TupleArray) -//│ (local.get $tuple)) -//│ (i32.const 1)))))))) +//│ (return +//│ (if (result (ref null any)) +//│ (ref.test (ref null $TupleArrayMut) +//│ (local.tee $tuple +//│ (local.get $tmp))) +//│ (then +//│ (array.get $TupleArrayMut +//│ (ref.cast (ref $TupleArrayMut) +//│ (local.get $tuple)) +//│ (i32.const 1))) +//│ (else +//│ (array.get $TupleArray +//│ (ref.cast (ref $TupleArray) +//│ (local.get $tuple)) +//│ (i32.const 1))))))))) //│ (data $dup (i32.const 0) "\64\00\75\00\70\00") //│ (elem $entry declare func $entry)) //│ Wasm result: @@ -105,11 +106,12 @@ if true then id(1) else s2 //│ (import "system" "mlx_str_from_utf16" (func $mlx_str_from_utf16 (type $mlx_str_from_utf16))) //│ (import "system" "mem" (memory $mem 1)) //│ (func $entry (export "entry") (type $entry) (result (ref null any)) -//│ (call $mlx_str_from_utf16 -//│ (ref.i31 -//│ (i32.const 0)) -//│ (ref.i31 -//│ (i32.const 52)))) +//│ (return +//│ (call $mlx_str_from_utf16 +//│ (ref.i31 +//│ (i32.const 0)) +//│ (ref.i31 +//│ (i32.const 52))))) //│ (data $abcdefghijklmnop (i32.const 0) "\61\00\62\00\63\00\64\00\65\00\66\00\67\00\68\00\69\00\6a\00\6b\00\6c\00\6d\00\6e\00\6f\00\70\00\71\00\72\00\73\00\74\00\75\00\76\00\77\00\78\00\79\00\7a\00") //│ (elem $entry declare func $entry)) //│ Wasm result: diff --git a/hkmc2/shared/src/test/mlscript/wasm/Tuples.mls b/hkmc2/shared/src/test/mlscript/wasm/Tuples.mls index d95ca68985..001ec4af34 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/Tuples.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/Tuples.mls @@ -70,20 +70,21 @@ c.[3] //│ (i32.const 30)) //│ (ref.i31 //│ (i32.const 40)))) -//│ (if (result (ref null any)) -//│ (ref.test (ref null $TupleArrayMut) -//│ (local.tee $tuple -//│ (global.get $c))) -//│ (then -//│ (array.get $TupleArrayMut -//│ (ref.cast (ref $TupleArrayMut) -//│ (local.get $tuple)) -//│ (i32.const 3))) -//│ (else -//│ (array.get $TupleArray -//│ (ref.cast (ref $TupleArray) -//│ (local.get $tuple)) -//│ (i32.const 3)))))) +//│ (return +//│ (if (result (ref null any)) +//│ (ref.test (ref null $TupleArrayMut) +//│ (local.tee $tuple +//│ (global.get $c))) +//│ (then +//│ (array.get $TupleArrayMut +//│ (ref.cast (ref $TupleArrayMut) +//│ (local.get $tuple)) +//│ (i32.const 3))) +//│ (else +//│ (array.get $TupleArray +//│ (ref.cast (ref $TupleArray) +//│ (local.get $tuple)) +//│ (i32.const 3))))))) //│ (elem $entry declare func $entry)) //│ Wasm result: //│ = 40 diff --git a/hkmc2/shared/src/test/mlscript/wasm/VirtualMethods.mls b/hkmc2/shared/src/test/mlscript/wasm/VirtualMethods.mls index 8555972808..d4e2725b65 100644 --- a/hkmc2/shared/src/test/mlscript/wasm/VirtualMethods.mls +++ b/hkmc2/shared/src/test/mlscript/wasm/VirtualMethods.mls @@ -125,18 +125,19 @@ callF(B()) //│ (block (result (ref null any)) //│ (local.set $tmp //│ (call $B_ctor)) -//│ (block (result (ref null any)) -//│ (local.set $receiver -//│ (local.get $tmp)) -//│ (call_ref $virtual2 -//│ (local.get $receiver) -//│ (ref.i31 -//│ (i32.const 5)) -//│ (struct.get $A_typeinfo $slot0 -//│ (ref.cast (ref $A_typeinfo) -//│ (struct.get $Object $$typeinfo -//│ (ref.cast (ref $Object) -//│ (local.get $receiver)))))))))))) +//│ (return +//│ (block (result (ref null any)) +//│ (local.set $receiver +//│ (local.get $tmp)) +//│ (call_ref $virtual2 +//│ (local.get $receiver) +//│ (ref.i31 +//│ (i32.const 5)) +//│ (struct.get $A_typeinfo $slot0 +//│ (ref.cast (ref $A_typeinfo) +//│ (struct.get $Object $$typeinfo +//│ (ref.cast (ref $Object) +//│ (local.get $receiver))))))))))))) //│ (elem $A_init declare func $A_init) //│ (elem $A_ctor declare func $A_ctor) //│ (elem $A_f declare func $A_f) diff --git a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala index 745354360a..7b9b3f8b0b 100644 --- a/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala +++ b/hkmc2DiffTests/src/test/scala/hkmc2/JSBackendDiffMaker.scala @@ -222,9 +222,8 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: val resNme = nestedScp.allocateName(resSym) val loweredMapped = pgrm.copy(main = pgrm.main.mapReturn: - case Return(res, implct) => - assert(implct) - Assign(resSym, res, Return(Value.Lit(syntax.Tree.UnitLit(false)), true)) + case Return(res) => + Assign(resSym, res, End()) ) val jsb = ltl.givenIn: new JSBuilder @@ -283,11 +282,12 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: valuesToPrint.foreach: (nme, sym, expect) => val le = import codegen.* - Return( + Assign( + Elaborator.State.noSymbol, Call( Value.Ref(Elaborator.State.runtimeSymbol).selSN("printRaw"), (Arg(N, Value.Ref(sym, N)) :: Nil) ne_:: Nil)(true, false, false), - implct = true) + End()) val je = nestedScp.givenIn: jsb.block(le, endSemi = false) val jsStr = je.stripBreaks.mkString(output.ColWidth) @@ -307,4 +307,3 @@ abstract class JSBackendDiffMaker extends MLsDiffMaker: case "()" if anon => case _ => output(s"${if anon then "" else s"$nme "}= $result") - From f1935ae272aa7813f338aa20c5d99385d75dc4be Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 26 May 2026 22:01:46 +0800 Subject: [PATCH 619/654] update prector printing --- .../src/test/mlscript-compile/SpecializeHelpers.mls | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index d3bd21c653..b1e20ec152 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -70,8 +70,12 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any fun inlineResult(ctx: Map[Result, String])(r) = InlinePrinter(ctx).showResult(r) fun inlineAssigments(ctx: Map[Symbol, String])(b) = if b is - Return(res, implct) then inlineResult(ctx)(res) - Scoped(_, rest) then inlineAssigments(ctx)(rest) + Return(res) then inlineResult(ctx)(res) + Scoped(syms, rest) then + let ctx = syms.reduce((ctx, sym) => ctx.set(sym, sym.nme), ctx) + inlineAssigments(ctx)(rest) + // print the last call to the parent + Assign(NoSymbol, rhs, End) then inlineResult(ctx)(rhs) Assign(lhs, rhs, rest) then inlineAssigments(ctx.set(lhs, inlineResult(ctx)(rhs)))(rest) End then "" else throw Error("unexpected Block type in constructor: " + b.toString()) From ed226c6188bff3b59562c235c753ceee79c069e6 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 26 May 2026 00:35:18 +0800 Subject: [PATCH 620/654] Turn private fields of staged compiler-generated classes public --- .../codegen/ReflectionInstrumenter.scala | 55 ++ .../test/mlscript/block-staging/Functions.mls | 116 +++- .../test/mlscript/block-staging/Nested.mls | 518 +++++++++++++++++- 3 files changed, 678 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 64fed143d0..41fa73601d 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -480,8 +480,63 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ) else super.applyObjBody(companion) + // lazy is needed for ctx.builtins.Function + lazy val firstClassFunc = Value.Ref(State.globalThisSymbol, Some(State.globalThisSymbol)).sel(Tree.Ident("Function"), ctx.builtins.Function) + override def applyBlock(b: Block): Block = b match // staged classes + // Lifter adds private variables after lifting function classes after FirstClassFunctionTransformer, but we need the variables to be public for staging + case Define(defn: ClsLikeDefn, rest) if defn.isStaged && defn.parentPath.exists(_ == firstClassFunc) && !defn.sym.nameIsMeaningful && !defn.privateFields.isEmpty => + // make all private fields of generated classes public for staging + val addSyms = defn.privateFields.map(f => (f, BlockMemberSymbol(f.name, Nil, false), VarSymbol(Tree.Ident(f.name)))) + + // add val flag to parameters + def applyParamList(ps: ParamList) = ps.copy(params = ps.params.map(param => param.copy(flags = param.flags.copy(isVal = true)))) + val paramsOpt = defn.paramsOpt.map(applyParamList) + val auxParams = defn.auxParams.map(applyParamList) + // val preCtor = addSyms.foldLeft(defn.preCtor)({case (acc, (t, b, s)) => Define(ValDefn(t, b, s.asPath)(N, Nil), acc)}) // this termsymbol is the problem i think, it leads to this.#x? + // val paramsOpt = S(addparams) + + // change private field initializations to public + val privateFields = addSyms.map({case (f, b, v) => f.name -> (f, b)}).toMap + // println(privateFields) + + class PrivateFieldDefnRemover extends BlockTransformer(SymbolSubst.Id): + override def applyPath(p: Path)(k: Path => Block) = + // println(p) + p match + // remove outdated definition symbols for private fields + case s @ Select(Value.Ref(cls, _), Tree.Ident(n)) if cls == defn.isym && privateFields.get(n).isDefined => k(s.copy()(N)) + case _ => k(p) + + val publicInitTransformer = new PrivateFieldDefnRemover: + override def applyBlock(b: Block) = + b match + case AssignField(l @ Value.Ref(cls, _), Tree.Ident(n), r, rest) if cls == defn.isym => + // println(("A", l, r)) + privateFields.get(n) match + case S((t, b)) => + applyResult(r): r => + assign(r): p => + Define(ValDefn(t, b, p)(N, Nil), applyBlock(rest)) + case N => super.applyBlock(b) + case _ => super.applyBlock(b) + val ctor = publicInitTransformer.applyBlock(defn.ctor) + val methods = defn.methods.map((new PrivateFieldDefnRemover).applyFunDefn) + // println(ctor) + // replace private fields with the public one + val newDefn = defn.copy( + paramsOpt = paramsOpt, + auxParams = auxParams, + publicFields = addSyms.map(syms => syms._2 -> syms._1) ++ defn.publicFields, + privateFields = Nil, + ctor = ctor, + methods = methods, + )(defn.configOverride, defn.annotations) + + // val newBlock = (new BlockTransformer(SymbolSubst.Id)).applyDefn(newDefn)(Define(_, rest)) + // println((defn.publicFields, defn.privateFields)) + applyBlock(Define(newDefn, rest)) case Define(defn: ClsLikeDefn, rest) if defn.isStaged => if !defn.privateFields.isEmpty then raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index afd0facdba..9d644c9d6d 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -212,7 +212,113 @@ staged module Arguments with x = 1 x fun g(x)(y, z)() = z -//│ ═══[COMPILATION ERROR] Staged classes with private fields are not supported. +//│ > class Function$(z) extends globalThis.Function() with +//│ > let {tmp} +//│ > tmp = z +//│ > val z = tmp +//│ > fun call() = lambda_(z) +//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [Array] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } +//│ > class Function$1 extends globalThis.Function() with +//│ > () +//│ > fun call(y, z) = lambda_(y, z) +//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > SymbolMap { +//│ > classMap: Map(3) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [Array] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [class Function$1 extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$1', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } +//│ > module Arguments with +//│ > () +//│ > fun f(x) = +//│ > x = 1 +//│ > x +//│ > fun g(x) = +//│ > let {tmp1} +//│ > tmp1 = new Function_1 +//│ > tmp1 +//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ > SymbolMap { +//│ > classMap: Map(3) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [Array] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [class Function$1 extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$1', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class Arguments] { +//│ > 'cache$Arguments': [FunCache], +//│ > 'generatorMap$Arguments': [Map] +//│ > } => ModuleSymbol { name: 'Arguments', value: [Function] } +//│ > } +//│ > } +//│ FAILURE: Unexpected lack of error to fix staged module OtherBlocks with fun scope() = @@ -328,7 +434,11 @@ staged module ClassFunctions with //│ > 'cache$ClassFunctions': [FunCache], //│ > 'generatorMap$ClassFunctions': Map(0) {} //│ > } => ModuleSymbol { name: 'ClassFunctions', value: [Function] }, -//│ > undefined => ModuleSymbol { name: 'Arguments', value: undefined } +//│ > [class Arguments] { +//│ > 'cache$Arguments': [FunCache], +//│ > 'generatorMap$Arguments': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ModuleSymbol { name: 'Arguments', value: [Function] } //│ > } //│ > } @@ -405,7 +515,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Field assignment is not supported in staged modules: a //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.405: fun g() = {1 : 2} +//│ ║ l.515: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index 701a4bddac..08a29e72fb 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -97,24 +97,526 @@ staged module LiftedNested with //│ > } //│ > } -:fixme staged module LiftedLambda with fun foo(x) = y => x + y -//│ ═══[COMPILATION ERROR] Staged classes with private fields are not supported. //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let LiftedLambda⁰, lambda⁰, Function$⁰; +//│ let LiftedLambda⁰, lambda⁰, Function$⁰, symbolMap, tmp, tmp1, tmp2; +//│ set tmp = new globalThis⁰.this.Map﹖(); +//│ set tmp1 = new globalThis⁰.this.Map﹖(); +//│ set tmp2 = new Block⁰.SymbolMap﹖(tmp, tmp1); +//│ set symbolMap = tmp2; //│ @staged @private -//│ define lambda⁰ as staged fun lambda¹(x, y) { return +⁰(x, y) }; +//│ define lambda⁰ as staged fun lambda¹(x, y) { +//│ return +⁰(x, y) +//│ }; +//│ define Function$⁰ as class Function$¹ { +//│ val x⁰; +//│ constructor(x) { +//│ super⁰(); +//│ let tmp3; +//│ set tmp3 = x; +//│ define x⁰ as val x¹ = tmp3; +//│ end +//│ } +//│ method call⁰ = fun call¹(y) { +//│ return lambda¹(Function$¹.this.x﹖, y) +//│ } +//│ } +//│ module Function$² { +//│ constructor { +//│ let tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, sym, tmp12, tmp13, sym1, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; +//│ begin +//│ set tmp6 = Function$².this.call_instr﹖(); +//│ set tmp7 = [tmp6, 1]; +//│ set tmp8 = ["call", tmp7]; +//│ set tmp9 = [tmp8]; +//│ set tmp10 = new globalThis⁰.this.Map﹖(tmp9); +//│ set tmp11 = option⁰.None﹖; +//│ set sym = Block⁰.Symbol﹖("x"); +//│ set tmp12 = [sym]; +//│ set tmp13 = [tmp12]; +//│ set sym1 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$⁰, tmp11, tmp13); +//│ set tmp14 = symbolMap.checkMap﹖("classMap", Function$⁰, sym1); +//│ set tmp15 = new SpecializeHelpers⁰.FunCache﹖(tmp14, tmp10); +//│ define class$cache$Function$⁰ as val class$cache$Function$¹ = tmp15; +//│ set tmp3 = ["call", Function$².this.call_gen﹖]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = new globalThis⁰.this.Map﹖(tmp4); +//│ define class$generatorMap$Function$⁰ as val class$generatorMap$Function$¹ = tmp5; +//│ end; +//│ set tmp16 = Function$².this.class$cache$Function$﹖.toString﹖(); +//│ set tmp17 = globalThis⁰.this.console﹖.log﹖(tmp16); +//│ set tmp18 = globalThis⁰.this.console﹖.log﹖(Function$².this.class$generatorMap$Function$﹖); +//│ set tmp19 = globalThis⁰.this.console﹖.log﹖(symbolMap); +//│ end +//│ } +//│ method preCtor$_instr⁰ = fun preCtor$_instr¹() { +//│ let sym, tmp3, tmp4, sym1, var1, tmp5, tmp6, sym2, tmp7, sel, tmp8, app, return1, tmp9; +//│ set sym = Block⁰.Symbol﹖("preCtor$"); +//│ set tmp3 = []; +//│ set tmp4 = [tmp3]; +//│ set sym1 = Block⁰.Symbol﹖("globalThis"); +//│ set var1 = Block⁰.ValueRef﹖(sym1); +//│ set tmp5 = option⁰.None﹖; +//│ set tmp6 = []; +//│ set sym2 = Block⁰.ConcreteClassSymbol﹖("Function", globalThis⁰.Function⁰, tmp5, tmp6); +//│ set tmp7 = symbolMap.checkMap﹖("classMap", globalThis⁰.Function⁰, sym2); +//│ set sel = Block⁰.Select﹖(var1, tmp7); +//│ set tmp8 = []; +//│ set app = Block⁰.Call﹖(sel, tmp8); +//│ set return1 = Block⁰.Return﹖(app, true); +//│ set tmp9 = Block⁰.FunDefn﹖(sym, tmp4, return1); +//│ return tmp9 +//│ } +//│ method class$ctor$_instr⁰ = fun class$ctor$_instr¹() { +//│ let tmp3, x1, sym, sym1, tmp4, tmp5, sym2, tmp6, tmp7, var1, tmp8, sym3, tmp9, tmp10, sym4, tmp11, tmp12, sym5, end, tmp13, tmp14, assign, tmp15, tmp16; +//│ set sym = Block⁰.Symbol﹖("class$ctor$"); +//│ set sym1 = Block⁰.Symbol﹖("x"); +//│ set tmp4 = [sym1]; +//│ set tmp5 = [tmp4]; +//│ set sym2 = Block⁰.Symbol﹖("tmp"); +//│ set tmp6 = [sym2]; +//│ set tmp7 = Block⁰.ValueRef﹖(sym2); +//│ set var1 = Block⁰.ValueRef﹖(sym1); +//│ set tmp8 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp9 = [sym3]; +//│ set tmp10 = [tmp9]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$⁰, tmp8, tmp10); +//│ set tmp11 = symbolMap.checkMap﹖("classMap", Function$⁰, sym4); +//│ set tmp12 = option⁰.Some﹖(tmp11); +//│ set sym5 = Block⁰.Symbol﹖("x"); +//│ set end = Block⁰.End﹖(); +//│ set tmp13 = Block⁰.ValDefn﹖(tmp12, sym5, tmp7); +//│ set tmp14 = Block⁰.Define﹖(tmp13, end); +//│ set assign = Block⁰.Assign﹖(sym2, var1, tmp14); +//│ set tmp15 = Block⁰.Scoped﹖(tmp6, assign); +//│ set tmp16 = Block⁰.FunDefn﹖(sym, tmp5, tmp15); +//│ return tmp16 +//│ } +//│ method call_instr⁰ = fun call_instr¹() { +//│ let y, sym, sym1, tmp3, tmp4, sym2, var1, tmp5, sym3, tmp6, tmp7, sym4, tmp8, var2, tmp9, sel, tmp10, var3, tmp11, tmp12, app, return1, tmp13; +//│ set sym = Block⁰.Symbol﹖("call"); +//│ set sym1 = Block⁰.Symbol﹖("y"); +//│ set tmp3 = [sym1]; +//│ set tmp4 = [tmp3]; +//│ set sym2 = Block⁰.Symbol﹖("lambda"); +//│ set var1 = Block⁰.ValueRef﹖(sym2); +//│ set tmp5 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp6 = [sym3]; +//│ set tmp7 = [tmp6]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$⁰, tmp5, tmp7); +//│ set tmp8 = symbolMap.checkMap﹖("classMap", Function$⁰, sym4); +//│ set var2 = Block⁰.ValueRef﹖(tmp8); +//│ set tmp9 = Block⁰.Symbol﹖("x"); +//│ set sel = Block⁰.Select﹖(var2, tmp9); +//│ set tmp10 = Block⁰.Arg﹖(sel); +//│ set var3 = Block⁰.ValueRef﹖(sym1); +//│ set tmp11 = Block⁰.Arg﹖(var3); +//│ set tmp12 = [tmp10, tmp11]; +//│ set app = Block⁰.Call﹖(var1, tmp12); +//│ set return1 = Block⁰.Return﹖(app, false); +//│ set tmp13 = Block⁰.FunDefn﹖(sym, tmp4, return1); +//│ return tmp13 +//│ } +//│ method call_gen⁰ = fun call_gen¹(cls)(y) { +//│ let tmp3, tmp4, tmp5, tmp6; +//│ set tmp3 = [cls]; +//│ set tmp4 = [y]; +//│ set tmp5 = [tmp3, tmp4]; +//│ set tmp6 = SpecializeHelpers⁰.specialize﹖(Function$².this.class$cache$Function$﹖, "call", Function$².this.call_instr﹖, tmp5); +//│ return tmp6 +//│ } +//│ }; +//│ define LiftedLambda⁰ as class LiftedLambda¹ +//│ staged module LiftedLambda² { +//│ constructor { +//│ let tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, sym, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16; +//│ begin +//│ set tmp6 = LiftedLambda².this.foo_instr﹖(); +//│ set tmp7 = [tmp6, 1]; +//│ set tmp8 = ["foo", tmp7]; +//│ set tmp9 = [tmp8]; +//│ set tmp10 = new globalThis⁰.this.Map﹖(tmp9); +//│ set sym = Block⁰.ModuleSymbol﹖("LiftedLambda", LiftedLambda²); +//│ set tmp11 = symbolMap.checkMap﹖("moduleMap", LiftedLambda², sym); +//│ set tmp12 = new SpecializeHelpers⁰.FunCache﹖(tmp11, tmp10); +//│ define cache$LiftedLambda⁰ as val cache$LiftedLambda¹ = tmp12; +//│ set tmp3 = ["foo", LiftedLambda².this.foo_gen﹖]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = new globalThis⁰.this.Map﹖(tmp4); +//│ define generatorMap$LiftedLambda⁰ as val generatorMap$LiftedLambda¹ = tmp5; +//│ end; +//│ set tmp13 = LiftedLambda².this.cache$LiftedLambda﹖.toString﹖(); +//│ set tmp14 = globalThis⁰.this.console﹖.log﹖(tmp13); +//│ set tmp15 = globalThis⁰.this.console﹖.log﹖(LiftedLambda².this.generatorMap$LiftedLambda﹖); +//│ set tmp16 = globalThis⁰.this.console﹖.log﹖(symbolMap); +//│ end +//│ } +//│ method ctor$_instr² = fun ctor$_instr³() { +//│ let sym, tmp3, tmp4, end, tmp5; +//│ set sym = Block⁰.Symbol﹖("ctor$"); +//│ set tmp3 = []; +//│ set tmp4 = [tmp3]; +//│ set end = Block⁰.End﹖(); +//│ set tmp5 = Block⁰.FunDefn﹖(sym, tmp4, end); +//│ return tmp5 +//│ } +//│ method foo_instr⁰ = fun foo_instr¹() { +//│ let x, tmp3, sym, sym1, tmp4, tmp5, sym2, tmp6, tmp7, var1, tmp8, tmp9, sym3, tmp10, tmp11, sym4, tmp12, var2, tmp13, inst, return1, assign, tmp14, tmp15; +//│ set sym = Block⁰.Symbol﹖("foo"); +//│ set sym1 = Block⁰.Symbol﹖("x"); +//│ set tmp4 = [sym1]; +//│ set tmp5 = [tmp4]; +//│ set sym2 = Block⁰.Symbol﹖("tmp1"); +//│ set tmp6 = [sym2]; +//│ set tmp7 = Block⁰.ValueRef﹖(sym2); +//│ set var1 = Block⁰.ValueRef﹖(sym1); +//│ set tmp8 = Block⁰.Arg﹖(var1); +//│ set tmp9 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp10 = [sym3]; +//│ set tmp11 = [tmp10]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$⁰, tmp9, tmp11); +//│ set tmp12 = symbolMap.checkMap﹖("classMap", Function$⁰, sym4); +//│ set var2 = Block⁰.ValueRef﹖(tmp12); +//│ set tmp13 = [tmp8]; +//│ set inst = Block⁰.Instantiate﹖(var2, tmp13); +//│ set return1 = Block⁰.Return﹖(tmp7, false); +//│ set assign = Block⁰.Assign﹖(sym2, inst, return1); +//│ set tmp14 = Block⁰.Scoped﹖(tmp6, assign); +//│ set tmp15 = Block⁰.FunDefn﹖(sym, tmp5, tmp14); +//│ return tmp15 +//│ } +//│ method foo_gen⁰ = fun foo_gen¹(x) { +//│ let tmp3, tmp4, tmp5; +//│ set tmp3 = [x]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = SpecializeHelpers⁰.specialize﹖(LiftedLambda².this.cache$LiftedLambda﹖, "foo", LiftedLambda².this.foo_instr﹖, tmp4); +//│ return tmp5 +//│ } +//│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ > class Function$(x) extends globalThis.Function() with +//│ > let {tmp} +//│ > tmp = x +//│ > val x = tmp +//│ > fun call(y) = lambda(x, y) +//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [Array] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } +//│ > module LiftedLambda with +//│ > () +//│ > fun foo(x) = +//│ > let {tmp1} +//│ > tmp1 = new Function_(x) +//│ > tmp1 +//│ > Map(1) { 'foo' => [Function: foo_gen] } +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [Array] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class LiftedLambda] { +//│ > 'cache$LiftedLambda': [FunCache], +//│ > 'generatorMap$LiftedLambda': [Map] +//│ > } => ModuleSymbol { name: 'LiftedLambda', value: [Function] } +//│ > } +//│ > } -:fixme staged module LiftedMultParams with fun foo(x)(y) = x + y -//│ ═══[COMPILATION ERROR] Staged classes with private fields are not supported. //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— -//│ let LiftedMultParams⁰, lambda$⁰, Function$¹; +//│ let LiftedMultParams⁰, lambda$⁰, Function$³, symbolMap, tmp, tmp1, tmp2; +//│ set tmp = new globalThis⁰.this.Map﹖(); +//│ set tmp1 = new globalThis⁰.this.Map﹖(); +//│ set tmp2 = new Block⁰.SymbolMap﹖(tmp, tmp1); +//│ set symbolMap = tmp2; //│ @staged -//│ define lambda$⁰ as staged fun lambda$¹(x, y) { return +⁰(x, y) }; +//│ define lambda$⁰ as staged fun lambda$¹(x, y) { +//│ return +⁰(x, y) +//│ }; +//│ define Function$³ as class Function$⁴ { +//│ val x²; +//│ constructor(x) { +//│ super⁰(); +//│ let tmp3; +//│ set tmp3 = x; +//│ define x² as val x³ = tmp3; +//│ end +//│ } +//│ method call² = fun call³(y) { +//│ return lambda$¹(Function$⁴.this.x﹖, y) +//│ } +//│ } +//│ module Function$⁵ { +//│ constructor { +//│ let tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, sym, tmp12, tmp13, sym1, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; +//│ begin +//│ set tmp6 = Function$⁵.this.call_instr﹖(); +//│ set tmp7 = [tmp6, 1]; +//│ set tmp8 = ["call", tmp7]; +//│ set tmp9 = [tmp8]; +//│ set tmp10 = new globalThis⁰.this.Map﹖(tmp9); +//│ set tmp11 = option⁰.None﹖; +//│ set sym = Block⁰.Symbol﹖("x"); +//│ set tmp12 = [sym]; +//│ set tmp13 = [tmp12]; +//│ set sym1 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$³, tmp11, tmp13); +//│ set tmp14 = symbolMap.checkMap﹖("classMap", Function$³, sym1); +//│ set tmp15 = new SpecializeHelpers⁰.FunCache﹖(tmp14, tmp10); +//│ define class$cache$Function$² as val class$cache$Function$³ = tmp15; +//│ set tmp3 = ["call", Function$⁵.this.call_gen﹖]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = new globalThis⁰.this.Map﹖(tmp4); +//│ define class$generatorMap$Function$² as val class$generatorMap$Function$³ = tmp5; +//│ end; +//│ set tmp16 = Function$⁵.this.class$cache$Function$﹖.toString﹖(); +//│ set tmp17 = globalThis⁰.this.console﹖.log﹖(tmp16); +//│ set tmp18 = globalThis⁰.this.console﹖.log﹖(Function$⁵.this.class$generatorMap$Function$﹖); +//│ set tmp19 = globalThis⁰.this.console﹖.log﹖(symbolMap); +//│ end +//│ } +//│ method preCtor$_instr² = fun preCtor$_instr³() { +//│ let sym, tmp3, tmp4, sym1, var1, tmp5, tmp6, sym2, tmp7, sel, tmp8, app, return1, tmp9; +//│ set sym = Block⁰.Symbol﹖("preCtor$"); +//│ set tmp3 = []; +//│ set tmp4 = [tmp3]; +//│ set sym1 = Block⁰.Symbol﹖("globalThis"); +//│ set var1 = Block⁰.ValueRef﹖(sym1); +//│ set tmp5 = option⁰.None﹖; +//│ set tmp6 = []; +//│ set sym2 = Block⁰.ConcreteClassSymbol﹖("Function", globalThis⁰.Function⁰, tmp5, tmp6); +//│ set tmp7 = symbolMap.checkMap﹖("classMap", globalThis⁰.Function⁰, sym2); +//│ set sel = Block⁰.Select﹖(var1, tmp7); +//│ set tmp8 = []; +//│ set app = Block⁰.Call﹖(sel, tmp8); +//│ set return1 = Block⁰.Return﹖(app, true); +//│ set tmp9 = Block⁰.FunDefn﹖(sym, tmp4, return1); +//│ return tmp9 +//│ } +//│ method class$ctor$_instr² = fun class$ctor$_instr³() { +//│ let tmp3, x1, sym, sym1, tmp4, tmp5, sym2, tmp6, tmp7, var1, tmp8, sym3, tmp9, tmp10, sym4, tmp11, tmp12, sym5, end, tmp13, tmp14, assign, tmp15, tmp16; +//│ set sym = Block⁰.Symbol﹖("class$ctor$"); +//│ set sym1 = Block⁰.Symbol﹖("x"); +//│ set tmp4 = [sym1]; +//│ set tmp5 = [tmp4]; +//│ set sym2 = Block⁰.Symbol﹖("tmp"); +//│ set tmp6 = [sym2]; +//│ set tmp7 = Block⁰.ValueRef﹖(sym2); +//│ set var1 = Block⁰.ValueRef﹖(sym1); +//│ set tmp8 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp9 = [sym3]; +//│ set tmp10 = [tmp9]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$³, tmp8, tmp10); +//│ set tmp11 = symbolMap.checkMap﹖("classMap", Function$³, sym4); +//│ set tmp12 = option⁰.Some﹖(tmp11); +//│ set sym5 = Block⁰.Symbol﹖("x"); +//│ set end = Block⁰.End﹖(); +//│ set tmp13 = Block⁰.ValDefn﹖(tmp12, sym5, tmp7); +//│ set tmp14 = Block⁰.Define﹖(tmp13, end); +//│ set assign = Block⁰.Assign﹖(sym2, var1, tmp14); +//│ set tmp15 = Block⁰.Scoped﹖(tmp6, assign); +//│ set tmp16 = Block⁰.FunDefn﹖(sym, tmp5, tmp15); +//│ return tmp16 +//│ } +//│ method call_instr² = fun call_instr³() { +//│ let y, sym, sym1, tmp3, tmp4, sym2, var1, tmp5, sym3, tmp6, tmp7, sym4, tmp8, var2, tmp9, sel, tmp10, var3, tmp11, tmp12, app, return1, tmp13; +//│ set sym = Block⁰.Symbol﹖("call"); +//│ set sym1 = Block⁰.Symbol﹖("y"); +//│ set tmp3 = [sym1]; +//│ set tmp4 = [tmp3]; +//│ set sym2 = Block⁰.Symbol﹖("lambda$"); +//│ set var1 = Block⁰.ValueRef﹖(sym2); +//│ set tmp5 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp6 = [sym3]; +//│ set tmp7 = [tmp6]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$³, tmp5, tmp7); +//│ set tmp8 = symbolMap.checkMap﹖("classMap", Function$³, sym4); +//│ set var2 = Block⁰.ValueRef﹖(tmp8); +//│ set tmp9 = Block⁰.Symbol﹖("x"); +//│ set sel = Block⁰.Select﹖(var2, tmp9); +//│ set tmp10 = Block⁰.Arg﹖(sel); +//│ set var3 = Block⁰.ValueRef﹖(sym1); +//│ set tmp11 = Block⁰.Arg﹖(var3); +//│ set tmp12 = [tmp10, tmp11]; +//│ set app = Block⁰.Call﹖(var1, tmp12); +//│ set return1 = Block⁰.Return﹖(app, false); +//│ set tmp13 = Block⁰.FunDefn﹖(sym, tmp4, return1); +//│ return tmp13 +//│ } +//│ method call_gen² = fun call_gen³(cls)(y) { +//│ let tmp3, tmp4, tmp5, tmp6; +//│ set tmp3 = [cls]; +//│ set tmp4 = [y]; +//│ set tmp5 = [tmp3, tmp4]; +//│ set tmp6 = SpecializeHelpers⁰.specialize﹖(Function$⁵.this.class$cache$Function$﹖, "call", Function$⁵.this.call_instr﹖, tmp5); +//│ return tmp6 +//│ } +//│ }; +//│ define LiftedMultParams⁰ as class LiftedMultParams¹ +//│ staged module LiftedMultParams² { +//│ constructor { +//│ let tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, sym, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16; +//│ begin +//│ set tmp6 = LiftedMultParams².this.foo_instr﹖(); +//│ set tmp7 = [tmp6, 1]; +//│ set tmp8 = ["foo", tmp7]; +//│ set tmp9 = [tmp8]; +//│ set tmp10 = new globalThis⁰.this.Map﹖(tmp9); +//│ set sym = Block⁰.ModuleSymbol﹖("LiftedMultParams", LiftedMultParams²); +//│ set tmp11 = symbolMap.checkMap﹖("moduleMap", LiftedMultParams², sym); +//│ set tmp12 = new SpecializeHelpers⁰.FunCache﹖(tmp11, tmp10); +//│ define cache$LiftedMultParams⁰ as val cache$LiftedMultParams¹ = tmp12; +//│ set tmp3 = ["foo", LiftedMultParams².this.foo_gen﹖]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = new globalThis⁰.this.Map﹖(tmp4); +//│ define generatorMap$LiftedMultParams⁰ as val generatorMap$LiftedMultParams¹ = tmp5; +//│ end; +//│ set tmp13 = LiftedMultParams².this.cache$LiftedMultParams﹖.toString﹖(); +//│ set tmp14 = globalThis⁰.this.console﹖.log﹖(tmp13); +//│ set tmp15 = globalThis⁰.this.console﹖.log﹖(LiftedMultParams².this.generatorMap$LiftedMultParams﹖); +//│ set tmp16 = globalThis⁰.this.console﹖.log﹖(symbolMap); +//│ end +//│ } +//│ method ctor$_instr⁴ = fun ctor$_instr⁵() { +//│ let sym, tmp3, tmp4, end, tmp5; +//│ set sym = Block⁰.Symbol﹖("ctor$"); +//│ set tmp3 = []; +//│ set tmp4 = [tmp3]; +//│ set end = Block⁰.End﹖(); +//│ set tmp5 = Block⁰.FunDefn﹖(sym, tmp4, end); +//│ return tmp5 +//│ } +//│ method foo_instr² = fun foo_instr³() { +//│ let x, tmp3, sym, sym1, tmp4, tmp5, sym2, tmp6, tmp7, var1, tmp8, tmp9, sym3, tmp10, tmp11, sym4, tmp12, var2, tmp13, inst, return1, assign, tmp14, tmp15; +//│ set sym = Block⁰.Symbol﹖("foo"); +//│ set sym1 = Block⁰.Symbol﹖("x"); +//│ set tmp4 = [sym1]; +//│ set tmp5 = [tmp4]; +//│ set sym2 = Block⁰.Symbol﹖("tmp1"); +//│ set tmp6 = [sym2]; +//│ set tmp7 = Block⁰.ValueRef﹖(sym2); +//│ set var1 = Block⁰.ValueRef﹖(sym1); +//│ set tmp8 = Block⁰.Arg﹖(var1); +//│ set tmp9 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp10 = [sym3]; +//│ set tmp11 = [tmp10]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$³, tmp9, tmp11); +//│ set tmp12 = symbolMap.checkMap﹖("classMap", Function$³, sym4); +//│ set var2 = Block⁰.ValueRef﹖(tmp12); +//│ set tmp13 = [tmp8]; +//│ set inst = Block⁰.Instantiate﹖(var2, tmp13); +//│ set return1 = Block⁰.Return﹖(tmp7, false); +//│ set assign = Block⁰.Assign﹖(sym2, inst, return1); +//│ set tmp14 = Block⁰.Scoped﹖(tmp6, assign); +//│ set tmp15 = Block⁰.FunDefn﹖(sym, tmp5, tmp14); +//│ return tmp15 +//│ } +//│ method foo_gen² = fun foo_gen³(x) { +//│ let tmp3, tmp4, tmp5; +//│ set tmp3 = [x]; +//│ set tmp4 = [tmp3]; +//│ set tmp5 = SpecializeHelpers⁰.specialize﹖(LiftedMultParams².this.cache$LiftedMultParams﹖, "foo", LiftedMultParams².this.foo_instr﹖, tmp4); +//│ return tmp5 +//│ } +//│ }; //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— +//│ > class Function$(x) extends globalThis.Function() with +//│ > let {tmp} +//│ > tmp = x +//│ > val x = tmp +//│ > fun call(y) = lambda_(x, y) +//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [class Function$2 extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [Array] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } +//│ > module LiftedMultParams with +//│ > () +//│ > fun foo(x) = +//│ > let {tmp1} +//│ > tmp1 = new Function_(x) +//│ > tmp1 +//│ > Map(1) { 'foo' => [Function: foo_gen] } +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [class Function$2 extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [Array] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class LiftedMultParams] { +//│ > 'cache$LiftedMultParams': [FunCache], +//│ > 'generatorMap$LiftedMultParams': [Map] +//│ > } => ModuleSymbol { name: 'LiftedMultParams', value: [Function] } +//│ > } +//│ > } From e78d3b0a77273e10222b1fd24742e63cedb4341c Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 26 May 2026 22:08:52 +0800 Subject: [PATCH 621/654] rerun tests --- .../test/mlscript/block-staging/Functions.mls | 4 +- .../test/mlscript/block-staging/Nested.mls | 72 ++++++++++--------- 2 files changed, 41 insertions(+), 35 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 9d644c9d6d..f0fac586bd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -206,7 +206,6 @@ staged module CallSubst with //│ > } :ftc -:fixme staged module Arguments with fun f(x) = x = 1 @@ -318,7 +317,6 @@ staged module Arguments with //│ > } => ModuleSymbol { name: 'Arguments', value: [Function] } //│ > } //│ > } -//│ FAILURE: Unexpected lack of error to fix staged module OtherBlocks with fun scope() = @@ -515,7 +513,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Field assignment is not supported in staged modules: a //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.515: fun g() = {1 : 2} +//│ ║ l.513: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index 08a29e72fb..4efada3335 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -112,7 +112,8 @@ staged module LiftedLambda with //│ define Function$⁰ as class Function$¹ { //│ val x⁰; //│ constructor(x) { -//│ super⁰(); +//│ do super⁰(); +//│ end; //│ let tmp3; //│ set tmp3 = x; //│ define x⁰ as val x¹ = tmp3; @@ -151,22 +152,25 @@ staged module LiftedLambda with //│ end //│ } //│ method preCtor$_instr⁰ = fun preCtor$_instr¹() { -//│ let sym, tmp3, tmp4, sym1, var1, tmp5, tmp6, sym2, tmp7, sel, tmp8, app, return1, tmp9; +//│ let sym, tmp3, tmp4, sym1, tmp5, sym2, var1, tmp6, tmp7, sym3, tmp8, sel, tmp9, app, end, assign, tmp10; //│ set sym = Block⁰.Symbol﹖("preCtor$"); //│ set tmp3 = []; //│ set tmp4 = [tmp3]; -//│ set sym1 = Block⁰.Symbol﹖("globalThis"); -//│ set var1 = Block⁰.ValueRef﹖(sym1); -//│ set tmp5 = option⁰.None﹖; -//│ set tmp6 = []; -//│ set sym2 = Block⁰.ConcreteClassSymbol﹖("Function", globalThis⁰.Function⁰, tmp5, tmp6); -//│ set tmp7 = symbolMap.checkMap﹖("classMap", globalThis⁰.Function⁰, sym2); -//│ set sel = Block⁰.Select﹖(var1, tmp7); -//│ set tmp8 = []; -//│ set app = Block⁰.Call﹖(sel, tmp8); -//│ set return1 = Block⁰.Return﹖(app, true); -//│ set tmp9 = Block⁰.FunDefn﹖(sym, tmp4, return1); -//│ return tmp9 +//│ set sym1 = Block⁰.NoSymbol﹖(); +//│ set tmp5 = Block⁰.ValueRef﹖(sym1); +//│ set sym2 = Block⁰.Symbol﹖("globalThis"); +//│ set var1 = Block⁰.ValueRef﹖(sym2); +//│ set tmp6 = option⁰.None﹖; +//│ set tmp7 = []; +//│ set sym3 = Block⁰.ConcreteClassSymbol﹖("Function", globalThis⁰.Function⁰, tmp6, tmp7); +//│ set tmp8 = symbolMap.checkMap﹖("classMap", globalThis⁰.Function⁰, sym3); +//│ set sel = Block⁰.Select﹖(var1, tmp8); +//│ set tmp9 = []; +//│ set app = Block⁰.Call﹖(sel, tmp9); +//│ set end = Block⁰.End﹖(); +//│ set assign = Block⁰.Assign﹖(sym1, app, end); +//│ set tmp10 = Block⁰.FunDefn﹖(sym, tmp4, assign); +//│ return tmp10 //│ } //│ method class$ctor$_instr⁰ = fun class$ctor$_instr¹() { //│ let tmp3, x1, sym, sym1, tmp4, tmp5, sym2, tmp6, tmp7, var1, tmp8, sym3, tmp9, tmp10, sym4, tmp11, tmp12, sym5, end, tmp13, tmp14, assign, tmp15, tmp16; @@ -216,7 +220,7 @@ staged module LiftedLambda with //│ set tmp11 = Block⁰.Arg﹖(var3); //│ set tmp12 = [tmp10, tmp11]; //│ set app = Block⁰.Call﹖(var1, tmp12); -//│ set return1 = Block⁰.Return﹖(app, false); +//│ set return1 = Block⁰.Return﹖(app); //│ set tmp13 = Block⁰.FunDefn﹖(sym, tmp4, return1); //│ return tmp13 //│ } @@ -283,7 +287,7 @@ staged module LiftedLambda with //│ set var2 = Block⁰.ValueRef﹖(tmp12); //│ set tmp13 = [tmp8]; //│ set inst = Block⁰.Instantiate﹖(var2, tmp13); -//│ set return1 = Block⁰.Return﹖(tmp7, false); +//│ set return1 = Block⁰.Return﹖(tmp7); //│ set assign = Block⁰.Assign﹖(sym2, inst, return1); //│ set tmp14 = Block⁰.Scoped﹖(tmp6, assign); //│ set tmp15 = Block⁰.FunDefn﹖(sym, tmp5, tmp14); @@ -374,7 +378,8 @@ staged module LiftedMultParams with //│ define Function$³ as class Function$⁴ { //│ val x²; //│ constructor(x) { -//│ super⁰(); +//│ do super⁰(); +//│ end; //│ let tmp3; //│ set tmp3 = x; //│ define x² as val x³ = tmp3; @@ -413,22 +418,25 @@ staged module LiftedMultParams with //│ end //│ } //│ method preCtor$_instr² = fun preCtor$_instr³() { -//│ let sym, tmp3, tmp4, sym1, var1, tmp5, tmp6, sym2, tmp7, sel, tmp8, app, return1, tmp9; +//│ let sym, tmp3, tmp4, sym1, tmp5, sym2, var1, tmp6, tmp7, sym3, tmp8, sel, tmp9, app, end, assign, tmp10; //│ set sym = Block⁰.Symbol﹖("preCtor$"); //│ set tmp3 = []; //│ set tmp4 = [tmp3]; -//│ set sym1 = Block⁰.Symbol﹖("globalThis"); -//│ set var1 = Block⁰.ValueRef﹖(sym1); -//│ set tmp5 = option⁰.None﹖; -//│ set tmp6 = []; -//│ set sym2 = Block⁰.ConcreteClassSymbol﹖("Function", globalThis⁰.Function⁰, tmp5, tmp6); -//│ set tmp7 = symbolMap.checkMap﹖("classMap", globalThis⁰.Function⁰, sym2); -//│ set sel = Block⁰.Select﹖(var1, tmp7); -//│ set tmp8 = []; -//│ set app = Block⁰.Call﹖(sel, tmp8); -//│ set return1 = Block⁰.Return﹖(app, true); -//│ set tmp9 = Block⁰.FunDefn﹖(sym, tmp4, return1); -//│ return tmp9 +//│ set sym1 = Block⁰.NoSymbol﹖(); +//│ set tmp5 = Block⁰.ValueRef﹖(sym1); +//│ set sym2 = Block⁰.Symbol﹖("globalThis"); +//│ set var1 = Block⁰.ValueRef﹖(sym2); +//│ set tmp6 = option⁰.None﹖; +//│ set tmp7 = []; +//│ set sym3 = Block⁰.ConcreteClassSymbol﹖("Function", globalThis⁰.Function⁰, tmp6, tmp7); +//│ set tmp8 = symbolMap.checkMap﹖("classMap", globalThis⁰.Function⁰, sym3); +//│ set sel = Block⁰.Select﹖(var1, tmp8); +//│ set tmp9 = []; +//│ set app = Block⁰.Call﹖(sel, tmp9); +//│ set end = Block⁰.End﹖(); +//│ set assign = Block⁰.Assign﹖(sym1, app, end); +//│ set tmp10 = Block⁰.FunDefn﹖(sym, tmp4, assign); +//│ return tmp10 //│ } //│ method class$ctor$_instr² = fun class$ctor$_instr³() { //│ let tmp3, x1, sym, sym1, tmp4, tmp5, sym2, tmp6, tmp7, var1, tmp8, sym3, tmp9, tmp10, sym4, tmp11, tmp12, sym5, end, tmp13, tmp14, assign, tmp15, tmp16; @@ -478,7 +486,7 @@ staged module LiftedMultParams with //│ set tmp11 = Block⁰.Arg﹖(var3); //│ set tmp12 = [tmp10, tmp11]; //│ set app = Block⁰.Call﹖(var1, tmp12); -//│ set return1 = Block⁰.Return﹖(app, false); +//│ set return1 = Block⁰.Return﹖(app); //│ set tmp13 = Block⁰.FunDefn﹖(sym, tmp4, return1); //│ return tmp13 //│ } @@ -545,7 +553,7 @@ staged module LiftedMultParams with //│ set var2 = Block⁰.ValueRef﹖(tmp12); //│ set tmp13 = [tmp8]; //│ set inst = Block⁰.Instantiate﹖(var2, tmp13); -//│ set return1 = Block⁰.Return﹖(tmp7, false); +//│ set return1 = Block⁰.Return﹖(tmp7); //│ set assign = Block⁰.Assign﹖(sym2, inst, return1); //│ set tmp14 = Block⁰.Scoped﹖(tmp6, assign); //│ set tmp15 = Block⁰.FunDefn﹖(sym, tmp5, tmp14); From 8297813d6fbbcf1c1cc253ec95e7d349e96662bd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 26 May 2026 22:48:37 +0800 Subject: [PATCH 622/654] refactor --- .../codegen/ReflectionInstrumenter.scala | 130 +++++++++--------- 1 file changed, 63 insertions(+), 67 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 41fa73601d..96d205c9aa 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -57,6 +57,66 @@ def toValue(lit: Str | Int | BigDecimal | Bool): Value = case n: BigDecimal => Tree.DecLit(n) Value.Lit(l) +// helpers for constructing Block +def assign(using State)(res: Result, symName: Str = "tmp")(k: Path => Block): Block = + // TODO: skip assignment if res: Path? + val sym = new TempSymbol(N, symName) + Scoped(Set(sym), Assign(sym, res, k(sym.asPath))) + +def tuple(using State)(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + assign(Tuple(false, elems.map(asArg)), symName)(k) + +def ctor(using State)(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = + assign(Instantiate(false, cls, Ls(args.map(asArg))), symName)(k) + +def call(using State)(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = + assign(Call(fun, args.map(asArg) ne_:: Nil)(isMlsFun, false, false), symName)(k) + +// transform fields of the first encountered class from private to public +class DataClassTransformer(using State) extends BlockTransformer(SymbolSubst.Id): + override def applyClsLikeDefn(defn: ClsLikeDefn)(k: Defn => Block) = + val addSyms = defn.privateFields.map(f => (f, BlockMemberSymbol(f.name, Nil, false))) + + // add val flag to parameters + def applyParamList(ps: ParamList) = ps.copy(params = ps.params.map(param => param.copy(flags = param.flags.copy(isVal = true)))) + val paramsOpt = defn.paramsOpt.map(applyParamList) + val auxParams = defn.auxParams.map(applyParamList) + + // change private field initializations to public + val privateFields = addSyms.map({case (f, b) => f.name -> (f, b)}).toMap + + class PrivateFieldDefnRemover extends BlockTransformer(SymbolSubst.Id): + override def applyPath(p: Path)(k: Path => Block) = + p match + // remove outdated definition symbols for private fields + case s @ Select(Value.Ref(cls, _), Tree.Ident(n)) if cls == defn.isym && privateFields.get(n).isDefined => k(s.copy()(N)) + case _ => k(p) + + val publicInitTransformer = new PrivateFieldDefnRemover: + override def applyBlock(b: Block) = + b match + case AssignField(l @ Value.Ref(cls, _), Tree.Ident(n), r, rest) if cls == defn.isym => + privateFields.get(n) match + case S((t, b)) => + applyResult(r): r => + assign(r): p => + Define(ValDefn(t, b, p)(N, Nil), applyBlock(rest)) + case N => super.applyBlock(b) + case _ => super.applyBlock(b) + val ctor = publicInitTransformer.applyBlock(defn.ctor) + val methods = defn.methods.map((new PrivateFieldDefnRemover).applyFunDefn) + // replace private fields with the public one + val newDefn = defn.copy( + paramsOpt = paramsOpt, + auxParams = auxParams, + publicFields = addSyms.map(syms => syms._2 -> syms._1) ++ defn.publicFields, + privateFields = Nil, + ctor = ctor, + methods = methods, + )(defn.configOverride, defn.annotations) + + k(newDefn) + // transform Block to Block IR so that it can be instrumented in mlscript class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(SymbolSubst.Id): // TODO: there could be a fresh scope per function body, instead of a single one for the entire program @@ -65,22 +125,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() var symbolMapSym: Opt[Symbol] = N - // helpers for constructing Block - - def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = - // TODO: skip assignment if res: Path? - val sym = new TempSymbol(N, symName) - Scoped(Set(sym), Assign(sym, res, k(sym.asPath))) - - def tuple(elems: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - assign(Tuple(false, elems.map(asArg)), symName)(k) - - def ctor(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k: Path => Block): Block = - assign(Instantiate(false, cls, Ls(args.map(asArg))), symName)(k) - - def call(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = - assign(Call(fun, args.map(asArg) ne_:: Nil)(isMlsFun, false, false), symName)(k) - // helpers for constructing Block IR def blockMod(name: Str) = summon[State].blockSymbol.asPath.selSN(name) @@ -484,59 +528,11 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S lazy val firstClassFunc = Value.Ref(State.globalThisSymbol, Some(State.globalThisSymbol)).sel(Tree.Ident("Function"), ctx.builtins.Function) override def applyBlock(b: Block): Block = b match - // staged classes // Lifter adds private variables after lifting function classes after FirstClassFunctionTransformer, but we need the variables to be public for staging case Define(defn: ClsLikeDefn, rest) if defn.isStaged && defn.parentPath.exists(_ == firstClassFunc) && !defn.sym.nameIsMeaningful && !defn.privateFields.isEmpty => - // make all private fields of generated classes public for staging - val addSyms = defn.privateFields.map(f => (f, BlockMemberSymbol(f.name, Nil, false), VarSymbol(Tree.Ident(f.name)))) - - // add val flag to parameters - def applyParamList(ps: ParamList) = ps.copy(params = ps.params.map(param => param.copy(flags = param.flags.copy(isVal = true)))) - val paramsOpt = defn.paramsOpt.map(applyParamList) - val auxParams = defn.auxParams.map(applyParamList) - // val preCtor = addSyms.foldLeft(defn.preCtor)({case (acc, (t, b, s)) => Define(ValDefn(t, b, s.asPath)(N, Nil), acc)}) // this termsymbol is the problem i think, it leads to this.#x? - // val paramsOpt = S(addparams) - - // change private field initializations to public - val privateFields = addSyms.map({case (f, b, v) => f.name -> (f, b)}).toMap - // println(privateFields) - - class PrivateFieldDefnRemover extends BlockTransformer(SymbolSubst.Id): - override def applyPath(p: Path)(k: Path => Block) = - // println(p) - p match - // remove outdated definition symbols for private fields - case s @ Select(Value.Ref(cls, _), Tree.Ident(n)) if cls == defn.isym && privateFields.get(n).isDefined => k(s.copy()(N)) - case _ => k(p) - - val publicInitTransformer = new PrivateFieldDefnRemover: - override def applyBlock(b: Block) = - b match - case AssignField(l @ Value.Ref(cls, _), Tree.Ident(n), r, rest) if cls == defn.isym => - // println(("A", l, r)) - privateFields.get(n) match - case S((t, b)) => - applyResult(r): r => - assign(r): p => - Define(ValDefn(t, b, p)(N, Nil), applyBlock(rest)) - case N => super.applyBlock(b) - case _ => super.applyBlock(b) - val ctor = publicInitTransformer.applyBlock(defn.ctor) - val methods = defn.methods.map((new PrivateFieldDefnRemover).applyFunDefn) - // println(ctor) - // replace private fields with the public one - val newDefn = defn.copy( - paramsOpt = paramsOpt, - auxParams = auxParams, - publicFields = addSyms.map(syms => syms._2 -> syms._1) ++ defn.publicFields, - privateFields = Nil, - ctor = ctor, - methods = methods, - )(defn.configOverride, defn.annotations) - - // val newBlock = (new BlockTransformer(SymbolSubst.Id)).applyDefn(newDefn)(Define(_, rest)) - // println((defn.publicFields, defn.privateFields)) - applyBlock(Define(newDefn, rest)) + (new DataClassTransformer).applyClsLikeDefn(defn): defn => + applyBlock(Define(defn, rest)) + // staged classes case Define(defn: ClsLikeDefn, rest) if defn.isStaged => if !defn.privateFields.isEmpty then raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) From d50c7a12ae9cc666edbcc2878a8725b177aa2be1 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Tue, 26 May 2026 23:11:28 +0800 Subject: [PATCH 623/654] fixup! refactor --- .../codegen/ReflectionInstrumenter.scala | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 96d205c9aa..92cfd2199f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -72,44 +72,44 @@ def ctor(using State)(cls: Path, args: Ls[ArgWrappable], symName: Str = "tmp")(k def call(using State)(fun: Path, args: Ls[ArgWrappable], isMlsFun: Bool = true, symName: Str = "tmp")(k: Path => Block): Block = assign(Call(fun, args.map(asArg) ne_:: Nil)(isMlsFun, false, false), symName)(k) -// transform fields of the first encountered class from private to public +// transform fields of a class from private to public class DataClassTransformer(using State) extends BlockTransformer(SymbolSubst.Id): + // add val flag to each param + override def applyParamList(ps: ParamList) = + ps.copy(params = ps.params.map(param => param.copy(flags = param.flags.copy(isVal = true)))) + override def applyClsLikeDefn(defn: ClsLikeDefn)(k: Defn => Block) = - val addSyms = defn.privateFields.map(f => (f, BlockMemberSymbol(f.name, Nil, false))) + val addSyms = defn.privateFields.map(f => (BlockMemberSymbol(f.name, Nil, false), f)) + val privateFields = addSyms.map({case (b, f) => f.name -> (b, f)}).toMap - // add val flag to parameters - def applyParamList(ps: ParamList) = ps.copy(params = ps.params.map(param => param.copy(flags = param.flags.copy(isVal = true)))) val paramsOpt = defn.paramsOpt.map(applyParamList) val auxParams = defn.auxParams.map(applyParamList) - // change private field initializations to public - val privateFields = addSyms.map({case (f, b) => f.name -> (f, b)}).toMap - class PrivateFieldDefnRemover extends BlockTransformer(SymbolSubst.Id): - override def applyPath(p: Path)(k: Path => Block) = - p match - // remove outdated definition symbols for private fields - case s @ Select(Value.Ref(cls, _), Tree.Ident(n)) if cls == defn.isym && privateFields.get(n).isDefined => k(s.copy()(N)) - case _ => k(p) + override def applyPath(p: Path)(k: Path => Block) = p match + // remove outdated definition symbols for private fields + case s @ Select(Value.Ref(cls, _), Tree.Ident(n)) if cls == defn.isym && privateFields.get(n).isDefined => k(s.copy()(N)) + case _ => k(p) + // change private field initializations to public val publicInitTransformer = new PrivateFieldDefnRemover: - override def applyBlock(b: Block) = - b match - case AssignField(l @ Value.Ref(cls, _), Tree.Ident(n), r, rest) if cls == defn.isym => - privateFields.get(n) match - case S((t, b)) => - applyResult(r): r => - assign(r): p => - Define(ValDefn(t, b, p)(N, Nil), applyBlock(rest)) - case N => super.applyBlock(b) - case _ => super.applyBlock(b) + override def applyBlock(b: Block) = b match + case AssignField(l @ Value.Ref(cls, _), Tree.Ident(n), r, rest) if cls == defn.isym => + privateFields.get(n) match + case S((b, t)) => + applyResult(r): r => + assign(r): p => + Define(ValDefn(t, b, p)(N, Nil), applyBlock(rest)) + case N => super.applyBlock(b) + case _ => super.applyBlock(b) + // only turn AssignField declarations for private fields to ValDefn for public fields val ctor = publicInitTransformer.applyBlock(defn.ctor) val methods = defn.methods.map((new PrivateFieldDefnRemover).applyFunDefn) - // replace private fields with the public one + val newDefn = defn.copy( paramsOpt = paramsOpt, auxParams = auxParams, - publicFields = addSyms.map(syms => syms._2 -> syms._1) ++ defn.publicFields, + publicFields = addSyms ++ defn.publicFields, privateFields = Nil, ctor = ctor, methods = methods, From 96068abcf364774c64b1dd8d49516fa17f230679 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Wed, 27 May 2026 18:16:58 +0800 Subject: [PATCH 624/654] WIP: Add test --- .../test/mlscript-compile/SimpleRegExp.mls | 230 ++++++++++++++++++ .../block-staging/SimpleRegExpTest.mls | 162 ++++++++++++ 2 files changed, 392 insertions(+) create mode 100644 hkmc2/shared/src/test/mlscript-compile/SimpleRegExp.mls create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/SimpleRegExpTest.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/SimpleRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/SimpleRegExp.mls new file mode 100644 index 0000000000..7c983fc915 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/SimpleRegExp.mls @@ -0,0 +1,230 @@ +#config(noFreeze: true) + +module SeqHelper with + fun push(arr, ele) = + arr.push(ele) + arr + fun concat(lhs, rhs) = lhs.concat(rhs) + fun has(arr, ele) = arr.includes(ele) + fun len(s) = s.length + fun eq(arr1, arr2) = + arr1.length == arr2.length and arr1.every((v, i) => v == arr2.(i)) + fun setEq(s1, s2) = + s1.slice().sort() + s2.slice().sort() + s1.length == s2.length and s1.every((v, i) => v.eq(s2.(i))) + +module CharSet with + fun alphabet() = [ + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" + ] + fun space() = [" ", "\n", "\t", "\r"] + fun digit() = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + +module SimpleRegExp with + class Some(val x) + class None + + fun len(s) = SeqHelper.len(s) + fun has(arr, ele) = SeqHelper.has(arr, ele) + fun arrEq(arr1, arr2) = SeqHelper.eq(arr1, arr2) + fun push(arr, ele) = SeqHelper.push(arr, ele) + fun concat(lhs, rhs) = SeqHelper.concat(lhs, rhs) + fun setEq(s1, s2) = SeqHelper.setEq(s1, s2) + + class DedupSet(val arr) with + fun addImp(e, i) = + let s = len(arr) + if i == s then new DedupSet(push(arr, e)) + else + let e' = arr.(i) + if e.eq(e') then this else addImp(e, i + 1) + fun add(e) = + addImp(e, 0) + + class RegExp() with + fun derive(c) + fun canBeEmpty() + fun normalize() + fun eq(other) + fun startsWith(c) + + class Nothing() extends RegExp with + fun derive(c) = this + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = other is Nothing + fun startsWith(c) = false + + class Empty() extends RegExp with + fun derive(c) = new Nothing() + fun canBeEmpty() = true + fun normalize() = this + fun eq(other) = other is Empty + fun startsWith(c) = false + + class Exact(val ch) extends RegExp with + fun derive(c) = + if startsWith(c) then new Empty() + else new Nothing() + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = + if other is Exact(ch') then ch == ch' else false + fun startsWith(c) = ch == c + + class Any() extends RegExp with + fun derive(c) = new Empty() + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = other is Any() + fun startsWith(c) = true + + class Not(val chars) extends RegExp with + fun derive(c) = + if startsWith(c) then new Empty() else new Nothing() + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = + if other is Not(chars') then arrEq(chars, chars') else false + fun startsWith(c) = not has(chars, c) + + fun notWord() = new Not(CharSet.alphabet()) + fun notSpace() = new Not(CharSet.space()) + fun notDigit() = new Not(CharSet.digit()) + + fun mkUnion(arr, i, s) = + if i == s - 1 then arr.(i) + else + if arr.(i) is + Nothing() then mkUnion(arr, i + 1, s) + else new Union(arr.(i), mkUnion(arr, i + 1, s)) + + class Union(val p1, val p2) extends RegExp with + fun derive(c) = (new Union(p1.derive(c), p2.derive(c))).normalize() + fun canBeEmpty() = p1.canBeEmpty() || p2.canBeEmpty() + fun flat() = + let p1' = if p1 is Union then p1.flat() else [p1] + let p2' = if p2 is Union then p2.flat() else [p2] + concat(p1', p2') + fun iter(st, arr, i, s) = + if i == s then st + else iter(st.add(arr.(i)), arr, i + 1, s) + fun normalize() = + let p1' = p1.normalize() + let p2' = p2.normalize() + let arr1 = if p1' is Union then p1'.flat() else [p1'] + let arr2 = if p2' is Union then p2'.flat() else [p2'] + let s = iter(new DedupSet(arr1), arr2, 0, len(arr2)) + mkUnion(s.arr, 0, len(s.arr)) + fun eq(other) = + let n = other.normalize() + if n is + Union then setEq(normalize().flat(), n.flat()) + else false + fun startsWith(c) = p1.startsWith(c) || p2.startsWith(c) + + fun question(r) = new Union(r, new Empty()) + + class In(val chars) extends RegExp with + fun derive(c) = + if startsWith(c) then new Empty() else new Nothing() + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = + if other is In(chars') then arrEq(chars, chars') else false + fun startsWith(c) = has(chars, c) + + fun words() = new In(CharSet.alphabet()) + fun spaces() = new In(CharSet.space()) + fun digits() = new In(CharSet.digit()) + + class Concat(val p1, val p2) extends RegExp with + fun derive(c) = + let p1' = p1.derive(c) + if p1.canBeEmpty() then + (new Union(new Concat(p1', p2), p2.derive(c))).normalize() + else (new Concat(p1', p2)).normalize() + fun canBeEmpty() = p1.canBeEmpty() and p2.canBeEmpty() + fun normalize() = + let p1' = p1.normalize() + if p1' is + Empty() then p2.normalize() + Nothing() then p1' + else new Concat(p1', p2.normalize()) + fun eq(other) = + if other is Concat(p1', p2') then p1.eq(p1') and p2.eq(p2') else false + fun startsWith(c) = p1.startsWith(c) || (p1.canBeEmpty() and p2.startsWith(c)) + + fun nTimes(r, i) = + if i == 1 then r + else new Concat(r, nTimes(r, i - 1)) + + class Star(val p) extends RegExp with + fun derive(c) = (new Concat(p.derive(c), new Star(p))).normalize() + fun canBeEmpty() = true + fun normalize() = new Star(p.normalize()) + fun eq(other) = + if other is Star(p') then p.eq(p') else false + fun startsWith(c) = p.startsWith(c) + + fun plus(r) = new Concat(r, new Star(r)) + + fun matchImpl(p, s, acc) = + if len(s) == 0 then + if p.canBeEmpty() then new Some(acc) + else new None + else + if p is + Nothing then new None + else + let c = s.0 + if p.startsWith(c) then + matchImpl(p.derive(c), s.slice(1), acc + c) + else + if p.canBeEmpty() then new Some(acc) else new None + fun match(p, s) = + matchImpl(p, s, "") + + fun matchAllImpl(p, s, res) = + if len(s) == 0 then res + else + if match(p, s) is + Some(ss) then + if len(ss) > 0 then matchAllImpl(p, s.slice(len(ss)), SeqHelper.push(res, ss)) + else matchAllImpl(p, s.slice(1), res) + else matchAllImpl(p, s.slice(1), res) + fun matchAll(p, s) = + matchAllImpl(p, s, []) + + // [\w\.-]+@[\w\.-]+\.[\w\.-]+ + fun matchAllEmail(s) = + let p = plus(new In(SeqHelper.concat(CharSet.alphabet(), ["-", "."]))) + let email = new Concat(p, new Concat(new Exact("@"), new Concat(p, new Concat(new Exact("."), p)))) + matchAll(email, s) + + // \w+://[^/\s?#]+[^\s?#]+(\?[^\s#]*)?(#[^\s]*)? + fun matchAllURI(s) = + let n1 = new Not(["/", "?", "#", " ", "\n", "\t", "\r"]) + let n2 = new Not(["?", "#", " ", "\n", "\t", "\r"]) + let n3 = new Not(["#", " ", "\n", "\t", "\r"]) + let w = words() + let d = digits() + let p = SeqHelper.concat(CharSet.alphabet(), SeqHelper.concat(CharSet.digit(), ["-", "_"])) + let head = new Concat(plus(w), new Concat(new Exact(":"), new Concat(new Exact("/"), new Exact("/")))) + let body = new Concat(plus(n1), plus(n2)) + let params = new Concat(question(new Concat(new Exact("?"), new Star(new In(p)))), question(new Concat(new Exact("#"), new Star(new In(p))))) + let uri = new Concat(head, new Concat(body, params)) + matchAll(uri, s) + + // ((25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9]) + fun matchAllIPv4(s) = + let fo = new In(["0", "1", "2", "3", "4"]) + let fi = new In(["0", "1", "2", "3", "4", "5"]) + let segment = new Union(new Concat(new Exact("2"), new Concat(new Exact("5"), fi)), new Union( + new Concat(new Exact("2"), new Concat(fo, digits())), + new Concat(question(new Exact("1")), new Concat(question(digits()), digits())) + )) + let ipv4 = new Concat(nTimes(new Concat(segment, new Exact(".")), 3), segment) + matchAll(ipv4, s) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SimpleRegExpTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SimpleRegExpTest.mls new file mode 100644 index 0000000000..6152f873b2 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/SimpleRegExpTest.mls @@ -0,0 +1,162 @@ +:js +:staging +:noModuleCheck + +import "../../mlscript-compile/SimpleRegExp.mls" + +open SimpleRegExp + +match(Exact("x"), "x") +//│ = Some("x") + +match(Exact("x"), "x") +//│ = Some("x") + +match(Exact("x"), "") +//│ = None + +match(Exact("x"), "xyz") +//│ = Some("x") + + +match(Any(), "x") +//│ = Some("x") + +match(Any(), "") +//│ = None + +match(Any(), "xyz") +//│ = Some("x") + + +match(Not(["x", "y", "z"]), "xyz") +//│ = None + +match(Not(["x", "y", "z"]), "w") +//│ = Some("w") + + +match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "z") +//│ = Some("z") + +match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "y") +//│ = Some("y") + +match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "w") +//│ = None + + +match(question(Exact("x")), "x") +//│ = Some("x") + +match(question(Exact("x")), "y") +//│ = Some("") + +match(question(Exact("x")), "xx") +//│ = Some("x") + +match(question(Any()), "y") +//│ = Some("y") + + +match(new Concat(new Exact("x"), new Concat(new Exact("y"), new Not(["z"]))), "xyy") +//│ = Some("xyy") + +match(new Concat(new Exact("x"), new Concat(new Exact("y"), new Not(["z"]))), "xyz") +//│ = None + +match(new Concat(new Exact("x"), new Concat(new Exact("y"), new Not(["z"]))), "yyy") +//│ = None + + +// x{3}, equivalent to xxx +match(nTimes(Exact("x"), 3), "xxx") +//│ = Some("xxx") + +match(nTimes(Exact("x"), 3), "xxy") +//│ = None + +match(nTimes(Exact("x"), 3), "xx") +//│ = None + + +match(Concat(Star(Exact("x")), Exact("y")), "x") +//│ = None + +match(Concat(Star(Exact("x")), Exact("y")), "y") +//│ = Some("y") + +match(Concat(Star(Exact("x")), Exact("y")), "xxxxxy") +//│ = Some("xxxxxy") + +match(Concat(Star(Exact("x")), Exact("y")), "xyyyy") +//│ = Some("xy") + + +match(plus(Exact("x")), "") +//│ = None + +match(plus(Exact("x")), "x") +//│ = Some("x") + + +match(plus(Exact("x")), "y") +//│ = None + + +match(plus(Exact("x")), "xxx") +//│ = Some("xxx") + + +match(plus(Exact("x")), "xxxy") +//│ = Some("xxx") + + +:silent +let p = Concat(In(["T", "t"]), Concat(Star(words()), notWord())) + + +matchAll(p, "To be or not to be, that is the question.") +//│ = ["To ", "t ", "to ", "that ", "the ", "tion."] + + +matchAllEmail("foo@bar.baz") +//│ = ["foo@bar.baz"] + +matchAllEmail("foo-foo@bar.baz") +//│ = ["foo-foo@bar.baz"] + +matchAllEmail("a.b.c.d@e-f.g.h") +//│ = ["a.b.c.d@e-f.g.h"] + +matchAllEmail("a-b.c.d@e-f.g.h") +//│ = ["a-b.c.d@e-f.g.h"] + +matchAllEmail("foo@bar@baz") +//│ = [] + +matchAllEmail("f@a") +//│ = [] + + +matchAllURI("http://foo.bar.com") +//│ = ["http://foo.bar.com"] + + +matchAllURI("http://foo.bar.com?xxx") +//│ = ["http://foo.bar.com?xxx"] + + +matchAllURI("http://foo.bar.com?xxx#42") +//│ = ["http://foo.bar.com?xxx#42"] + + +matchAllURI("http://foo.bar.com#42") +//│ = ["http://foo.bar.com#42"] + + +matchAllIPv4("8.8.8.8") +//│ = ["8.8.8.8"] + +matchAllIPv4("192.168.1.1") +//│ = ["192.168.1.1"] From f3b5ffc1f5ec07ae41ed0e21f3b46d0668a406fe Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 28 May 2026 02:55:43 +0800 Subject: [PATCH 625/654] update Value.Ref --- .../codegen/ReflectionInstrumenter.scala | 25 +-- .../mlscript/block-staging/StageSymbols.mls | 198 ++++++++++++++++-- .../mlscript/block-staging/SymbolRenaming.mls | 2 +- .../test/mlscript/block-staging/Syntax.mls | 18 +- 4 files changed, 203 insertions(+), 40 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index e394d06b92..5c6c6db87a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -132,19 +132,20 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S blockCtor("VirtualClassSymbol", Ls(toValue(sym.nme)), symName)(checkMap("classMap", toValue(sym.nme), _, stagingCtx)) case baseSym: BaseTypeSymbol => val name = scope.allocateOrGetName(sym) - val (owner, bsym, paramsOpt, auxParams) = (baseSym.defn, defnMap.get(baseSym)) match - case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams) - case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams) + val (owner, bsym, paramsOpt, auxParams, ctorSym) = (baseSym.defn, defnMap.get(baseSym)) match + case (S(defn), _) => (defn.owner, defn.bsym, defn.paramsOpt, defn.auxParams, defn.ctorSym) + case (_, S(defn: ClsLikeDefn)) => (defn.owner, defn.sym, defn.paramsOpt, defn.auxParams, defn.ctorSym) // FIXME: hack to patch in staging for returning the object Unit. - case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil) + case _ if baseSym == State.unitSymbol => (N, baseSym, N, Nil, N) case _ => raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() - val path = pOpt.getOrElse(owner match - case S(owner) => owner.asThis.selSN(baseSym.nme) - case N => bsym.asBlkMember.get.asMemberRef(sym.asClsOrMod.get)) - + val path = pOpt.getOrElse((owner, ctorSym) match + case (S(owner), _) => owner.asThis.selSN(baseSym.nme) + case (N, S(ctorSym)) => bsym.asBlkMember.get.asMemberRef(ctorSym) + case _ => bsym.asBlkMember.get.asMemberRef(sym.asClsOrMod.get)) + baseSym match case _: ClassSymbol => transformParamsOpt(paramsOpt): (paramsOpt, ctx) => @@ -411,13 +412,13 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S override def applyBlock(b: Block) = b match // process ctor: remove ValDefn of parameters already defined in the class parameters // remove `val C.x = x` statements from the constructor - case Define(ValDefn(_, _, Value.Ref(sym: VarSymbol, _)), rest) + case Define(ValDefn(_, _, Value.SimpleRef(sym: VarSymbol)), rest) if paramSymMap.contains(sym) => applyBlock(rest) case _ => super.applyBlock(b) stageMethod(transformer.applyFunDefn(ctorFun), Context(new HashMap(), true)) - def stageMethods(ownerSym: DefinitionSymbol[?], modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (Ls[FunDefn], Block => Block) = + def stageMethods(ownerSym: DefinitionSymbol[?] & InnerSymbol, modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (Ls[FunDefn], Block => Block) = // for storing specialized functions in each staged module val cacheSym = BlockMemberSymbol(cacheNme, Nil, true) val cacheTsym = TermSymbol(syntax.ImmutVal, S(modSym), Tree.Ident(cacheNme)) @@ -446,7 +447,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // initialize cache for the module def cacheDecl(rest: Block) = - val pOpt = if !forClass then S(Value.Ref(ownerSym)) else N + val pOpt = if !forClass then S(ownerSym.asThis) else N cacheEntries.collectApply: cacheTups => tuple(cacheTups): tup => @@ -502,7 +503,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def replaceSuper(parentPath: Path) = new BlockTransformer(SymbolSubst.Id): override def applyResult(r: Result)(k: Result => Block) = super.applyResult(r): - case Call(Value.Ref(sym: BuiltinSymbol, _), args) if sym.nme == "super" => k(Call(parentPath, args)(true, false, false)) + case Call(Value.SimpleRef(sym: BuiltinSymbol), args) if sym.nme == "super" => k(Call(parentPath, args)(true, false, false)) case r => k(r) val preCtor = defn.parentPath match case S(parent) => replaceSuper(parent).applyBlock(defn.preCtor) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 21dce61db5..36401abb6f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -1,13 +1,33 @@ :js :staging -:fixme staged module M with class C with fun f() = 1 fun g() = f() -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/SpecializeHelpers.mls:90) +//│ > module M with +//│ > class C with +//│ > fun f() = 1 +//│ > fun g() = this.f() +//│ > +//│ > Map(0) {} +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [class C] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class M] { +//│ > C: [Function], +//│ > 'cache$M': [FunCache], +//│ > 'generatorMap$M': Map(0) {} +//│ > } => ModuleSymbol { name: 'M', value: [Function] } +//│ > } +//│ > } staged module A with fun f() = 1 @@ -61,7 +81,7 @@ staged module D with //│ > classMap: Map(4) { //│ > 'Bool' => VirtualClassSymbol { name: 'Bool' }, //│ > 'Int' => VirtualClassSymbol { name: 'Int' }, -//│ > [class C1] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { //│ > name: 'C', //│ > value: [Function], //│ > paramsOpt: [Some], @@ -89,7 +109,6 @@ staged module D with //│ > } //│ > } -:fixme module A with module B with class C(a) @@ -100,14 +119,64 @@ staged module M with x = A.B.C A.B.C(2) E -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ > module M with +//│ > class E1 +//│ > fun f() = +//│ > let {x} +//│ > x = D.E +//│ > x = A.B.C +//│ > A.B.C(2) +//│ > this.E1 +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(3) { +//│ > [class E] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'E', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > }, +//│ > [class E1] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'E1', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(4) { +//│ > [class D] { +//│ > E: [Function], +//│ > 'cache$D': [FunCache], +//│ > 'generatorMap$D': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ModuleSymbol { name: 'D', value: [Function] }, +//│ > [class A2] { +//│ > B: [Function], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ModuleSymbol { name: 'A', value: [Function] }, +//│ > [class B2] { +//│ > C: [Function], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ModuleSymbol { name: 'B', value: [Function] }, +//│ > [class M2] { +//│ > E: [Function], +//│ > 'cache$M': [FunCache], +//│ > 'generatorMap$M': [Map] +//│ > } => ModuleSymbol { name: 'M', value: [Function] } +//│ > } +//│ > } :e staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.108: fun g()() = 1 +//│ ║ l.177: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ //│ > module M with //│ > () @@ -121,24 +190,117 @@ staged module M with //│ > } :ftc -:fixme staged module M with fun f() = x => x fun g()() = 1 -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/SpecializeHelpers.mls:85) +//│ > class Function$ extends Function() with +//│ > () +//│ > fun call() = lambda_() +//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > SymbolMap { +//│ > classMap: Map(2) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } +//│ > class Function$1 extends Function() with +//│ > () +//│ > fun call(x) = lambda(x) +//│ > Map(1) { 'call' => [Function: call_gen] } +//│ > SymbolMap { +//│ > classMap: Map(3) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [class Function$1 extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$1', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(0) {} +//│ > } +//│ > module M with +//│ > () +//│ > fun f() = +//│ > let {tmp} +//│ > tmp = new Function_1 +//│ > tmp +//│ > fun g() = +//│ > let {tmp1} +//│ > tmp1 = new Function_ +//│ > tmp1 +//│ > Map(2) { 'f' => [Function: f_gen], 'g' => [Function: g_gen] } +//│ > SymbolMap { +//│ > classMap: Map(3) { +//│ > [class Function$ extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Function] => ConcreteClassSymbol { +//│ > name: 'Function', +//│ > value: [Function: Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [class Function$1 extends Function] { +//│ > 'class$cache$Function$': [FunCache], +//│ > 'class$generatorMap$Function$': [Map], +//│ > Symbol(mlscript.definitionMetadata): [Array] +//│ > } => ConcreteClassSymbol { +//│ > name: 'Function$1', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class M6] { 'cache$M': [FunCache], 'generatorMap$M': [Map] } => ModuleSymbol { name: 'M', value: [Function] } +//│ > } +//│ > } -:fixme :noModuleCheck +:silent let x = M."f_instr"().body.rest.rhs.cls.l.value let y = M."g_instr"().body.rest.rhs.cls.l.value assert x != y -//│ ═══[RUNTIME ERROR] TypeError: Cannot read properties of undefined (reading 'f_instr') -//│ x = undefined -//│ y = undefined - -// TODO: these need to be printed separately, somehow: staged module Shadowing with fun f(x, x) = x diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 4a72c5ccaf..b4e776fd95 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -57,7 +57,7 @@ staged module Selection with //│ > Map(1) { 'f' => [Function: f_gen] } //│ > SymbolMap { //│ > classMap: Map(2) { -//│ > [class C] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { //│ > name: 'C', //│ > value: [Function], //│ > paramsOpt: [Some], diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 4df36389cc..7a37acd48f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -21,8 +21,8 @@ staged fun f() = 0 staged module A //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let A⁰, symbolMap, tmp, tmp1, tmp2; -//│ set tmp = new globalThis⁰.this.Map﹖(); -//│ set tmp1 = new globalThis⁰.this.Map﹖(); +//│ set tmp = new globalThis⁰.Map﹖(); +//│ set tmp1 = new globalThis⁰.Map﹖(); //│ set tmp2 = new Block⁰.SymbolMap﹖(tmp, tmp1); //│ set symbolMap = tmp2; //│ define A⁰ as class A¹ @@ -31,19 +31,19 @@ staged module A //│ let tmp3, tmp4, tmp5, tmp6, sym, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12; //│ begin //│ set tmp5 = []; -//│ set tmp6 = new globalThis⁰.this.Map﹖(tmp5); -//│ set sym = Block⁰.ModuleSymbol﹖("A", A²); -//│ set tmp7 = symbolMap.checkMap﹖("moduleMap", A², sym); +//│ set tmp6 = new globalThis⁰.Map﹖(tmp5); +//│ set sym = Block⁰.ModuleSymbol﹖("A", A².this); +//│ set tmp7 = symbolMap.checkMap﹖("moduleMap", A².this, sym); //│ set tmp8 = new SpecializeHelpers⁰.FunCache﹖(tmp7, tmp6); //│ define cache$A⁰ as val cache$A¹ = tmp8; //│ set tmp3 = []; -//│ set tmp4 = new globalThis⁰.this.Map﹖(tmp3); +//│ set tmp4 = new globalThis⁰.Map﹖(tmp3); //│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp4; //│ end; //│ set tmp9 = A².this.cache$A﹖.toString﹖(); -//│ set tmp10 = globalThis⁰.this.console﹖.log﹖(tmp9); -//│ set tmp11 = globalThis⁰.this.console﹖.log﹖(A².this.generatorMap$A﹖); -//│ set tmp12 = globalThis⁰.this.console﹖.log﹖(symbolMap); +//│ set tmp10 = globalThis⁰.console﹖.log﹖(tmp9); +//│ set tmp11 = globalThis⁰.console﹖.log﹖(A².this.generatorMap$A﹖); +//│ set tmp12 = globalThis⁰.console﹖.log﹖(symbolMap); //│ end //│ } //│ method ctor$_instr⁰ = fun ctor$_instr¹() { From 04aa9165c35512a0df96a72025f071578bac88c3 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 28 May 2026 10:55:13 +0800 Subject: [PATCH 626/654] add Value.This to Block.mls --- .../codegen/ReflectionInstrumenter.scala | 6 +- .../src/test/mlscript-compile/Block.mls | 14 ++- .../mlscript-compile/SpecializeHelpers.mls | 5 +- .../test/mlscript/block-staging/Classes.mls | 2 +- .../test/mlscript/block-staging/Functions.mls | 108 ++++++++++++++++-- .../mlscript/block-staging/PrintingTest.mls | 4 +- .../mlscript/block-staging/SymbolRenaming.mls | 27 ++++- 7 files changed, 141 insertions(+), 25 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 5c6c6db87a..418100288f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -203,6 +203,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S blockCtor("ValueMemberRef", Ls(sym), "var")(k(_, ctx)) case l: Value.Lit => blockCtor("ValueLit", Ls(l), "lit")(k(_, ctx)) + case Value.This(sym) => + transformSymbol(sym): (sym, ctx) => + blockCtor("ValueThis", Ls(sym))(k(_, ctx)) case s @ Select(p, Tree.Ident(name)) => transformPath(p): (x, ctx) => s.symbol match @@ -212,9 +215,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S transformPath(qual): (x, ctx) => transformPath(fld)(using ctx): (y, ctx) => blockCtor("DynSelect", Ls(x, y, toValue(arrayIdx)), "dynsel")(k(_, ctx)) - case _: Value.This => - raise(ErrorReport(msg"Value.This not supported in staged module." -> p.toLoc :: Nil)) - End() def transformResult(r: Result)(using ctx: Context)(k: (Path, Context) => Block): Block = r match case p: Path => transformPath(p)(k) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index fbd6eb6d47..f2c9acc7c5 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -70,9 +70,11 @@ class Path extends Result with constructor Select(val qual: Path, val name: Symbol) DynSelect(val qual: Path, val fld: Path, val arrayIdx: Bool) // is arrayIdx used? + // we use Value as a prefix here to diambiguate from Case.Lit ValueSimpleRef(val l: Symbol) ValueMemberRef(val l: Symbol) ValueLit(val lit: Literal) + ValueThis(val sym: Symbol) class Defn with constructor @@ -114,11 +116,15 @@ class Printer(val owner: Opt[Class]) with fun showPath(p: Path): Str = if p is - // avoids needing to import the runtime module - Select(ValueSimpleRef(Symbol("runtime")), ModuleSymbol("Unit", Runtime.Unit)) then "()" Select(qual, name) and - // remove selection to owner for values defined within the owner - qual is ValueSimpleRef(sym) and owner is Some(owner) and sym === owner then showSymbol(name) + qual is + // avoids needing to import the runtime module + ValueSimpleRef(Symbol("runtime")) and name is ModuleSymbol("Unit", Runtime.Unit) then "()" + // remove selection to owner for values defined within the owner + // TODO: does this pattern exist, or is it replaced by the case below? + ValueSimpleRef(sym) and owner is Some(owner) and sym === owner then showSymbol(name) + // NOTE: ValueThis carries information about the class, but the elaborator can infer it for us + ValueThis then "this." + showSymbol(name) else showPath(qual) + "." + showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 211c7fcd2d..d2cab55071 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -61,10 +61,13 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any class InlinePrinter(ctx: Map[Symbol, String]) extends Printer(Some(owner)) with fun showPath(p) = if p is ValueSimpleRef(s) | ValueMemberRef(s) and ctx.has(s) then ctx.get(s) - Select(qual, name) then showPath(qual) + "." + this.showSymbol(name) + Select(qual, name) and + qual is ValueThis(Symbol("globalThis")) then this.showSymbol(name) + else showPath(qual) + "." + this.showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" ValueSimpleRef(s) | ValueMemberRef(s) then this.showSymbol(s) + ValueThis(_) then Error("Unexpected reference to `this` within preCtor") ValueLit(lit) then this.showLiteral(lit) fun inlineResult(ctx: Map[Result, String])(r) = InlinePrinter(ctx).showResult(r) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls index e8e6181f8c..3f7f4d16a6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Classes.mls @@ -115,7 +115,7 @@ staged class D(val x) extends B(x+1) with fun f() = 42 //│ > class B(x) with //│ > () -//│ > fun f(y) = x + y +//│ > fun f(y) = this.x + y //│ > Map(1) { 'f' => [Function: f_gen] } //│ > SymbolMap { //│ > classMap: Map(1) { diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index ae328e7071..057862748e 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -110,7 +110,6 @@ staged module Expressions with //│ > } //│ x = [1, 2, 3] -:fixme class Outside(a) staged module ClassInstrumentation with class Inside(a, b) @@ -119,9 +118,49 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ > module ClassInstrumentation with +//│ > class Inside(a, b) +//│ > class NoArg +//│ > fun inst1() = new Outside(1) +//│ > fun inst2() = new this.NoArg +//│ > fun app1() = Outside(1) +//│ > fun app2() = this.Inside(1, 2) +//│ > Map(4) { +//│ > 'inst1' => [Function: inst1_gen], +//│ > 'inst2' => [Function: inst2_gen], +//│ > 'app1' => [Function: app1_gen], +//│ > 'app2' => [Function: app2_gen] +//│ > } +//│ > SymbolMap { +//│ > classMap: Map(3) { +//│ > [Function: Outside] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'Outside', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > }, +//│ > [class NoArg] { Symbol(mlscript.definitionMetadata): [Array] } => ConcreteClassSymbol { +//│ > name: 'NoArg', +//│ > value: [Function], +//│ > paramsOpt: None {}, +//│ > auxParams: [] +//│ > }, +//│ > [Function: Inside] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'Inside', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class ClassInstrumentation] { +//│ > Inside: [Function], +//│ > NoArg: [Function], +//│ > 'cache$ClassInstrumentation': [FunCache], +//│ > 'generatorMap$ClassInstrumentation': [Map] +//│ > } => ModuleSymbol { name: 'ClassInstrumentation', value: [Function] } +//│ > } +//│ > } module Nonstaged with fun f() = 1 @@ -175,7 +214,6 @@ staged module Arguments with fun g(x)(y, z)() = z //│ ═══[COMPILATION ERROR] Staged classes with private fields are not supported. -:fixme staged module OtherBlocks with fun scope() = scope.locally of ( @@ -187,8 +225,32 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ > module OtherBlocks with +//│ > () +//│ > fun scope() = +//│ > let {a} +//│ > a = 1 +//│ > this.scope.locally(a) +//│ > fun breakAndLabel() = +//│ > let {scrut} +//│ > scrut = 1 +//│ > if scrut is +//│ > 2 then 0 +//│ > 3 then 0 +//│ > else 0 +//│ > Map(2) { +//│ > 'scope' => [Function: scope_gen], +//│ > 'breakAndLabel' => [Function: breakAndLabel_gen] +//│ > } +//│ > SymbolMap { +//│ > classMap: Map(0) {}, +//│ > moduleMap: Map(1) { +//│ > [class OtherBlocks] { +//│ > 'cache$OtherBlocks': [FunCache], +//│ > 'generatorMap$OtherBlocks': [Map] +//│ > } => ModuleSymbol { name: 'OtherBlocks', value: [Function] } +//│ > } +//│ > } staged module ClassDefs with class A @@ -238,13 +300,37 @@ staged module ValClass with //│ > } //│ > } -:fixme staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[RUNTIME ERROR] Error: Assertion failed (mlscript-compile/SpecializeHelpers.mls:90) +//│ > module ClassFunctions with +//│ > class InnerClass() with +//│ > fun f() = +//│ > let {tmp} +//│ > tmp = Arguments.f(1) +//│ > 1 + tmp +//│ > fun g() = this.f() +//│ > +//│ > Map(0) {} +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: InnerClass] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'InnerClass', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(2) { +//│ > [class ClassFunctions] { +//│ > InnerClass: [Function], +//│ > 'cache$ClassFunctions': [FunCache], +//│ > 'generatorMap$ClassFunctions': Map(0) {} +//│ > } => ModuleSymbol { name: 'ClassFunctions', value: [Function] }, +//│ > undefined => ModuleSymbol { name: 'Arguments', value: undefined } +//│ > } +//│ > } // name collision @@ -319,7 +405,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Field assignment is not supported in staged modules: a //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.319: fun g() = {1 : 2} +//│ ║ l.405: fun g() = {1 : 2} //│ ╙── ^ //│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls index 271ef96be8..0439dfcfb6 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintingTest.mls @@ -9,9 +9,9 @@ staged class D(val x)(val y, val z)(val a) extends C([2, z + f(z)]."0") with fun f() = a + x //│ > class D(x)(y, z)(a) extends C([2, z + f(z)].("0")) with //│ > let {tmp3} -//│ > tmp3 = z + z +//│ > tmp3 = this.z + this.z //│ > val b = tmp3 -//│ > fun f() = a + x +//│ > fun f() = this.a + this.x //│ > Map(1) { 'f' => [Function: f_gen] } //│ > SymbolMap { //│ > classMap: Map(2) { diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index b4e776fd95..cddec11e4f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -73,9 +73,30 @@ staged module Selection with //│ > } //│ > } -:fixme staged module DupeClass with class C(val y) fun f() = C(1).y -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[RUNTIME ERROR] Error: MLscript call unexpectedly returned `undefined`, the forbidden value. +//│ > module DupeClass with +//│ > class C(y) +//│ > fun f() = +//│ > let {tmp} +//│ > tmp = this.C(1) +//│ > tmp.y +//│ > Map(1) { 'f' => [Function: f_gen] } +//│ > SymbolMap { +//│ > classMap: Map(1) { +//│ > [Function: C] { class: [Function] } => ConcreteClassSymbol { +//│ > name: 'C', +//│ > value: [Function], +//│ > paramsOpt: [Some], +//│ > auxParams: [] +//│ > } +//│ > }, +//│ > moduleMap: Map(1) { +//│ > [class DupeClass] { +//│ > C: [Function], +//│ > 'cache$DupeClass': [FunCache], +//│ > 'generatorMap$DupeClass': [Map] +//│ > } => ModuleSymbol { name: 'DupeClass', value: [Function] } +//│ > } +//│ > } From dcc22f7df7ffbd1032dd92d8c6cadc7929284c2f Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 28 May 2026 11:13:00 +0800 Subject: [PATCH 627/654] formatting --- .../codegen/ReflectionInstrumenter.scala | 52 ++++++++++--------- .../src/test/mlscript-compile/Block.mls | 4 +- .../mlscript-compile/SpecializeHelpers.mls | 14 ++--- 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 418100288f..d3a904a9b1 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -64,7 +64,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() var symbolMapSym: Opt[Symbol] = N - + // helpers for constructing Block def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = @@ -140,7 +140,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case _ => raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() - + val path = pOpt.getOrElse((owner, ctorSym) match case (S(owner), _) => owner.asThis.selSN(baseSym.nme) case (N, S(ctorSym)) => bsym.asBlkMember.get.asMemberRef(ctorSym) @@ -299,7 +299,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case _ => ctx.addCache(x.asPath, xStaged) transformResult(r): (y, ctx) => transformBlock(b)(using ctx): (z, ctx) => - blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) + blockCtor("Assign", Ls(xSym, y, z), "assign")(k(_, ctx)) case assign @ AssignField(lhs, nme, r, rest) => // TODO: Improve. This is a kludge to allow private field initialization in modules; // Ideally, we should just properly reflect these as the private field assignments they are @@ -385,7 +385,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S FunDefn.withFreshSymbol(f.dSym.owner, stageSym, Ls(PlainParamList(Nil)), newBody)(N, Nil) - def refreshParamList(ps: ParamList) = + def refreshParamList(ps: ParamList) = PlainParamList(ps.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme))))) def genMethod(cache: Path, classFun: Bool)(f: FunDefn, stagedPath: Path) = @@ -401,22 +401,20 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S call(helperMod("specialize"), Ls(cache, toValue(f.sym.nme), stagedPath, args)): res => Return(res) FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(N, Nil) - - def stageCtor(ctorFun: FunDefn): FunDefn = + + def stageCtor(ctorFun: FunDefn): FunDefn = // refresh VarSymbols for ctor val paramSymMap = ctorFun.params.map(_.params.map(x => x.sym -> VarSymbol(x.sym.id))).flatten.toMap val transformer = new BlockTransformer(new SymbolSubst(): // refresh symbols after copying parameter list - override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l) - ): + override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l)): override def applyBlock(b: Block) = b match // process ctor: remove ValDefn of parameters already defined in the class parameters // remove `val C.x = x` statements from the constructor case Define(ValDefn(_, _, Value.SimpleRef(sym: VarSymbol)), rest) - if paramSymMap.contains(sym) => applyBlock(rest) + if paramSymMap.contains(sym) => applyBlock(rest) case _ => super.applyBlock(b) stageMethod(transformer.applyFunDefn(ctorFun), Context(new HashMap(), true)) - def stageMethods(ownerSym: DefinitionSymbol[?] & InnerSymbol, modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (Ls[FunDefn], Block => Block) = // for storing specialized functions in each staged module @@ -441,14 +439,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ( Ls(staged, gen), cacheDebug, - tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))) - ) + tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))), + ), ).unzip3 // initialize cache for the module def cacheDecl(rest: Block) = val pOpt = if !forClass then S(ownerSym.asThis) else N - + cacheEntries.collectApply: cacheTups => tuple(cacheTups): tup => ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => @@ -469,7 +467,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S call(printFun, Ls(str), false): _ => call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => symbolMapSym.map(sym => call(printFun, Ls(sym), false)(_ => rest)).getOrElse(rest) - + // cache and generator may update symbolMapSym, so we call them first (helperMethods.flatten, b => Begin(cacheDecl(generatorMapDecl(End())), debugCont(b))) @@ -497,24 +495,25 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S if !defn.privateFields.isEmpty then raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) return End() - + // stage the companion module first, to avoid staging the new functions we add to the companion module val companion = defn.companion.map(applyObjBody).getOrElse(ClsLikeBody.empty(Tree.Ident(defn.sym.nme))) - + def replaceSuper(parentPath: Path) = new BlockTransformer(SymbolSubst.Id): override def applyResult(r: Result)(k: Result => Block) = super.applyResult(r): - case Call(Value.SimpleRef(sym: BuiltinSymbol), args) if sym.nme == "super" => k(Call(parentPath, args)(true, false, false)) + case Call(Value.SimpleRef(sym: BuiltinSymbol), args) if sym.nme == "super" => + k(Call(parentPath, args)(true, false, false)) case r => k(r) val preCtor = defn.parentPath match case S(parent) => replaceSuper(parent).applyBlock(defn.preCtor) case N => defn.preCtor - + val (sym, ctor, ctorParams, methods) = val ctorParams = defn.paramsOpt match case S(ps) => ps :: defn.auxParams case N => defn.auxParams (defn.sym, defn.ctor, ctorParams, defn.methods) - + val modSym = companion.isym val suffix = "$" + sym.nme val cacheNme = "class$cache" + suffix @@ -522,7 +521,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val preCtorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("preCtor$", Nil, false), Ls(PlainParamList(Nil)), preCtor)(N, Nil) val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("class$ctor$", Nil, false), ctorParams, ctor)(N, Nil) - + val (newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme)(methods) // used for staging classes inside modules @@ -530,9 +529,12 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S methods = stageMethod(preCtorFun) :: stageCtor(ctorFun) :: newMethods ++ companion.methods, ctor = Begin(companion.ctor, cont(End())), ) - val newModule = defn.copy(sym = sym, companion = S(newCompanion))(defn.configOverride, defn.annotations.filter: - case Annot.Modifier(Keyword.`staged`) => false - case _ => true) + val newModule = defn.copy(sym = sym, companion = S(newCompanion))( + defn.configOverride, + defn.annotations.filter: + case Annot.Modifier(Keyword.`staged`) => false + case _ => true, + ) Define(newModule, applyBlock(rest)) case b => super.applyBlock(b) @@ -549,10 +551,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S mkDefnMap(b) val rest = applyBlock(b) symbolMapSym match - case S(sym) => + case S(sym) => val mapPath = State.globalThisSymbol.asPath.selSN("Map") ctor(mapPath, Nil): map1 => ctor(mapPath, Nil): map2 => - ctor(blockMod("SymbolMap"), Ls(map1, map2)): map => + ctor(blockMod("SymbolMap"), Ls(map1, map2)): map => Scoped(Set(sym), Assign(sym, map, rest)) case N => rest diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index f2c9acc7c5..b540f9821d 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -42,7 +42,7 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = else false // TODO: move this to somewhere appropriate -// A staged class with no parameters has the same runtime value as its staged companion, this causes an unwated collision when creating a symbol for both the class and the module, +// A staged class with no parameters has the same runtime value as its staged companion, this causes an unwated collision when creating a symbol for both the class and the module, // so we need to split the map into the which type of symbol used. class SymbolMap(val classMap: Map[Class, ClassSymbol], val moduleMap: Map[Class, ModuleSymbol]) with fun checkMap(mapType: String, key: Class, value: ClassSymbol | ModuleSymbol) = @@ -106,7 +106,7 @@ fun indent(s: Str) = s.replaceAll("\n", "\n ") // we write .map(f(_)) instead of .map(f) here because of method debinding, see https://github.com/hkust-taco/mlscript/issues/450 class Printer(val owner: Opt[Class]) with fun showLiteral(l: Literal) = - if l is + if l is undefined then "undefined" null then "null" Str then "\"" + l.toString() + "\"" diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index d2cab55071..354db3e83b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -50,8 +50,8 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any let runtimeClass = if owner is ConcreteClassSymbol(_, _, Some, _) then owner.value.class else owner.value - - val paramList = if owner is + + val paramList = if owner is ConcreteClassSymbol and owner.paramsOpt is Some(ps) then [ps, ...owner.auxParams] else owner.auxParams @@ -69,10 +69,10 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any ValueSimpleRef(s) | ValueMemberRef(s) then this.showSymbol(s) ValueThis(_) then Error("Unexpected reference to `this` within preCtor") ValueLit(lit) then this.showLiteral(lit) - + fun inlineResult(ctx: Map[Result, String])(r) = InlinePrinter(ctx).showResult(r) - - fun inlineAssigments(ctx: Map[Symbol, String])(b) = if b is + + fun inlineAssigments(ctx: Map[Symbol, String])(b) = if b is Return(res) then inlineResult(ctx)(res) Scoped(syms, rest) then let ctx = syms.reduce((ctx, sym) => ctx.set(sym, sym.nme), ctx) @@ -82,13 +82,13 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any Assign(lhs, rhs, rest) then inlineAssigments(ctx.set(lhs, inlineResult(ctx)(rhs)))(rest) End then "" else throw Error("unexpected Block type in constructor: " + b.toString()) - + let extendsClause = if owner is ConcreteClassSymbol then let preCtor = runtimeClass."preCtor$_instr"().body assert preCtor is Block.Block inlineAssigments(new Map())(preCtor) else "" - + let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() assert ctor is FunDefn From 6ad8790f50f9abf440989d29cd73fc32845c3c18 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 28 May 2026 11:17:40 +0800 Subject: [PATCH 628/654] remove valueNameCtx it has been superceded by symbolMap --- .../mlscript-compile/SpecializeHelpers.mls | 36 +++---------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index cfd5f58804..7a2fa42d7e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -31,8 +31,6 @@ fun showCtxPath(p) = if p is class Ctx( // ctx tracks shapes of variables val ctx: Map[String, ShapeSet], - // valueNameCtx tracks the assigned name of the pointer in the previous module for the current runtime value - val valueNameCtx: Map[Class, ConcreteClassSymbol | ModuleSymbol], // valDefnCtx tracks fields defined by ValDefn during shape prop of constructor val valDefnCtx: Map[String, ShapeSet] // allocs tracks the new variables allocated @@ -45,11 +43,11 @@ class Ctx( if ctx.has(ps) then Some(ctx.get(ps)) else None fun getValDefn(name) = if valDefnCtx.has(name) then Some(valDefnCtx.get(name)) else None - fun clone = Ctx(new Map(ctx), valueNameCtx, new Map(valDefnCtx), allocs, thisShape) + fun clone = Ctx(new Map(ctx), new Map(valDefnCtx), allocs, thisShape) // For propagation of instantiation of derived class, // we need to keep track of fields defined in parent class, // which is stored in valDefnCtx - fun clearCtx = Ctx(new Map(), valueNameCtx, valDefnCtx, allocs, thisShape) + fun clearCtx = Ctx(new Map(), valDefnCtx, allocs, thisShape) fun sub(other: Ctx) = let res = new Map() fun otherIsBot(ps) = @@ -71,7 +69,7 @@ class Ctx( valDefnCtx.set(ps, ss) this module Ctx with - fun empty() = Ctx(new Map(), new Map(), new Map(), mut [], None) + fun empty() = Ctx(new Map(), new Map(), mut [], None) class FunEntry( val defn: FunDefn, @@ -429,7 +427,7 @@ fun prop(ctx, b) = if b is Scoped(symbols, rest) then symbols.forEach(x => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] - let newCtx = Ctx(new Map(ctx.ctx), ctx.valueNameCtx, ctx.valDefnCtx, newAllocs, ctx.thisShape) + let newCtx = Ctx(new Map(ctx.ctx), ctx.valDefnCtx, newAllocs, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1, res.2] Assign(x, Call(Select(p, Symbol(f)), args), restBlock) and p is // TODO Can we deduplicate this? @@ -539,15 +537,6 @@ fun specializeName(cache, funName, isMethod, ps, shapes) = if mappedShapes.every(_.every(_.isDyn())) then funName else cache.freshName(funName) -// abuse Printer for structural induction -// to do this properly you would need only add the definitions as you go through the tree -class ValueCollection(defn: Map[Class, Str]) extends Printer(None) with - fun showSymbol(s) = - if s is - ConcreteClassSymbol | ModuleSymbol then defn.set(getActualClass(s.value), s) - else () - "" - fun specialize(cache: FunCache, funName, dflt, shapes) = // FIXME // right now the function name depends on the parameter constraints @@ -567,11 +556,9 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let ctx = if isMethod then let clsSymb = cache.owner - Ctx(new Map(), new Map(), new Map(), mut [], Some(shapes.(0).(0))) + Ctx(new Map(), new Map(), mut [], Some(shapes.(0).(0))) else Ctx.empty() - // console.log("checking", ctx.valueNameCtx, Printer.default.showBlock(body)) - ps.forEach((p, i, _) => p.forEach((p2, j, _) => let shape = if p2.constraint is Some(Dynamic) then mkDyn() @@ -579,18 +566,6 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = else paramShapes.(i).(j) ctx.add(ValueRef(p2.sym), shape) )) - - // build map from all class/module symbols that are used within the body and the shape of the context - new ValueCollection(ctx.valueNameCtx).showBlock(body) - fun collectClasses(s) = if s is - Class(sym, params) then - ctx.valueNameCtx.set(getActualClass(sym.value), sym) - params.forEach(collectClasses) - Arr(shapes) then - shapes.forEach(collectClasses) - else () - if ctx.thisShape is Some(ts) then ts.values().forEach(collectClasses) else () - ctx.ctx.values().forEach(_.values().forEach(collectClasses)) cache.setFun(specializationKey, FunEntry(FunDefn(Symbol(newName), ps, body), mkDyn(), isPrivate)) @@ -598,7 +573,6 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let bodyWithScoped = wrapScoped(ctx.allocs, res.0) let actualRetShape = res.1 - actualRetShape.values().forEach(collectClasses) let finalBody = if staticSet(actualRetShape) then let allocs = mut [] From 9c68e3734a13fd19419ea6d60f216552a5ff1f77 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 28 May 2026 12:10:42 +0800 Subject: [PATCH 629/654] Revert "formatting" This reverts commit dcc22f7df7ffbd1032dd92d8c6cadc7929284c2f. --- .../codegen/ReflectionInstrumenter.scala | 47 +++++++++---------- .../src/test/mlscript-compile/Block.mls | 4 +- .../mlscript-compile/SpecializeHelpers.mls | 14 +++--- 3 files changed, 31 insertions(+), 34 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index d3a904a9b1..74491b9e2f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -64,7 +64,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // recover `defn` for when `sym.defn` is `None`, when the definition was generated by other compiler passes val defnMap = HashMap[Symbol, ClsLikeDefn | ClsLikeBody]() var symbolMapSym: Opt[Symbol] = N - + // helpers for constructing Block def assign(res: Result, symName: Str = "tmp")(k: Path => Block): Block = @@ -140,7 +140,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case _ => raise(ErrorReport(msg"Unable to infer parameters from symbol in staged module, which are necessary to reconstruct class instances: ${sym.toString()}" -> sym.toLoc :: Nil)) return End() - + val path = pOpt.getOrElse((owner, ctorSym) match case (S(owner), _) => owner.asThis.selSN(baseSym.nme) case (N, S(ctorSym)) => bsym.asBlkMember.get.asMemberRef(ctorSym) @@ -385,7 +385,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S FunDefn.withFreshSymbol(f.dSym.owner, stageSym, Ls(PlainParamList(Nil)), newBody)(N, Nil) - def refreshParamList(ps: ParamList) = + def refreshParamList(ps: ParamList) = PlainParamList(ps.params.map(p => Param.simple(VarSymbol(Tree.Ident(p.sym.nme))))) def genMethod(cache: Path, classFun: Bool)(f: FunDefn, stagedPath: Path) = @@ -401,8 +401,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S call(helperMod("specialize"), Ls(cache, toValue(f.sym.nme), stagedPath, args)): res => Return(res) FunDefn.withFreshSymbol(f.dSym.owner, sym, params, body)(N, Nil) - - def stageCtor(ctorFun: FunDefn): FunDefn = + + def stageCtor(ctorFun: FunDefn): FunDefn = // refresh VarSymbols for ctor val paramSymMap = ctorFun.params.map(_.params.map(x => x.sym -> VarSymbol(x.sym.id))).flatten.toMap val transformer = new BlockTransformer(new SymbolSubst(): @@ -412,9 +412,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // process ctor: remove ValDefn of parameters already defined in the class parameters // remove `val C.x = x` statements from the constructor case Define(ValDefn(_, _, Value.SimpleRef(sym: VarSymbol)), rest) - if paramSymMap.contains(sym) => applyBlock(rest) + if paramSymMap.contains(sym) => applyBlock(rest) case _ => super.applyBlock(b) stageMethod(transformer.applyFunDefn(ctorFun), Context(new HashMap(), true)) + def stageMethods(ownerSym: DefinitionSymbol[?] & InnerSymbol, modSym: InnerSymbol, forClass: Bool, cacheNme: Str, generatorMapNme: Str)(methods: Ls[FunDefn]): (Ls[FunDefn], Block => Block) = // for storing specialized functions in each staged module @@ -439,14 +440,14 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S ( Ls(staged, gen), cacheDebug, - tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))), - ), + tuple(Ls(toValue(f.sym.nme), modSym.asPath.selSN(gen.sym.nme))) + ) ).unzip3 // initialize cache for the module def cacheDecl(rest: Block) = val pOpt = if !forClass then S(ownerSym.asThis) else N - + cacheEntries.collectApply: cacheTups => tuple(cacheTups): tup => ctor(State.globalThisSymbol.asPath.selSN("Map"), Ls(tup)): map => @@ -467,7 +468,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S call(printFun, Ls(str), false): _ => call(printFun, Ls(modSym.asPath.selSN(generatorMapNme)), false): _ => symbolMapSym.map(sym => call(printFun, Ls(sym), false)(_ => rest)).getOrElse(rest) - + // cache and generator may update symbolMapSym, so we call them first (helperMethods.flatten, b => Begin(cacheDecl(generatorMapDecl(End())), debugCont(b))) @@ -495,25 +496,24 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S if !defn.privateFields.isEmpty then raise(ErrorReport(msg"Staged classes with private fields are not supported." -> defn.sym.toLoc :: Nil)) return End() - + // stage the companion module first, to avoid staging the new functions we add to the companion module val companion = defn.companion.map(applyObjBody).getOrElse(ClsLikeBody.empty(Tree.Ident(defn.sym.nme))) - + def replaceSuper(parentPath: Path) = new BlockTransformer(SymbolSubst.Id): override def applyResult(r: Result)(k: Result => Block) = super.applyResult(r): - case Call(Value.SimpleRef(sym: BuiltinSymbol), args) if sym.nme == "super" => - k(Call(parentPath, args)(true, false, false)) + case Call(Value.SimpleRef(sym: BuiltinSymbol), args) if sym.nme == "super" => k(Call(parentPath, args)(true, false, false)) case r => k(r) val preCtor = defn.parentPath match case S(parent) => replaceSuper(parent).applyBlock(defn.preCtor) case N => defn.preCtor - + val (sym, ctor, ctorParams, methods) = val ctorParams = defn.paramsOpt match case S(ps) => ps :: defn.auxParams case N => defn.auxParams (defn.sym, defn.ctor, ctorParams, defn.methods) - + val modSym = companion.isym val suffix = "$" + sym.nme val cacheNme = "class$cache" + suffix @@ -521,7 +521,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val preCtorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("preCtor$", Nil, false), Ls(PlainParamList(Nil)), preCtor)(N, Nil) val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("class$ctor$", Nil, false), ctorParams, ctor)(N, Nil) - + val (newMethods, cont) = stageMethods(defn.isym, modSym, true, cacheNme, generatorMapNme)(methods) // used for staging classes inside modules @@ -529,12 +529,9 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S methods = stageMethod(preCtorFun) :: stageCtor(ctorFun) :: newMethods ++ companion.methods, ctor = Begin(companion.ctor, cont(End())), ) - val newModule = defn.copy(sym = sym, companion = S(newCompanion))( - defn.configOverride, - defn.annotations.filter: - case Annot.Modifier(Keyword.`staged`) => false - case _ => true, - ) + val newModule = defn.copy(sym = sym, companion = S(newCompanion))(defn.configOverride, defn.annotations.filter: + case Annot.Modifier(Keyword.`staged`) => false + case _ => true) Define(newModule, applyBlock(rest)) case b => super.applyBlock(b) @@ -551,10 +548,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S mkDefnMap(b) val rest = applyBlock(b) symbolMapSym match - case S(sym) => + case S(sym) => val mapPath = State.globalThisSymbol.asPath.selSN("Map") ctor(mapPath, Nil): map1 => ctor(mapPath, Nil): map2 => - ctor(blockMod("SymbolMap"), Ls(map1, map2)): map => + ctor(blockMod("SymbolMap"), Ls(map1, map2)): map => Scoped(Set(sym), Assign(sym, map, rest)) case N => rest diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index b540f9821d..f2c9acc7c5 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -42,7 +42,7 @@ fun isPrimitiveTypeOf(sym: Symbol, l: Literal) = else false // TODO: move this to somewhere appropriate -// A staged class with no parameters has the same runtime value as its staged companion, this causes an unwated collision when creating a symbol for both the class and the module, +// A staged class with no parameters has the same runtime value as its staged companion, this causes an unwated collision when creating a symbol for both the class and the module, // so we need to split the map into the which type of symbol used. class SymbolMap(val classMap: Map[Class, ClassSymbol], val moduleMap: Map[Class, ModuleSymbol]) with fun checkMap(mapType: String, key: Class, value: ClassSymbol | ModuleSymbol) = @@ -106,7 +106,7 @@ fun indent(s: Str) = s.replaceAll("\n", "\n ") // we write .map(f(_)) instead of .map(f) here because of method debinding, see https://github.com/hkust-taco/mlscript/issues/450 class Printer(val owner: Opt[Class]) with fun showLiteral(l: Literal) = - if l is + if l is undefined then "undefined" null then "null" Str then "\"" + l.toString() + "\"" diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 354db3e83b..d2cab55071 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -50,8 +50,8 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any let runtimeClass = if owner is ConcreteClassSymbol(_, _, Some, _) then owner.value.class else owner.value - - val paramList = if owner is + + val paramList = if owner is ConcreteClassSymbol and owner.paramsOpt is Some(ps) then [ps, ...owner.auxParams] else owner.auxParams @@ -69,10 +69,10 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any ValueSimpleRef(s) | ValueMemberRef(s) then this.showSymbol(s) ValueThis(_) then Error("Unexpected reference to `this` within preCtor") ValueLit(lit) then this.showLiteral(lit) - + fun inlineResult(ctx: Map[Result, String])(r) = InlinePrinter(ctx).showResult(r) - - fun inlineAssigments(ctx: Map[Symbol, String])(b) = if b is + + fun inlineAssigments(ctx: Map[Symbol, String])(b) = if b is Return(res) then inlineResult(ctx)(res) Scoped(syms, rest) then let ctx = syms.reduce((ctx, sym) => ctx.set(sym, sym.nme), ctx) @@ -82,13 +82,13 @@ class FunCache(val owner: ConcreteClassSymbol | ModuleSymbol, val cache: Map[Any Assign(lhs, rhs, rest) then inlineAssigments(ctx.set(lhs, inlineResult(ctx)(rhs)))(rest) End then "" else throw Error("unexpected Block type in constructor: " + b.toString()) - + let extendsClause = if owner is ConcreteClassSymbol then let preCtor = runtimeClass."preCtor$_instr"().body assert preCtor is Block.Block inlineAssigments(new Map())(preCtor) else "" - + let ctor = runtimeClass.((if owner is ConcreteClassSymbol then "class$" else "") + "ctor$_instr")() assert ctor is FunDefn From bc9758d90c240d8fa642048291835c99631a8ce3 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 28 May 2026 12:15:38 +0800 Subject: [PATCH 630/654] formatting --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 74491b9e2f..da5546d2ac 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -405,9 +405,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def stageCtor(ctorFun: FunDefn): FunDefn = // refresh VarSymbols for ctor val paramSymMap = ctorFun.params.map(_.params.map(x => x.sym -> VarSymbol(x.sym.id))).flatten.toMap - val transformer = new BlockTransformer(new SymbolSubst(): + val varSymSubst = new SymbolSubst(): // refresh symbols after copying parameter list - override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l)): + override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l) + val transformer = new BlockTransformer(varSymSubst): override def applyBlock(b: Block) = b match // process ctor: remove ValDefn of parameters already defined in the class parameters // remove `val C.x = x` statements from the constructor From 3fbb1f0c6841f50693b6f6f1297f3c09d35d0e61 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Thu, 28 May 2026 15:03:28 +0800 Subject: [PATCH 631/654] rerun test this change is due to the normalization of ClassParamFlattener giving a parameter list for originally parameter-less classes --- .../test/mlscript/block-staging/StageSymbols.mls | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 36401abb6f..a172f77243 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -193,7 +193,7 @@ staged module M with staged module M with fun f() = x => x fun g()() = 1 -//│ > class Function$ extends Function() with +//│ > class Function$() extends Function() with //│ > () //│ > fun call() = lambda_() //│ > Map(1) { 'call' => [Function: call_gen] } @@ -206,7 +206,7 @@ staged module M with //│ > name: 'Function$', //│ > value: [Function], //│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > auxParams: [Array] //│ > }, //│ > [Function: Function] => ConcreteClassSymbol { //│ > name: 'Function', @@ -217,7 +217,7 @@ staged module M with //│ > }, //│ > moduleMap: Map(0) {} //│ > } -//│ > class Function$1 extends Function() with +//│ > class Function$1() extends Function() with //│ > () //│ > fun call(x) = lambda(x) //│ > Map(1) { 'call' => [Function: call_gen] } @@ -231,7 +231,7 @@ staged module M with //│ > name: 'Function$', //│ > value: [Function], //│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > auxParams: [Array] //│ > }, //│ > [Function: Function] => ConcreteClassSymbol { //│ > name: 'Function', @@ -246,7 +246,7 @@ staged module M with //│ > name: 'Function$1', //│ > value: [Function], //│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > auxParams: [Array] //│ > } //│ > }, //│ > moduleMap: Map(0) {} @@ -272,7 +272,7 @@ staged module M with //│ > name: 'Function$', //│ > value: [Function], //│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > auxParams: [Array] //│ > }, //│ > [Function: Function] => ConcreteClassSymbol { //│ > name: 'Function', @@ -288,7 +288,7 @@ staged module M with //│ > name: 'Function$1', //│ > value: [Function], //│ > paramsOpt: None {}, -//│ > auxParams: [] +//│ > auxParams: [Array] //│ > } //│ > }, //│ > moduleMap: Map(1) { From a5c9be7dd9c90161290df8a3dac4feae0ad6dd9d Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 28 May 2026 15:37:18 +0800 Subject: [PATCH 632/654] WIP: Cherrypick simple fix --- .../mlscript-compile/NaiveTransform3D.mls | 57 +- .../src/test/mlscript-compile/Shape.mls | 7 +- .../mlscript-compile/SpecializeHelpers.mls | 24 +- .../mlscript-compile/staging/StagedRegExp.mls | 230 + .../mlscript-compile/staging/Transform3D.mls | 41 +- .../staging/benchmark/NaiveTest.mls | 21 - .../staging/benchmark/StagedTest.mls | 19 - .../staging/benchmark/Transform3D.mls | 106 - .../staging/benchmark/random_coordinates.csv | 160000 --------------- .../staging/out/AdjacentClasses.mls | 6 +- .../staging/out/CombinedModule.mls | 10 +- .../staging/out/LinkingGeneratedClasses.mls | 10 +- .../staging/out/StagedClass.mls | 30 +- .../staging/out/Transform3D.mls | 4750 +- .../test/mlscript/block-staging/ShapeProp.mls | 21 +- .../block-staging/StagedRegExpTest.mls | 514 + .../block-staging/Transform3DTest.mls | 208 +- 17 files changed, 4654 insertions(+), 161400 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls delete mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls delete mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls delete mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/benchmark/Transform3D.mls delete mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/benchmark/random_coordinates.csv create mode 100644 hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls index c1f7e8052d..255a237d6b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/NaiveTransform3D.mls @@ -2,73 +2,42 @@ module Mx with fun init(len, dft) = globalThis.Array(len).fill(dft) - fun set1D(a, i, v) = + fun setAt(a, i, v) = set a.(i) = v a - fun set2D(m, i, j, v) = - set m.(i).(j) = v - m + fun len(arr) = arr.length module NaiveTransform3D with + class Matrix(val arr, val r, val c) + fun iter(sum, x, y, colX, i, j, k) = - if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) + if k > 0 then iter(sum + x.arr.(i * x.c + colX - k) * y.arr.((colX - k) * y.c + j), x, y, colX, i, j, k - 1) else sum fun iterCol(m, x, y, colX, colY, i, j) = if j === 0 then m - else iterCol(Mx.set2D(m, i, colY - j, iter(0.0, x, y, colX, i, colY - j, colX)), x, y, colX, colY, i, j - 1) + else iterCol(update(m, i, colY - j, iter(0.0, x, y, colX, i, colY - j, colX)), x, y, colX, colY, i, j - 1) fun iterRow(m, x, y, rowX, colX, colY, i) = if i === 0 then m else iterRow(iterCol(m, x, y, colX, colY, rowX - i, colY), x, y, rowX, colX, colY, i - 1) - fun iterInit(m, r, c, i) = - if i === 0 then m - else - iterInit(Mx.set1D(m, r - i, Mx.init(c, 0)), r, c, i - 1) - fun iterID(m, w, i) = if i === 0 then m else - iterID(Mx.set2D(m, w - i, w - i, 1), w, i - 1) - - // TODO: remove manual lifting above after we can stage them correctly + iterID(update(m, w - i, w - i, 1), w, i - 1) - fun zeros(r, c) = - let m = Mx.init(r, []) - iterInit(m, r, c, r) - m + fun zeros(r, c) = new Matrix(Mx.init(r * c, 0), r, c) fun multiply(x, y) = - let rowX = x.length - let colX = x.0.length - let rowY = y.length - let colY = y.0.length - let res = zeros(rowX, colY) - iterRow(res, x, y, rowX, colX, colY, rowX) - // fun multiply(x, y) = - // let rowX = x.length - // let colX = x.0.length - // let rowY = y.length - // let colY = y.0.length - // fun iterRow(m, i) = - // if i === rowX then m - // else - // fun iterCol(vec, j) = - // if j === colY then vec - // else - // fun iter(sum, k) = - // if k < rowY then iter(sum + x.(i).(k) * y.(k).(j), k + 1) - // else sum - // iterCol(vec.concat(iter of 0.0, 0), j + 1) - // iterRow(m.concat([iterCol of [], 0]), i + 1) - // iterRow([], 0) + let res = zeros(x.r, y.c) + iterRow(res, x, y, x.r, x.c, y.c, x.r) fun ident(w) = let m = zeros(w, w) iterID(m, w, w) - fun update(m, i, j, v) = Mx.set2D(m, i, j, v) + fun update(m, i, j, v) = new Matrix(Mx.setAt(m.arr, i * m.c + j, v), m.r, m.c) fun transform(dx, dy, dz) = update of @@ -119,8 +88,8 @@ module NaiveTransform3D with rotateX(rotation.0), ident(4) let res = multiply of transform(position.0, position.1, position.2), multiply of - rot, multiply(scale(scaling.0, scaling.1, scaling.2), [[local.0], [local.1], [local.2], [1]]) - [res.0, res.1, res.2] + rot, multiply(scale(scaling.0, scaling.1, scaling.2), new Matrix([local.0, local.1, local.2, 1], 4, 1)) + [res.arr.0, res.arr.1, res.arr.2] fun model0(local) = model(local, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0]) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index f880367ba8..c1025b32c8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -61,7 +61,10 @@ fun silh(p: Case): Shape = if p is Block.Tup(n) then Arr(Array(n).fill(Dyn())) fun getActualClass(c) = if not (c."class" is undefined) then c.class else c -fun isSubClassOf(d, b) = getActualClass(b).isPrototypeOf(getActualClass(d)) +fun isSubClassOf(d, b) = + let dClass = getActualClass(d) + let bClass = getActualClass(b) + dClass == bClass || bClass.isPrototypeOf(dClass) fun filter(s: Shape, p: Case): Array[Shape] = if [s, p] is @@ -86,4 +89,4 @@ fun rest(s: Shape, p: Case): Array[Shape] = isSubClassOf(c1.value, c2.value) then [] [Class(c1, _), Block.Cls(c2, _)] and c1.name == c2.name then [s] [Dyn, _] then [s] - else [s] \ No newline at end of file + else [s] diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index f6c12d6beb..4b4626e326 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -66,6 +66,9 @@ class Ctx( else ctx.set(ps, ss) this + fun refine(path: Path, ss: ShapeSet) = + ctx.set(showCtxPath(path), ss) + this // Later ValDefn (in derived class) shadows earlier ValDefn (in base class) fun addValDefn(ps: String, ss: ShapeSet) = valDefnCtx.set(ps, ss) @@ -224,7 +227,7 @@ fun subLitPath(ctx, p) = if p is Select(qual, name) then Select(subLitPath(ctx, qual), name) ValueRef(_) and let s = sop(ctx, p) - staticSet(s) and shapeset2path(s, ctx.allocs) is [End(), res] then res + s.values() is [Lit(lit)] then ValueLit(lit) else p @@ -304,17 +307,13 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is ValueRef(symb) then sorBuiltinOp(ctx, r, f, symb.name, args) // built-in or top-level Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(fld)) and let mapPropName = getGenMapName(name, false) - let cachePropName = getCacheName(name, false) let genMap = value.(mapPropName) not (genMap is undefined) and - let f_gen = genMap.get(fld) - not (f_gen is Runtime.Unit) and // staged function + let f_gen = genMap.get(fld) + not (f_gen is Runtime.Unit) then // staged function let res = f_gen(...argShapes) - staticSet(res.1) then - let v2p = shapeset2path(res.1, ctx.allocs) - [v2p.0, v2p.1, res.1] - else - [End(), Call(Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(res.0)), args), res.1] + let callPath = if res.0 == fld then Select(ValueRef(ModuleSymbol(name, value, redir)), Symbol(res.0)) else ValueRef(Symbol(res.0)) + [End(), Call(callPath, args), res.1] else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") argShapes.every(staticSet) and // non staged function and params known @@ -334,10 +333,9 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is // shape of result: return [blk, res, s] // where blk is the block needed to construct the result res (End() if not needed) and s is the shape fun sor(ctx, r) = if r is - Path and + Path then let s = sop(ctx, r) - staticSet(s) and shapeset2path(s, ctx.allocs) is [blk, res] then [blk, res, s] - else [End(), subLitPath(ctx, r), s] + [End(), subLitPath(ctx, r), s] Instantiate(cls, args) then sorInstantiate(ctx, r, cls, args) Tuple(elems) then [End(), r, mkArr(elems.map(a => sop(ctx, a.value)))] Call(f, args) then sorCall(ctx, r, f, args, args.map((a, _, _) => sop(ctx, a.value))) @@ -457,7 +455,7 @@ fun prop(ctx, b) = if b is ) fun propBranch(body, branchShape) = let branchCtx = ctx.clone - if not p is ValueLit do branchCtx.add(p, branchShape) + if not p is ValueLit do branchCtx.refine(p, branchShape) let res = prop(branchCtx, body) [...res, branchCtx.sub(ctx)] let filteredArms = foldl((r, arm) => diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls new file mode 100644 index 0000000000..6404d05f61 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls @@ -0,0 +1,230 @@ +#config(noFreeze: true) + +module SeqHelper with + fun push(arr, ele) = + arr.push(ele) + arr + fun concat(lhs, rhs) = lhs.concat(rhs) + fun has(arr, ele) = arr.includes(ele) + fun len(s) = s.length + fun eq(arr1, arr2) = + arr1.length == arr2.length and arr1.every((v, i) => v == arr2.(i)) + fun setEq(s1, s2) = + s1.slice().sort() + s2.slice().sort() + s1.length == s2.length and s1.every((v, i) => v.eq(s2.(i))) + +module CharSet with + fun alphabet() = [ + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" + ] + fun space() = [" ", "\n", "\t", "\r"] + fun digit() = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + +staged module StagedRegExp with + class Some(val x) + class None + + fun len(s) = SeqHelper.len(s) + fun has(arr, ele) = SeqHelper.has(arr, ele) + fun arrEq(arr1, arr2) = SeqHelper.eq(arr1, arr2) + fun push(arr, ele) = SeqHelper.push(arr, ele) + fun concat(lhs, rhs) = SeqHelper.concat(lhs, rhs) + fun setEq(s1, s2) = SeqHelper.setEq(s1, s2) + + staged class DedupSet(val arr) with + fun addImp(e, i) = + let s = len(arr) + if i == s then new DedupSet(push(arr, e)) + else + let e' = arr.(i) + if e.eq(e') then this else addImp(e, i + 1) + fun add(e) = + addImp(e, 0) + + staged class RegExp() with + fun derive(c) + fun canBeEmpty() + fun normalize() + fun eq(other) + fun startsWith(c) + + staged class Nothing() extends RegExp with + fun derive(c) = this + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = other is Nothing + fun startsWith(c) = false + + staged class Empty() extends RegExp with + fun derive(c) = new Nothing() + fun canBeEmpty() = true + fun normalize() = this + fun eq(other) = other is Empty + fun startsWith(c) = false + + staged class Exact(val ch) extends RegExp with + fun derive(c) = + if startsWith(c) then new Empty() + else new Nothing() + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = + if other is Exact(ch') then ch == ch' else false + fun startsWith(c) = ch == c + + staged class Any() extends RegExp with + fun derive(c) = new Empty() + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = other is Any() + fun startsWith(c) = true + + staged class Not(val chars) extends RegExp with + fun derive(c) = + if startsWith(c) then new Empty() else new Nothing() + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = + if other is Not(chars') then arrEq(chars, chars') else false + fun startsWith(c) = not has(chars, c) + + fun notWord() = new Not(CharSet.alphabet()) + fun notSpace() = new Not(CharSet.space()) + fun notDigit() = new Not(CharSet.digit()) + + fun mkUnion(arr, i, s) = + if i == s - 1 then arr.(i) + else + if arr.(i) is + Nothing() then mkUnion(arr, i + 1, s) + else new Union(arr.(i), mkUnion(arr, i + 1, s)) + + staged class Union(val p1, val p2) extends RegExp with + fun derive(c) = (new Union(p1.derive(c), p2.derive(c))).normalize() + fun canBeEmpty() = p1.canBeEmpty() || p2.canBeEmpty() + fun flat() = + let p1' = if p1 is Union then p1.flat() else [p1] + let p2' = if p2 is Union then p2.flat() else [p2] + concat(p1', p2') + fun iter(st, arr, i, s) = + if i == s then st + else iter(st.add(arr.(i)), arr, i + 1, s) + fun normalize() = + let p1' = p1.normalize() + let p2' = p2.normalize() + let arr1 = if p1' is Union then p1'.flat() else [p1'] + let arr2 = if p2' is Union then p2'.flat() else [p2'] + let s = iter(new DedupSet(arr1), arr2, 0, len(arr2)) + mkUnion(s.arr, 0, len(s.arr)) + fun eq(other) = + let n = other.normalize() + if n is + Union then setEq(normalize().flat(), n.flat()) + else false + fun startsWith(c) = p1.startsWith(c) || p2.startsWith(c) + + fun question(r) = new Union(r, new Empty()) + + staged class In(val chars) extends RegExp with + fun derive(c) = + if startsWith(c) then new Empty() else new Nothing() + fun canBeEmpty() = false + fun normalize() = this + fun eq(other) = + if other is In(chars') then arrEq(chars, chars') else false + fun startsWith(c) = has(chars, c) + + fun words() = new In(CharSet.alphabet()) + fun spaces() = new In(CharSet.space()) + fun digits() = new In(CharSet.digit()) + + staged class Concat(val p1, val p2) extends RegExp with + fun derive(c) = + let p1' = p1.derive(c) + if p1.canBeEmpty() then + (new Union(new Concat(p1', p2), p2.derive(c))).normalize() + else (new Concat(p1', p2)).normalize() + fun canBeEmpty() = p1.canBeEmpty() and p2.canBeEmpty() + fun normalize() = + let p1' = p1.normalize() + if p1' is + Empty() then p2.normalize() + Nothing() then p1' + else new Concat(p1', p2.normalize()) + fun eq(other) = + if other is Concat(p1', p2') then p1.eq(p1') and p2.eq(p2') else false + fun startsWith(c) = p1.startsWith(c) || (p1.canBeEmpty() and p2.startsWith(c)) + + fun nTimes(r, i) = + if i == 1 then r + else new Concat(r, nTimes(r, i - 1)) + + staged class Star(val p) extends RegExp with + fun derive(c) = (new Concat(p.derive(c), new Star(p))).normalize() + fun canBeEmpty() = true + fun normalize() = new Star(p.normalize()) + fun eq(other) = + if other is Star(p') then p.eq(p') else false + fun startsWith(c) = p.startsWith(c) + + fun plus(r) = new Concat(r, new Star(r)) + + fun matchImpl(p, s, acc) = + if len(s) == 0 then + if p.canBeEmpty() then new Some(acc) + else new None + else + if p is + Nothing then new None + else + let c = s.0 + if p.startsWith(c) then + matchImpl(p.derive(c), s.slice(1), acc + c) + else + if p.canBeEmpty() then new Some(acc) else new None + fun match(p, s) = + matchImpl(p, s, "") + + fun matchAllImpl(p, s, res) = + if len(s) == 0 then res + else + if match(p, s) is + Some(ss) then + if len(ss) > 0 then matchAllImpl(p, s.slice(len(ss)), SeqHelper.push(res, ss)) + else matchAllImpl(p, s.slice(1), res) + else matchAllImpl(p, s.slice(1), res) + fun matchAll(p, s) = + matchAllImpl(p, s, []) + + // [\w\.-]+@[\w\.-]+\.[\w\.-]+ + fun matchAllEmail(s) = + let p = plus(new In(SeqHelper.concat(CharSet.alphabet(), ["-", "."]))) + let email = new Concat(p, new Concat(new Exact("@"), new Concat(p, new Concat(new Exact("."), p)))) + matchAll(email, s) + + // \w+://[^/\s?#]+[^\s?#]+(\?[^\s#]*)?(#[^\s]*)? + fun matchAllURI(s) = + let n1 = new Not(["/", "?", "#", " ", "\n", "\t", "\r"]) + let n2 = new Not(["?", "#", " ", "\n", "\t", "\r"]) + let n3 = new Not(["#", " ", "\n", "\t", "\r"]) + let w = words() + let d = digits() + let p = SeqHelper.concat(CharSet.alphabet(), SeqHelper.concat(CharSet.digit(), ["-", "_"])) + let head = new Concat(plus(w), new Concat(new Exact(":"), new Concat(new Exact("/"), new Exact("/")))) + let body = new Concat(plus(n1), plus(n2)) + let params = new Concat(question(new Concat(new Exact("?"), new Star(new In(p)))), question(new Concat(new Exact("#"), new Star(new In(p))))) + let uri = new Concat(head, new Concat(body, params)) + matchAll(uri, s) + + // ((25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9]) + fun matchAllIPv4(s) = + let fo = new In(["0", "1", "2", "3", "4"]) + let fi = new In(["0", "1", "2", "3", "4", "5"]) + let segment = new Union(new Concat(new Exact("2"), new Concat(new Exact("5"), fi)), new Union( + new Concat(new Exact("2"), new Concat(fo, digits())), + new Concat(question(new Exact("1")), new Concat(question(digits()), digits())) + )) + let ipv4 = new Concat(nTimes(new Concat(segment, new Exact(".")), 3), segment) + matchAll(ipv4, s) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls index 97c3f6f182..2db5a3bfe3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls @@ -2,53 +2,42 @@ module Mx with fun init(len, dft) = globalThis.Array(len).fill(dft) - fun set1D(a, i, v) = + fun setAt(a, i, v) = set a.(i) = v a - fun set2D(m, i, j, v) = - set m.(i).(j) = v - m + fun len(arr) = arr.length staged module Transform3D with + class Matrix(val arr, val r, val c) + fun iter(sum, x, y, colX, i, j, k) = - if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) + if k > 0 then iter(sum + x.arr.(i * x.c + colX - k) * y.arr.((colX - k) * y.c + j), x, y, colX, i, j, k - 1) else sum fun iterCol(m, x, y, colX, colY, i, j) = if j === 0 then m - else iterCol(Mx.set2D(m, i, colY - j, iter(0.0, x, y, colX, i, colY - j, colX)), x, y, colX, colY, i, j - 1) + else iterCol(update(m, i, colY - j, iter(0.0, x, y, colX, i, colY - j, colX)), x, y, colX, colY, i, j - 1) fun iterRow(m, x, y, rowX, colX, colY, i) = if i === 0 then m else iterRow(iterCol(m, x, y, colX, colY, rowX - i, colY), x, y, rowX, colX, colY, i - 1) - fun iterInit(m, r, c, i) = - if i === 0 then m - else - iterInit(Mx.set1D(m, r - i, Mx.init(c, 0)), r, c, i - 1) - fun iterID(m, w, i) = if i === 0 then m else - iterID(Mx.set2D(m, w - i, w - i, 1), w, i - 1) + iterID(update(m, w - i, w - i, 1), w, i - 1) - fun zeros(r, c) = - let m = Mx.init(r, []) - iterInit(m, r, c, r) + fun zeros(r, c) = new Matrix(Mx.init(r * c, 0), r, c) fun multiply(x, y) = - let rowX = x.length - let colX = x.0.length - let rowY = y.length - let colY = y.0.length - let res = zeros(rowX, colY) - iterRow(res, x, y, rowX, colX, colY, rowX) + let res = zeros(x.r, y.c) + iterRow(res, x, y, x.r, x.c, y.c, x.r) fun ident(w) = let m = zeros(w, w) iterID(m, w, w) - fun update(m, i, j, v) = Mx.set2D(m, i, j, v) + fun update(m, i, j, v) = new Matrix(Mx.setAt(m.arr, i * m.c + j, v), m.r, m.c) fun transform(dx, dy, dz) = update of @@ -99,8 +88,12 @@ staged module Transform3D with rotateX(rotation.0), ident(4) let res = multiply of transform(position.0, position.1, position.2), multiply of - rot, multiply(scale(scaling.0, scaling.1, scaling.2), [[local.0], [local.1], [local.2], [1]]) - [res.0, res.1, res.2] + rot, multiply(scale(scaling.0, scaling.1, scaling.2), new Matrix([local.0, local.1, local.2, 1], 4, 1)) + [res.arr.0, res.arr.1, res.arr.2] fun model0(local) = model(local, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0]) + + fun moveBy(v, dx, dy, dz) = + let m = transform(dx, dy, dz) + multiply(m, new Matrix([v.0, v.1, v.2, 1], 4, 1)) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls deleted file mode 100644 index 2c55239b30..0000000000 --- a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/NaiveTest.mls +++ /dev/null @@ -1,21 +0,0 @@ -import "fs" - -// import "./NaiveTransform3D.mjs" -import "./../../NaiveTransform3D.mls" - -let inputFile = "./random_coordinates.csv" - -let text = fs.readFileSync(inputFile, "utf-8") -let coords = text.trim().split("\n").map(line => - let t = line.split(",").map(Number) - [[t.0], [t.1], [t.2]] -) - - -let begin = globalThis.process.hrtime() -coords.map(coord => NaiveTransform3D.model0(coord)) -let diff = globalThis.process.hrtime(begin) -let diffTime = diff.0 * 1000000000 + diff.1 -console.log("time: " + diffTime) - - diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls deleted file mode 100644 index 10ad3a2472..0000000000 --- a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/StagedTest.mls +++ /dev/null @@ -1,19 +0,0 @@ -import "fs" - -// import "./Transform3D.mls" -import "./../out/Transform3D.mls" - -let inputFile = "./random_coordinates.csv" - -let text = fs.readFileSync(inputFile, "utf-8") -let coords = text.trim().split("\n").map(line => - let t = line.split(",").map(Number) - [[t.0], [t.1], [t.2]] -) - - -let begin = globalThis.process.hrtime() -coords.map(coord => Transform3D.model0(coord)) -let diff = globalThis.process.hrtime(begin) -let diffTime = diff.0 * 1000000000 + diff.1 -console.log("time: " + diffTime) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/Transform3D.mls deleted file mode 100644 index 802723c4e3..0000000000 --- a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/Transform3D.mls +++ /dev/null @@ -1,106 +0,0 @@ -#config(noFreeze: true) - -module Mx with - fun init(len, dft) = globalThis.Array(len).fill(dft) - fun set1D(a, i, v) = - set a.(i) = v - a - fun set2D(m, i, j, v) = - set m.(i).(j) = v - m - -module Transform3D with - fun iter(sum, x, y, colX, i, j, k) = - if k > 0 then iter(sum + x.(i).(colX - k) * y.(colX - k).(j), x, y, colX, i, j, k - 1) - else sum - - fun iterCol(m, x, y, colX, colY, i, j) = - if j === 0 then m - else iterCol(Mx.set2D(m, i, colY - j, iter(0.0, x, y, colX, i, colY - j, colX)), x, y, colX, colY, i, j - 1) - - fun iterRow(m, x, y, rowX, colX, colY, i) = - if i === 0 then m - else iterRow(iterCol(m, x, y, colX, colY, rowX - i, colY), x, y, rowX, colX, colY, i - 1) - - fun iterInit(m, r, c, i) = - if i === 0 then m - else - iterInit(Mx.set1D(m, r - i, Mx.init(c, 0)), r, c, i - 1) - - fun iterID(m, w, i) = - if i === 0 then m - else - iterID(Mx.set2D(m, w - i, w - i, 1), w, i - 1) - - fun zeros(r, c) = - let m = Mx.init(r, []) - iterInit(m, r, c, r) - - fun multiply(x, y) = - let rowX = x.length - let colX = x.0.length - let rowY = y.length - let colY = y.0.length - let res = zeros(rowX, colY) - iterRow(res, x, y, rowX, colX, colY, rowX) - - fun ident(w) = - let m = zeros(w, w) - iterID(m, w, w) - - fun update(m, i, j, v) = Mx.set2D(m, i, j, v) - - fun transform(dx, dy, dz) = - update of - update of - update(ident(4), 0, 3, dx), 1, 3, dy - , 2, 3, dz - - fun scale(sx, sy, sz) = - update of - update of - update(ident(4), 0, 0, sx), 1, 1, sy - , 2, 2, sz - - fun rotateX(angle) = - let s = Math.sin(angle) - let c = Math.cos(angle) - update of - update of - update of - update(ident(4), 1, 1, c), 1, 2, -s - , 2, 1, s - , 2, 2, c - - fun rotateY(angle) = - let s = Math.sin(angle) - let c = Math.cos(angle) - update of - update of - update of - update(ident(4), 0, 0, c), 0, 2, s - , 2, 0, -s - , 2, 2, c - - fun rotateZ(angle) = - let s = Math.sin(angle) - let c = Math.cos(angle) - update of - update of - update of - update(ident(4), 0, 0, c), 0, 1, -s - , 1, 0, s - , 1, 1, c - - fun model(local, position, scaling, rotation) = - let rot = multiply of - rotateZ(rotation.2), multiply of - rotateY(rotation.1), multiply of - rotateX(rotation.0), ident(4) - let res = multiply of - transform(position.0, position.1, position.2), multiply of - rot, multiply(scale(scaling.0, scaling.1, scaling.2), [[local.0], [local.1], [local.2], [1]]) - [res.0, res.1, res.2] - - fun model0(local) = - model(local, [11, 4, 51], [0.4, 0.19, 0.19], [0.8 * 3.14159265, 3.1415926535, 0.0]) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/random_coordinates.csv b/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/random_coordinates.csv deleted file mode 100644 index 5c53c0ce90..0000000000 --- a/hkmc2/shared/src/test/mlscript-compile/staging/benchmark/random_coordinates.csv +++ /dev/null @@ -1,160000 +0,0 @@ --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 --250.91976230527507,901.4286128198323,463.98788362281016 -197.31696839407323,-687.9627191151269,-688.0109593275947 --883.8327756636011,732.3522915498704,202.23002348641762 -416.145155592091,-958.831011408395,939.8197043239886 -664.8852816008434,-575.3217786434477,-636.3500655857988 --633.1909802931324,-391.5155140809245,49.512863264475754 --136.10996271576846,-417.54171960391614,223.70578944475892 --721.0122786959164,-415.7107029295637,-267.27631341261656 --87.86003156592813,570.3519227860272,-600.6524356832806 -28.468876827223312,184.82913772408483,-907.0991745600046 -215.08970380287678,-658.9517526254169,-869.896814029441 -897.7710745066665,931.2640661491187,616.7946962329222 --390.7724616532586,-804.6557719872322,368.46605302431385 --119.69501252079738,-755.9235303104424,-9.646179777459679 --931.2229577695632,818.6408041575642,-482.44003679996615 -325.0445687079639,-376.5778478211781,40.13604235562161 -93.42055868655939,-630.2910889489459,939.1692555291172 -550.2656467222291,878.9978831283781,789.6547008552977 -195.79995762217027,843.7484700462337,-823.014995896161 --608.0342751617096,-909.5454221789239,-349.33933847347134 --222.645420621036,-457.3019364522082,657.4750183038586 --286.4933466128215,-438.1309806252385,85.39216631649697 --718.1515500504747,604.3939615080794,-850.8987126404584 -973.7738732010346,544.4895385933148,-602.5686369316552 --988.9557657527952,630.9228569096683,413.71468769523426 -458.01433608197453,542.5406933718914,-851.9106965318192 --283.06854291145476,-768.2618809497405,726.2068517511871 -246.5962536551158,-338.2039502947016,-872.8832994279527 --378.03535656867564,-349.63335594650596,459.21235667612814 -275.11494271042625,774.425485152653,-55.57014967610144 --760.8115081233966,426.48957444599,521.570097233795 -122.5543951389925,541.9343599091219,-12.408807271218507 -45.46565876398813,-144.9179632829007,-949.1617465118096 --784.2171460133911,-937.1416286265315,272.8208225275607 --371.2880378473467,17.141382329405587,815.1329478521861 --501.4155417022501,-179.2341539287405,511.1022770860973 --542.4036690167551,-846.040180342414,-420.4970941724639 --677.5574254919911,859.3953046851461,616.2407591288338 -266.80751302084695,742.9211803754354,607.344153798229 --626.8598822279283,785.1179969799555,78.68448383130135 -614.880310328125,792.1825998469865,-363.9930500562723 --779.8961509446465,-544.1296749161166,-145.78442274748738 -636.0295318449862,721.461166512687,-986.0957389376186 -21.494605155131467,-165.177993702442,-555.7843790585396 --760.2692653326344,-324.76965719274403,885.8194078250383 --353.5941359584896,37.58124348673209,406.0379177903558 --272.740795241412,943.5641654419214,924.8945898842226 --496.4354083492717,-5.502988215229152,-398.24338036646066 --430.31901124506476,-926.2261052909344,219.1286679597938 -5.358046457722935,-897.0424975000213,-442.7070715267771 -816.5317719333075,-520.8762186660551,-710.2102558175538 --21.09447944487397,971.3009082212013,-515.8894569769991 -344.27109481175717,523.2392306574352,-524.7249120152007 -456.43269722371906,-264.43373456149357,264.6116611871589 -267.0594215217893,71.54936814951702,-819.4204598911833 -670.604991178476,-358.4398700565283,-626.9629792002916 --918.4497168904721,181.78588637648363,355.1287236845649 --966.8243421442877,24.186116598561966,-547.008449604124 -290.34558081889963,-651.2671419900171,381.87547620493183 --226.5293073989252,873.459977473469,-724.9581117080136 --317.867297899483,-773.0529575188218,849.3872365571256 -754.6787067619621,-484.11674456968876,319.96809206835815 -634.4444004024317,110.40162319892465,59.301156712012926 --516.2954181990966,-813.7944643882016,794.4315159066534 -800.8361143266609,266.2029145465358,-321.9404179025986 --301.5808507746782,451.9113577404787,794.2205199051541 -774.1728485302347,559.7510917152476,284.06329230857546 --831.7200700099023,-676.7425718107725,797.1083770541584 -212.85811931917988,-981.6058967667407,-797.0569142679358 -327.00353821611156,-989.8768323075626,-678.3838971650027 -97.46757873317233,383.79039538538655,303.92251900520114 --551.4613810788804,424.35844269507174,-525.5018250063999 --349.2006036814646,492.9828102360482,299.26579809442933 -698.446820988356,315.22578460068667,136.61720667094323 --812.6504643438151,-264.5683938811329,-469.59526463654913 --512.0207132418328,946.0211095048912,-213.80455066647914 -784.0931103542266,262.27725199452584,589.6226070832968 -5.274186210384187,153.80776925271812,-14.964612362272192 --609.514024403911,444.9042305230107,-438.45527511828845 --951.3680671370923,290.9445918143356,-645.7786411859022 -880.9171687058285,907.8571540051748,829.728780440897 --259.6825994891112,-969.0867669422652,856.6371251754508 --143.63170336537132,933.3096380873392,927.2399541785057 -706.0189109347202,-411.10221586082866,-229.80454279614946 -702.2733430337139,-366.1559896874446,-661.0145066278151 -113.6025249167003,872.309548321562,392.059593349946 -140.12234017872993,-805.647012458463,230.01445339833958 -980.1077002085265,-719.831969526952,36.659304727473454 -754.746143855911,481.5372355084089,394.0314819905359 -404.96816797421843,-281.01769756048964,-412.81631147101325 -618.7223109570273,620.2267893583614,734.1446371602074 -826.4811051129425,22.68479772187561,3.0325893743992083 -596.5903579335504,299.9278615555304,403.9337545154067 -591.5853388722021,780.0106836351326,-324.0096862969284 --248.83409472011192,-812.036120318262,156.56028199234788 --928.1154524065158,-68.80396373507972,85.28926941515329 --426.91749574343123,181.6665211380216,-938.9995001219012 --925.3036225015712,645.2011213193166,-279.6187171774742 --745.8789746962304,44.48652010960882,539.9871061972217 --568.3579450063137,245.7809516380005,-829.3050700124641 --896.6365576627846,62.70926313629593,81.27024322021293 -274.859802996413,452.1826674453232,951.7041589250691 -32.6006966023906,-354.08705411750805,590.3723895374073 --458.3354974758515,-122.05715858872782,-843.0872373154681 --949.298513169085,925.2968293558502,671.9602410244117 -391.9484121873959,-182.0941111714602,-653.4113598583085 --687.1259146578279,-499.51420367080937,98.45332941224092 -429.19184540012475,320.39475343546246,-440.13220610811436 -909.7305613263882,475.79383339153696,108.70810502280142 -223.44149246870438,-160.79987514442018,-504.53802099768507 --288.0546426974769,515.6922209287382,-971.2130227404882 --767.8547189861675,-907.9947159564945,-918.5423953620598 -710.9211680220144,407.3157187600473,-51.652341825349595 --804.3316786979971,-16.768249766335316,-53.05645843886862 --653.5962601799697,-132.2967015240539,-202.9905312052531 -231.70019610443296,270.1873017352875,-909.3919804559109 --250.77477074705757,251.71983142847284,6.2725171601754255 -712.9796823766446,317.38726323789,-674.1311458371406 --858.8625051991403,284.8385564126313,-946.9773789167564 -171.55116254692666,880.4604828499153,150.94835575175784 --223.6601475869562,286.57643688470625,-83.49421901696678 -91.23357863186993,882.9296175530503,-227.79472439845154 -922.3811276478284,810.7012839121276,-608.4177304214071 --861.2773982496691,-798.4439972451466,-963.5563486969005 --811.1140784881432,366.0135468327137,-857.622703079542 --362.0487394124774,689.750621938909,-953.4561285283482 -628.9369651778716,-436.29045045320015,-763.6703447566874 -393.4743307283013,257.885693559768,754.9440270541058 -470.1420876077716,606.9618607696971,-435.930854857387 --645.1209124405543,501.2295032817167,613.669478534528 -981.0102840013467,-174.76464617714703,-255.9638284144337 -552.8259214839936,-318.3929194939643,861.5146512071294 -716.8255036860237,-142.01194524996333,501.7421355829947 -509.0857481693647,-793.7522623281347,805.1058133591334 -10.504744895714339,652.9149322154833,-359.90079793877646 -791.0464569924009,-221.59664253167375,-978.3246970394033 -810.7639528385273,-817.4266464277329,-361.37272481917023 -900.1239341016098,901.2142938751122,146.8757762465723 -263.67442433959854,-103.10895604336042,-413.5784566038709 --342.67090926016806,345.03691215407684,504.7490588753601 -583.1580874516972,579.2362855891079,-817.5877939026193 --11.159390594837078,-884.8824799667115,99.057764647471 --116.93899725324593,775.4083655165996,-298.16997489584264 --765.8659671447883,-714.0166358943283,523.0212634349446 -236.43612663252202,-797.7546477544195,-831.7863877700051 -401.93826291824007,-854.4739872716129,643.7201185807123 -412.4844543129925,-837.3024387162004,-830.3245718296162 -973.279157002351,-251.45840848775936,-258.7157058662182 -625.5991345150051,894.4971547677173,972.0021276457419 -506.75637051788317,-247.48082893816843,-832.9985666026624 -554.2938318548736,116.80849947161005,-151.5559815060475 -812.708770189472,-777.6050353876973,-14.749791418281688 --977.2927104651619,-62.6787160117475,-887.3934486363253 --762.3641674638561,-764.9475064457902,298.42060423212706 -492.08975853084667,166.73753019431933,924.3450969490839 --250.25884095259187,-428.5758274362786,737.1982563789206 --552.8083229610947,926.4450788812226,-975.6910506203673 -939.7576534152781,-913.6801760988478,782.2862273961421 -55.40221817259976,985.9295922386007,-852.4068705292023 -107.7085688026416,938.605071238198,46.19568834029769 -258.7972762705251,391.4973779692343,-90.91787046445359 -255.11616016812695,168.62862384620053,802.316020981978 --909.1072393170842,-438.07362081553936,900.8229681531175 -780.5275677818327,-88.68649442857418,240.26519560307338 --445.23763403773467,-623.7576805524774,-72.60319012003572 --293.2955439478943,167.3122237017442,-844.5307260700304 -948.7896153323329,972.4214889592058,396.3234280394902 -72.19273268824077,-380.94476742734446,627.5900394138973 -369.46234510775844,-674.7661213102174,821.8543689876849 -645.0744858463379,899.599826583848,451.4390167767199 -226.83039187157965,-163.51392741876225,865.4569667080266 -732.1277790008166,-909.5626597876212,-947.266051005496 --247.07326624390078,621.1066615636657,974.5522586298889 --699.1662177929436,188.2614307042702,-238.218286737957 -939.8287956292063,684.2378462714173,676.6574094222758 --62.61368041005949,-170.3609953246696,-453.1858561385875 --887.2490066981458,729.4447525101064,625.8020182601551 -999.4353465722611,993.2736741478107,110.8634112052548 -537.9748303610211,889.531459764856,699.2947813548228 --505.3037965136047,-98.91172937981298,-741.6811696970101 -908.1020545174447,212.34926890176007,-542.7143889930746 -343.4013688117134,236.2564809157916,-283.67456393431905 --772.884815600742,343.1463911855992,40.61540180758652 -544.6367834712787,40.32700222398671,704.3630006370802 -103.8136775489711,121.87594307077256,753.30720531669 --193.03426757520594,-731.9695430987185,-942.434647373322 -510.2745113472381,240.61910270692943,408.1595361984471 --574.0716769821786,-727.2570488264605,-970.9106686642361 --298.82488238680605,179.83537370926615,-215.51190980053536 --125.0501559525419,808.3173889874968,-303.4890659533993 -27.978978319621547,567.3060254822863,-206.91443535745964 -244.17340045574701,724.7274174934903,899.0412473152842 --705.8530381419241,853.1752503229889,-15.76741384092361 --483.51122340208326,-81.72848752347738,960.0651505709541 --14.763812014260793,-342.49677942498363,266.80170863345165 --519.7087624436139,-848.2733437826721,-742.2405561787016 --743.9083220844551,-696.1946129754112,-722.3456547011797 -281.7494896064293,-636.2398312017103,-308.66543335227357 -793.5768198120236,-52.07671947425524,335.1154770420544 --655.3602575967403,-615.4219623826584,-918.2627674670423 --662.1298738556709,-442.8193219360827,-645.9790314465064 --822.5949324858888,-758.7282577987984,-78.44246393454841 --587.332563188415,-271.46027790384903,6.83454170971379 -380.7896572587306,-921.3757203178021,598.8207978180853 -255.80077898181548,-836.4819361022562,747.1572482135543 -841.7448010636263,-877.8440802902725,-446.24470370559254 -612.4025595861226,496.51938076731676,-630.9579612872453 --581.3013533265794,-259.05579441723603,-30.954029617957303 -236.50954306059202,-262.17272086045523,-74.93056773370427 -494.9418762675132,-926.6335942188042,-495.1261113119585 -426.69917176910485,790.4136753743987,23.35488423133222 -64.2269705306312,-785.6559773204478,-105.1752663530907 -65.23453291004625,-515.0589927305407,-461.51353810123805 --245.43167379075476,-959.8576044445473,-355.84166883364344 --577.1039860069106,-345.0052956441707,-760.4757363614976 -781.05456147979,187.18490710809738,358.20463828897914 -578.3424772146766,-3.1156021418854607,-826.1594238251527 -74.21308363709545,173.6822360417582,490.8789483686601 --136.68090754064121,-744.8393944088725,-432.44818840255107 --273.8354072027298,291.8344826632024,141.55660933782383 --287.80654820430755,973.0304975859594,211.54963871377436 --525.546416528011,-796.4350547591926,-694.2817216313359 --508.08454323098374,-678.6372534808886,-626.8659518973884 --429.80966261230583,-653.2528094104903,793.5308492528504 --839.5325086767156,49.02277914050933,-179.20634602067696 -964.7572338172129,-775.9221956638953,-204.2888019085167 -938.9408665507376,731.0142517879606,634.1441418985598 --484.1943459101203,-658.2248252198683,337.2864398488621 -858.7519782551715,113.52578602785957,143.2253789397996 --440.0418126794317,538.9858663838738,-625.9125028849533 --352.64152719151264,-149.1271227671665,15.220757368910085 --515.1805351698395,-770.326350521593,221.24008488326513 --422.73889351948844,162.47644284522448,-691.2745694515954 --37.719796290365025,65.1788651031718,-896.3529263551462 --326.7914436121588,-731.1706461220515,-873.2500590544645 -979.9204647798904,-355.2923100505541,619.7488917092696 --490.7186904724723,363.0054444478585,520.4557197793731 -191.27748121568857,-56.8476228996833,-176.318171705463 --302.2634669140094,859.0582884956516,661.2388155754584 -930.0538213330251,-751.4055530289105,461.7349504072886 -876.6809136420757,-637.5338676686797,-867.007465266445 -482.24129858011815,148.94622635982387,683.6575535165441 --720.455246747421,590.5346237197805,-596.7453599045109 --672.688114268591,-671.4684041380142,629.1494404627642 -330.39444139240027,46.130849538238635,-282.33903175299497 -754.4010816262166,-215.10978515472925,633.1988789431541 --121.73018285956312,-246.11114115018484,-74.64042866078717 --397.2442516717158,495.21876035250216,5.440780184958271 --535.5746097063654,799.149146549137,-232.21755725357718 -87.10572222797714,812.9442219290938,248.47599182798422 --766.2039185832718,879.6642472269502,255.41610614283582 --330.18877068582776,-721.4558546732255,588.050378540592 -240.14551185702703,66.92218395264308,787.7851661019154 -577.1944224490614,-696.6502405344977,-376.5558644089035 --503.0217203710685,487.8925851453539,-932.9351305284413 -139.77936974263298,524.917371481381,753.5312735234988 --315.8365025681851,642.5146093440258,-778.7365260895856 -692.9045834690364,-745.0226753360351,-205.4254188792654 -594.5907315591073,-700.1651453024524,-541.4972095347171 -444.50513678613265,440.07307309214866,282.2952657705946 -387.8968889342,85.44888669519241,-496.4018821860945 --308.6080129921611,-636.8045663971486,816.9011226672567 -166.78358953224097,-198.29716647272016,-75.9883927117346 -894.5666792236307,-693.2971937678396,172.45966403359444 -11.777357768932006,222.90847086929557,-963.779632358319 -744.247817888303,864.2365649672247,130.2663671784178 -393.30164775378444,844.9987623545915,414.47726862679724 --694.9219141714773,152.57672033362633,213.43009276571183 --151.73865739522796,472.88847124944573,868.7340295380297 -851.1370258135526,-98.32125719173575,-773.5239083184895 -969.6823979246692,677.7961728918683,-750.6746375934663 -841.6837652347447,739.7927241242567,37.676114252144316 -182.55087148985854,-201.99459225973953,-890.4767223559373 --329.60551670819814,605.706897196023,-990.7359539907943 --333.00165661771166,-203.66261281811342,74.79120587584566 -839.7112328255209,-307.3080112680775,-306.0935962075446 -475.00249621949683,-95.5641182203857,-550.790354120036 --95.12096773461326,-718.2859592404003,-647.2260269875534 --3.264454521040534,-162.14910099090423,829.6918021362001 --275.21220176673376,161.17670055608687,264.52857583906075 --973.8110868233327,327.0747440334212,-643.9280662604972 -922.1406349389104,-702.6745444937741,-170.7517525459525 --829.3006638427123,993.7485036918947,4.390020662485199 -190.7700346400875,-865.8470452231451,499.92094079835556 --580.1888138088284,796.1085788814275,-589.7207190359857 --618.6245586726668,-926.9006643038102,-55.866109780001466 -129.68226652523276,-868.5827211432952,551.0552333900212 --93.42233050394475,48.78053865516017,-118.47450612354373 --198.473878249348,119.28066261643585,-689.519508138575 --636.1437390094577,723.5712420270347,892.2309242672654 --253.38136744049416,-458.51065371289246,287.9990864780316 --182.5316578038072,-949.2272886793103,-687.6948052676194 -431.9444576947951,317.84788382030274,-945.808014993033 --556.0556761341011,-537.8504068238572,343.78548719745686 --960.5789244912717,-791.7828360308523,599.8321707463788 --642.9106758913327,305.4922157037495,-523.634437906547 --801.1172144813097,-513.6556180010919,444.5338637113184 -711.3929362125714,660.4397291339833,-205.63294076309035 -336.1702731412922,-590.0314091683581,-413.7045394779735 -792.6716370422396,-973.9961529785279,-828.9829382910639 --584.2274897079453,-946.9355922523606,-637.1291298204053 -166.08312193938445,-157.1508988150041,785.3434221539496 -634.8871234768817,-316.3652966042481,-481.153133137415 --240.61518366546625,180.58988502961552,-463.87271835424747 -248.2978156982681,-181.17669561751916,104.09436170396043 --127.74694172936665,-411.0684809161646,896.9066139243134 -527.2115883195218,-719.773648467095,736.9359517958255 --25.137603500972773,789.1044537881828,599.7105118946304 --149.57299106153312,-955.0613833597652,-462.6452812301078 -83.26842932173395,266.95643965229465,-484.2246291335954 --721.2878518543517,669.8604735985982,968.8043614071044 -51.3803646053716,-656.641428303393,-455.38534696126214 --963.2186469050665,828.597613120998,-764.4978342197178 -153.0329510285071,-451.88955862558805,108.35600503158685 -302.84077670372835,659.4836074144032,-587.1574564787936 --978.008342683039,-726.2287398623855,800.0372836962101 -747.7801551250304,194.82620434061664,201.03372086730678 -330.07334909251085,-649.2574427531008,828.8238918499196 --162.45895021585375,-233.72294350100503,37.83541056567515 --906.0680664498899,-667.4332624878411,476.067232852741 --834.4026641497471,206.3042189327764,-509.3017806373581 --221.40877191604693,-422.6125264586003,-288.65456707010173 -438.091810368491,-405.75656875364996,132.80928059379448 --47.89919560180067,327.3423307252963,873.6594786495159 -465.1441944205005,-570.1192428184866,-937.6337298774306 --475.4719114003499,190.1558614005096,-897.1483730314993 --7.267505597527361,193.68569783377848,-331.5122183660784 -541.8244074916438,-786.8034937324564,-849.7244365283825 -456.3775124072067,-9.017367587603076,376.804792855472 --130.34532279250755,-507.1959335217864,638.2046353483995 -598.8317579379584,389.3929417088534,-455.7097255400746 -180.4613337381743,-278.0522061199464,-816.8358533467317 -834.6271509244855,-726.3627381620772,900.4747076416049 --107.98845408408852,-629.7341423227607,83.80189475671637 -745.8916717528166,464.4497728191225,613.1222957228995 -317.5667334214347,384.55312903570484,698.3913031306386 --500.66398228162814,-21.150072713719055,-557.5811163607955 -975.336015993294,888.1186793732265,-921.1463772629882 -411.1503450313769,850.4966348313317,-638.8493097453329 -135.89046110525896,830.9765951760837,-932.1080428284023 -394.8405344936798,-405.30198525489845,848.7923907530608 -942.1164903307356,888.5329782268677,-51.57156668507241 -724.0853019786268,689.0987970701408,-361.79905351348873 -657.8309483013547,-925.9847305690148,192.53975696410612 --539.9823254245939,-758.8662284454424,-846.0935967415817 -392.5775517562795,-320.2500724638677,449.5335430575228 --869.2873184021153,-369.41932433877935,78.9825847506745 -581.446329677927,-362.4949941358602,251.78275287401812 -771.9554964723743,231.72637636460922,-534.0810504927324 --951.1984368869239,740.1977478018598,-957.4611782992257 -749.4033453683987,57.874268054423965,878.1353970257924 -597.5664715473308,995.868221066675,-298.5763690965797 -534.3765778622537,-196.13817278151566,-40.248759392182365 -255.0109264367402,747.3542283726774,968.1669383985902 -536.5468277290363,-164.46643566533248,-157.2859954458596 -475.16460317778296,-522.4457084633952,-779.0517737372106 --290.7556847184469,-425.5220166918365,-407.3837590880198 --532.7844979001801,-915.8136207272762,-964.2521305331724 -975.4447794720631,-144.45373252827528,-231.34670568063666 -359.29456538613977,-563.4922242698717,899.9223679004506 -572.6900288311042,-821.177995375481,-164.83844843014333 -758.2366151243293,889.4640445828206,-65.19697750026057 -226.82277842141548,-665.9321078158496,982.337252273953 --536.6565972331132,885.4635482702513,299.2932979847369 -215.47358975771817,25.377022033017283,-538.6603765644827 --646.9439359889834,-559.0275818596492,-627.123475711491 -559.1689471335067,-299.74948166653985,-884.3146468732073 -938.2052602816227,767.5717699268514,855.5045663904259 -989.8156452928706,-652.2095015610255,-207.51596219468252 -516.4769514081827,392.0412361075844,-692.2081873202899 -631.6662499812355,-551.1188563266787,-552.3647703547538 -73.94884578682718,185.87986968340624,160.17241567562246 --817.0263252044903,754.9217252607607,-468.7999148225879 --740.9701574343917,777.4961597379545,911.3029964595066 -724.2552345309011,619.0321494497562,310.48396127804335 -101.7147412182785,-826.0264801771798,-183.09357385860255 --254.62296597537204,-480.4924324793476,446.84022737716987 --8.248529842458424,-837.9075681847041,-559.6335961003773 -366.5175273191919,-847.7382810193997,702.4138280975374 --9.706945972051358,-38.826845346703976,184.81556931903515 -649.3619318502983,-304.38158419561387,356.03230511812717 -131.46392799158207,-465.94345966115736,757.2599727103159 -594.8520432138562,316.90366931685094,701.1634581884839 -734.5884019196046,416.72595343006947,674.0266567273441 -394.9429233385672,360.28154352060074,237.2227564303687 -505.4332791152824,-682.7897894138525,761.7415183978569 -743.687055490464,-941.5054339308817,651.6335011295253 --742.2602650531096,-329.76229148171626,487.01651258321544 --678.4802079033836,635.9340482381244,664.2683559154839 -14.935467521672422,-987.2282565663328,-425.9237336501744 -233.85383675148432,962.3723560548469,263.62705403333666 --480.3928378716804,268.0114061992226,79.97075943171103 -559.6907903022873,-786.0387223460832,522.0558050040561 -82.53315735222054,925.9840077179892,-316.2556679226278 -265.2437862678962,864.0562110200349,-794.9805440186415 -874.4569744729022,375.7714446016266,-864.3258817896563 --398.07286610636754,416.34417729056327,-865.2987970624566 -164.34092035254662,-308.23388609408653,241.83103553495425 --908.5159323749743,743.0736123047525,946.9779383547939 -937.7557105713829,499.3036634858495,-739.8275197387361 -516.5263918580451,-950.826167082397,-955.7528969420055 --352.7795617009175,-22.71361919066851,540.8148356155864 -366.59075321301043,-108.19458724650337,-452.7466674366683 -994.2490003154223,-147.63739552805407,-97.22595134064909 --672.7523576166616,589.6190974998588,387.36445156297737 --558.4607744224793,-835.2379087683146,360.9986041494262 -309.02242856227053,-453.4809460035814,901.7271245008208 --697.8842164381995,-135.3303979147962,887.2318403351978 --160.54536614775543,277.051895328171,-204.81120407441142 --451.56959530266,967.9552959196565,-181.33198736991392 -788.1984073582689,-540.0907882178276,-573.7905919498335 --937.7318342309773,303.33365075177016,-262.9473125524777 -728.7164996792742,-53.580186616885726,936.3868558294434 --628.9489685937576,737.2463359112216,553.1937055834835 -541.8436892881041,689.5664562337754,522.0479818859978 -252.4406432628307,-737.5102446352248,-934.9476410174962 -841.6956956313736,233.300629041476,593.0745819523527 --36.95529697489985,-765.3836220752111,-749.6284155948991 -371.13057445794266,-139.38821020107457,-598.9505465993266 --16.810906517126227,-871.5821258497318,163.94280382879765 --462.0131911298047,595.1182012743764,-379.2760821528525 --89.55970183639761,-976.7589201837988,-855.1062244108823 --215.01288718663034,-40.12233056575303,200.04109623860745 --416.6748425813935,389.96377225308515,720.2447943784091 -559.7019777866997,-920.7623493032856,-38.98610548434215 --790.1396431636502,-515.9099682749451,973.3251865342929 --715.0089141969736,-2.223693097287878,236.31146863623826 -404.9299410882079,119.29736697382828,-980.4583051616327 --347.07738351201624,35.42328676942293,-824.2670017103333 --298.74613758163844,-933.5937824172669,-842.8430056899585 --206.15344759680784,-734.5684919138794,135.0816965231163 -378.9299382745314,601.1733982181656,-599.6995115103798 --665.0348354818605,-790.8643193311995,272.8604990872734 -412.95145297380236,-936.827710348716,872.4244924873797 --896.0574326970552,82.59267060214097,418.1210389018329 -741.9382474921713,428.17386426485564,603.4561661395837 --321.09961491438787,629.6502274930244,-839.7703072306497 -789.6333121210553,95.18475230747254,634.5955399249874 --95.36343096339976,287.15539039304986,52.805321872226386 -463.17904351066363,-836.7400359388208,-879.2958320188724 --505.7935319797071,-680.9106397736233,743.5671331844035 --561.5720252839114,951.7305116382627,-326.20841645778626 --635.7641686226015,579.3970142849582,317.4155510017522 --3.6085670937220584,110.7271018752624,438.40355654452765 --543.0905173374026,992.6678321134839,949.5863242935663 -300.6513726938738,-600.9150981417097,360.45648486258256 --855.6031820416483,-938.6949955883879,-484.6342229775727 --74.75408652136741,736.5450108167611,454.33813953261597 -485.413042399962,-149.01333110384928,-308.13001490607417 --257.92247403079455,975.2991274721157,-919.7816171750351 -734.062992244897,157.3508171447868,-122.76916162081909 -450.5153208302729,-26.662117150594327,746.8464761633211 -801.403728022517,-156.55814625308915,-446.3444055298969 -184.70065718672436,824.7266912333819,-578.6756219886668 -245.9331671269656,263.12044018504116,466.22604483056193 --736.8646297454804,431.64992936417707,818.0650413312819 --640.633782259516,-524.9133501522447,942.7901880832792 --638.0460945810205,708.7701867391584,-15.444287103930378 --505.5378511936459,741.4998025450227,-109.38948999466902 -29.63470785938034,-281.5332612004686,185.90170286985494 --672.9522548299544,-217.8369266964786,938.824644670575 --483.7331345977449,313.4733290825843,-349.61987155061024 -546.9462513732012,-738.2526785633004,939.6420901570893 --92.42091723272154,-527.8990733070721,-853.0065053399746 --660.4841898249185,39.54789711203534,-325.9936471374274 -657.766731765219,-138.22495267638817,-502.5714548247402 -234.28997320806002,413.5544337708916,-665.9161841981003 --664.7615674233647,-926.657146132914,472.804030131281 -327.6090552436101,-50.738248500372265,688.3408979383942 -611.3403059001064,170.7087287935044,736.5425610265172 --588.3175799264635,-776.1607612045443,-460.5007769660208 --885.8262878213703,62.339056002064126,873.211384589923 --921.3129186629807,-755.7801719799464,-95.60194343312946 -867.7500350558098,-367.687790046499,14.469617376784868 --916.8542818992158,-703.3135980758223,973.2602459176937 -930.237392872091,-990.1200381311808,903.6235708464778 -278.2398756310008,735.8365890400441,-90.52028873228176 -31.192057158500575,-22.306839486159674,333.7285150922087 --720.6974904873741,-940.0528202546441,-384.14011681761815 -409.36152547329334,-596.2930957541032,346.86486664983454 -939.824092214541,-812.1985684211633,345.20423645025267 --112.4995613908577,736.2845087550106,-645.7004211052282 -385.251904452329,676.2305792962204,889.2284389480465 -366.4960565792917,-5.650471983145394,235.69448040242764 -737.8099689574365,141.21949327765947,-939.2258806063263 -861.8973910139555,379.0535020631223,353.02677155449305 --568.6496952045657,317.7709404653144,-212.27118869168305 -302.4659540829841,-786.8139393840186,315.69060920607217 -998.8274515413332,-903.5759222788879,954.3483684426346 --186.1840785542588,741.5069006745182,564.770968116547 -134.03252197333563,476.89841850265293,757.0311226026959 --191.71935669793402,-345.9336768735226,335.1867711271693 -615.6918838825172,524.5702695532316,595.6272977172689 --128.833370374134,635.6684323500433,-759.5818892587831 -88.97819592169913,-988.4826790037569,-350.8283401994594 --267.07693025720425,-207.65461678148927,390.93441337972445 --222.88379745930854,-102.61275475493869,-524.911738251345 --253.49641674131988,-545.460745473697,-853.6081524631127 -206.89718676275584,336.4255971100324,238.98069201922908 --73.01191239885532,-240.42843964154042,726.6672991436506 -38.16357027243612,-41.63624474053802,-948.7158683871286 --317.50434474768724,-239.6087624282859,-202.354438206199 -160.3447384546646,67.20509345375694,215.81018558688925 -529.7665230842565,625.9714774321869,436.2461524529888 -911.0473919098695,-963.5348346472767,-608.4440286329078 --984.8742500437157,294.94942830920604,796.0610978999739 --513.0354068474014,854.0690895926132,-879.4652194208783 -868.8720536110286,-296.7546255207312,-797.158343101567 --28.256481627348762,-486.4468645589841,-430.25419607615436 --385.4200701474268,606.0517956653268,78.322553350509 --377.3846016879927,220.66756662183684,432.30134844638724 --454.7519985329325,-172.90179694929702,-756.2278133261049 --637.7013009306394,362.23570792996566,-637.1233046087461 -50.326767334120404,418.09252344486526,-786.2461538105124 -134.62443925780713,-486.8744325972725,925.8537504751596 --32.90870656015056,611.9850995503161,100.45308431252352 --913.1749342903616,266.3027511880448,902.8066844133141 -203.22364029266237,638.3777188535805,768.4129266968157 --543.840456102135,-575.9103201835467,221.96197770198341 --177.94306038659056,679.7226057334408,800.0462467960224 --293.1572413945638,-526.2588820510359,561.0510304877237 --450.3879289037278,645.2286370273569,-152.5234927024743 -335.0997985829408,-808.9293723306637,247.71864935314602 --96.46464252554176,173.21692635094814,-663.9715845102731 -473.74748988836427,725.594155086457,-566.5203998184487 --808.5708889596765,-952.7228279073272,283.943000886532 -214.18807217756148,93.39482542813994,-536.1058077680491 --218.18800818897068,188.95267037234612,-6.466282281661279 -975.5710404297747,-727.1204948865337,390.28910809518766 --191.36246379141573,-143.6007701487705,435.1955313163526 -384.8723026487394,982.5119874043767,-743.2114210917496 --791.7807012316673,448.6776342574824,156.77383401281827 --451.6786668803883,-841.1612620220268,-828.6835008071389 -788.3817493282365,-616.2653505625142,-353.2568757689585 --546.687195546024,-290.00738833612536,-861.1523145078132 -38.11958181654063,-864.7748728155702,600.7130156447231 --532.575836179134,80.02382920902119,760.1581751229164 -301.75473809438836,65.91557310267058,-351.3324937692488 --333.9961738836041,338.97391039638023,988.278722442335 -323.6783796987572,115.5668347400499,461.3010204784921 --69.5887754325637,-879.7153147984295,124.59363175581962 -915.2505690107605,-649.3941152846808,380.00978164133153 --598.132622681887,71.65536894616253,-806.6471007065608 --99.25812748362978,512.3266577904922,-304.85695152203584 -329.82344897443613,590.8999215794584,854.3556389589053 --530.715836289093,-201.36816838138373,-695.1679733391652 -984.9670043167505,854.0019358485906,79.91426056111914 -684.0665887528426,41.91595454408434,247.1713760055195 --821.7511357679667,510.5408409936158,-744.5730327295304 -652.1352605050567,564.0561753407717,417.48939548595285 --927.6792389504758,-393.74328810934276,-473.77486017831427 --279.72718505696184,-824.7145064723229,873.9156460621255 -107.60448142475252,-388.95137868395295,-206.03696585143314 --105.59491899032867,201.18866672123454,31.358855392995565 -838.7839464288347,-6.073034188339534,984.3160296466253 -702.8499154901915,-582.9789712853284,861.1904292878326 --767.2672042290478,634.8994169823832,-238.7534130468398 -755.9486408901391,736.1133802149006,611.8508002352423 -580.0608726141227,-390.6417218039185,-838.1614338974956 --194.03964246967712,-652.9509700269826,389.90217780492344 --307.8005469244289,951.2204017198299,281.94415469066394 -644.9611272687218,-734.9506545163031,724.0289645452451 -845.5143810267887,-25.876162362128184,212.50587550195496 -529.6196018059909,-650.322745479175,5.132152926884828 --202.67394445537377,-707.2520156755018,-264.93115541693714 --863.6553812290128,-948.3761861010261,-729.6674216903546 -926.2302231783476,99.05907179003384,931.6443223064398 --135.00424333973604,-376.3677338294808,12.283725680488146 --120.97662273417973,-788.6706314765122,281.65262938041246 --567.9236349808008,239.1759097956592,300.40218479630676 --695.9502937427037,-877.3007457786637,561.5231721368796 --80.39915246135968,-883.6724089890484,989.7326343395343 --884.4388780072667,390.07045771710636,967.3578505268272 --521.6397915681488,-715.5012626256076,-757.2301211551422 --393.44970486480895,-797.9083779787067,384.32268338826384 --875.4164037398746,18.844256299579456,993.3937077059536 -627.9405390120376,230.43887646202188,-387.4927584267766 -247.79167258327698,54.08292782330318,-147.83323221925707 --738.579246519601,773.2084304809334,-100.43070235735502 --610.7549763584699,-264.4812982454208,-171.74049494214592 -655.0757911337487,467.22876112280414,538.6097872826797 --977.9374711427056,-167.69200364047697,-37.311696729352775 --961.6154463538867,-480.37358250993157,520.57964624427 --725.7805885420019,70.62026290518338,-569.596255965525 --975.7584507122134,-517.5970848009171,951.7475098201076 -603.0742237659792,919.1532886420669,-24.29191214727507 --780.527602644993,95.91897794738588,-91.2453308800782 -688.714165479232,-803.8348384315109,-23.517725956443655 --699.9026706120314,-350.64814621988,474.71415477559935 --47.9637412624669,-248.22342970846137,-211.04744285992933 --81.10646318802674,570.0330876741139,784.1693778804688 -910.6693730078566,573.8067725105902,-369.1862085039745 -376.2694121730842,-124.7937518892162,-490.65875590789767 -681.7431588518452,-923.14730207535,803.523984270847 --77.04507075053164,274.4029536165608,318.7078444115655 -790.2354814130726,273.33936433441454,227.86716952012353 --866.6959188786201,36.81604389040808,-699.6619983659167 -474.86753744297107,24.443841625349023,360.4555584167067 --916.6541987952314,-830.4159679083936,432.64677612536457 --855.8313280026532,-857.4865444694829,-975.7830495302251 -913.0027965989602,475.0167189180138,-293.49718299587164 --406.9288374246895,-300.59354050830086,549.3070623623637 -322.74122214082877,-629.6088642650641,-651.7813293318313 --803.2087005732053,320.6054394026762,528.7453244434719 --469.907143349992,-958.1100779381744,-835.6566650471453 -935.7200696900609,-409.1104450451595,538.4462956762673 -249.32713770852752,-236.12072069420822,-588.6254756088897 --757.2271636811871,230.02593607773315,549.2675612755759 -287.80850708226126,60.60426649831652,-916.0975531367275 -936.9775551887676,597.4283833091492,-414.3559265980705 -959.9406587177014,203.76317927264427,164.84531641449303 -496.1463588590643,623.5395761802752,312.9572146630053 --743.8085072675999,-323.46498801100324,856.1672806520994 --550.7687763122962,-255.66595232497332,-135.84623411160806 --121.19002061109563,225.8791649890511,886.1516754894153 --518.61457633499,-756.9972473981638,-605.0590202801254 -773.849800418539,291.6216253104121,-428.1864215216798 -631.8938779372345,722.7399927268721,693.028677380556 -837.8530672791089,-495.5179596532768,510.0838574925565 --78.92100545172002,683.9971057801231,456.98135432322647 -552.8948929994492,312.3236753621429,-645.1424610605862 -90.05383779387671,969.3394790490165,874.7761329942377 --913.6525284059767,-670.3703685411258,-736.5424530908762 -451.95981997059107,635.5706597138901,-572.9772673786562 -11.705385903657998,681.4060560224,465.60308953250114 -84.47441098369654,180.6953809175459,16.721093832559973 --404.90309736235884,130.04398571803222,377.77060410018134 -746.6458317216154,272.58270795849626,522.243074086316 --679.856730090854,-76.88505116042018,-981.3367603458134 --506.642270956754,452.9234302260097,983.619902698727 --801.6438008255682,-197.01136827742346,600.141937398319 --591.9287307422023,110.16989860457238,466.1425920593497 -231.9709005203581,-623.9505307691677,-289.2308626285212 -567.5835689707944,108.45302826403326,-989.5407729141746 -521.9815200561877,-929.3772901195218,491.46756546246434 --595.0388796695252,916.1469602387604,-264.118497395831 --346.1367673238418,-702.2238993351107,-388.79156901957026 -753.3015236564011,992.6686752544947,-263.38093898630336 --102.77873809091489,444.141876405474,772.3915609301491 -186.08866837356823,-216.94860364434135,-174.75631830275256 -391.2362929936137,-993.5634727914427,239.17867491968127 --289.0139791172852,588.3946625541685,-814.0187203537357 -176.404533896781,-38.05422022775247,284.6510518104549 --870.2928110340633,159.96757485626267,122.96917591904753 -121.32018883234196,206.9753331929096,352.9358744527244 -609.9779993615396,-460.3585597435713,650.0988203601241 --3.4886354730926996,-845.8834417313377,-882.8981415120415 --331.5233626078784,569.7939542229351,415.3618694818315 -577.229929344813,34.53811288321867,-119.60200408901892 --705.0949465874321,-343.61449278137695,-131.9612676522495 --822.7991406407655,-558.7760945775775,196.45058812747766 -471.3262284783798,996.6950227858993,866.2266626871153 -285.13039907038296,-157.50389341185598,272.3547294164655 -571.3032361604639,-763.3276181532253,-180.1902206074235 -679.6045712712344,-232.334096133912,143.744542454373 -175.5387217243965,-631.0474937327213,-275.5291166954232 --330.9774225161357,-947.6065829358704,-951.6164722172895 -663.3940873515469,-453.8583800543752,36.157532477630866 --402.5488528224539,881.3584902306811,-481.40648226845246 --140.68637452212988,745.4605009692036,683.8671335836173 --627.7971643074454,605.2866195914207,-83.62622652421464 --34.0622558292896,-733.0400551681124,-838.7969724857508 -455.8786139475303,-7.077695289400481,-126.29859476964089 -459.01645730479345,531.0257979822195,-682.1836646612928 -220.4502989552825,-729.291835444629,502.75017205809127 -313.910312534279,913.2292421669158,-862.0839672871576 --885.8905576974913,-435.6258506135997,-476.5886325281881 --506.04240185600037,812.5091610420734,-500.9076003009878 --456.10054774273806,518.7965248359274,-100.52031509892004 -553.4211139103625,-869.2676848712294,-24.8576126532314 --932.7727996334347,-874.693593089291,812.874906688822 --721.5092577648097,64.84136455043426,-177.80879479858686 --305.3133474823146,799.6666913745448,-956.353206449021 -327.5793723511781,926.7888684271009,120.33636692368395 -873.6449240661836,-895.4842414279525,-162.41336185167722 --479.6844180758977,461.6419299614595,962.5941809944934 --486.9398751115044,308.349202948149,-603.8047344805198 -130.66050914321977,-72.13502662332758,944.0106592630741 -217.05454539293305,-300.98725582636246,-771.8084302241332 --697.506342530131,-549.3661400975298,-498.066677319404 -701.2321156822757,122.4455765650498,46.78182274873279 --770.462256261565,720.27938669887,445.6286064169674 --864.6632761999969,415.67019445953724,87.07643468529204 --836.5493085064435,-83.39871694268709,-30.607425739906034 --668.4509196734484,891.3962940005647,699.9507429613238 -338.04467465821654,-75.40887799878556,-176.46891683098295 -301.9469343019084,90.86373881381087,-875.4537882362288 -25.005297540663378,612.8072344656789,-81.52024480608384 --896.0868448914632,572.5563987680662,-597.2724357280513 --482.7583302239225,-670.5872931354082,-339.56987025700494 -513.50301137727,38.77171900787471,-590.2374516985749 -755.6601563040817,759.1637099030584,741.1568500920139 --522.4075772369215,-97.5213116380238,969.9793122817503 -544.0249526199807,-945.6651575488804,-869.5908174790159 --72.13724637533448,818.4404117231204,77.40359590542835 --4.374983931419592,-789.0526000867388,313.560209448588 -644.2063212004509,-239.15998498487534,551.2237018506548 -928.9533078016232,-592.4670817446217,46.65926238948259 --425.72408383084894,585.7088380676787,155.18673176231505 -269.16483510060743,595.8283192317881,-208.05905467509024 -830.1801368140864,66.0577344922799,-684.090354329304 -391.798236337605,586.5227008765089,-366.4766458649467 -714.358513997506,812.2865095315328,-446.1910252443821 -967.0429454304442,-718.5769439024832,-595.9686631950201 --631.5503215239478,787.9794200157407,308.5851046499238 --695.7914335554542,-119.35316326330201,230.59605013960413 --833.0718300212334,764.8327368146774,607.2070708830704 -10.413547153276454,934.2532305183408,-164.47804144980057 -968.2206380729956,335.8399976072542,269.34254650788284 --668.0902094084299,763.8555166092879,-145.0206241587697 --675.5331884350412,-974.7849600484819,119.51136727676521 -54.79924424535261,438.70724473831706,780.5161060356043 --841.1868307139409,462.9929806807247,-625.1761118048355 -716.354106314328,638.1270277233123,81.58750997108882 -420.485597246623,-371.29977363250316,-57.664202134370726 -643.2737954209433,-81.46960565357222,-284.40346934911645 --11.575105499400252,656.4985048744368,-329.5839052582545 --652.4768137285124,424.0280406615616,651.9564254161637 --798.7250429529333,-520.2517744881105,-716.0560204780122 --304.1171768356668,-99.29804218917468,497.65267392661303 -302.2951697633482,241.8571349568624,-295.2501067806912 -682.89510616952,-57.42566520367086,958.209876030309 -268.2842765914736,-747.4705168709945,352.35512415086805 --349.791969136602,372.6543933721948,-860.7177036751885 --650.2371256480812,711.4745178115727,-545.6408859529702 -674.0822504858802,-441.4478230911791,285.7638201174152 -388.30114701966204,25.3095062901059,-389.3786466065375 --574.7112472578078,-933.6212908751476,-392.1071975185524 -306.325581062566,876.6096368969654,742.408964526104 -532.1295530706052,576.8946865065973,329.96980695199045 --479.426284867994,814.3900614116596,341.46462381166816 -120.88126196087978,-778.0210615730379,-105.88891238714916 --79.2834575961474,729.1272190453399,93.29644037557705 --239.19890205918068,953.6006570213187,-778.5588133473686 --154.90314337611073,-915.9506496571894,479.8082415338606 -836.1531043983014,-439.9253408990211,716.6833535982419 --415.5635390762045,821.5403232878305,507.9238071935679 -609.8135536828772,-963.986888799091,925.620714148052 -453.34198414064645,-390.49780922773334,658.7893297176938 --436.95760317014015,745.5076791322558,-774.839219176126 -407.3719549215914,81.39695328982066,-806.9310596091184 --516.212343482322,-975.1919274453704,-62.46406907098833 --397.4694784799992,196.71496859551758,-405.5243845827656 --400.16177698603065,486.3863974632068,-903.7143280432931 -805.7899903839746,704.527748782363,335.609366452813 -186.44314021476862,784.6049962793045,-629.3396409425711 --842.0616756183427,-520.9796601809238,589.1565574003805 --930.6594665470334,165.61367016697932,990.8750323826198 -711.3921876750787,42.891378087178964,-872.7181814267153 -662.7470287714198,197.95701635442106,-770.1340058808663 --812.2854303532877,819.2536388731849,338.40052587615696 -658.573598633511,757.9578005645346,143.5447040966444 -34.89270351008258,-139.14517935801962,-366.10682441776146 --130.8080782825765,547.7593114603128,203.84686203026308 -785.0465799096921,-113.23997124162452,214.17915743750814 -262.61510618397733,183.39432461265096,405.26754617103256 --525.1330632503875,24.72755509158128,-791.5503943833046 --230.97734471037495,-24.66586275747113,304.44851909094496 -901.062105172407,201.3021330967117,487.1878323531196 -12.532118990405479,268.2080627526627,-858.1355677324532 --491.21683831630605,-276.2938135897226,-55.013289986972836 --908.7025089952325,-719.9518048933646,-446.3713844173884 -943.0653818021012,-337.30598579389846,-35.91788377583498 --607.8045745232141,221.5601421515364,-438.63356896805135 --586.0148431231464,33.14525689195807,-988.9884016791584 --984.6719347015494,-561.8623817962845,-926.5572749983577 --783.9484917386172,-322.2787013224968,605.1713591596258 -144.09728673860172,25.335451912832923,-413.02235358375674 -863.5074388656328,-205.96991752561667,-825.8144664084571 -234.1330322356025,-772.3232130467972,-309.5537143966159 -14.82387743561776,748.4450493703516,-12.90683931976264 -404.5175320633284,985.6336779981407,-737.0217602040368 --450.536948960961,-210.84784880470716,-156.34364292233727 --177.95784946890842,815.2220051131098,428.06528893371296 -215.8104281814076,-381.2545642744358,647.5807684425895 -910.121022969978,642.396565100453,-996.8697896170542 -272.8027403668141,-897.7292371157986,-484.7855593325563 --880.9505993044567,207.59090589877542,373.1798269852136 --771.0247238681898,-232.32223391004106,-87.52698208891593 --261.89395647816684,-757.9499990296139,-162.10441962504922 -502.3560956168362,-857.984670933489,-839.6399718361931 --290.4574163280315,883.4514232378501,337.1452934458282 -357.3399133451296,-276.16001832427,187.3215824170768 --979.7376319445133,272.19209281908434,826.5738951524734 -225.14693668963832,747.3971869326901,447.9461109321876 --758.8831671926196,804.9066145716833,-867.1123112884502 -67.93494509552761,-715.7257524130846,-976.5867785381919 --155.93147974472197,-409.91858469168756,-27.999012404793916 -154.39977346910155,-912.5218553821053,-753.9934097525088 -117.28479290085079,-313.6652936546835,458.3469750988959 -304.58329718387927,691.2087259798136,384.9856533384507 --140.13784521970376,345.93324478886484,-449.237651489163 --387.3730024435746,577.9703198415866,-107.1609671968356 -596.7606810367049,644.8447473365568,715.1246753225676 -833.2704716824146,-138.02955897340757,-362.2663633577223 -164.39749318822783,-257.65515312474486,202.148333600466 -411.1717252876492,376.81003698427367,-250.89422595975725 --666.2795966024944,-138.94132307558493,-714.8117118361826 -780.1940703676166,-308.2450785242852,-691.0805055533524 --949.1044801884982,291.6447725729686,273.80463490948637 --318.79166683741664,-856.5762223046979,-180.74221020953598 --377.56500987321283,354.24127947001875,211.5584989053807 --270.81254360492005,-564.2148914900198,976.0719323111837 --91.99675760777029,376.5484715604741,-718.8940648432784 --28.820600681204382,-944.926560261069,10.910235820899857 -928.0348142354046,-231.58657402839958,-922.0079748501769 --938.0884181613129,-224.02648010626103,-679.9501270736118 --953.2958073436282,512.4272279003537,-82.95398223621862 --421.51045605469096,800.1663660329614,-767.7220795989488 -911.8376579106384,-372.0665652452943,776.8073446173626 -205.88575295892315,653.414719482975,968.0263264209286 --423.18912436250855,922.270970815186,-221.03621019515924 --228.9761905261554,-319.2257914909886,82.81521469517043 --691.7099136430259,107.42297071602229,83.40962482000805 -523.80362520974,667.2999238751711,-119.1172993751519 --395.3335012970125,-481.330205365811,-610.7523265902562 --884.7048356019502,-315.1040423305733,-459.5046157384335 -932.8347717328147,115.4176525000878,-305.44592193898495 -160.93520198739202,-721.606597308609,-111.91250159559422 -252.46864284212757,-22.20433641509726,-196.4423986913515 -987.6967777993964,760.629524297854,246.81191631888032 -138.75472236456562,241.32095964916812,-597.3757843551334 --209.7245134713628,-921.0809342182014,-48.907925026346675 -86.04916791532628,-544.5005277935809,928.0576943310275 -818.909221874484,444.28647091181165,66.77325753072523 -739.9383192953699,-738.6953123530742,581.0195885497699 --750.3583720663034,588.4213250988109,-448.46486349728605 -754.1811620363778,888.0841876507957,-702.4080611897687 --74.64878986921292,961.9747563253702,-33.18512805370676 -727.0950450290902,177.46304426263964,-249.3401841607963 --428.4328889482596,-593.5538178278255,523.5963827553944 --226.9189863539442,22.550924401502357,-15.349039997636169 -154.55805846626254,731.1542912491045,961.4786871668589 --184.83158285236607,655.0378442126062,529.0555893094354 -147.05790291114658,912.0942872238661,-599.0509689431944 --781.4715793807571,707.9239339108442,-121.70036673250343 -693.9377084141208,786.1804103908298,-875.0848127618572 -766.9295259721214,-103.36188926115562,20.86497800846439 -253.18502218642038,852.7652134601735,-961.767811140472 --46.3130633643658,375.4440848611214,445.413915396457 -385.06486307421596,-731.1297411837563,-401.2088232566375 --282.5689491659731,608.8744153590101,-442.480255170894 --578.5900722655937,914.8960380761923,-982.2734297730622 -995.6417113639563,353.64259771479124,656.9385988982342 --410.76120730761363,-971.36944466588,475.73903712306014 -668.2891940013515,480.9522639070383,-714.2994253983228 -506.8558445139381,537.8455642152819,317.0810313401098 -532.2318655911724,691.8428793554642,227.20822847491695 --822.7905720606418,-24.74438066557832,-844.7013306567899 --184.91393793513828,-185.78702174874468,-867.9803117195169 --302.3589320610414,-778.0038024173704,616.4704200184444 -895.3760519289415,-855.3670494841228,910.2304145834028 -45.15319867349035,-400.8686440922522,-846.275849447673 -1.248536140835654,589.0310889814973,414.17295453339625 --899.5479770720525,-854.196329264193,-194.25343473472583 --409.4190119041134,-535.2313538879043,-437.99100218257286 -606.9654865937694,858.4561072637077,-189.79461094486715 -812.2220042649942,-357.00859750423604,-47.126027312416795 --547.9420043680005,280.952084351688,957.9622303496178 -206.98619208675723,-284.3718317729023,295.63489198105685 --754.1586430692248,777.3181605307973,6.167901559672714 --101.30051592071584,171.72957690703834,249.5677255788048 --856.4483875469739,365.2344424468049,-516.1366393689409 -427.9052650131796,645.0695887683935,607.9170151050405 -105.00193481577821,40.339784621502304,-714.2480773211765 -550.6923008062711,-457.1812391065713,-6.609154364106871 --431.45181414496653,-732.3432740006137,259.1153937834731 --891.3359303541923,497.29046825239993,-364.8264094777667 --999.7306139910294,22.258278474459644,-906.2961829447937 --447.6608843582011,413.9529749114324,-874.6207567562683 -678.6769847120047,-992.3601546828338,-506.3522615961955 -481.8081123041429,-367.4597005413864,-796.215223867973 --279.5321623991442,-459.2134272309489,685.4238043211099 --373.3041648297137,577.8649435520144,783.7442896214695 --132.36516084694097,819.886287708784,-245.36389207361435 -928.1568329802164,-821.4209509488542,374.0385330064855 --12.371919086142611,-224.7023890887059,265.4237574972019 -407.7141832686623,-991.2734606993819,-666.0938225056026 -426.0921012686374,332.7708271564129,932.0950102573545 -522.075580501566,901.5454154626761,405.08100306961387 --403.89558272111367,-789.2701554982871,563.6477266898712 -288.29844295183193,-903.6279752134076,-279.8990681980433 -913.5996309685722,0.8022914204024119,-134.54172796059072 --84.60078968141204,-582.2345519896726,-262.58565827040957 --260.3734880256468,-895.2899596250552,535.1352570358365 --166.99113619224204,644.3597736328466,700.6960022397907 --576.0118906026839,314.7069643402572,-55.4363916740366 -760.3134758429701,-568.5186416470917,355.62640062008836 -215.50424450544506,-409.39704485633445,-726.7981926976547 -303.27952095455316,477.1949162646613,-368.74531247330003 -289.66520804462766,-209.73818477699342,426.4137665652354 --601.5694502118938,780.4300052723488,-425.1808070688405 --264.4280244876942,-883.8160958393005,-776.9755753574473 -31.723805424656348,-464.81464654405704,670.9604514843888 --970.6132226900924,-241.8119026561276,-325.3089064618147 --961.344738164798,-751.2632019989795,-172.7146501627294 --14.270831105106708,-191.4205054902618,61.87535682418775 -190.263349811363,-980.1523577443287,-71.80968109299226 -926.9984817751767,38.064560259097334,355.08453491790647 --376.2722841662336,547.9827563055251,545.8429637522302 -42.592095308277976,952.0276465584273,-748.8995704746933 --966.104670220838,540.3164235141919,614.3110747297651 --759.5855417588475,-468.8343340827879,-964.8952732667422 --413.38277843887056,546.2837478373431,35.921055425157874 --303.80881366342385,-256.52141018733937,-997.2927485690637 --400.39894486952824,292.91748327586106,948.3888876327142 -694.1216539677989,-952.8100707089418,797.1212093496786 -566.3968265972519,560.7522471419609,-84.00848199285701 --203.9894140909944,-394.1685423336147,-868.6102820912685 --543.5292730126018,-506.79273004395077,-31.845860579596774 -494.88881319338793,-52.380343204106794,-884.3111011056787 -915.5796019764077,885.4486381882245,570.3790862968167 -982.6558031284412,88.9646656005259,925.5367005064122 --848.7899187664984,-268.63850347725736,-549.2374639864684 --608.3338317314599,-718.3941022146478,244.82728313199323 -562.6437114946102,156.59679884072125,-706.0745808235806 -622.2475398669419,271.90941432745694,-223.66858774600894 -348.26059107212586,-480.1900415143343,-309.615583011579 -834.9716862639805,-418.9909886571593,-60.023463684126796 -780.2822747920293,415.4427005350549,-875.5935476705945 --705.3939114420593,-984.3168184561664,261.84358045832687 --104.65314917916339,-731.4502981954489,915.8682421135409 -59.31944789123986,-516.2134117742216,1.207142309415076 -359.2406654702156,-847.5215640528711,-450.59236990421607 -613.9309817679873,-80.67025919467756,93.15428406458977 --134.36799558106145,-912.2001147139897,-668.5004403596881 --108.91672251621821,-581.6290691841443,-900.0419426806425 -687.2993281036474,962.3850583282317,586.2857479934789 -707.569843409334,-516.0457393659092,921.2539510263996 --606.1485910931433,902.8596207236646,989.6385879319021 -423.44561149209744,962.2874635836438,139.07955913420733 --480.9164336478193,-126.0082286687583,187.12187075757197 --853.83687594597,244.68652923449213,962.3556735245891 --619.7847004325447,585.1902325767667,815.7975875592388 -887.4031856404417,920.2712088108944,42.919277442943894 -954.6158159830075,514.6204142688778,-676.6571275260762 --46.19978706406005,436.6623507440079,-505.3193683618333 -281.23036709777466,333.20095809323857,-674.6005123828681 -130.17062490551257,543.2538219572155,-2.2086709281161347 --975.7937664477852,-981.9230618414157,-285.94131205997564 -852.3881368635639,-542.6464407927824,268.7273777433743 --555.8482586133589,-356.6600206809028,696.084179202968 -457.7228845398938,-809.2014453735787,-142.59595802713272 --941.660472709471,-38.21970679398203,324.86802340213626 --762.9947528036969,-422.23012218166866,-204.3267489956861 -839.0620493120996,986.510030845928,-910.1774020087682 -522.015846990784,-256.55186719531355,-215.08362754103996 -508.5299466940453,836.8528642908173,901.8571890050969 -154.24517207664167,-285.75768139899435,575.0981717175584 --497.99723347539947,128.14805766703557,-282.8430769502537 -313.2621474157522,-519.2021742129862,-616.8141085303484 -836.4781733508742,-796.3926341009262,11.915815469863333 --558.2944340739822,-922.140073348665,-927.9623634171472 --649.5564557883454,733.5407090120004,-435.04251204594664 -900.9183411505915,163.24458597838702,-126.77162046246781 -160.17766933890925,33.39677045253552,517.5525075146504 --435.0078680542955,-293.8992167993953,788.1886050665014 -892.913026300811,785.116454972949,-161.1040120853728 -560.7310060137634,-47.3285333978024,-4.920295707795617 --590.6397818854321,182.260606517033,-627.7282044933041 --336.87060186561246,710.0604032398703,-585.8483815782895 --857.6834296531343,-861.9848147743674,881.5690410062159 -13.840875923669273,-181.17585636596334,621.7571620158369 -671.6518558210321,-335.61793376879075,387.2361149475905 -542.2456317037731,309.30137373190905,-696.8098503998012 -751.766167034114,78.18910547201745,-435.0551472599926 --149.54362912461215,-924.8578192021853,-744.2663975551649 -531.0935010317216,-999.9767304892678,-166.8683430354156 -45.020362171176885,-890.7311599980554,946.1563259446657 --547.7493375006561,-391.60256072743823,-392.1149754899453 --539.1666757653002,-997.0523558273771,458.68958817599264 -933.6909995985707,-551.4130334299099,326.09438360684476 -483.79265391743024,696.8507581810495,-154.7416059727817 --394.13818871914157,-349.4097319539378,425.24266619702576 -633.5589330112721,-636.7720644867948,-258.11798368446955 -803.8803934983,613.3870393894786,969.7168055249517 -508.4965193641615,-213.60959794415544,181.27566798927546 -322.0285084946406,-843.0883673657521,88.99391820773008 -418.6416569452192,-665.3573919978792,561.2634348511142 -167.54556102822335,904.4435713951893,-915.1554035862166 --469.34772488906606,203.10775859964815,-406.8801755881386 -428.84832814248443,518.010565043862,-794.9680718670511 -27.708928413535432,17.781111182111772,-261.4384595689179 -865.8497251393442,655.0126397464423,394.41876381927364 -428.65327146999516,-76.56771237376176,841.9890421931518 -389.19085450657076,457.9621233116329,723.3818075746906 --451.85682131561805,614.141807733406,-609.518794087016 --309.3160955102243,-328.7790914603146,957.0509367782811 -713.0744474958537,402.3397231805195,454.1135232307802 -124.1455888051421,894.181334217038,-7.482494235276931 --238.96458026021094,-673.929326136818,572.4113045221159 -468.88786415118284,-231.2899229517302,-949.6131720815413 -677.9946554360215,-977.1640330918527,407.3995592581018 -940.514219452114,-124.67734370359312,-530.0531900080945 -409.74202008676343,634.2562840311703,92.8606321556947 -934.0705505122924,-896.6625566840778,9.591196609056283 -436.9078946451002,725.280942298358,-641.48877618442 -600.0069635273628,105.4141514370906,-206.8926360200736 --736.5699428418129,730.5915178178248,-685.4535836405694 --380.42428158180155,-419.90893607512623,742.8280683817086 -345.4059884177959,593.3627943827446,-499.06420241500206 -249.74819921399785,143.49196628749746,665.6607535765422 -812.1741209625211,-975.6864570452263,348.0398381175853 --896.328401760542,97.71733015471182,-424.73454191264364 --386.44680095571755,-294.08299309528684,242.58489809922025 --331.90006866246154,465.39810118056084,-190.94522885226058 --863.2935993800827,567.5196849682145,-428.483350814588 --134.46624080147478,370.887766443803,-335.087685702576 --886.8286877065688,-252.15790597437285,888.8971653886069 -283.46879459711636,342.9582973344138,264.5643072752796 --602.0157220811263,-163.33227179543974,501.87959672663646 --797.2542048936817,-444.29444782057544,-447.36178306829277 --135.96214481098798,960.73748188437,-864.9949066323561 -37.40198876119007,-641.2706359755791,941.3530908194882 --773.3929905450716,-192.79799527681746,475.7699696692123 -409.10885605489057,-154.54272621213545,-306.9516640945635 --204.7752428942589,-471.44747368272147,-589.3341225864003 --33.920604882220005,-462.93248786478534,-425.0766702054998 -313.5121269491142,937.0746633997844,207.27440111875012 --846.0410658700674,-848.832772291866,902.846441691132 --405.41841938533275,-815.8660278350492,198.08917430076303 -247.29755658053227,297.0096402373763,-465.19594428491735 --969.7786315710499,930.0307389089437,-498.213908617795 -352.0525761050949,413.2597397574191,220.01483415897133 --374.18521157270357,-457.8074924718685,195.3365654054062 -732.191267223383,893.4674578467911,-788.1883911924847 --690.3427748045603,889.4725175661592,473.07045666958516 -765.9876496595462,-594.7347317293137,175.17174221880373 -402.27918883494726,360.22377089394536,-183.69661826660376 --969.210216617383,165.85211360852622,-493.7969216407825 --99.49150771421932,915.1620301676346,-201.92936471513053 -679.6032133288534,-622.9187885014977,344.92099605005774 -954.0139088778869,-796.2137982541265,-983.3601155456159 --132.83441473477126,-814.7490338972656,496.7686993524628 -829.0973276971179,-131.9580545824823,-482.57671568911803 --131.19336198678047,446.895635700002,-981.891676839258 -178.90797896939443,226.583369774758,275.3764937918711 --515.9558400382456,428.1054467562535,-817.2170273364472 --601.4593270663984,754.9400933089639,477.4463014531327 --972.5088919773095,-503.2474792603996,-571.1870340136709 --458.3873439260549,-504.8804594402272,-874.9474085143086 --82.11896680635937,465.46694957233035,213.46344943487293 -345.7433371961595,-837.7016429275217,902.9814203535743 -676.9836676860498,610.1806369913254,645.967610083535 -865.4210162655227,88.50793222739549,-599.4359642647482 -233.5672157050824,485.76298733587805,475.83478670805084 -42.898048333760244,-863.0825613328439,-257.77412313974435 -841.5332169267147,168.89781951485202,76.66388651142688 --462.292971235613,-263.10216016684217,790.6921783063385 -332.92609505367136,574.7740535046657,-91.30915386468973 -260.4944389123159,-503.23278251358494,410.9216605669726 --144.79733259332534,-114.90897037050888,298.64464915376334 -872.5612429378534,-871.9873067827582,649.4864746940152 --415.2337791756138,-112.16109098724439,-956.1733424499821 --397.9078443313739,5.2624852602609735,-887.647845305122 --17.808541233669757,854.2212577168546,-789.2135637843895 -528.8814561510087,-180.65789324801472,310.3474290486761 --479.52680402954127,-681.0154749172834,-679.0747714575471 --859.0161087137108,-628.706590197514,328.43876997793654 -763.381223687016,628.2513711823237,370.26861974896815 --779.1362731777947,-421.62510740810035,-380.3862493550621 --500.0861072047575,30.01131941944618,71.10762975934517 --286.2280496577796,-292.4216825271279,657.1111958121628 -578.5856966393712,-384.4083366385087,827.5768877465187 -905.630034005012,-346.5149159399183,-291.1501024138903 -11.268306843917685,882.2416250673471,752.638866284623 --794.8640748328204,-214.5385134571676,106.74237949954363 -6.264945103080095,-612.2738641262147,717.6335423363093 -353.8815659936747,675.8167497036072,717.5285586989444 -496.7117073314796,-121.57879750056532,221.09351003084907 --679.2691877605137,347.29083494981546,-641.4934885214385 -387.89918102031356,-540.8036784920627,-764.8973996995601 --669.4310197140851,-996.0157295618594,437.4792357070605 -464.8020981167583,29.866699826518925,-677.2743978892327 --832.8913249786206,-961.7420671254259,-668.5036460695586 -781.7110699662935,-516.9263165966365,-291.45734556556863 --789.3090310373336,-555.2773905036595,38.449141560410226 -215.50536619130503,-509.29537166757785,-884.5356815497656 --217.93426174520266,-531.5932581473317,-560.8921535403961 -919.7256054269105,232.6009718514481,113.7568863441918 --168.4497929533561,-142.11133313971152,81.8100076761616 -392.8596140722145,404.29219236365884,-656.6121845891009 -0.2255041532539508,-176.08380993179605,741.0539325387683 -262.8378424367527,65.00813283196362,-769.2107156421653 -211.2757786468228,-765.5921886395331,-325.58684886849585 --714.3160703713363,384.1472940487379,-587.4957723276948 --216.28125362394803,791.3495552375573,-591.3672332020594 -15.610127917558202,-161.456677667956,-963.7519179085406 -585.5162271456256,-861.9081873708005,-51.48995804609285 -121.35658987789998,256.8529132291742,377.26325861575106 --493.45523295456985,-980.0424466831013,446.88732470982404 -71.3131986951571,672.2354064144974,642.7767258013885 -686.6523355757663,-29.810680040919692,-332.7432083262687 -583.11640518274,-97.4117739414902,-633.1156071931309 -709.9480391229488,765.1197535446945,-67.38048771965975 --848.600545380425,-224.34782016613758,607.0753189252068 -803.5480570924574,-593.0545150048083,-866.052775949457 -754.7009062656773,-221.1901220422494,83.52192853512656 -936.1316241015179,-866.8705441715542,296.63601490419114 --851.7891548502658,-249.06214306699928,607.6290903868935 --133.05553448873115,994.3647078059007,118.11856989320427 --357.67569472809305,-559.7773481904937,-298.95893142767636 --254.93345248089838,-862.572644552078,-260.8516011464536 --71.5229605215502,445.4755044776093,313.4589694432159 -417.53131045830855,-983.2726362462859,-564.6652008389278 -323.3685767997131,-32.02126364050571,-989.373048663308 -608.9892848636446,545.6191465806749,96.83832598712524 --867.0733484474558,533.0300990651692,167.42717546272797 -563.9199543159184,503.49398479168076,606.0041439156741 -36.01613280924971,-719.35096361297,342.31494675937734 -240.9475701039412,484.50637439817433,-660.2379878985294 --610.0496001994215,780.8190344386569,499.95559690414166 -816.4569774006459,517.4306423278415,194.31061198060365 -308.2654740557473,778.2558478800199,157.61350902388108 -264.7826486567749,-687.0465679927988,-52.15755976779462 -432.794223916198,-458.1146033672692,-595.4916389509301 --372.34638355116886,-516.9987440143332,-570.1747259272083 --150.29831426382611,815.6770277670682,14.1192934774366 --624.159238369354,-846.0566612382519,392.3122902758505 --234.40247112722432,643.6618931707185,319.0215372815403 -592.482901082737,-456.10792116310245,384.7178449221162 --471.87603061256243,878.1369589005833,272.74856306674883 --350.9763996493158,-460.97627541545467,-618.146829856713 -389.28191778745554,-562.5687740041453,190.60653185497813 --470.7299461492853,323.9378895877371,629.8794570810785 -556.0504862893063,521.7026618615635,-624.5551886154958 --823.2301060309626,397.8976569747713,-263.30557241129736 --135.30754719330537,-937.7018144132179,-480.84710144990163 --932.6471922510719,758.3715452024953,-513.206633562939 -114.67433914601611,-922.0413586777391,333.6947826113162 --353.9453084918123,795.8383739153317,776.2363778680717 --349.4187632765045,801.9217913809357,992.3153469975575 -650.8313282478962,689.7426955104579,-501.9825277818202 -153.4047977155126,-865.4881720652643,-810.1641263566605 -997.7852240665811,-346.72150114817816,496.36782409769285 -613.330106053633,716.0465420144583,995.256594804313 --517.0070294862643,-919.2983462806005,-177.61696401082804 --739.8386603421061,-955.1482216758898,-279.14634571702777 -567.4765021504729,132.36138245014172,-374.44402157929187 -308.6840109854395,-535.9636393823786,-971.23710785583 -528.7067728728548,247.48616972801824,524.6052490019199 --922.1239666246688,674.2392556613045,239.0524000726066 -126.7907014252803,249.2280962290631,728.8664937367282 -173.87301311781403,161.90075977635865,981.3583141315316 -513.460334137136,-115.41238909772949,414.79400006585547 --221.53905661642307,-542.249075033002,193.70375377551886 -856.364196227903,858.2790400309254,-316.1894437890194 -55.35493244339,-576.7282028602776,991.2622189977669 -962.2358157358715,299.0178594148947,608.8281193549467 -430.2003225674,186.31643807893647,-893.3040060222046 --90.4713148946779,349.5726043348211,355.0632277673694 --253.7547631552328,883.3839733160612,-665.2859355264379 -0.7188924311212759,381.7679531016456,394.2716117836185 -297.2779135376311,-449.4235730962797,-687.5868626267561 -271.88065365342163,198.60423227887554,-641.287979421518 -410.2782911411266,-89.6560165326872,335.52118320630575 -674.7341595403013,-660.5431428461536,-961.7102640063266 -558.2051727915737,219.39485030523178,399.2791392442434 -676.3099499772852,605.6218696490009,921.8402938576494 -71.87015770423636,-23.008734680189264,-196.22560021853985 --692.617914311591,145.21446576404492,-445.9749513480424 -842.6150244259509,166.38160855419505,185.68036101622033 --290.15067824598,-896.021296044585,-936.5124692540228 --153.32971169360496,-830.8692438055243,213.6939110802782 -761.9460112793149,765.8296330374444,318.0908202644648 --577.5363370541379,725.9936627177442,772.1868706264163 --606.6928300940826,474.85217154135444,-426.96090214575406 -605.2806247058593,994.4757998072052,-939.9479893412143 -794.7317315818639,245.26106719731615,946.7652383296422 --69.9809649471448,694.7758611427475,-875.2118628034456 --329.4418998434086,-865.9669244975801,950.686266958141 -633.9478145436735,705.0948424919409,875.9304628677885 --829.7930277604293,-228.80481497333324,-857.9302219119958 --578.4137968999428,-541.2684459246552,-61.785577904842626 --462.8756650927148,-798.0437863644778,-665.0178218117846 --705.4488728958181,946.1535958245966,518.5850138369472 -935.522930539124,-120.51902698418291,-443.26303667468676 -596.5863944183734,-347.4921639177064,-401.23325258930345 --534.9880155843376,-740.6420435515292,-487.0738779664681 --289.36050305222466,347.9884162914609,-874.8703155610968 --578.9861206693141,618.0472805833529,-706.1561528324585 --314.7097069549569,729.3178437162801,-690.1493777131147 --834.5263287636202,-30.92400983997834,-395.1609774429272 -126.81672896770829,607.6097809669502,-725.7030236945136 -161.39816910857007,11.017520779727874,-711.8424279736009 -247.99697105796486,-452.7191642784567,-24.33136291197502 --835.4553514458762,-80.83188557275389,-387.0730639143594 -644.7624223707087,-886.0425460052635,-162.7854501633401 --83.13715173712399,450.01215259823744,148.57515018042204 -334.42467438836206,554.0985713035122,724.4059473163775 --372.24900655505894,76.0454107278058,680.2161568783997 -978.9022619301129,779.0386220875262,-257.06547475124637 --609.6669655626991,-21.214925186822597,483.28290367208456 --14.861858493404839,-33.63827337266298,676.4608421636012 --277.1924418656273,719.5893496232911,-186.39039809655287 --343.53378864332115,-92.02017760060198,524.893917349737 --747.9959442720115,-607.1615682559652,902.8896513261839 --649.0167452372852,135.45463586210917,158.6289333238758 --20.751075899510397,289.4904971536371,-540.3465484047631 -105.32453555349639,-255.6534895062057,323.3345192583781 --717.552913253701,141.75483367895254,-629.4592892333526 --442.7138737699272,-562.5803993528335,-634.3244402623658 -651.421903121334,-428.58486467821933,854.2475637288987 -939.8530506903817,142.5209398741947,-713.9977546685473 --250.90351324083747,595.464526696428,-265.21854260585906 --825.9655633944225,113.56982185637594,690.2417029920696 -591.8527742870049,-649.7537197392935,345.5292288249334 --558.9914731287058,-563.5849308956556,748.1435466103703 --500.66209451953966,-473.50530696397766,-998.6932184774009 -741.3380682510353,585.1896264182694,254.65787018135597 -500.53152787768454,-695.9028651510164,-83.35281082484914 --297.5612253024382,-812.446947485967,-27.739029570151843 -841.4793006852708,-919.8817618986111,-417.0781730124122 --584.918127588593,-523.7066926686074,816.8691037587505 --63.8618915314197,-67.40117412036238,521.1512849105645 --691.0155919901483,-25.46929179989843,-140.0295717578806 -193.8213810933123,999.1154065008773,538.8977881640942 --204.26859396514567,655.106104548094,-658.5832733750397 --939.0726273820798,-591.1032550714539,-319.17688777148066 -21.16151491911978,230.25828108239966,821.2114344288434 -19.708019100915408,2.5512892514587975,-899.5139803540358 --930.1768946875524,102.31992383274405,-123.64277350331099 -678.3607899605972,-678.6408305763097,-950.0566757659008 --101.92246413974829,-525.042886495485,-900.7712533223252 -449.19657369525794,-776.8140000855051,216.6390000155434 --437.90049966622166,-653.007899289956,-240.49695416136512 -602.8915524459073,-215.81284619085466,501.5392984221114 --749.0274064016986,545.5428393301581,-526.1333501867027 -354.7862597777455,131.56310968199273,858.2894344233746 --225.35496404937192,-867.6696223311192,-961.6890288974942 -653.7171219455063,49.47127532286436,550.4881036698985 --531.1487999769706,-309.8325089735325,-939.7922555773621 -922.9846491482242,335.73581340162673,866.4101755186125 --469.0071851418553,222.92722245132177,356.9999365852757 --364.90059948482315,696.21847003126,894.3229258004956 -769.7102353920086,478.13395187874517,-445.070640550092 --436.76791578873656,926.7206408920758,-979.431008128616 -432.0999464842889,412.49232511052446,245.3790818995949 -980.2176921737316,-376.2411284725496,-320.0562724135036 --842.1211941068889,-114.40372691252514,-477.9029475303038 --313.22659564471155,669.1435805112553,870.9690270549916 --628.5338559896288,-254.9821368930683,857.2611242307883 --876.3830786215548,-815.278943777243,-674.4180215875413 -190.42566825374956,-699.0554579880051,936.152762901467 --106.57094548295936,3.035920700332781,-506.682768389187 --58.07949513053302,323.82726527402315,502.3542739080856 -507.73616541982597,155.78222538817658,808.7195499877143 -634.8156946122187,514.0962293972509,-888.7889566390787 --986.2440755607014,-575.1054456090541,327.0471878269045 --177.60502223490835,-195.18748140137654,769.1737764592274 -791.1256962636774,818.3505281071714,-372.24384696994537 -382.1116254785236,-456.73363745126073,-618.7803338511004 --630.7350853052616,-315.7847582728119,-140.0847604403566 -661.8983421101368,-760.2178130545758,469.8516947897883 -62.909828378610655,-424.109314648015,-14.360830934350815 --400.1158604459547,192.16391047661205,-132.31215428951157 --671.1889418422425,-766.8338508886065,93.39136414426025 -804.8260665722069,-312.08462688462885,466.00021444524646 -317.32270987953393,863.109828618962,641.9620345982817 -133.21051781092592,314.0609964682146,796.7729331680698 --200.96243082613046,-346.4105882844452,-978.3778327296073 -653.1021483829284,601.9614008067297,-791.0909637996972 -153.7147622654004,-72.03660366622523,-762.581808981777 -961.1364541214471,-570.6082250732891,-865.5316398188777 -189.69475900381917,477.73335426606536,-935.1131079056261 -317.43527745404435,64.58375190290894,-793.4699822499032 --654.9522461072759,135.94859463216108,-407.2847729734233 -876.631457302632,637.4804589681016,967.134413027326 --480.658322099172,939.4472655959541,-137.53226041688424 --304.9624093724907,-899.3009460612935,-894.4694842807947 -384.02251189330946,-84.14201113194417,-546.9567479277886 -227.94061265046525,-494.28376349977765,155.26350868884515 --281.5825060346193,647.1044532236381,641.3923215335585 --45.29920375519737,-298.36178132996884,-274.8804068818109 -611.4290513364358,-343.64103440477595,-581.8812525863079 --830.6233162493863,-66.61375823118317,-35.73580216031621 -681.8174208058142,-557.5226071078721,-238.01745266320017 -616.8114777873818,647.2472214979471,-230.77784804246357 --81.75195342663824,-393.4282183014342,865.1097568386242 --762.7124685168394,867.4988460029401,367.7329036706865 -63.14430537346243,-934.6818784310083,-48.80761635598344 --184.5037899945354,-677.5623760497549,312.81920700131377 -942.3018147365715,124.37762212905022,429.50655288789153 --863.0990948679664,-164.6660083660105,-767.2830296710083 -225.59167107302073,876.9643164283091,323.555464943277 --846.393903371157,-290.6675900298343,101.32675888170297 --193.58448773349562,667.2880209503446,629.3420094199785 -223.66204020644295,-253.08410973458945,-489.32725247351175 --788.2513635737414,-290.2046330268919,-173.65496558456095 -351.6458502081473,316.3196485951469,-859.7837207174861 --209.4813691376844,-636.4422655652761,-686.3745893663886 -654.6042994744919,-916.1695665674849,-161.63424819575732 --663.5926884669636,758.660431356948,114.08102655007019 --537.2387272463039,4.854574332752804,462.9727194062316 -916.2360178388676,-559.107991509162,772.3635442586904 -868.6082283349806,832.8410890641323,270.82871372381965 -259.6413088694153,-193.57873363235444,504.79576460757585 -62.58803670186376,354.8761424565889,-143.08419230240906 -462.9929280862782,648.9430352090981,-707.1274867943678 -665.859431148456,80.5930635806144,689.3318181804486 --137.39658731797078,-241.9190292339299,830.1214650344448 --497.6614649031974,688.4246505722863,-31.958854981191735 -28.19088510251936,-383.063437021032,146.08440123803143 --349.5776074475774,-921.4611715166953,-456.00278931128787 --987.2419131868187,956.7095741137132,931.4944196394949 --209.6894050553899,456.74170867929206,-308.38780317915007 -342.18631417195206,610.8600860919582,893.5124893844816 --199.57544830065603,566.5959659120954,-468.14309873576246 -980.6646075872966,-948.4608024712977,207.05761300224185 -319.0119633026543,376.0911141482577,-759.224842421822 -877.0595669462609,-637.6334418998345,245.50680647968215 --554.6478417538301,-385.5671659574582,92.91708345624875 --165.61316287084708,-679.5487980469875,-658.1271951583035 --163.71042367440066,514.5659565510014,795.9292936955771 --831.7446754812343,-213.79218488119784,-799.5088725542468 --966.8150387348043,323.4373652879133,204.8988839331755 --673.9617723702277,-532.3743338138718,-952.5844927109632 -669.8944113888074,949.3811920971029,-729.0809264106184 --537.0495724694038,736.8190478938682,852.9275959123697 --160.74523438637937,-898.7550554618517,-921.2163326143611 -147.8997321380209,-214.20978221364192,-942.695144844691 -166.50478462511364,-977.3949268219551,574.7439162985459 --387.13435459325683,-919.4839939815358,176.7044419663066 --204.63117113389058,947.600826714299,88.39732500740433 --449.52163792598344,418.87772926794946,-457.0159949145774 -808.4865828151303,-250.5560589852471,99.73712555241036 --898.8537923515423,-147.75752409553843,664.72707932199 -611.2976107266838,-551.3628822929475,-547.8418579788747 -634.6106244264736,860.796840338651,-809.2781574539929 --99.88272114754943,-325.091442071542,741.3769109148786 --832.9501706399625,-577.7481148839252,504.93667517298877 --897.4123020375688,-14.929238571421479,-115.78593064055997 --331.1976420225027,-210.8553693621525,59.88117386046588 --677.2652832232338,143.99175656718558,610.8646585999727 -520.321859580318,-692.2001906124526,-701.5010605170521 --463.6512645101734,-277.8505473179256,-183.0888371830348 -359.3944336666905,-886.6391356683292,-930.6545915478672 --216.17887411218192,394.32738427596087,-613.1293140870348 -283.00896251250333,-480.34372411940103,772.1722176270328 -791.379888533233,-405.42559143734707,-540.012492073519 --177.39205586753747,-518.9368296397026,344.76768658340734 -652.129369096571,346.1842618224341,648.700894498699 --206.01567558505178,-687.3660585822784,475.90189479518426 --279.0509897168922,342.54165045826494,-458.7121160364686 --837.5407303866547,985.1635909755269,-687.5969841388014 -976.841987926962,954.5598651328946,587.6362078160794 -318.84592416399505,155.61410050216932,732.2030907556693 --421.1209567610241,-64.6375750302459,238.77993873300375 --177.61904826101784,-145.0270918194641,-339.4306649958312 -128.4636333690721,701.149056030232,-596.9432439873743 -868.8660775068829,378.17530749645925,646.5464253600603 -112.38138526002331,559.033402848127,-967.5992053210656 -636.7608495590705,-919.722281829267,779.8267527257251 -983.9254944772865,-411.8650756464443,-579.3628874284127 -530.7267277160813,-493.94731815949353,731.1247663444069 --794.3148156850466,-748.0896072412835,958.3031102012312 -347.67779654000924,693.7744488579056,-351.34124529696396 -352.96749904120884,188.48365461719436,206.30024024589397 -365.0649190754432,150.71834625819724,-141.8752613946681 --448.15461123890634,537.162661826404,-547.4551399936277 -384.7086123088284,-533.3343547013467,250.66033990890787 -494.15653425805795,-562.5722221869216,-880.1133982773835 --738.0525140116519,211.99393454205097,698.892812451471 --910.0063575291513,468.3025180832924,-317.3627080998957 --42.94326016095499,857.7190996911313,-336.05699052830903 --69.32613212102785,-972.6351704786377,-836.8025599903233 --482.8168177304319,-944.2955183578512,262.7506520965019 --147.20328639675495,96.29040545604403,-650.7056282073409 --408.13594112676776,327.64894970545015,930.6054472607996 --899.1664527955816,780.7686417105322,153.76240262241686 -127.83913351124738,0.557070415520684,-861.2118281916332 --820.2462965276786,201.8240113181721,-318.08285712888335 -834.5361331553613,-186.8189252810555,-713.4370825947178 -429.43766700407195,-413.2931571179803,50.94061471178634 -395.66557101034005,800.5282224041407,584.3823896033523 -352.7221357454482,359.26636479028707,891.8492880641732 --408.35180500692786,-997.7758116076252,-456.09088120360263 --564.2172407465121,323.66917022799635,267.4231995310581 -186.92276540944772,-967.5131135810926,457.5561089012949 --352.93917502901695,330.11197801326216,113.15685700430663 --314.5381491441857,-730.8474657917845,-811.162204679038 -663.0366662244471,836.7950841631159,299.57609352859913 --793.1317702790333,-195.94556622351854,457.87840021031434 -559.6417680201362,-763.5627554178228,-999.9385623092352 -424.27409176121,-286.8076480275887,-491.0373367634795 --974.2050604209492,80.59881352299931,702.3014708519636 -915.2632925451758,131.48990122657847,28.922655479788318 --829.8872290215178,97.74560308519949,-240.0418420692107 -214.27056176715382,-222.5473042469066,-519.4017530992664 --810.069449543247,-370.1631108222085,-806.7103314244955 --646.2060983520321,974.6723171590918,-111.79288618676276 -63.74353301003316,747.2370574744307,991.1378009813757 -165.428898689363,624.9476420883434,-346.1179513266495 --388.5120851054178,-194.59255801087966,345.01452534729833 -364.3833785101974,-369.5211307010984,-733.5801517267425 -264.7925129310172,-743.348275622471,156.98501645866008 -386.84425611261804,401.2229927889032,506.9442213191935 -745.7188431313291,-0.08201607042315118,460.4983790591423 -238.34547073167346,-626.7201204046348,-948.6207102611836 --430.91722864613246,-113.93258732476124,234.2118888573125 -699.9186610064107,-607.5085665876687,-748.9004202030458 -926.9598949486551,-783.9108812471858,-43.01785978562168 -171.12745758660367,82.74884181487641,-827.9356859341136 --885.9461719927613,-789.0331450779287,171.175367745225 -88.68977526864228,-532.5184159265116,275.5482836911831 -640.1350041112987,-916.8420803068125,-3.740112903915133 -378.6208242053806,-495.37614586062585,-384.4581894137018 -227.27580597876772,795.8705868874738,619.8488406057986 -166.26043819916708,460.44343551449833,-270.3550595844026 -281.93105619751555,-67.636817744886,-620.1277270848782 -403.4765477545143,112.92927469764413,-282.75683609281725 -822.6783801572615,-958.1317643465335,-368.45369750100804 --886.2372044447069,533.0546324432544,404.2149082275853 --337.295562527366,351.325804414146,-208.1255476081003 -512.5075828448687,-91.63267452658783,-175.44054433666884 -869.459830976602,-498.24180021859956,-759.1053200068691 -169.08622651891642,938.6436245683578,-244.32157254562674 --875.926472742437,-321.3894653808651,11.863308639116894 --676.1539867355725,316.204436112984,995.4987780204012 --96.52104803711234,-290.54288653957474,-198.59166633106668 --769.7076432095978,766.5472028524475,-170.34868895729608 --225.45117715031733,319.3805458609486,-115.93315813775291 -296.46693761569213,-877.107419738425,627.4466874444549 -881.0079057588052,297.5307723187718,909.1318577176214 --697.1353712600734,-45.16762103929261,203.61346789089453 -163.47329484237343,-197.07644182191348,-323.8311812674772 --746.3519548991624,-216.51509887544364,-674.6783697890297 -468.73135298443685,-582.33812901082,-882.8693894309323 -104.73227563446858,190.45946543880314,743.8261225610111 -153.9632248353637,-309.0382925531086,606.023763052641 -80.55778637484218,-841.4394307376165,131.70112062649332 -816.0370908433247,-207.37474900355892,-407.34839620039986 --713.0610859639598,-697.1089561292854,-134.4570313163622 -191.359648323059,-838.7691896607964,879.1371780503314 -510.2672348903918,173.2478365673253,656.8773418779817 --839.6264863757734,-46.322244533751245,260.1862537233269 -657.3058122365785,566.9391200985353,-445.8615005732007 -881.7603391184086,-751.3083171382593,750.2672372423042 -941.8804992092371,-645.6929535547489,444.13212840757046 --919.4289624440031,-189.1543497216901,32.56659839534814 -161.29045181926813,871.874496497119,344.50137458838935 --37.44409756152595,619.3500725317786,901.065641908818 --955.8677026354183,965.0425445120775,-827.7357218726393 -628.7735585375226,-439.3304948971751,-735.6406844922565 --120.28872057233025,287.91315889522707,-238.09630995304997 --890.8691834346021,198.92227931743332,804.8065522213494 --233.56926810549658,-567.334444738346,-114.84530813436925 --903.2745779024383,640.9751689605496,652.6816219003736 -176.00092685925688,-293.79422212322106,599.5667288915668 -109.37404957673425,651.8646171000323,262.91758516604114 -568.8109464255947,197.12598643551996,-171.71786356866755 -915.8917198522752,82.2276497576895,210.17903708107679 --559.0247211705015,251.30157885455287,143.21529896588777 --630.32320410595,-880.8258052937126,208.71863942954224 -527.3845387006411,46.80274184401651,-546.4547493607085 -333.0439533860699,-839.7885467807955,-116.33259039609084 --673.2664832031596,-631.0818978802333,-595.4121016835927 --226.5858859120442,-897.6995887592047,-204.41311814180358 -23.41489422940174,-33.411430067349556,-234.4317991939189 -678.2932161415049,-709.3466151589918,11.393487562747964 --875.9171660868914,-857.6886422441805,147.73169935419264 -132.03684977564194,756.0670256889139,115.74735132014644 -919.5820408097004,-902.6103032001405,-803.9846304385178 --911.8682768592372,-629.44629933292,82.54022188335625 -291.1443628548559,-908.8296841026624,891.9417796911987 -684.3307533007621,-406.7750356858137,-845.6249395470641 --660.2258535618855,-746.1111724900546,-753.4324414021063 -37.123377331467964,-508.30511501319944,-283.7205669417111 -979.0106667686448,368.6284978506894,897.9613340940027 --714.8868899337688,-235.7210503348615,109.46360656470847 --846.483876222524,-991.6251127440843,340.86866759383497 -283.63903360287077,-178.42238000077646,-20.71184793593477 --169.11399881582076,-951.9899103102223,-329.2567875650751 --645.8354892054203,-803.1516217972626,913.4408677786996 -198.71945008433113,457.3125684732054,-369.27251346776507 --213.70574101196962,-526.1520122065531,-806.0686580691505 --641.9367251168323,595.0280905929717,355.09161036755177 -93.85775197095381,-49.82025426646385,844.8685673122488 --854.5301044426632,-438.798373524168,-300.12429285857195 -564.8516244255757,985.0292403239428,-518.6589704856939 -748.6146682741612,661.2455208635827,-550.6852047164668 --201.3348396015549,-180.65426141496175,956.4413370531165 --638.2161972422034,598.3159422095641,-331.6145716537802 -461.74069155232087,-159.97799140867426,156.71952623308016 -665.2235466522623,608.3311299677682,732.8463670794004 --880.7653493106819,384.1011060794897,-720.0252465564743 --168.36286396317803,97.17683010937685,-194.52103050633855 -39.22335160601506,993.0526175972384,-729.5653725742906 -350.91209067285104,-207.99806722876951,-733.9804021853424 --682.5264732513809,898.5462124912337,759.202993423524 -814.0839208300436,983.0655516547731,-583.3692199829641 --289.12132527187646,338.43805984973346,-32.39492027870551 --163.22093324333298,-284.3775013288139,187.5612638869045 -151.18685728016408,-677.0843318715199,-56.52032496312188 -106.9435524196997,140.57387746278096,-579.7856141752964 -484.54278450457355,-949.6018103578607,-290.3362889136747 -560.4252970712671,127.78584211080465,-477.6751349782795 -389.9062386860953,134.78188831214675,592.4872189127743 -470.05037237964666,220.21584407246928,-23.644649378371923 --733.6357486649531,-477.3339642292325,-161.80105416582944 -198.59857401277736,27.41571043060958,-423.63094808094104 --987.0712844205789,-7.521556198372082,-428.7480228755138 -469.2166014210702,-952.107469459033,169.65562261158175 -882.9484750121308,-651.181465777001,-56.701018498809276 --817.1560163657236,251.36382452270527,101.06336119245111 --185.26895157433535,42.7540429474825,793.1493169380203 --607.4113953778659,-954.8709765893055,723.329769398202 -154.23416477581304,781.3169109236849,193.89044682634517 -620.322179919405,-140.6532732897041,499.7198625765375 -826.082933779712,144.24592744441247,-638.429698875241 --462.4047699396036,-602.7108462051884,-506.28594480853417 --387.1691012979272,110.26757350637695,175.98325892766547 --147.0005055162777,230.84155964167076,-836.8501487772681 --824.4235258836801,-656.3410792846831,36.15499608068944 --572.0106426033728,-433.43119301484535,-199.37432765401184 -623.7322480207597,-972.2757281742797,298.7576404732449 -337.7530620813707,597.3115607132731,865.5058781206264 --959.7243021014203,-692.4325889735676,772.3425881119861 --82.96287562596922,129.18127786692708,326.0544074462948 -358.13320899127484,863.4808066330163,993.8988348233393 -440.3149218618805,-425.5575815896983,759.5048045886872 --901.5581709184768,-537.8382942510076,794.7714349274297 --487.61697112129013,-558.6978807565031,-723.7494137195056 -718.2235152938331,0.11651838217346722,349.7864061083096 --521.8672318499407,516.080842022433,520.011089924197 --374.8039501833997,-178.63473397943426,-580.6194451395983 -953.1220466458085,291.2051541168232,869.0877614310311 --393.22891274173367,563.7818259937794,531.7172877694841 -383.31130373308315,931.2779505336009,-212.88932778736887 --738.5653528204855,343.41771848812164,458.61960095441236 -150.1211469176294,-586.3642137332074,8.911883338710709 --375.62052686174115,-145.0669436666219,290.4371516893277 -490.4294853816691,-535.5506181973137,-189.3492787060933 --461.6768580167417,-602.7367722762617,566.7744399916767 -818.5053888739849,-259.53562863084653,502.5578487475336 -793.9905787288221,692.2484210604632,-634.3732229215482 -912.5837630267226,-246.6471191410751,-321.51867765232737 --875.1373454444393,-27.65269179023403,-781.9727687181426 --502.92035814514804,-366.11475646543727,617.6526469833682 -750.9773007917931,-395.0673650770607,717.3962424891479 -714.4618747395821,529.3019007697471,-706.609771969637 -380.64569380145804,890.0481291611375,365.08095753431417 --336.7663017843321,1.1586348616625628,291.4500867021072 -21.140817457007188,-760.0941165380603,-375.8719106959587 -604.792061107265,722.8360921910348,-725.3999345688595 -904.7735047974493,-342.3547643027813,324.62747746143987 -503.65029191336225,623.8924692757669,891.4994044518603 --374.1609039423548,717.012909103109,-736.6261931275859 -410.08181270718546,483.95545902797176,355.44648240264087 --495.370527729694,746.0862940304066,-662.2830732592099 --892.7304169583383,434.92998122382437,-49.04856953453259 -698.1960399173522,-233.20571788348207,-663.4428229845744 -672.8843849397394,97.81926328014333,-621.6084152192902 -440.76799717289146,22.22727697900109,208.6259644806396 --78.20332358683629,657.4179676360127,659.1254313660997 -418.7776436487725,-789.1972452070754,677.7077238081376 -342.02596106581973,394.0483320085991,-274.0343191922567 -758.5591123140134,450.743200469715,-774.819066941611 --184.4439311876747,772.7607239202835,-905.606596605242 -922.8332392840989,358.3251366391255,262.7519552867532 --458.88148702401725,-502.41642252164587,884.1164389771909 --403.45509153175453,551.0105934379988,-213.75640358584167 --721.4918584305921,-978.5694046092821,88.51467403050151 -951.5576370978654,-261.72761238159103,-285.61533201391035 --311.81676430111577,41.08767460971694,-118.67023315141284 -759.829253454029,11.041583446980553,15.515676377137538 --723.2568105588869,965.4790818207719,-500.05421826234067 --853.2718650807947,326.29249795041756,190.73274031374535 --169.70869201450853,-155.61553223864394,570.1278420928625 --608.5747198007018,640.5066378897795,297.49422779003635 --162.06045244095128,-83.9427668322628,-486.70558562780843 -504.22866539394954,25.749484610535546,-358.29091450031285 -192.10023152190047,991.4689041026461,-129.47544068689228 -841.3828015572392,-309.9663201508678,-890.5345861500282 --591.5157872631423,-162.6097133446316,-560.7301428108619 --999.5459235634889,830.0030754950544,687.758822461858 -484.58446297389423,-664.3708087079427,-759.2728475800279 --864.7905010552337,448.0583775458424,857.6159213757705 --138.92835817392597,-761.7186560079036,24.785641464213086 --302.3361850827397,-250.35015130000465,242.6612483114145 -437.4362265244047,-778.7928022536782,-928.8195383870473 -988.6606053714297,-534.5433021688964,-892.3389501830818 --620.2493418081601,-922.0843073030716,-216.37821076565672 -604.8035689026485,-317.5111004845588,-111.63318624326689 -351.1735471348775,17.788140139760344,722.8913720426485 -732.0713500915131,-980.1786090176927,556.0926129663983 --78.53279951665229,977.6810826073261,-33.535848249129685 -973.791890776595,509.1387224114733,-502.79023077338735 -76.78995857391533,984.2712789571656,715.0612155038473 --805.2662124175578,412.7439936199921,-308.8408282583739 --986.0354762393038,-193.03806194600077,-530.4911565500574 -637.7385410409431,-325.33878230846904,655.0473879076342 --998.8041223304094,-384.36169994776174,-517.6695713844761 --532.865277862778,-863.6267604690746,-625.7514591789966 -111.09913977123983,-417.27785432451105,-165.21043534170406 --246.266239305623,751.8098499997891,810.5979980210309 --14.086056688279882,-339.6880993687912,-786.3985919952727 -906.8057587641899,-879.5461101994051,-404.6994448634391 --403.8675976599917,-359.1974277195702,-671.4263134551815 -566.3228618473943,-755.0042760680216,269.8133183063255 --752.3079465883651,-858.9287248140869,818.859007371753 --619.7424673625886,642.5003091194085,89.26174221427164 --844.2869607824608,910.896382876135,-506.07766601621495 -719.2906907052129,-662.3799884308717,707.8857642837058 --973.542374189412,23.560913138961382,538.8851588431137 -869.5910349855667,818.404272412974,639.2497390952899 -776.3826993226082,-601.560628325847,-431.6314085765425 --422.06295015788294,-245.8921379966024,-213.35865922962262 -89.11064930935095,-680.2404732671173,382.4933275719786 --664.866921390987,-379.38303579090496,6.690261212308087 -592.8811230469546,478.93846647745454,291.0687128210445 --688.4534788396597,94.09069123115546,-825.1069964002291 --245.2736464066985,-172.96693942008164,-920.3771211084924 --452.02380106005637,911.2989345329788,907.265215659379 --295.3458914949214,-913.7997821033518,-641.8101213436369 --215.56441313291975,895.5593959384596,-717.6018729256302 -527.0316873364245,-782.6349212506159,962.5151547825537 --236.76700178173007,550.469077798112,-314.8178343777364 -255.3377543176175,-615.9678305199266,-707.9579614060749 -876.1282791362626,835.294555808867,774.9378804257647 -250.866900333187,616.5364224325565,-861.9261261772501 --330.42191621864174,-372.59375048568756,271.2906439052265 --288.08445305871896,-702.9864367126384,192.93415082708748 -628.767841338163,-235.75301108005362,-735.4625698030366 --606.6236053743539,-525.033389661232,-400.2048140109275 -285.59014101261823,201.89096907543808,392.1597231340784 --274.9960309369736,647.9953037599566,-591.8246776884795 --61.91850496369216,601.8774430828605,-639.6827045347616 --780.273772518434,767.3679353759794,-314.14067448160824 -367.74024981806406,-949.3027914721231,380.0937768188992 --367.79737690605896,-888.5182928251165,219.62552309623402 --518.3923678536535,-226.38551589624,-838.8383754269728 --705.6734978101093,-404.0455290083124,-820.4809988796858 -821.6525293726304,-987.9059136320432,-32.27956227137713 --753.5050837348971,-384.6418210441029,852.119119636531 --676.6108934520263,931.6646394366653,-588.4112460211566 -483.13221693365927,93.35452979462343,768.9574551935184 -107.98651100626194,69.1184383126174,-609.0839992632002 --667.5412758966826,832.9783022310285,-344.32360229993185 --255.8354900742081,519.6473168567768,-322.35303515438534 -904.1248932780054,475.85553799760055,194.85848514683994 -761.7903210895049,-900.7881833010345,-485.8746156215825 --69.92733155818007,-546.042921056958,487.8103746043039 -838.4160621074504,-152.45976013815323,-315.73479977621014 -923.1014642751325,-110.29513434491832,-21.90319910143353 --296.7002553161892,819.0969460242768,137.91096656370155 -524.3491743632894,623.6134367017728,-316.3019161654836 --132.61133735923988,696.9435488125293,-273.48929664837954 -587.8702669037025,881.9846451488743,246.42074613601403 -483.25457490377767,610.1946240822697,690.0792977932849 --209.89332428640807,-897.4730816480037,-196.24745752652098 -347.51245956817957,-99.29922843841439,497.926301720797 --286.0351410626722,269.488282208059,-627.1603902920508 -498.73887328991395,91.39193762605169,-591.8712229067988 --416.17765300438543,497.2174171636648,-34.79752867695868 --567.9371192138556,934.5423807405953,430.25003963377594 -914.2696650795922,-145.78990927931352,-49.79931861655905 -795.9104323700383,50.09868049076931,414.5578238113344 --495.65424500894005,-106.54706259471891,-753.1002683792898 --588.0399282460767,-998.1131694647378,-921.4698967026795 -954.5676463538587,-515.2926097264753,326.62141900800384 -678.1993975992232,101.32091847312859,-693.7109998320876 -456.23287467233285,200.50282019916608,462.50117869475025 -539.4932457141742,950.8207353694902,147.12656005342 --316.7177746187964,296.92911380047417,-863.1185815147478 -794.7946366431727,-761.2379773236064,-344.3143242283635 -631.4907612522418,194.6247566614236,-212.72895944511583 --53.12868124995714,709.0947864043605,-319.9912278802158 -739.2993696243427,-823.731138046617,553.5968744172615 -695.0952661094727,-636.3646943253225,-139.30693525559911 --669.0004506726888,413.20825798843543,70.69553612331356 -270.64669341664194,-607.0260660875776,-576.508275895161 --917.0053489801873,-355.8649296085406,119.48932266734982 -715.8698279946575,333.85489491736143,-129.2073532004971 -906.2402287882755,438.4904011516637,860.3304057251 -55.17594654433128,-482.19145041372076,-894.346627270556 -452.1697029677009,-757.3940039889318,-394.4497434560657 -64.94181576779488,128.83317555949543,201.16639397427207 --667.4893393005987,-240.52519035670252,234.38845423393332 -939.6377292675695,455.26227539937736,845.2075141879156 -524.4241166283541,183.43393778480095,-615.953261727311 -333.37130378502616,246.75913191981408,204.938340914533 --20.428264023518523,57.31320797855119,-331.11494576379187 -38.62538528460641,-604.8881886430436,610.3487947207536 --628.4460906025844,-830.0674202210671,-127.5079472856853 -316.61487901212377,-124.56635013291725,-446.49173609738284 -116.34236778088143,-305.9953291756001,865.7353802532662 -845.2902792071441,4.743639944190932,-344.23201196348293 -474.26482791327817,-926.5741130338668,-50.46198791269751 --327.3532114593329,841.0717702051093,-975.993945454635 -105.62975143669814,481.32716213325193,-29.96402495191751 --829.1939396745566,944.9227800558044,36.02086275219585 -228.3724886380228,-526.7804345849854,-33.00382978639243 --141.7010160833563,-850.2083159960325,-787.6792929050655 -674.945039237549,-520.3600955868195,-610.0834570027389 -9.822902500278474,537.4942627250259,-876.1069628420241 -153.61583927651168,-761.5791143188533,-927.077898348763 --894.5120956755652,668.3282164168827,-764.0550327438768 --909.6972711754161,-124.20022571417542,687.9869438840497 --475.18324702139614,-156.57476494816729,-920.1549348724975 --101.84297173024822,155.22616127426727,141.8141075042895 --335.1466156512697,-368.933638673729,-786.7527621268042 --266.4033587074632,-801.0106622540707,533.1918894241032 -932.5485954963717,940.1489133334137,730.1421987507877 -201.58429867923815,401.73139448775987,-429.58839463917184 -261.54084034524135,-88.70090112024513,-35.965320446135024 -515.5531207503159,-436.1632888054967,-363.9207766109603 -849.2835822572733,-887.5514102980555,-28.731403173319222 -825.6016008157235,220.72601563631406,92.8141484242642 --500.5116415412896,-313.44902187110347,704.0968316093858 -118.43626353691639,29.484387513559795,-800.8405729199421 --967.9436870897538,927.3703773740983,-246.02766542631673 -206.42612419900865,-840.56985362543,366.22857144609316 -865.1334174119218,151.3305059948393,-747.7693552491788 -163.44305494695345,532.6944262093048,-187.16692685196267 -759.6754958829356,297.3659067147289,798.497836578405 -247.0106224946744,-737.4240559903515,-380.6165777896217 --596.4101034950861,817.6529954337245,520.8001345749653 -352.79673782001214,-398.06736073675665,-631.910455899573 -512.9021759778236,-51.684108241840704,-548.4208956987418 -233.2439563305502,-919.3322957230961,-347.65949174349294 --62.88601081773072,-704.0833317811882,969.308955181679 --581.8052708207715,-739.2937399134689,-592.9302522262071 -538.1222663194485,-148.98868145631434,130.83187950507613 --957.9816860272786,-931.1373828533709,-108.34890034596765 -633.3104864032471,770.4777574151306,-826.5868648087196 -76.72620420204566,826.459372558541,-224.05449120422725 -659.1316628567372,-732.6086912011276,870.7889793355973 -502.8466350626054,882.6687855738035,353.234467105013 --273.19213600114597,876.3623450494449,-448.86644738164307 --335.6549558765349,401.61683600348056,530.6325990507726 -858.8069676983077,-590.395181887581,595.996070438448 -477.09210679392686,-872.4108874928042,-225.55371757958608 --434.46908587980283,-391.01915129193924,965.8937591094016 -285.55482695985575,435.3523155869991,953.2352746300182 --245.59643508472266,603.6803369056117,-130.9380733910093 -739.0673436299596,-638.6849173773936,895.3723541285592 --562.4565831782406,-347.55898603813694,512.3844682135609 --212.48971686918662,216.42275353289324,-110.85299786114297 -484.7398741795637,-543.3374952627782,-883.084025526246 --400.14120505386757,-51.38267026313952,-663.9598956146428 --290.40542068722266,-200.03396341286293,-885.216312623453 -166.61449636840916,768.686855942575,-696.5141740938952 -195.61602680302803,329.4784098216926,-161.33063916142328 -402.19517472854,-178.53691301797596,9.27457595486976 --985.2939108911461,383.4402282693777,322.6853578894488 --923.1982453473108,-263.4997852097338,958.0636815833348 --158.52687486276636,3.89081026368342,819.8603163194371 -434.5237517315129,164.14026224844724,595.609362682145 -728.7325329119465,-86.22385652546632,-49.78327013632918 --227.8981286963284,933.4122800369212,394.33250858070073 --833.5538675838554,725.919246626037,-38.88011832746383 --862.492187155025,99.4345103266221,-165.67144204859585 -755.4988097252497,-592.0107927812253,652.9292189843659 -115.37738237090548,-890.779393573062,943.6906026509694 -25.23048820639974,-418.246291536835,-61.18631602148389 -715.715567034978,-390.193751229873,-614.6472070265993 --741.8575061382371,-404.2812032195775,560.0961740800869 --56.747269609476575,-545.0367926129201,-667.6300007805016 --334.54104697924186,879.8487457714177,-313.94657481995125 -976.2481519092707,-29.539088469287663,-641.6721634196982 -782.2801835870189,-79.28925373034622,419.34268700904886 -967.4231664183035,-899.649299360052,-806.6108804248657 -440.9134829255124,-436.34999340905597,-631.3972060998019 --921.276240360541,-956.3065760275964,548.9712062395818 --731.1331452608999,-64.55876805769822,211.79363035896608 --143.29639886230746,-945.7866953275338,567.0030051758176 --978.9735509166931,523.779788754968,786.6089875762455 --134.32015788565548,71.08494619559656,-46.0332147646925 --221.58276275312244,774.8490707407204,787.867021339981 --328.367270716931,230.13950802939598,853.8151242917281 -924.1169978827031,17.91808084409513,-94.35038943134646 --442.61136814294844,917.7437463808201,-714.3713910542654 -159.65915209545005,-434.8994649627223,-441.98341930440677 --190.0628252476231,997.5858716313091,-890.0673863203558 -157.08363640706284,-834.8556839294456,-690.9583400189621 --120.87411645420264,20.920262692882602,-482.41518327095196 --367.08573825116764,-826.0659594881339,-393.56043231149897 -933.1168787610882,889.4147633449634,-330.24341972602997 -141.70787255752316,819.1907822218886,-987.6323547182067 -621.3671406751837,896.739105577838,-817.3485313328858 --677.1046279341579,921.4926055427109,75.08028728069257 --971.6067310565526,-484.73600247294166,-100.11265146228072 -385.8178220495354,466.32075627359905,990.8430258509122 --424.977601232482,76.44020373695048,66.64709571921003 --188.70948110552501,-661.6762123151595,954.9131263676852 -706.6343733331721,-3.333943411525638,206.49084536805958 --545.4778928806754,87.5741407834937,389.94026624295157 -30.334056773177508,980.5703411698826,222.68331249545236 --258.05257481566196,544.3040552316763,-659.0749768367159 --230.9683725874669,-306.0820992448283,-136.38580978444543 -563.5596518574525,-31.65393567318506,588.0289005319255 -152.9778062797318,-315.8611306848893,619.9574873669449 --523.4206588938168,-551.234040400409,9.005848109671547 --478.3015080758222,-981.8259300975674,296.59505459760294 -22.18764294479604,-108.96437101367758,933.9370292366307 -142.39836792582742,726.863155578769,-721.0995275896796 -138.41292625885535,735.9592534618057,166.2115145597959 -436.02835625400303,-255.9128643755853,-815.1009659258668 --84.19940974585711,-211.04121832228498,734.1203647578945 --512.0093952950556,933.4684550702161,916.2762396089922 --504.7367138571226,-303.8960890453591,791.1114817477701 -933.244441792215,-113.12179432791197,-358.0059087182044 -52.188026503084075,375.53841273146963,-453.05096925004045 -472.94634923814556,-896.6852857707179,-901.4110144711672 --227.4245897089096,-293.05361587855884,-368.73356926569545 --17.96047466217999,-358.5328353768575,-615.4841630638161 --381.0609018227982,949.8085456204699,-177.77316601030282 --110.57444628332848,153.08997990228,966.6815368284531 --516.797447128474,362.5642210648675,431.9693870834483 -214.6488335861318,-822.8433207267119,353.7445516551529 --871.8105779276491,192.28529909979397,479.16235444348536 --578.0602187600991,683.2440150855482,-939.2923889339914 -687.6257273166123,-79.34189871446983,-564.824120136711 --732.443710012064,906.6143351647452,-854.6688248376865 --601.8131601281486,-304.355305133908,240.46969792224104 -89.60217055219687,-748.713015175372,-420.54403252357076 --522.4964578279519,-572.9142910193173,-177.71132704002594 -408.0629051833139,-565.0941355655282,-266.64224059403716 --218.16514631767552,952.9130588708204,909.3327137581377 -600.2751655041518,-516.6821583616297,-863.9253718166606 --366.1917245587505,-466.41090113233827,11.851600292787793 -555.4558201355862,716.6458777577161,689.7281708210171 --280.6488775538645,374.4686869213658,-374.33160495155994 --878.1889135296345,403.1305312058846,-980.3448948604243 --181.63482508302286,-341.24146139584855,386.75507703770495 -532.4909455207578,-391.81072805743236,623.2540288897071 --412.16647899013253,-107.34728002687757,454.0370540282679 -385.8404584495772,974.7369446244002,-549.6779515681362 -324.63582707916476,219.3638165515547,830.1969089800598 --687.2757167102499,503.59632717386603,136.53723253753674 --450.66826042418916,-51.13017170565183,-332.4468058604044 -158.6268055769217,778.0012216293317,138.60996882440395 -263.44483665316807,37.49569422941886,-897.6689871090482 --534.2828862478116,-15.99654113583449,-379.5294325105905 --636.4728044776116,8.265683836876633,-354.38041310429935 --483.78471365317057,-72.02916511923843,-733.4314838356537 -855.4914661508146,735.404195838478,415.24117148107075 --787.5723448230876,551.7545089393861,615.9146562180381 -535.5292354286753,-772.0682257615176,287.8159141355295 -668.649591498797,154.70680243933543,292.814750456178 --83.27304114738763,57.41463976810519,-931.2462832965496 -277.9260439465693,-837.1055742176816,-129.97081131955326 --414.6898046651844,90.85590042342619,-733.1673289535859 -383.2868039466364,590.0230738569408,-673.2911005136871 --791.3738252962357,-708.9690344252817,754.2551237970035 -56.37852351271226,-65.47800798499486,-786.5763617952914 -299.11201351392356,735.9991837901798,656.3717386469059 -252.1094179616025,-849.4425666966528,-775.2059456479741 --901.3820257803507,-485.04156701506145,-728.6770656792445 --479.9039194951322,-229.88388856207666,885.9655681422714 -220.7521195633842,669.9475713659247,420.70300142466454 --774.9937389467365,471.84081274789764,-449.8022368817511 -278.2156939894128,-318.0760527140229,995.3445265293183 --472.8970410064444,-441.73905845146066,861.3445111247966 --950.7111907273546,393.37797574639376,450.65278147175627 -672.7571548207986,948.8786212769508,951.2038383133047 --869.4464848670722,643.678645505805,292.6198673147626 -294.6842687461824,-743.3001467706104,300.3743328913067 -964.9651612024957,823.6371390788938,-121.7386783902989 --920.1040534278113,-275.41301999959035,652.7806232011103 -402.9982029303321,-81.31268881208723,-889.7969296823378 --146.21054435339477,-61.950120564232975,857.1110657882718 -282.17220716431893,-376.6941666907022,50.636528901442716 --867.8893843556798,945.1364712994737,-279.88019613854794 --44.26529017372843,-289.43205152615485,365.02346023240034 -324.4643166591861,430.64462105827124,-463.7135407761583 --368.663037671868,-749.4975378075841,311.0199436922253 --920.4057453286949,195.36467104691815,739.3917697032678 -781.6642965792671,-101.92447926007662,-81.39262357385246 --846.0616339839653,341.5300508860714,642.518840745691 --510.68989079057394,-157.39823673327066,677.6786735305407 -754.240935324576,-513.6400394715481,101.14126908272851 --615.0136987283458,-796.2424717208869,822.2410027839151 -641.0150084642182,520.0698036063477,-902.4673623737192 -687.457585420515,-123.9118481892325,-315.2097534082807 -92.95272205075298,-817.2935145528884,513.2930987047976 -164.87015377659168,-626.819806253665,-623.5356004619089 --631.5026968546515,-885.9952248961321,175.5968987433696 -680.6963551770161,-965.0035720252228,-901.9907100574529 -145.5405533738915,638.9913707721046,-346.52221886273287 --300.77120238455564,192.6929949935518,-451.574221751706 --946.7832678446317,470.45703620319205,251.29982588290613 -161.51199811131823,483.36825798364634,350.4616751240751 --588.2360236433577,-295.0379061132977,-747.77971664275 --740.2859731642379,352.3914927130784,717.2002139649965 -925.465167722278,256.69423509888884,-631.7973532780861 --788.6993091021386,625.7019430735156,157.51295271999857 -236.57004202743974,562.9241775094185,406.5544554649032 -668.9165057121934,-887.5721890802431,495.0412734930096 -701.7055146441908,-427.72991508337134,280.8945479865058 --371.6758723260558,915.9421329649081,-933.1528551289925 -159.58568766590997,-666.9929059009698,424.44041035431724 --648.2194331626758,-529.2334762032849,-11.258377908483794 -829.6698999937562,-576.5712557040583,-711.519957763793 -517.9536637080612,1.2390646678619532,823.5702247635429 --706.7708856803154,291.8557860460787,-534.24170769637 --686.4791426967214,366.85883031454114,187.36923981746645 -509.65491672466237,-381.07484710763526,-104.05668723562007 --189.05664733916308,968.1789279330285,-415.5020865212242 --410.36552330646623,-290.9035823427853,129.18816258064294 --495.35451147250956,830.5798807585479,-468.6288702674731 -791.6314631203893,-793.0498727068307,313.12540479930453 -813.9710368764875,-662.5011232035409,936.6539201985099 --94.23327916897665,891.4302168820489,353.6400872600941 --396.8262602528969,-623.3949501657871,-392.52990754980124 --813.9651814746501,-712.2640673133405,-790.6791193070377 --154.11291251688453,591.1567525151729,-717.2328915673196 --739.3591336553283,286.8578990346616,-605.6340360638674 --804.7799237820168,-666.3028435888448,847.4627917535522 -642.9425055523816,-291.8708752898118,311.6415346547856 -74.5513473360761,354.2485269651279,365.34230492551865 -257.46803011998577,-467.7972629253828,-921.9871584743637 --88.86643601978244,781.9477693814076,138.9945170371518 -664.7820834038159,983.2486859224564,-672.7675917234475 -383.5552782839645,348.58714740004916,959.9108947165569 -971.2014679056008,373.357223448259,-512.7704160356114 -597.111676261198,-785.9417315779237,561.3986083432574 -820.3922482893929,-234.3332104631295,261.27058996616097 --139.71453580634739,-124.46989002374312,-379.25822178375995 -524.2592409006493,872.3531283330103,881.5017184689223 --650.4374302501324,749.4872993131321,474.86288285424416 --494.3251986194215,-865.4307741569709,-464.0054662312441 -824.4164735630513,266.3573497915445,442.10932179574365 --485.69529778180834,438.7763111496406,-943.7569874441525 --249.35730845397245,253.5066970846624,-707.8068689173596 -646.0071488938695,-529.9374023761627,304.56222563689244 --189.60571484934064,192.08719095529432,-785.0988947421838 --966.1744001567854,819.1288547606023,-460.7399824656344 -639.354005560918,998.7006009444003,-577.1374840021776 --469.65851763328885,325.7195752693315,930.8972692012426 -831.6286963814878,5.751040131169816,590.2205650534493 --728.5082938001979,954.8763684080245,928.706468071973 --672.5420842416581,-401.1537503937867,-799.6900049864662 --456.5648022036406,631.9115788304132,-243.3687856694811 --823.2060657064833,-315.54895044219086,962.7666684825601 -259.3671905184058,-167.67810718768453,-666.92297300546 -972.3535945673896,641.6980185262576,-437.0453950981612 --859.8626085576211,-886.7488852448839,-759.2437009889323 -161.53716722884337,857.5268424109847,-6.513143988031061 -685.8909649123943,-108.22676028038438,417.16709153565057 -463.74547457300173,-652.0725881933226,-277.5678820483764 -274.6043130760479,-858.6067836312676,-276.91962447408685 -69.59893256238502,992.4489860892772,-50.93287475511852 -632.1135142286471,-135.86542986676454,592.7814452394177 -190.82960324021678,773.1908830047967,-178.1148952997802 -208.60883964295772,260.03736123765475,-165.2341163990534 --711.375912625037,-812.8811861753289,-966.6568988007338 -747.0685284904293,-527.050175522611,-576.9865014364639 -472.070800852131,-359.96777382521645,12.089384823673186 --674.9778694050874,919.4914429239384,703.1628000344747 -727.5792459300067,-186.45250285598956,524.7224274143457 --712.2476892204397,-982.7619948164395,-960.0541348439438 -173.20347480912096,-89.21018950411838,36.03069781703948 --985.0737191655612,-154.6267606851486,436.1363224017216 --114.61259606512829,464.4384126244445,-533.9620712063304 -626.284008963451,176.8624809069047,-578.4738011401876 --526.5590482923342,256.060929139074,659.8791864248867 --168.74443594168963,-483.39914174481555,734.0232138212009 -338.53658350166984,-103.82902543384694,-24.19960944139632 --591.4870641272072,253.60526012968785,-282.51497891422275 -991.2903533486985,-39.632969476224275,-28.228787620773687 -131.70357482134386,833.5120062374936,601.6361997195006 --97.73986040431714,437.3985319455919,172.4709975615233 --15.26590259750219,-615.3684544312989,-72.12747309021813 --508.36282595485073,829.6842997033093,-329.1863730073061 -904.5280290667445,66.11058018942231,263.0887573523207 -85.88088897865555,-741.2387660665981,-248.3575619841181 --801.7077754447521,245.90808836676342,-106.25160959912216 -555.9699431418737,-559.0590380012603,-670.8678831413301 --187.33553807246437,853.1707664367623,420.8436300248236 --162.1527504141627,34.54433950862108,-831.5739776458033 -969.1517927522261,332.81460938983787,-429.191863073155 -171.61678843048867,-781.035267862012,931.6733376151672 --650.4300242332681,296.0606361104283,-509.0910749221391 -435.1227652970715,553.642734480562,346.83945782286537 -228.998920510385,784.9381879040234,-842.7465780204839 --338.17046843960964,-503.4250407383081,976.0279241308431 --221.220440666253,465.22539848079737,369.45032776200924 --575.8375250452445,-522.0046395768974,-437.4308728939318 --177.74544348124152,-531.3498686989465,-960.6970345063044 -758.7861136143911,931.2196627617682,-316.85922593686416 --322.9862411490543,-985.8163744512581,360.50137666074806 -650.8797914972574,-706.7833992799937,-680.6673012656986 -580.1664999428756,232.58149670828925,-910.278884744566 -245.0939809245633,-382.1645543124679,-262.5496890583081 -539.4628365937604,621.8703853452212,-199.2867463203387 -894.3058720127094,-187.07456409585552,543.6720704602199 --32.24547087148187,795.0646530441682,815.5224873003572 --825.1663842578323,872.9866626204514,651.0696830408313 -582.6214286253337,-598.1773206289552,610.2384175093298 -700.2654693700736,-421.6993310916981,904.5201567246474 --900.2797072016715,-700.1814935057207,75.16227610302872 -151.58494224461947,290.3001666018067,-966.0617413690671 -920.7335492442605,-910.8238145317121,-713.8760945531952 --971.970964947886,133.7168665881893,864.5337678419444 -331.89433216092834,645.3149369608545,-973.4375930828398 -84.03059695945217,-80.87404498895626,-2.064111558413856 --855.573629329624,368.87072213861484,6.440829717268912 -530.297699722528,-29.418731876569268,-701.2367275471358 -296.513908155644,-655.2272757896676,744.7891267096297 -226.23247813848297,-685.5922328860916,924.6761149624137 -36.73092667064134,-854.2030962566901,253.66580883013444 --493.60218597437955,607.3869037546049,635.6441471323812 -957.8947117093237,3.7390620490074298,-90.08624054452571 -506.95121089296117,-735.0586873161469,93.83102758624841 -92.49520026170194,-821.0537543792256,-164.03182898617285 -706.5695971344039,712.3072439893206,-801.524670160638 --818.5582345043383,-474.60904599612945,749.532125107987 --742.1948298530021,439.9936052548926,-797.6687607737936 -246.27570749565075,-287.86540176171036,577.827925931734 --532.6191023492728,278.4036587799196,-528.6349308482302 -427.32056622430764,747.3560691214975,-746.3964017464799 -733.191377191007,187.15050882859578,-745.7790182659521 --144.91628928057594,-678.2794130298042,400.69577773313904 -517.7362688358992,-788.4069594544021,12.279705389288665 -629.2501120518343,872.3260831019929,27.03573348354007 -900.558447222814,71.37794091205956,-211.61901080018413 -696.4062571057909,-14.034579083821882,-56.194978870953946 --19.375021180343424,693.5700037394906,663.8830833761042 --192.96001511957763,-333.4002802589499,-16.143951921741404 -145.54501947421795,-523.3255787440061,587.9101694311812 --27.034468535154247,-331.90890316008085,-786.3580140720187 --522.3096791927861,898.5623435119674,-389.8006263609468 --662.2814212659293,-78.65441669001359,-385.82451327950264 --929.6814994576117,-353.7095654411655,88.21724787893709 -103.42474403993378,-286.8821576462226,-105.3944874947988 -931.0358364695328,-245.30304553937674,-483.54637348003405 --513.0659118664798,-84.4707745917317,519.0402974338881 --588.0236316230536,418.59225428153604,-957.7003533011674 --162.1340440321079,551.7301304055736,-322.5340884511372 -127.474202890799,-590.0415343481784,483.9907822523446 --895.4417934624807,705.0852897510008,-603.6072271566637 -748.7960634166616,-294.9415173989654,445.3671489489732 --361.549404427623,811.8233424692951,-746.7257489632512 --642.9604214548026,-13.939749682395473,-836.1231219237077 --608.0396305964762,887.5327644240288,952.9793222957744 --247.48134133915607,846.5720420278712,89.64935134686357 --460.5150682524659,404.7974421611973,317.80361314971447 -978.2506382174668,-469.90542518143343,344.1190053234709 --895.9524899411063,-772.7079226065612,-992.1632500978135 -998.9213621193462,604.5473942949554,573.4460294670816 -19.452150576359372,-399.86583418912016,-697.4714310746481 --430.6505223070727,-248.05755614172176,512.620193960588 -79.32357780630491,-845.0327468890346,-963.9419820821755 --795.3356409318737,-179.0025726052413,866.3858340980366 -274.8049624184432,603.6517997510302,-67.25081099090289 --276.6678336099144,-783.1992545667546,751.86604437241 -566.3200580558057,-663.7638048045497,24.521127752521124 --25.25038415751021,250.1831053730573,892.3737879825223 -159.54288352495928,80.43453355723727,-899.3541341306722 --874.1850479639521,-625.3064173464222,-935.0584566165035 -486.70579114002476,446.66060798792637,-727.8875311367142 -672.1578015905618,-690.427930307776,-397.64882600528244 --502.04620167727,-255.38580285390447,-490.67246822007627 --22.098147123095828,-185.1842372906292,973.1389815586531 --888.1472997435487,-715.6372472252967,-894.348212182795 -251.68238996475156,-890.9814451725608,672.8794747522466 -23.87726136385561,54.01524916306744,123.18901542438834 --658.3725873875785,-604.619393771025,-362.36535425399063 -186.99283164370286,-579.764448119571,-767.3365457334776 -940.2337728368643,-956.0363703807542,605.3948106720431 -576.0702991500441,-405.571772309808,-728.7467679853733 --708.7427065891532,394.8632344743851,285.61318217234725 -565.4913485027735,874.9623447982094,383.854726533184 --688.296926897113,-513.1147664691787,684.3874617462291 --581.3878483315829,-854.9553660910371,406.5601080845008 --194.94728901971587,840.0801050918071,300.510142187323 --819.1620444166786,895.7131345073215,-482.88547271950824 --325.57501918742844,-195.47917263291595,-897.5514071913735 --6.969155538790346,-753.3630178494155,-198.0593466232965 --298.58042401583145,545.6801668530068,606.3410232654624 --693.1742352218239,-266.89762524154753,-253.29367793633662 --697.17911212783,596.907010102381,414.45665667084654 --619.2364274059305,-266.55618281240186,-788.3899502869715 -256.4131941860878,-757.2561509027606,971.8683372498356 -561.3641493757248,-219.5229008320099,157.12786455870878 -822.6836324328176,108.1985607916522,-651.0030272040897 --242.59328883768137,686.2897300594907,288.42603197923586 -301.4487686676007,733.6429713769783,787.9461149250094 -839.5851435588727,-810.3016134936878,88.25200392620172 -481.01904243663716,513.8536902540277,213.43240394000782 --666.4253296326517,594.8411078833287,440.22266702989145 --827.7284569019274,-72.38035065124745,-652.0452009563928 --325.0459085740563,-963.8378155886292,-199.3402631784835 -99.75384231242083,239.16518565417368,326.98069025742006 -672.58262620492,-569.07418544854,-759.0363551230641 -703.0743437958513,-686.7743702147002,949.5201626723906 -685.076458797274,1.7532117791982955,962.8428498440505 --805.2465417839916,-393.86847764979666,276.4488300812229 --299.98626305364246,856.7451039615837,-868.7478236443649 -98.82366412192914,181.732534790229,305.4562475544483 --488.66755333637116,-270.86714496027105,687.3610593299552 --610.1144620596804,653.7356943467241,125.31084580548486 -524.3750223881643,427.2147325269432,-584.977009230242 -137.62547286774566,735.4463056101847,-135.7675263961413 -933.1815404466336,-95.56979979656387,-714.4287266642307 --221.1306398446535,903.4048127810743,-360.55830132029155 -736.1963197341256,762.5013633637795,-299.6269513360778 --833.4846838987357,449.11581831763647,-376.97540197202795 -565.8472285151447,-114.69030347913383,-29.46651531475686 -555.8188134970737,-235.27333787674422,-113.7453093541709 --247.61906246075569,-265.3189694454401,51.89315380291873 -617.5988890023013,-276.46337615486823,48.50944107547343 -341.4546508852018,-461.12110739268996,-444.95439019521484 -866.8262540469095,447.0691466621772,154.37335244661767 -295.44010884122395,-941.4011137931633,236.2059311233936 -19.01774644840384,91.49935955887145,-281.1523463383659 --837.0522045741162,-613.3215327758955,901.4894264253435 --182.60087545813212,-66.63368833827167,-894.580420293122 --924.8675409120389,434.36289409351525,76.18932824222247 -17.411968432533286,-513.7509391546627,489.5014632598445 --663.5268417830163,-620.1305126779599,-78.57565730344902 --427.44027577611826,-505.07403753370727,290.47528910666324 -301.94349043708894,649.0341395998585,-164.58286605404828 --853.8298179476996,-452.66723015708465,960.0109263936338 -192.51715046540426,419.47416960204055,-985.284340749171 -36.41146436504164,-924.9426849363938,138.46042418289585 -841.5416992721507,936.8382610008157,81.10535077784834 --83.59038949556805,890.034188496988,347.2196639933902 --870.201440923181,-68.54884466500494,-519.5099630713921 --60.3913571026369,-89.06885598727649,164.28960562948396 --286.4590193014975,-671.4591010881438,7.438869179912558 -660.4057686915241,328.0244561352047,-323.26426814956835 -871.0460455177144,824.4151424983643,-581.3032012318024 --921.1648297592741,482.61741670152446,655.2205226983065 -935.7291319027106,779.6727881766215,201.06953641282962 -60.10467842476169,-944.3178974748274,-506.68710631044434 --80.77049653414713,257.00780016713566,114.50366663682144 -485.271979363381,-440.46613822591826,129.90521530494652 --823.7155132184157,-172.6689528335861,500.321665909202 -386.801706858088,981.2854743443579,-444.21774802448795 --3.6214016520417545,-340.9391724520066,-118.79377188165051 -713.9002597387762,368.41815037697324,764.8823826951634 --592.977783336227,746.7222356828761,-880.4754516432312 -777.1985608743048,-341.8524410785442,-370.824733171867 -24.177153397327857,881.3803754464636,-904.4372706371893 --295.53804985850945,713.1439773666714,-207.89104512906658 --601.686204805866,-150.41163733717644,-228.89499701666136 -830.8324029334069,523.8687514861942,10.231111488012743 -976.7411334431422,-69.44493744815338,-883.5243383594495 --475.4513563700302,-127.85903956137474,-686.1947517077598 -895.1302526480861,533.6977956355463,-463.42559914445474 -181.60906703583169,442.89831421914414,882.557857813596 -763.2706983508212,30.384452276427282,549.3052395860352 -124.28950765516993,105.40778009108021,-770.5160833236162 --747.7246839676959,59.06723004491482,-462.27691004198675 --957.9261950790627,445.67840780042457,-935.0268066196701 -190.5536822081092,78.38758825462878,937.6293811556088 --31.57372130471674,-872.7971272444053,103.37593561292329 -682.1923412322028,993.6985685628799,-139.313652621855 --359.40251500651493,813.3065939039977,-617.5157418477572 -230.85783006585325,-188.57115163810454,-917.8352700888894 --305.42305138860445,-469.5429549946508,372.1823078869736 -897.5809953838364,-463.90562524272445,622.9318783033634 --889.280366123181,76.2420200796264,-858.8998725802109 -868.0659822612786,532.7025611147803,315.8998224091847 -647.7927632493286,295.03959114032637,937.8887943485822 -427.9158957295431,849.3172191644935,34.263784021276024 --765.8711740362746,56.35544284603429,-746.2543438738135 -184.98695835281,-35.01387894467416,245.15079566556346 --979.9060378903368,-610.3190166892718,-17.33913617573819 -901.0071231782697,-232.78191928968317,-151.25594789273066 -429.39217801324435,207.58551457223598,-402.1476998033336 --178.36720886514445,-564.6004022855351,932.0429182604171 --738.7312368852805,-256.3264308671611,-948.3220555599776 --556.4410161329072,560.9422767603098,-597.6495354222411 --839.8731949420688,-51.09364031095345,-980.061530530963 --830.4676911473337,615.2517391259503,542.9466897192128 -830.277640809792,709.030871821499,366.35112647963615 --895.3342853986743,565.697235973315,691.0216216811209 -598.164291543909,16.95807061605217,-534.1963227010367 -690.6599513774534,454.32561948027706,961.5223487777032 --688.6148044881342,-548.6708338958899,-576.4037002369946 -585.0795352426735,-626.1854070997637,-866.6803403533878 -997.1216131712572,-950.3655771097017,670.4881203177313 --269.2663168986944,683.2309195156306,109.24098242229002 -803.2624589727202,852.3859728292534,-981.803637438448 --849.1756480144235,-499.28254085828905,338.6308327270033 -776.5443930230119,-80.11609741207451,213.94623254853082 --623.0002944088777,609.9336677633707,934.6562227069394 --462.80213417080506,-10.348096798907363,-827.7677789872524 -118.2733129259368,5.566883693361092,-711.1270316898448 --115.86757376384992,-331.7906958268735,43.661750610378704 -171.30867085759837,-983.008842785581,522.0119658991107 -426.0285837234817,-267.4272275869556,-894.1281288623635 -509.86507957010076,910.3503209562648,-519.6968079559716 --352.9507725259242,-632.37422103637,153.8722466896793 --690.3172107050901,-287.61211307724113,394.02602786852594 -120.23196601869677,-227.07487134412952,-159.50079638491616 -124.22176524645897,-988.2705442256774,-842.9802630927803 -762.5161355260232,-844.2420218174185,413.60719242101027 -840.0763282181051,-458.63279139653775,-259.01712588097143 -137.84281168943266,763.4179392771694,883.8111745208403 -479.12649622253616,-826.7604782906119,338.30831106970163 --179.39255625467592,-58.59800101787687,-901.7032193096459 --617.8757213072836,581.0272150672954,-92.0823339042804 --396.6755167377023,-231.96185207008364,708.7990266513605 -497.99803480991386,-455.3692056378344,-764.9963195752534 --496.00355671185656,841.5129021094674,163.1776756995107 -66.96041748956577,192.78719938492304,-267.94346850696945 -614.2140406390256,46.57249860049956,-766.5041944624089 --741.8697503418741,73.71829300523677,873.1404361416783 --383.2957566476025,739.0823377184365,528.1911731577586 --504.3751141861863,-927.3185033675151,-796.3054697152345 -456.9878676948804,-600.6605239187065,-257.4581589892124 -3.3983320128496644,450.9363369003256,-773.5375534817492 --187.26718944507707,-29.85418171460924,81.6541279430794 -636.7212827904334,-656.6436099135663,615.6629036532447 -385.7568553933045,111.7416283979187,399.05574080514384 --175.96452209668723,-723.2048280637509,331.5304805307346 -49.34461337124458,278.7496010855509,-324.00243794302 -813.7331546796718,174.7397371511538,-829.1950314182524 --100.39201859114269,512.7121094872687,588.2691234645447 --10.805894472482464,789.4951416626022,-464.6631256114049 --178.8026055234668,797.1938211379402,792.5134329431578 -371.4255376493618,717.9610942444403,-822.4534660875347 -729.9899524155526,-358.7601868995465,-643.3369751435673 --521.2603273159073,-164.06298397222588,-497.61599079106554 --358.86482796700193,-730.0430278567158,-407.646468882003 -144.56762908400242,-116.29258381787213,-306.5624775281776 -492.9042577142279,787.0199427866357,513.578445804794 --335.99859576464166,488.8843356751074,-696.0396350518976 --739.3640238174182,-308.74592592768215,615.4047380881141 --507.3035055153963,-873.4931822026408,-736.5809295872898 -717.4899370591604,267.56656949457533,-493.5976732600467 -110.59165065636262,55.159244850700816,310.8719568813226 --533.6248911567674,728.8059743887954,-381.2628758399743 -388.2633079524737,-967.7507072555702,-254.68574021170548 --296.5803640823834,86.96885716602901,-854.527476445607 -580.2627474522167,-564.438396464863,354.0756297640205 -606.4242464881863,123.75391248302617,481.76641344397103 -323.72062443001096,-288.94040569598474,617.7170780671306 --410.59726022894404,142.42583550303425,490.7954782830791 --242.08818037498486,-394.46478476514994,-81.30797965435454 -635.9269886983072,859.8435262913295,90.16682571978026 -322.93241064730364,806.5472444778284,-802.9062971741153 --535.84284426767,417.8000125031649,647.4889238245994 -714.0580566611559,-169.78564629013476,-821.3201954162663 --124.43704540076021,-538.5308195858925,-417.6070900067517 -544.5351136750116,-848.9458279482262,655.1624349614042 --144.66182835166182,192.12786220119006,-820.695537528642 --325.2818432854407,-820.5981619703084,923.0874457622192 -614.5232986525009,-80.73449128707955,-552.7949033526578 -866.9102104997044,-310.80680854605646,-678.0311366252505 -126.32877690790974,887.5482406896322,-992.3394189993548 --523.7503134920025,876.8952808208153,-657.828066285676 --773.5130967203603,140.3744315996089,723.6876465896598 --45.780364612147764,989.1285133690494,358.34339907598564 --851.8501855791045,985.6642633639508,-184.2115264396191 --425.1949323090349,115.75836715577111,-391.38481635827134 --827.0849857596954,-997.1433138416465,-100.83329415947537 -673.7268444531846,144.6303712601532,998.4145978868817 --426.30670870560004,-439.0898704798893,-680.5010795321116 --671.8728234693297,-429.62680797990436,585.6800905470543 -811.5135812728956,950.1743394153625,-535.4206918070947 -762.5950912281833,-343.4898214453259,-774.3189109662312 -740.0498510403313,272.2112692872372,-670.5382078378766 --140.33748497399495,-425.4846102458647,473.5891374203941 --93.1675387514639,978.5598902127699,-890.5100354808097 --289.96946772750664,-36.199665780045166,6.267109496639591 --368.1283552287265,458.4804981951361,749.4941469779494 -877.438603955726,610.1867535990523,701.1603946131988 -101.09060123999097,651.7764528536293,-392.9921817040955 --203.04247578157117,-366.1739723629114,-65.22532910414918 --428.8407675227272,923.2228845088937,-374.3107439886637 --803.9109237781204,53.634332100826896,-885.8018431096473 --778.913667382839,-561.2212216075075,-71.29950023571666 --133.49813538194417,599.3837240055823,478.94930776822684 --147.3634120185974,-332.59158484874024,-367.06243187700284 -547.9901745880179,-895.8551875574606,-974.3567009787884 -591.088783853296,-45.707248021901364,-738.2377228928481 --528.8681308109974,865.0079061947652,719.005951249796 -419.57010044794515,-35.54953932534693,40.64725238277151 -950.4890705679172,931.5408877685743,-569.4619084283315 -622.2091326106363,-605.5146676659664,-572.9250442320972 -352.1860683291536,-189.99780282490315,863.0888142130405 --821.9805302079824,23.05128161898608,837.0430608862425 -808.2273209590103,-686.9415731685176,-266.7245998070871 -238.2428000933926,-681.2102304571956,936.0443440914773 -829.4986574553207,-666.0996419310616,-757.6890774780292 --829.1830343834695,818.8873280732623,-612.7523804090783 --167.43014291129055,-102.29726869599403,198.02208842713503 --856.5293125051501,-546.4827651989681,862.9807738378522 -816.820214537139,562.5812948113844,-961.1975087635691 --345.9864630077958,255.91747068581572,-449.6195764530486 -819.1733901075547,267.7789236648837,-856.1865653671089 -818.0111776714061,915.5333163524451,-844.5751632165491 -64.72046972262979,-393.27143557165914,-214.3218470371953 --640.6975640893163,156.14420402482506,915.9587064977811 -6.145200543218152,-834.1708372110377,240.00266695481673 --319.55401109748595,711.8503791825956,-130.64370336705952 --614.3207821155088,-617.7887546177101,537.5283614423208 --468.82480338528023,534.4667883184459,-588.2253784668012 --356.6272625973812,-69.0260551206012,886.3916993869013 -863.4628495076493,-586.2562491554245,-283.5619175138544 --701.2012230924554,19.970158626994248,-78.83489861066687 -801.5203249014648,860.0107555821453,-232.86521798541582 --16.524113962021147,792.4724982922662,613.415615490123 --992.6873773107014,-359.880871632835,-156.45151612774816 --540.5674326335366,-600.8567682081225,-924.4309868086407 -286.73945013952107,-474.9794190336687,-895.3056431373739 --538.0413789438727,603.8279056722531,702.9783632930933 --33.867509613394645,-167.85865918262766,955.7073870035636 --598.8706808238602,-569.2814342907831,-416.26564592720047 --654.4853634378253,-241.2688035916268,821.6684539795076 -230.69568125714864,-176.1069027754727,868.8215891424295 --903.0715350483554,-579.4476441962772,131.77721020351805 -231.10524638635843,-920.8849868747737,-193.9224841857357 -298.30792966174545,396.1410928068033,276.27980503253866 --358.8735512781509,-812.959752804181,-145.7751071613318 --742.491125263889,895.2473170413341,-49.65826795474345 --365.4816512862649,532.6081422378002,-4.102814835472259 --379.9319519750999,623.9354847816035,734.304302002244 -346.016332577354,-906.0711551846654,132.64576033306412 -526.5898239945632,-726.9939758328356,-542.6584972307933 -764.9902101362729,-959.7565562938519,505.454275651952 --52.45341497115419,-106.45568232078631,-985.8069350102256 -638.7964619329855,-280.350198726867,81.5312626010857 -354.6013726713188,405.25915287583166,911.9601176521446 -62.679906473218125,-200.56089805114482,907.4072529834159 -284.2204700510422,-403.6992874468888,-747.0715091928577 -685.1090029303625,-275.6367944116969,320.93944272886233 --58.367161268203745,-602.1404404099233,203.37321724093022 --878.6338620986354,-173.3150802576156,93.22987932734213 --127.90605176284191,497.3443505019816,655.8499090906248 -542.486148066356,-922.3741043763957,-611.7424591080555 -73.21501852754864,869.6440808876025,669.9135501042338 -685.0690167036032,-393.58361248065023,-141.10420584259487 --58.588105368125184,-685.2568333001791,-937.8637395110874 -893.8057989210338,-518.5748286729865,-520.1021925527374 --833.2418924624809,857.0155038875571,159.47422987954405 -334.0737142507078,823.153774526105,-308.759662198421 -243.0146222761682,-922.4010905422251,-626.4549435377413 -662.4916101798849,533.5367126766714,-298.7146170857062 --246.37874445157502,67.10886710715886,-999.5179906297309 --517.5113279239442,-583.5363827835711,-499.03410650047306 -611.8116850668825,-440.65228690711365,-616.9573558997037 -8.526921586063054,731.2900727454639,-517.3005923250003 --842.9275144144026,-287.1905283006706,495.3036491299556 -101.3810893895893,633.586739148695,919.1842952184679 -585.3249535032342,207.60615768750677,-13.316823895239054 --919.8618273034667,968.6439576280825,-233.0377548499149 --695.5435721662664,333.41771079291357,-431.42342180908133 -171.55654186209517,173.53581568918253,-108.54035819426167 -672.2372310900853,-470.06587688911395,-102.73481676453162 -75.38425718194298,327.2494415345993,567.943701011179 --210.3854342434879,292.093888193192,-698.7780938629617 -865.2962010849571,-233.88238715799287,459.04284395287686 --959.3178362356447,-589.625714190386,-25.83491135284396 -756.5049354646931,54.5102999013543,859.7409645877581 --32.40620683440727,-19.101806528100155,-760.5064229989362 -605.3124883044395,-506.069175065875,799.2249787446301 -821.6484406607922,886.6202237482994,40.460978206180016 -354.1875695672886,557.0317601233271,-737.9707626990688 -201.9143899949945,-931.4041973933766,-4.867833222548256 --690.3146367595452,-634.1541480758306,-269.9048666147969 --135.12566656699403,246.34484906437456,-851.1431631229686 -7.383522474889219,-634.7497394937977,147.9503500634837 -274.809224522367,113.41851310570769,476.59102095661524 --328.78151151819736,530.2131832662617,-134.4658365836127 --31.631003354806353,296.2042545221427,-963.283232001552 -307.98844284049665,237.17029814423063,-380.30576649344016 --828.4114302010211,-818.1291001739178,846.4474939704571 -378.55864245167436,-745.7947724585192,-286.55366138218733 -184.96598780319277,671.1434101812974,-912.678142573983 --526.7337370599823,779.4979805907601,-981.668899632367 --597.2017944122251,918.0483519459319,226.80369304434225 --476.65726672498704,-866.0178112083048,-943.6173191055557 --510.50984072614546,762.9716391778209,-168.17269140498104 -440.6667383319859,836.5700707599156,-183.9190767943668 --617.4452579252059,34.23586171383886,816.1673741197089 -608.7488282754011,-868.3403132736925,385.1456001551637 -143.7950449179075,814.926352692851,-755.0371662994055 -68.07222640931332,758.9253870237847,-179.95242651651404 --36.01016453426587,-859.0786446660834,-443.7127191021783 --350.98670166210536,890.2448974897738,-434.6652789176819 --78.26252946069599,342.60884712855955,-675.6332551842452 --27.115225716251075,477.0780789518151,733.7104260541321 -252.51854932485344,338.1070306338959,-747.4330548308621 -891.5529944926943,-734.8518450310353,549.3458743635965 --470.3673564433624,867.1862874025032,439.9190787389591 -507.62742595673785,-561.8816538802334,-113.92004672967835 -235.6263891785727,539.9472364132018,-792.0812481752208 -924.7306329090568,780.441341109112,-459.3028190088313 -645.520486064664,36.6478460796468,-76.38703687596274 --371.1317883771892,161.93717326318483,459.77823540719555 --178.1341900744835,258.4383860165842,398.6258423106076 -422.2436340305717,-896.0678037376395,719.4956113701339 --83.49337046990411,-475.1678366075711,-516.4709850406368 --33.971774312099114,773.6630789379185,-243.30483663470613 -499.4514935670866,-806.3625380255628,-47.88659569787649 -983.3722807854713,540.8756055846738,-578.9430231187739 -2.882947395821361,-532.7504727028669,-180.87814547498147 -560.1680474699294,542.4496305808073,-543.7992441952297 -844.4466363097204,185.13636552965363,-240.15141807597092 -3.8711615617212374,210.14250687548747,119.78106369157081 --27.189928927643564,9.865608178800244,-647.1761791442277 -625.4658086093586,83.52063988203076,-737.8402765905938 -532.3142031655559,864.8879567547017,894.6137984739241 --261.9645351776545,-728.9662528784919,36.799253266130336 --774.7815413015586,867.9748370252346,-632.840745289708 --494.4682800976719,-186.72694623005918,-233.6710628817484 -589.325784795778,-87.3663588980753,-658.4634799933262 --465.58020902785177,18.226770375043998,-705.0921651477302 -223.31135129202812,131.49461310229185,429.4046327645153 -875.4092307587352,824.5091222023113,892.1512361376626 --510.56880595259815,-736.8693867212908,-395.44659900710303 -790.1703455326292,944.1069492469765,718.649902140952 --779.9645577449128,894.8559961195863,-153.28394529842808 --981.3794184752926,-115.21251850361284,-907.8616606490648 -87.75584232223514,-322.89194512589734,-53.13013281190251 -226.3407214862341,737.6021916356406,323.8031529438572 --131.90226304363864,638.8557073407301,811.1642751462643 --760.4800671356056,63.865955105583,-430.9760805151117 --905.8776042461052,337.09339022797076,725.5415549184511 --674.1946910452119,624.8273152478009,706.7914670738833 -828.6808853329669,-469.4298218278951,807.9061303797785 --358.6744905271355,104.67602691100569,-898.9850583354357 --912.2378232625128,440.7464254644058,-111.04004404441787 --487.4152492615649,-619.1730079501797,339.9069817184361 --999.1969119493202,611.7823383937084,-841.5007877401424 --617.0207701837611,-227.52720940182076,-30.282520567792744 --290.00976837211635,-358.5756700314122,927.8320241463769 -283.1593624867885,-953.1340892652236,-139.64818311137367 -750.0173994879403,-397.0876271786641,-810.8873104512236 -516.7695431798356,212.02766387216252,140.62501565300772 --892.8468807851841,-719.0019804089653,245.09879242622765 --584.3523170823285,8.140159496848696,89.7633720587869 --432.98561945812116,896.8503110829856,684.9282136711504 -444.74701526559693,-844.0122671811819,-787.7399613819612 --14.437308270088579,-678.5733016180286,956.5309270589482 --682.9595319451811,-25.064329072052033,-271.75788631698913 -278.772842908196,-741.9271822211501,-139.3671439152182 --450.5899343857127,775.503049343376,-918.8285757306098 -827.4549880129184,665.9882771060009,-404.85856711836914 -578.5813093542095,-937.5728793225048,933.7311005867873 -53.189885179578596,-393.4379478691095,-274.8335748106458 --867.1892930790052,978.6990280840785,-921.4161096986151 -309.814246295718,-114.52814458708337,897.8324363774302 --508.0005193864097,64.17364787602264,-35.28758283449406 -405.7328881002027,-863.979536095159,-612.4217399532903 --570.8703598143004,476.30150968337944,-621.7226073465199 -146.9835277819534,-569.5123589980926,723.2499001679569 -884.3709089792771,36.98594988448099,-295.3822315816434 --531.8844499650017,-900.4379969539125,-462.9998476050092 -308.4715598906357,67.23386261842165,888.082556561855 --207.44547501659883,387.7266846567891,-21.354505049757222 -25.152431848423248,-464.45137079176504,-90.0984463160006 --58.43000597458547,413.28504349786795,881.2799983722277 --341.35744503499143,-915.5990628374032,-7.409748998720602 -88.92266429833717,-663.1188977361695,520.9292125521333 -969.8582168829832,891.5494340169219,-605.7879223526957 -750.7264798015215,408.9872728233695,-92.3068723861769 -81.22198864945813,699.2003499649163,-39.73012072325366 --253.58526178974626,-13.505013948028363,158.25960807009824 --621.8446924433024,801.8154605339814,348.3738976592276 -266.53783467497783,-801.0075476387237,208.34787634518352 --758.0786755230154,-842.6046496092019,54.621791284786696 --194.42893190701,177.62054031244634,-821.5556638855228 --138.0338743054832,-650.4265699096841,974.2001718482331 -122.3004248703487,374.8737218817346,-349.16343863478437 --810.5221704413117,951.7417255670732,-427.48192923363365 --152.3836296528516,299.72784340515,-950.6054046277775 -620.5182610345739,73.15638005724054,-443.56562586235566 --876.7840294150615,-675.0031690511171,790.0677177068737 -372.04844787178195,-500.1965567262203,-868.7984701099409 -381.23062477327267,144.8154519355303,-190.96095108352995 --272.7771016198724,-566.3714481417834,339.2225130750353 -941.3360555877409,-648.5695083263483,194.23324003100674 --151.62988850804754,-106.62255651067017,-491.7054397443712 -650.2697513228381,-29.48879170551777,86.81170439652828 --390.47817440534845,-636.3830686661005,-828.179223594359 -428.23828184983176,-607.5314366242887,380.1507083775955 --219.2471079060922,-168.4503980206971,-61.64500781445656 --264.5829837449136,-798.7600455548198,-380.73637999430844 -327.46872138787694,331.568802937742,-427.5513855200113 --79.79474688462403,-613.1055439761251,-579.2558369403284 --953.9058231867851,793.4930998154891,-578.5866698501876 --544.9322461270733,-440.7971347097364,-745.183856609142 -278.52576636272556,-849.7140936448269,-731.5951473472994 -289.5134531801857,-320.67875903711456,415.895653402378 -114.84948934028398,-487.95765387697384,301.65590097865606 --767.4526394142387,72.82076616006088,-125.70378990993072 --464.2528343651185,208.00999547900028,742.667184680565 -997.8093995261534,215.5255374868491,-190.58825134165966 --549.5857995675967,-485.80782120977653,-41.09004370046864 --265.44459743858147,827.6290452498883,-263.4090646885809 --253.11081770912904,-232.93097513204611,673.2404207353161 -301.5766416938038,228.33770063778525,-331.7139552322757 -635.808353664879,-923.2722772885977,741.5943446762262 -25.499799587859115,-203.4995302731744,-5.66543856462863 -334.8310610676622,-974.4691469642053,743.1037129164954 --106.52094937721438,-314.0669605998436,-723.5088687318857 --121.0692512831157,-7.354457431242281,-192.70661101304438 -357.32018765379416,-158.20694248154803,922.8351556931466 -198.5550356471838,614.955871303818,-781.2881937810423 --205.4174141081886,-326.3045971056946,138.9647762731836 -722.2270401228511,-843.3235644759867,-854.8504039105784 -700.6354163151977,-574.2998279232852,337.5065088996273 -85.75626472161025,665.787189774459,-749.8221803271929 --740.4340685547775,113.63672055661505,892.7573067167418 --170.00448325849152,-346.11579949061013,213.37864639577174 -860.8972010900623,673.8556656892474,990.9672214664397 --954.8628335952458,-774.2837105744755,218.93552673324393 -641.1528786676995,-429.5113153864669,-521.5778239315625 -573.9515987624018,-887.2362922935368,-261.2347048348298 -11.618445184659436,120.6973487006469,457.23031358555386 --290.3085531386836,225.3686893492145,170.7508455819127 -95.23220130749428,280.96658628442447,-481.10165786384744 --830.702492830742,-761.4566559205132,-550.8352346921979 -0.3958710455705159,680.8855010920402,402.58668417676813 -578.0812084040942,-298.04875214781725,-190.69251670289964 --212.63622801877432,-616.2536311909969,-877.5666837128559 -181.8321856544535,978.4333668411723,-666.3405900994744 --906.6303602014525,559.0633636478658,-494.8279866305516 -659.2876107058567,407.87333406903076,891.3470741016092 --182.14552848665596,323.9396789012683,-70.29043837345864 -261.177394617087,-100.80218798452529,-622.7355071518504 -15.794832006761794,57.16840287488458,621.2076965203221 -471.04141158716243,327.58324788288814,-773.2258088948549 -441.2325813274301,0.6103127090295857,788.1990722123185 -839.7418682610855,-889.6868187964291,641.2831207089575 --924.6052191546588,-265.6607486099547,84.59995124215834 --703.7984027457451,492.6276251381537,-983.2905916557229 --662.8019031319263,161.59365970695148,428.7751240745847 -833.2862053878323,410.9933038692477,343.558540509732 --211.3177072986714,-997.4311489463971,-759.6814825287561 -69.1090895120783,350.25977168883946,-165.103432207075 -461.35802305678044,43.72459066435749,-851.6476088113756 --615.9674980641023,679.9964464878858,449.82549324887896 -789.5239740249899,-764.8855017581268,980.4450692301477 --581.1865721001328,-976.4402474267159,994.8458781071083 --437.8522291097737,336.0389050251199,-646.6353716473895 -160.45706439828336,808.0699729091186,-359.63766514312283 -340.5079520887184,-624.1928224031669,249.59079743745042 --327.09929636497975,-577.5834828240967,-373.63589859272975 --642.3178629844012,803.8322156757656,-205.62622736574235 --509.44139005126533,-103.18431796813422,-358.9276663870089 -488.838507626652,942.4398237709888,-123.9326866047063 -722.0667999444809,131.72614711923893,-685.5286698115331 -381.24548416268317,26.868994251640288,301.2130465042069 -779.3748251433299,-119.1308586879079,802.3552464347113 -501.33802856330976,-22.790148244030433,206.44427131592738 --348.83773496197716,967.1945994775483,334.7023261007919 --912.3062950067402,-346.75618850398246,246.62886751811493 --887.3334444015204,-952.2316173617145,-99.95152094439482 --334.61964061465994,-123.40278393366816,-474.6133802399896 --670.5645061140382,378.28671396067534,29.142232535600897 --599.6915775012664,-360.82114748000333,183.61581532665173 --855.5413034550443,-705.0939814676409,-853.5087917852197 -624.6346654282377,504.8184664240184,506.62586375851424 -432.65068695205605,338.77084733973834,-46.01616924364998 -284.55632701422996,-923.2768904240507,242.92884531356913 -555.7554110737544,0.7167207687804193,-284.9733431455261 --445.1465303980417,285.60410032416485,385.6023972598175 -741.9351997250851,-315.33183507801857,539.5446147711712 -122.71164837867582,765.6729813561583,55.62421659124152 -35.25965679593446,155.75416288181827,498.6307102848689 -929.380957656922,-852.8732915684686,-893.1307952179657 -875.100674814677,59.751251036412214,229.80602913387224 --35.15279681054233,-812.685094785051,536.1787568373331 -494.4492901771737,-376.593357014376,-387.52150954319916 -675.6827618110369,-855.2854845173467,762.2102967131316 --486.67662020817113,185.96949551098783,871.9883580035555 -356.24500307329276,-171.14037506592683,379.0684178108304 --312.0407273672596,-445.48316730162776,993.3665558693594 -501.58046235957545,289.43995476363534,-289.4207135613625 --901.6783416899037,-937.8862479296888,108.36251089759753 -524.065442078102,74.75838088771025,681.5701438782291 --933.1469338135568,-266.49584714811976,-525.8592176516439 --105.45406368575595,-855.247213611755,908.2632831421452 --553.4891978612782,844.6155509671696,-148.21368992663645 -971.0482665104362,108.11676692042147,861.6657283516149 --989.3020226115543,496.4776123618003,806.1013062050308 --720.5588660420918,-807.748296535697,-150.85478562808885 -867.3578122658703,84.77312038087757,54.91292744346424 --717.7477634013562,-998.4209778135624,620.2801814909224 --824.8508740275236,267.699637470648,829.2329090303829 --582.696173683138,330.5456724738217,-842.6028465849811 -207.51028767522598,-672.1365580935945,471.90712103035594 --397.5374104121836,-73.21798239070756,198.86108405524328 --657.4531786675209,483.2756372352419,-394.71931872637094 -324.743719825507,-683.4338986012526,376.2353184127005 --743.6238543790765,-149.28700746003278,-505.58785252224635 -496.7504988563651,-475.9299909862509,763.4346127907925 -783.6404228132258,-607.1173695544283,227.6918900154485 --824.5647165600714,-216.92580079674167,426.64345900254443 -318.84649369983254,249.40133881321594,-434.9182726751128 --243.950101131196,-794.1077105994276,438.0456408672019 -7.77759358254707,417.53126469130916,-502.11295040625447 --351.1235427298676,-331.56932547977067,-948.5151805055676 --317.90425433875293,606.609147036067,794.5969914994771 -36.43663127185482,-88.99660956155958,-938.3507626012595 -758.4086751707653,-973.9795731482545,889.5001604204235 --21.567502623818655,-316.13101285054677,848.4368696853201 --951.2180137798065,162.8497897381742,97.86504899867532 --561.3591975772358,-142.22513729957882,304.5280118875405 -454.262393763855,-998.5662825868404,873.7068601820306 --670.9492552143752,-532.8391315552816,-473.0531086123035 --924.3597268959294,-753.8957528193502,972.699845888324 --369.5665252454279,-769.3978193219014,-786.0174776507533 -438.9199353399438,709.1373280652817,-486.09540098306024 --958.18097532953,-553.8199631092884,-886.9686184064853 --793.210126739917,-136.98376030471525,-540.1632582767348 -31.891757050846763,-493.01249348561925,881.0746022058952 -811.8879358525292,133.61221002093203,-291.1520160252277 --237.70623593052892,-176.29543371100613,455.1586442698881 --96.72200896232414,713.4598930117947,888.1895718607291 --328.1076932421323,121.38896275136017,-809.8869263348711 --599.061904467282,-173.0684665796798,-587.5945681964423 -753.120981577435,-683.4274878818039,-88.67835689381604 -211.39848091975136,383.7278163216888,-233.8612605469865 -738.1981374494571,136.63830215585108,-120.98443910489641 --865.5187318959267,-70.62106310966999,641.4716816314606 -229.08203644263085,664.3249074582368,-11.976658801388794 --763.0765898110363,-972.7203083282378,-393.56090656281765 -395.9809429955849,580.5198078833876,-408.4943307593412 --8.69215823350578,-157.76219113183674,-178.9544312971443 --537.302573599699,-727.2577899410833,-606.6228835375738 --889.3352256733078,-603.7385163528459,-981.5982047492411 -254.51680127195664,-367.2491852246343,946.2894228538173 --612.5658984474043,-308.34285938081223,-284.31768271693363 --983.0970078750789,678.4159060789179,-936.0110797113506 -880.3596694584828,784.1487021872413,71.04383217192708 -87.19114982258407,307.55584591231263,-225.89997613022604 -294.4445667957109,-910.4632226230262,-891.9047453005469 --85.53916076091127,99.24460221206982,775.6352806716379 --790.6787321842075,645.2958543877787,-579.9053254158608 --211.83270297993624,-366.79513034517424,-199.6894542692021 --699.009003854829,7.140148807109881,603.2851796627344 --116.93197924220613,-18.772848203601825,697.5351705626285 -412.11622927606163,-19.0911829604305,-484.60870362164064 -769.8534936899332,154.0408033811168,-557.7047797786132 --461.76049472397926,606.2661778724919,-911.7088758250891 -984.1843740576401,-739.2966405704165,592.1370507938748 --210.44936645663427,-15.567633425066333,761.3011549291557 --174.17762082157356,74.98750734646887,-901.4006751816601 --995.3050522650937,-510.4002539965482,361.1661858375346 --757.4702132817266,-772.4760823909012,-178.0787839281934 -295.67407721645304,424.1439844958611,-643.0986518032505 --840.8237052559151,880.7940678910884,-478.66723487579657 -706.6929952174476,726.9829009256366,545.045183525089 --662.3327866948598,643.6029185084008,538.5011184831733 -193.44598021243428,-325.5959296620945,-474.98279146691175 --756.2215758392821,19.514133801742787,170.52175101969306 --281.3220189684256,-49.281864638262846,-272.97108526146667 -282.0121146414026,802.5184155931267,-672.1594759061102 --237.18238019375315,-718.2627920982774,249.8875408156639 -457.7410189771915,863.8254651949117,-442.25614747807015 -900.4224117308604,-873.4746563586505,206.02772672917627 --885.73456131334,787.5483755238897,59.61811414010822 -338.69670152559206,663.1478518209051,-699.3787550320625 --922.8168761237323,757.7622918257043,-370.133545082135 --742.0421841456695,-63.07752582582691,196.6121513920375 --938.0587931549798,-450.2086834858245,-934.400251446208 --159.32922160900205,790.2000581324887,965.3048229871383 -274.09510700725514,-676.7246124308164,811.6987799986116 -32.495646400120904,-692.5013757941638,843.4533389033227 -514.938101446206,463.4105454463031,418.36140758880924 --599.3203578071153,-577.9866165849478,376.5859968545101 --560.5544997792063,-122.65660639390228,564.0036511878827 -567.905036195682,-93.47645494828066,584.3798765504903 -677.2435923961136,309.5515025685204,-543.1482953831596 --451.97643922890495,-370.3176891825293,-766.391784532096 --453.68075926010977,-580.9615513749358,-89.34250038279572 -816.87509574453,-791.0393664920839,440.53584789479123 -374.5660088262555,-808.4916026732847,845.1448098116002 -136.9444043136391,-272.54895772863154,513.0771669906133 --485.2690831967319,387.0196740926408,-920.5775848555056 -678.816075218544,-103.65830595736304,273.38582871588346 --557.5243603866327,354.1474253168958,544.4805517865532 --53.573626231202525,235.4538481235886,-87.34815235520284 -788.182738515691,-4.261638971361663,683.6174180576377 -602.7041165404971,-178.99035730328694,-539.8310162850499 --187.83573488045806,652.4347515504403,-544.7349283612152 -48.872691715498604,612.193495921495,-293.04504974324243 -284.41927400539475,-508.736851902371,-781.4411092636801 -588.7684501857127,-802.0627531825863,-457.2372098408308 -710.2188439948802,-307.0614258426656,946.0906990283222 -959.4686695477194,-463.44795909288666,-918.0435555002191 -410.1265684107582,-98.02699470331254,-798.4943120808474 -415.04563795608556,-937.6501817761575,740.3933809844843 --722.6949417733925,-745.3762425065499,-648.6554040628309 -920.532716984133,386.33872050769196,602.7430709272735 --204.73002853449395,-327.3745449900889,-531.0319864336601 --38.70394337518212,103.65746706833693,263.5496873055108 --485.762992002611,897.3081618059812,-660.4830035857283 -931.3063495328247,-970.2877549849924,-37.74861636630874 --333.26432376687444,-101.75317213949836,141.32915796157818 --128.8216839745819,-170.30629939681012,465.446830826613 -371.7525501729292,666.5425640716958,-500.0820375210089 -219.05701950812727,170.38957078570775,-260.52437825462243 --27.88491619463821,-372.4357133885426,-716.3112047660296 --572.3975786745343,-788.9727071975979,366.13915038024834 -321.45478621830307,901.2127431597457,459.3568272944826 --895.9083224877371,768.4903478579083,725.3503258914516 --113.35935845460267,171.72610105584317,952.1566649450376 -64.60872769633261,810.6436567521796,-833.9224843796271 --617.8962625826343,-118.49011311736433,169.51361667460947 -632.4557037256004,976.5242302863737,-222.29700705176708 --905.1687277198301,602.3430065906496,208.76143816561625 --602.9142822635966,-10.343086757159654,484.6204910674487 -540.8235741372876,-0.7631760024760297,-389.5709397422818 -947.4851640769871,326.7252219129857,-183.52496130740258 --439.07355159069516,462.2059660071243,-515.6331088124646 --656.5800220526237,59.66777792414064,-420.02521471171633 -257.81028984723,-764.1226502515331,309.88220913464306 --433.4069440045955,-999.5141311309745,-746.1278846516473 -867.230755670188,734.7092782307157,-532.7819359275263 -556.7438090909825,217.14318634794859,941.8094228997388 --252.7886809318818,362.92122503434257,-872.9285551521629 --207.50530636718815,927.6353223763608,77.96174890024099 --424.24099333031086,-759.4580737427863,407.0566803630609 -289.7120868594536,-252.1225727924508,901.8827037316685 --955.5943740242993,-392.55229673634835,842.1389725991628 --358.12912336111924,-495.4943322896592,68.44081986249466 -647.6034998410757,-793.7064782432778,886.0414192914723 -590.145762362328,-637.4994888968961,424.0159223963253 --230.08255472488565,-195.41064384736262,566.5801848777328 -925.5696159614645,-746.6882543056122,-158.7395262423612 --38.11678383139292,-247.3763660900048,-273.62175256754995 --895.4626648768069,371.0772411252465,-127.57116575990926 --610.4123947121465,632.0670046041369,605.1214963032558 --27.21674382221238,-403.098677704479,276.18545159290466 --423.6957284451938,-527.984139352576,461.0293080526533 --919.3495205580986,-810.463057930812,-986.4236519528205 --694.1136270491477,-862.0199825790811,991.6047355598371 --422.38006009182084,-701.4639746615055,-518.007484008164 -872.2511430802692,40.32044604879138,-270.36380738428625 -746.7829158184386,-210.01945890193508,-329.98286008460843 --585.434954900529,-244.406352181177,-366.63128796614797 -354.60791859628193,-420.83459065854584,154.39949284512295 --868.2156699360546,-617.4216866069712,-185.18945677730244 -873.898507817391,-245.49602856860918,328.14824239966833 --489.8255551572037,-745.9328480535365,-882.9267998398998 --389.17300291449726,-684.677946406184,-651.9791039677516 -521.5186167739,-968.3238581102515,115.62025147086888 --241.07723881307038,13.099999817094385,125.6604744292058 --373.2646110854437,-409.78227963142945,466.8036986698114 -742.5539762423143,-614.8367350829442,-804.7624789297021 -795.5916127840519,-300.20907270520274,102.63478132562841 --280.91371095999307,-748.3953273078973,178.66328989545605 -50.2817035392593,-594.0128816176056,-96.26191069544427 -593.8950080312916,180.85220621578264,-806.1653458660103 -96.04299445827019,405.4765985791737,585.4068115615028 -258.2351572685336,-694.6836709184325,420.34653318032133 -354.6836921630327,-951.1462341187336,-176.50466481951366 --334.09950607525343,338.8241285072868,-567.7283753781585 -181.743845948517,826.4119236283448,595.6047444172154 -842.9154724330608,957.0119338653799,-978.6597459876745 -245.48255275495512,-174.3212044821871,719.7089806702434 --496.3705959817366,962.0589782301522,227.4159390874945 -587.0748044576619,-828.8008943544634,-633.08423048227 -516.8073460684063,-956.0269559213527,633.7559717875656 --972.101962616177,314.23767812254664,-269.8121595363882 -222.98970543839823,392.0628139782275,-315.04956162739165 --784.0751037783289,-860.7082645034687,177.8720451250956 -41.31070746822297,484.40201824226506,19.471020007874245 --155.1084199382418,-203.82564352753832,-947.106194804665 --328.8855966066857,952.0403150489885,747.1111524541775 --341.24386593156464,175.5908101327443,694.593491070988 --117.45132649986272,-964.084272499698,-850.9790763627199 -20.78544269741326,938.8787513517566,386.4190844377356 --858.167617122861,-621.2782484162744,542.6462864337 -682.8795199124895,235.3891723771817,288.84633925963317 --943.3250992332307,657.060519163017,576.5504163416592 --481.9297117933057,417.353439931014,-570.2907871500038 --919.3396778969741,-597.7269148192454,-642.7422464914009 --324.50400653030556,-163.10100564908385,17.077782995415873 --46.49224898334364,-458.6507880694213,-941.6586628518511 -210.2032444743013,-208.51034030529127,-402.6556852249006 -733.8820856610246,493.48661559631955,715.5310967448845 --10.034410575078027,-738.137495746445,392.4428722425448 --587.8524401256495,-117.5406618165664,-869.998422102223 -650.6168048459649,-748.1187179049989,806.1950140986194 -728.4612045231142,-70.83447112150782,488.7364086079813 -238.89014763630666,606.1512846754897,-136.38979842817594 -571.6169684887,-75.08636586970408,881.9315756855876 --27.255798349704833,-74.76145613254096,570.1437231270254 -643.155383521676,108.97822864234149,-640.4043730098492 --64.48353808484103,936.1450058193568,505.97238607837016 -622.3252077582645,-934.3490023615198,-64.28107473168018 -293.24226731511067,660.0653672561493,-901.452692834457 -704.8777712837461,96.80187348382333,-605.3720588478802 --365.48956710059997,-436.14089649687844,61.71806857695151 --896.6286401777363,-682.9276830001529,625.3860867515648 --734.7920185063779,-533.207461083746,-93.25878879168533 -34.24177622666093,527.2209592283173,-105.33514666762449 -579.7292420710776,236.69261409091496,-773.800521152355 --687.3371232143229,-125.93254910045835,-206.22121382192086 -487.08853927458927,161.47427959470383,-223.7338379955014 --658.4794330992288,-546.3257953490097,151.00203693811795 --153.1223902004151,29.85501772134421,-658.6451293955326 -325.81250468913163,705.0774817119341,-484.1209864261988 --16.971548336346814,951.0546580418036,-333.51651889854475 -190.09268984752248,-819.6085995995113,212.03000495888637 --820.7364533907642,918.470870647644,431.3253041446228 -576.3195762714129,408.20872154327367,179.45807215293144 --100.17443782898931,716.7467595221249,913.6713350861262 --1.927654191837405,863.0700983105239,166.66581997703497 -76.76837379286644,-91.03453408928658,-581.4244769397603 --992.5606783638816,-516.9875462878774,19.446343207130326 --240.08009548049495,-103.02954399473242,961.2964391280991 --299.4552586613448,-95.63412127978427,-732.9688972943609 --904.0845351260248,550.8190291849892,141.36635014395733 -521.40961208779,-700.2744022268968,143.65754236538191 --492.71505131724894,-543.8763661999601,-976.9479718940295 --739.3185528618562,-381.4637770006093,-766.2424788181219 -971.7168808218751,-382.7347029520987,-739.3521065953437 --601.8353743440846,175.40645668295292,-871.9129522704229 -724.8682602823137,922.9993584742947,-506.50515866523824 --99.8094628182813,-955.7310979410058,281.4204494544431 --172.14788389482226,-459.88306779688855,-586.3257787667831 -308.04615531752097,-167.56593793537115,-640.6814219401759 -378.2181629736481,130.1445660733873,717.3441098589924 --765.0482022470142,571.3332038889123,347.033573634518 --769.9781263438043,389.6414597434414,-116.90542224033913 -889.9695711116863,-716.7772987642013,285.66678163147594 --236.0399090741081,913.6293411817555,-340.0502094194471 -924.3718189836004,802.9717022014981,-459.2335293786873 -607.0835536528555,991.2084036070119,-494.6739956574353 --126.4456613533606,40.36147313351944,-410.13772839227136 --969.4703207079405,-559.7415116049467,-436.1262313164831 --112.80059736362568,-657.7950431731963,746.5087133833451 -409.82226546267225,-829.599044880676,300.18490227986285 -307.31295281124085,912.4423472872554,-993.9582572876775 --504.1351003883856,855.582958750631,864.2678307965662 -441.17283874127475,531.52664209508,-817.0340841407058 -27.751669556467277,-536.8340174220011,-637.5639127727654 -620.606598246665,-729.9237266389051,-62.696726007229586 -877.1564791720662,-628.3358888693149,955.9868474764692 -988.5759715221182,111.23430936480577,-659.7145196456842 --367.7902241182087,-151.01433464692968,-381.35155128355416 --438.7288402469685,944.459418432715,-693.2703451685087 -466.65581743372445,-999.1794211216503,192.36533880475372 -831.8860079081048,-424.13181181356197,-628.9480494845616 -303.3595897568539,425.2028145967863,376.06103790396264 --361.3662399572519,-495.5951956813382,911.8375999240884 -846.5990165398589,-85.36678021435944,692.3877323087468 --95.35304473140798,-151.2219638549792,-686.4741048014107 --147.18788701605433,74.83387719961388,-954.9913451426271 --111.77398964918711,562.7124367904007,360.09211274853965 -270.31397772787,819.110856874405,-963.9359803495399 -114.09517238446824,574.6976968194142,82.67076540253447 --352.2088948392417,-727.4988698160444,775.1261436323825 --58.475215224794056,756.2303939714027,171.7042448663367 -348.38423323000166,608.5223087569,318.3110892002687 --203.8903186421246,27.266767857302057,606.0910493517597 --252.6994072540316,-223.75708646300586,-808.6197678839977 -829.1688704434955,-817.9273701091165,296.41835489711184 --173.61104239440465,-188.76121948911532,359.1036731453678 --865.8125347402425,187.41156590286914,544.0635719447096 -656.4255157731884,-658.9392212124494,794.8381001563473 -312.29218369488444,763.7096016413657,-29.438565779603437 -84.06669019440415,838.0765540573423,799.8190867093435 --103.67825326199602,-451.1747367286365,-213.6591308714717 --224.47134294050056,-426.2662500344121,-462.8407913340668 -722.1258729594388,-860.2761586306766,355.2223641991882 --654.3598970870954,-310.9882132118736,-876.9139317303263 --460.05272628907585,536.8421422344843,770.0306490945172 --556.9456961952659,-72.90432148215632,-59.351904125587225 -747.1506115194684,525.5981057516108,26.154436736099797 -341.4944009435467,694.7101078187336,-980.9220919489101 --194.2199378999028,814.4863345541573,480.62606168790285 -85.68274866814932,59.28905407026696,-304.4598047911245 -41.04106728302895,310.7663989269065,-163.27392314241388 -428.306292784348,722.4644545207716,-690.6303036302777 --96.90595436515116,-183.9598174298378,374.9296080994561 --500.2650694841413,280.50182990455255,754.9784834629761 --163.73680041275463,822.03139995844,986.3274778669568 --787.8159001040958,-533.8936240302828,900.7595029641864 -916.6553729627735,-804.585449226483,-970.0029992457266 --677.7999534871556,992.0255667644965,-640.0007667786263 -5.095213444046294,696.8354528610221,-959.1967786235873 -208.97796451691897,-445.9491022607514,724.6698328794632 --433.0777014718417,373.5114405638178,348.4392648947937 --557.01290228072,-930.4016002632998,-181.50085242920545 --421.61369606826065,617.9554992274172,600.7283769106905 --85.95209561474906,213.0244506464378,208.51903197385036 -654.3162968552467,-149.99517175360495,-449.1066404189819 --469.9301637189051,72.38455856440828,-101.7035945355749 --119.7584580301276,-817.7253218205856,437.2074813803913 --572.5266240361786,-606.0927395825572,-174.48335944521307 --544.4433167643972,167.71653461603069,-257.07332133105695 --102.17655481441977,74.33864320805765,-592.9289550363903 --688.4967542689404,760.8438057472094,-132.55259433715798 --175.81278073492172,-928.7756994543171,-4.047394825213587 -108.33944322200023,117.68174190933291,414.0623386457687 --645.0363300179765,-495.55373153876235,621.4609304608255 -894.341233686788,-728.1345052653587,-4.700890989563618 --571.6474945208263,-879.8536632900351,-348.99332374772916 --712.6247496315746,419.8661468684925,67.45082734288894 --712.3310580193782,-981.5168231889712,616.3140980484254 --647.6111876715049,212.4332844415319,-326.15617384650886 -170.97187663007116,-368.692746035352,-826.1208786154916 --554.0999828844929,-623.8828670418488,-143.9612951207123 -316.5675668523147,-472.38785010728486,-975.8601293987641 -37.87472852951373,211.51897871794404,925.7409880036193 -178.94160618649357,-57.65488124371632,146.80325179540773 -855.801259724054,656.7562912032924,-354.04253327238405 --525.4912726857256,-474.73277526785273,8.842079430425997 -488.09890245715565,6.438414365924132,-864.4072083437748 -447.1614008799618,611.9402573419077,-421.00426976056076 -328.2514785667008,-146.81619789121328,778.2387114548856 -690.4511163214797,50.863996619284535,383.011091627189 -766.699402044208,-8.565979843448986,-373.49851902235605 -507.33227581916253,-559.8674904306165,-222.93770398791594 -731.4544742135874,448.8446805386302,-192.37798950500155 --570.5109951832851,-288.0632183355269,-431.79170154513406 --647.8214241122921,486.66582713131334,-495.860226299657 --91.66505966447232,-228.2811063277819,964.1547572712616 --217.81551170355897,-840.0350344064905,-820.348494855832 -181.50744270612972,198.72710347653128,-162.4820190346901 --136.3126153759406,-892.1348343182576,33.09302077852453 -9.478950760703356,-700.901362886111,-792.3212277781448 --752.855018801019,-797.943507017483,219.41639107351966 --607.0346951941627,-497.1396956250731,-652.8557116971206 -915.6706088970061,709.2349263036708,-539.0103252969582 --344.86741215574796,-580.2143153900056,-16.24808107835247 --960.7789350514928,342.7360177935914,46.31629963528326 -797.2778566022066,-671.2146313431717,608.2184921222633 -583.9220289334314,-745.6376215662261,-202.8815517117448 --659.6947177109662,-490.5589990849022,-473.5076503389113 -112.47278805154542,-177.17813647906894,895.4656080126106 --747.2597161059897,947.3842697003977,-538.7227195714721 -545.7478727637063,-322.06014765435725,-713.8372091653722 -715.7783704924798,-382.27820152707363,317.7108084536844 -132.8873701732532,-56.48738121825136,-8.36105470292182 -464.4758281845752,-824.4541717531189,336.3613239158103 -791.6242027971573,-884.4236059602717,-718.6933215326665 -433.2638734040629,-125.4367035107648,-192.90275837262323 --726.0667309115283,13.540081435576212,-746.9093776072455 --46.75908737891916,527.2305979233133,-483.471284225673 --38.42766364054535,984.0319387936713,373.30084670807446 -682.7135426103971,-170.30478687890854,535.7218462517105 --918.9816541173564,-754.17763491551,-593.8588141598757 --196.09615076956084,691.4897566515262,-307.467898424139 -309.2423870309258,418.6285896069669,172.36470817668283 --285.5160636597276,154.10668342708846,-315.46881442050756 --832.2525228959759,985.6079563720289,-745.6350927349782 --855.3032323278853,757.0614984143117,-396.3306782142098 -300.5939481470152,-341.9885406755343,-217.09145841105772 --475.774055966407,-313.91198841397966,-178.59919882691372 -440.83213818468585,23.072388469583643,887.1304343139539 --916.239212322449,6.136645264056369,168.44957766343623 -840.3939721485478,-901.6829527571448,146.99916987043207 -707.2598570559142,-516.1445437615268,752.5846970478749 --961.9131814514163,464.90925826745934,866.226442337306 -314.39532328012433,-121.94151203910405,-910.2379670545639 -840.2276266452575,-59.40755461685046,-942.006511328104 -379.6421426575239,-36.3254928474837,-751.3093651151785 --571.4563813794808,-871.0186390883075,148.58707941714715 -244.0589585040184,11.484596710888695,634.2042660052298 -722.0176426160272,231.24879336625327,-974.4870405851389 -390.4593114954714,-164.00156615929689,131.11496645277407 -298.1612040377688,-299.52677134584644,834.1970103435885 --732.0502665004376,343.02361456207495,-991.2808400868391 -849.3022108103617,-774.991733523817,-810.2315397048508 --333.98473389551157,-252.86742792183884,-571.3998553542427 -170.24332185424942,-114.1718039160728,-931.6488219178252 --360.69587548939876,620.865827146341,379.4030697237372 -449.74170715976084,396.2338481670472,-378.0539572339334 --800.6721558464483,-455.06563193380805,663.5706003703185 -960.9415955661423,-12.305970516877323,-980.5992901539156 --719.910375731542,-355.83884936746847,157.1706971858996 --849.8127083893721,886.7145974197633,-269.83265343119854 -825.1684358496461,561.0436055140435,510.87454503116214 -213.43915956446403,253.56763410368922,276.00647043249637 -257.4427740511642,107.45646279672246,972.8280369657778 -464.5811348513921,553.8927767850423,744.9256301673483 --568.7204745483016,-832.3916818098785,-34.21112680280271 -28.16139123854623,658.3635598998353,-112.43284143532856 -141.70605108862537,54.141877026916745,-923.5944324852179 -230.4297931938279,656.0865715485045,-684.9989038483923 -188.6634678531916,187.22108889282867,-671.6300718872825 --753.072852538528,960.1038859529697,-212.56166069392486 --545.1565425529415,-657.35091109125,335.2034271664702 -218.89059465455762,287.10424597483507,-823.9879449770955 -787.069166996874,-221.46720638190345,-373.2611871392842 --75.27710550452161,-219.86786850474346,727.1540062782917 -858.5219503957842,-393.0935671007876,727.8716149199097 -563.0462590661343,861.6153446895237,-508.49937562822436 -153.91830024195815,-450.91083051911073,648.1889809687484 --989.3516188578715,129.6383257727923,-321.5931374561641 --354.6325858443595,289.812647729834,702.9688986279878 -218.39078278665238,706.345957293445,-470.8057762379401 -39.00370952996218,-98.92692186584793,-976.7102009938076 -113.62428628148018,323.04864829234975,183.82880883814005 -472.5597975668429,142.6790569061543,-866.4994902984862 --767.1089518305771,192.94915508790473,-450.04161605271963 --840.7097419304683,-140.79451310290642,108.64519616731081 --342.50802330078693,440.867404451556,287.5412162024893 --334.36327781665614,509.7450578171213,297.3900850660709 -274.89075743580406,106.85540157413607,-977.2206638228944 -393.01436695377834,-247.91641778168707,885.2194203173112 -635.9695421544106,175.38893906262433,-495.63603636146115 --592.5652134446668,-319.23032464490177,-46.8641128399629 --407.86897992210584,29.8589907849655,-669.2591489736282 -955.4256256509998,-784.1508900700122,863.8882793087441 -827.1560228053897,50.720963638995954,449.8205436721687 --127.90340405482436,260.06915508487646,-318.84812515776264 --397.68196042910927,156.45957233902732,-3.7406516320393166 -159.0727382999621,-426.67883742595404,-266.08433636600944 --832.2040787421814,-895.4472554555886,-493.0857406539675 --851.5062813389085,-792.4505827305186,625.8568107878741 --922.2526059666214,317.88558786948556,-454.884502369199 -743.0913614162528,-30.01543084500088,-388.84708134434857 -35.27787137886912,-236.08396190946235,128.60212933966045 --770.9342633473035,993.9810056251022,-148.88824460656497 --303.5387205852627,420.41969663252985,-272.20118700933506 -666.5486100575154,-91.45855127914945,439.11682653086973 --785.093567116227,692.2383711102236,471.4359735562198 --576.5664430760687,-709.4279805084267,-367.41530254875124 -952.1411720638087,-486.33685086588275,-87.74558210673342 --939.9595485653274,-205.54494086753493,142.6400308662055 -906.2492250159303,33.472089880128806,638.2146523553756 -94.25528513780114,-918.4299731289638,-369.9834496204519 -151.0990156622065,901.1879318622487,718.2607195024666 --543.2887716423047,-559.780339961673,-597.6540657721985 -844.9977926050062,705.3323062034412,549.7668645058975 --214.52977155154485,8.76140859753366,-71.33651040969437 --493.2037848812547,10.05609229753395,-939.006904294491 --736.3792530050816,773.1791923378928,503.3595340628465 --154.26318188182586,34.300724567754514,-260.00222808004514 -481.5597343213449,568.3743584641593,526.5703804063182 -445.2234496688991,-590.9913226144083,-324.06004151904244 --60.30913003265016,-338.4140171446887,509.88040031665787 --341.2929515000907,-723.5358264293257,-201.91909590339185 -959.8288655647607,-548.2371741328482,224.3173178864581 --134.05390032058745,-857.9508647013467,-24.24678800388108 -404.3286572966249,26.439951655637515,744.2121274931621 --422.1259666848347,-827.5016573920701,873.1312233160122 --243.607300943562,152.8111029072668,584.0062522603919 --351.37267224883885,432.32907635522224,-729.162300364344 --417.41250558898946,-710.5787277269601,622.4611168027157 --554.7015295464292,434.80711081042045,886.5967944913052 -55.544418137754064,80.05838452137527,-77.93286380437587 --348.2197132127145,-48.689938150165744,205.61506453351876 -971.9831443413186,875.5291186364484,724.3059165862435 -778.2610714097166,-64.30163341591413,314.8886543549297 -790.1334458724282,-214.09847001729383,923.5249566909376 --168.427875861634,202.16533078643124,419.6094265447439 -901.1840261518767,-510.7674518954679,492.26195647728446 -41.63117228816441,-462.88571875871787,553.2136795927811 -104.44456034769314,321.9476412993515,-354.19786284419797 --37.45209634478999,234.70850197613413,-190.17837146031206 --603.2549203045974,923.2809846306081,22.93508008523486 -467.840740575401,-177.90561288788376,-289.7364719485673 --185.67140306575004,-181.60671242870046,88.36023188390709 -86.93973996272621,-5.692368234256719,-730.4284301651238 --7.849042998937762,-661.792199158697,-747.7284274084697 -865.2914346823354,209.90002629540845,318.98011624916853 --196.41265933327247,817.9617838297283,275.860979159331 -538.3397390471748,-262.8750619445723,920.023761638251 -640.92258031663,707.8969260290874,-655.6114651484914 --458.0735842575609,-428.74680063284586,-458.1815535062576 -710.8163242085759,-936.2304095828158,-847.8000220384514 --452.1702587401926,-600.2540507011126,-536.2807722343032 -595.8863785066001,126.25318778409383,-988.458677414064 --141.35446859160947,-184.23014629928218,-772.1094611109129 -352.28357720291433,404.1943767589821,441.78643810419544 -456.941891117184,-999.8943461354064,907.8416076934443 -628.4175341093262,807.9633931785706,-968.7134093851317 -867.7175915714788,619.5770573762095,674.4382859173973 --813.425230556063,477.55605783719534,919.833379284182 -357.0946828363212,141.12280924921288,891.259355497994 --114.12575653112799,198.5871326209574,-47.32341301126769 -865.6924427205984,-847.8305464689855,2.2394016506963226 -373.9048827708766,583.8130768444737,166.03729488827275 -817.835488242908,883.9828937677435,-871.361553612833 --195.25892091725132,-953.0819565576911,-341.16668525111413 -73.73643594120426,821.5898610198976,693.1086449308057 --745.0005466560285,-813.9392505182086,178.53467751333415 -64.23594491756535,-467.2447171399523,798.9061691076704 -854.7328189231068,-194.77712331967473,780.6051142270405 --232.1022114740548,473.6336636594003,-48.11556490455166 --754.833686985634,855.868402474043,-91.80681324492684 -468.9740806448074,-265.6523711374157,-962.2382428475307 --798.9392826163282,-7.561041020151151,379.92871425272483 --330.5293468414419,390.97691835530077,397.27117886391216 -407.87181465566164,-14.956291958983229,829.772300243008 --21.606964038768865,-99.46961300672365,-601.2383619787461 --384.6898252873269,-915.3310149633933,267.07058723234036 --502.92851214581424,-391.6894910290698,541.6290433286424 --345.5576336770922,-515.6082159737157,-661.8845017325884 -549.7168043639117,-740.5874840199463,-92.49247949929293 -13.860232154388768,374.77982537142907,266.566964665991 -621.4413458903496,-910.4971321475236,-407.11855044120557 --439.7317624492405,-707.9661888157835,-421.64349228711376 --380.46937171419313,43.76892385495648,327.40895785251223 --237.7989727763719,438.9404626267624,-327.6693228408401 --419.43264537047935,82.37611171404865,-952.5672793884188 --840.4217527319993,-164.06091282694592,885.825422783513 -443.0235596868472,-823.7468609988845,692.6360255617474 -464.60154121636197,221.89305140530632,640.5859212183548 --191.78030451408574,-556.9978982922945,24.04677821751875 -97.68351118694773,76.65274401982424,130.14758296021046 -897.4098364783615,804.4912461924628,751.4340731178788 -602.8336218172542,886.8562145305707,-803.0107166411935 --469.753477108521,-9.888108690830222,693.0689862468105 -10.33142304546493,496.0694786831775,-722.0801895021675 --495.1723740468796,463.5521900753447,-670.5319822245519 --297.28813069014643,-470.2674843728571,-300.276611555043 -416.6480981559407,-264.305637714398,110.52664521588031 --800.1362458911807,610.0353864692556,-260.2227487037503 -297.0683180666849,450.77920332366534,-580.6781557765992 -769.3499699066999,232.44850321390595,-142.54971649703702 --635.329632843561,884.6018758024134,510.13640826325013 --583.9508745335022,-324.578450551551,619.3485161761464 -391.3553264306779,531.5685854314486,-117.59779557413515 -432.9525252843339,-227.01255427217257,-577.4741661236071 -265.3540696827199,952.0278511975885,-378.79805720934075 --78.06081557492075,348.00274213970715,83.01256424497569 -686.8555914180986,523.4854129390319,-883.4055922752859 -996.842467847548,504.8049074389344,727.8066325882264 -302.39542419069267,712.5702560935244,-775.2340501425812 --304.5243288813688,752.8418872089856,-596.6895774662155 --843.5158028399545,576.2378798904379,670.9723112865925 --674.6955636201988,708.6919655654308,373.5355911943393 -40.16536643316772,660.5003855627701,-161.50150136206844 --612.0120875532056,-430.29464677877274,10.32803658662965 -62.66158534635156,611.1616528824673,582.705447304669 -162.73311440914972,561.5709667309527,-616.4530834126581 --899.8709458134113,747.2676452694002,-848.8910124744609 --506.6231405120054,390.63789924876914,-181.10412474538168 -752.6279398310176,-404.040410675461,-976.2573066612814 --398.68871887851174,156.15009836966328,-248.12324919341336 -69.74551151751052,753.1962376700374,824.970108460737 --468.0518706917758,-75.71905346019855,98.28803048290229 -898.2249137764941,997.2346383287693,-529.1855023169467 -453.95974269163094,-243.9378755336097,-983.7836062275735 --981.4949551281953,-78.86798487548856,-23.330173991330753 --954.8606068531146,373.85483354860503,-411.9932228100938 -119.78620307189885,-398.1618536691625,-665.7313702613856 --185.65252280224945,-535.4532704189985,69.60195383833616 --602.3429394270402,16.81195328925412,-685.2429702622649 -341.9494189715699,507.8753688828481,-779.2115315001324 --64.39517592532161,-858.2565986902529,196.36489108400474 --471.1914041407092,55.24891367741566,34.92201876858235 -848.7086923876009,98.16644513744586,165.9969594366312 --196.69374847123947,898.1592063656335,554.3718188792193 --429.18941939431693,688.4191715524641,-135.20727962982005 -657.3342870671879,645.776136587004,-622.2596264742913 -402.28226276715395,-418.71406138693783,-405.0146600146636 --407.30384623883856,451.1364951198964,-540.3479164149278 --998.1883295078195,430.4737069652663,-657.6305123297494 --791.0352093843308,-524.9677588118798,-240.19895535459204 --48.18734505359862,-910.8599185747383,941.1466652547208 -432.1261068391161,-353.61186935132775,-362.6054854292054 --102.91490126308122,252.48964552606594,-707.2538668220645 --622.1403724700954,718.8691656671017,-487.4901522218548 --239.61000404964489,742.543701900234,326.295658799645 --316.5762413166233,367.3990914492415,-960.6335692371725 -471.2853200227305,-25.967918967521086,626.3642945689226 -909.2753040129367,851.5770989891366,818.5300869106816 -24.33991186777439,-279.7157717221239,-69.92935053865449 -379.79200662672156,767.9955537423734,-586.0273939997609 -836.386316923406,630.3604639397781,957.7120303564693 -760.5035465633744,-440.1253406161867,-788.0881773119046 --775.5178560168227,-417.55336284344776,228.3674479690785 -608.640652194345,798.5006139631294,247.50676873846555 --988.7373745038925,-627.366446962933,-800.5475922932641 --273.35104886197996,2.701987267491859,-913.2056428428783 --303.0440484086894,-641.6406507493548,294.14033251774777 --71.45526135132002,-9.364706132182391,-144.61642393307784 -912.0394209731339,-570.5297497568736,33.32851968774867 -472.03473673067197,113.68882626912523,858.0417714336022 --244.06328871743165,-72.64838845364397,-822.9553695705431 -217.99822210385696,-423.5760631037879,-679.3819209688622 -89.06258580901613,64.62052675982113,-848.2567175519049 -396.4309069889455,247.5443813017057,-621.9654345070055 --61.13027569191229,440.64583295711986,58.87148108255292 --209.0218476328596,-355.3230838381128,220.78773328810712 -878.2173966204812,343.48968095496684,-850.508192727369 --78.63005303573243,781.6482630212552,-811.0751483978263 -977.7514242750867,898.1387872908426,-843.4510385402483 -866.8266408991099,-273.73481948107553,689.418334151725 --163.2333245734569,-118.28977459496821,268.48618195508516 -548.9548385519668,-932.4216981035028,186.31199105426845 --626.534011805258,-308.1009642735942,-304.062667689567 --61.879319557692725,-331.72717624765323,-785.2777630986645 --708.7425229490971,-933.1240288778047,-59.50182934249142 -908.8953897059771,-768.6495527037669,892.5289860061641 -466.723029464187,274.99760586832645,290.55551064712586 -653.4552967925642,-786.1602712403572,9.508647131083421 -394.182276521517,173.64089014712727,665.5581420465892 --855.456581977297,381.40207899833194,68.05546076943551 --241.67827204011314,-319.4500355319383,241.66526554838583 -781.9907492885297,-7.648147797769411,649.4463281538403 --195.687236312065,-795.2110744136469,-876.9885270827228 --897.3312573526448,-239.69971608466017,-325.5244983283159 -435.8740472451391,485.6430031697316,-898.2920623325203 --557.75347422197,-451.47629968220065,95.22396828561887 --710.9695521860995,-732.1175611999993,887.5777784159161 -608.4058145955619,-638.6901958176594,-186.8643841890181 --288.7560014848689,582.0081481308146,20.425832956244108 --744.300526013066,477.98412631248766,-206.22404355016215 --474.1515047357059,-249.00275595855965,-4.4868727862073 --313.76896716598117,-516.1884548164844,-202.9959423920393 --961.6541785002036,544.9956921926278,-658.1102128648283 --912.1907727387255,307.3973858101583,547.8722576473444 -627.6582631856863,-12.981634678800106,-589.2636306200294 -474.45535449965337,399.4261543086743,-507.45853179365355 -806.815511725586,-791.257083834342,965.3764791826513 -720.4956219549292,375.79729095815037,877.4997765596656 -444.6223366474155,-619.0860059399081,-115.68772377437654 --856.9939513367293,-220.68515542376917,483.20603947441737 --227.11329813836528,-339.41164906373183,190.71144502062384 -744.4090579977901,-904.8336149077752,-229.05913060052922 --683.5185163694746,390.70850146373937,-788.5508791377302 -329.61551716048916,-427.6382584041853,-602.1663725255506 -872.7051156499708,-962.9508465080883,-124.44545622086207 --956.7460150764124,-32.813903791342,2.0947555888363922 --356.675057210506,-735.6764449499526,-247.2249245310494 -344.5258798651321,564.7916172889181,61.50120477628457 -179.6687888795111,-598.7672577506946,-425.33933354470105 --676.2087798952832,-501.4092999907773,-550.2264395489365 -38.89757278247521,125.37751158145875,889.8948416430089 --608.8587057969539,283.35142032299177,634.5185379750458 -120.48292756610499,-489.9926949978486,-474.8995399599995 --921.4938938580002,-389.1115469030366,489.20735800676016 --904.9644855857792,-561.4094349903387,412.46499706356394 -565.3031256457532,-89.36317987614314,396.14867695729777 --224.09566269021593,-680.173509951745,-203.70101295418692 -159.93564040628576,896.1065637057807,-862.4980958226454 -14.788187689921187,-342.1604435785513,16.623388553389077 --952.0491052469366,-373.9492905968374,639.73629505401 -107.88346770927501,-98.83501436776521,-428.9498565693208 --403.9149544172882,-233.79713281883107,671.1414199291207 -934.4264136165368,-122.68923729925098,-213.29432250447633 -693.1015516397256,-146.1893587273928,104.0363445913024 --538.1166708025112,487.00507155815035,63.97663654156372 -618.0691004806833,561.4654600573394,-569.9904634599429 -431.27110111552474,600.1088159027429,-307.78551843520984 --654.7817741954509,-994.7356888408236,-98.19269381370361 --295.1345369223168,109.81966765081779,-623.9178148224285 -719.3310953329503,-484.48956874378064,-547.1407898247 --38.571887031288156,-2.2979525114515127,-569.8295424298143 --456.2785465481685,-660.5895216895101,436.92035664633363 -540.1780625081637,-75.34300508143474,428.17404537003495 -471.870783874891,-723.4489446443829,932.3560496690734 -642.0638941928621,-591.033077608353,-627.6699285078596 --748.6777088408345,-723.2428749161633,496.32359805739225 --60.6914860967529,565.8683454797344,492.5097887004108 -209.22542701044313,372.73321315735916,-963.2885512417164 --376.4447063899561,275.64435851882035,-981.3100930275116 --934.0461126348132,703.7759649407665,368.0497233841436 --469.2605337593121,375.92568023741796,584.9133382785265 --386.41143377979745,-927.9252450016251,865.5582493754689 --309.64032340873905,-787.0364734305872,-16.2862572137052 -536.9355913282677,-556.7053707648818,-461.0198997332733 --514.5700264028337,983.3461056633564,-605.192532538915 -151.04043393224788,850.5292833139285,-706.2068622444415 -941.7083957354005,894.9544687912492,769.1439741165252 --570.8869573399954,268.11011202196664,521.7829459224804 -972.0558563928594,-639.1523558372592,532.0517990385929 --322.3976601457741,-648.7470688639953,-157.24611757229013 -587.6718242972327,-70.30039259189573,75.04620040609689 -990.3188204002424,-201.78140088514795,230.80150941847955 --269.51159676925624,-214.4287073425901,391.2815068908162 -875.773952189767,84.71790098464271,536.7998578975596 --821.5868823660724,-577.6839251361461,4.263281839064916 --959.9765527424504,-494.2900424748824,34.80257964993234 --970.0776034873986,-470.90742754791654,28.06163895173904 -146.29849596249142,851.503386110611,290.6912465012158 --170.5283949400125,860.7023542661357,569.7659667755886 --599.9821577745048,-738.3152773023605,351.6232714854659 -119.76633115396771,579.3472275855113,477.6101001573729 -250.42306771503013,972.7643432577843,67.17946022081742 --773.7884869965603,656.5471296319768,-496.29327530858205 -554.6042962878366,914.2141920001027,393.5910279286825 -192.0603218996023,-79.22764864991882,-271.18026800919347 --293.9904980563275,272.7454114191812,502.5462338754919 -357.03413896882876,-603.1797976128746,-12.025639713017654 -583.280144366126,-48.591843621887506,73.24655947098768 -542.2720963416443,322.5306125301829,-181.31015823521477 -790.8254223884378,-674.8658626730428,991.0328971806496 --762.2948430475255,-970.1000577915222,780.0378022975294 --510.09298326808783,459.3992548934418,622.0307498641387 -717.9727820642336,983.1884713283334,-411.92057992000184 -420.48668385451833,-769.2002834383436,-186.38141728630114 -695.9433866251807,-264.6839078817833,182.19076107122805 -7.54688744926807,291.90306222409004,945.7887787753898 --888.5289469971958,147.92303500325943,726.0575585005695 --37.234576503145036,-842.9456281168543,121.07870483354168 --335.85221835235916,-690.1164293241281,698.0690265669459 -43.199025982243256,866.5528247581333,612.0330092061381 -385.9435875473348,-989.9489932693762,-144.35308672350016 --605.0274366959354,821.5958220977354,-650.8320306472795 --427.87989668142905,33.67353546899835,-473.27276200384154 --580.2706454417577,198.19865020550492,-822.1409544899523 --883.6644825581506,-255.50940962785717,441.32890901572455 -109.61351654789587,-154.24706306644237,131.5031284491647 --269.0970306934528,872.2926708642258,-890.1902181784513 -346.78295805967036,782.565329655501,607.7694174705068 --631.9179303571066,-408.14730203942327,434.0958774142093 --831.4588816384689,623.723399665168,437.81388920958057 -459.21329847068523,-799.5172594648172,435.5210896324618 -359.6362504399399,661.8449816437012,-916.808087487061 --953.7786630644156,-253.98580024287855,-702.4234323016942 -116.76895514044372,834.6978030134978,-217.0405393319685 -689.9007545452082,-999.518250964267,-662.9707130816316 --939.1529206918287,-343.7056389698628,816.3791913930056 --806.0957528020244,212.81955348760084,-97.00812176111162 -876.9364247316248,-754.9617149258123,-575.9442989955421 --940.9160627770134,-132.12950073725244,-444.33420087069146 -739.8118677806417,209.88162639551,228.1814759514034 -63.821393762604885,-816.299325541598,-109.96263254928954 -999.0103794170332,670.4585816920296,786.9181083342319 -646.4527184929989,-793.9166131380346,-545.1034918704008 --993.7566972871807,-392.97975024377706,-782.7851953070149 --54.41330939683394,354.25497714780386,749.0105900761541 -498.43433018179644,877.1711915570104,-892.2034192124224 --975.6403291669171,322.6762276724253,-421.2951795555075 --492.9979677884537,-338.22582461241143,-460.4078842152717 -22.872812603174566,-119.703105551735,24.857102753312574 -345.42722300087235,-225.73898205770342,-497.3846257156864 --667.598926382509,-301.0517609347489,483.612950492344 -513.4098202229391,333.81077336842054,-531.9436493862509 -176.17249170939544,141.37932315369585,-31.467603780548984 -99.9579727677285,-16.41873475266391,130.9127321482165 -431.0119092422576,-780.7436111931205,499.2515042980474 --728.2276997448116,-866.7440031792506,952.1593724429351 -913.9835377408829,-879.1269101188719,-113.49311705007574 --627.5101234004505,-29.31020573116382,660.3544859991748 -901.2235494857805,268.5053069030748,-292.1886655763659 -206.65113128919666,-375.99738778309927,819.6472816641208 -740.8009262116739,116.46350055932203,-350.4021692392789 --413.22064883404335,-933.1640105898811,631.6417020505905 --99.23357392198409,-349.7341431994712,-57.77929000449217 -637.4759809093041,-750.7715845849576,715.3119764836547 -795.017670216708,893.4158300677764,-205.02401515474446 --565.7191919246562,-252.71836306660305,-334.17580753719346 --647.6921749942799,214.53334020297598,-46.75167898274219 -731.4019846480073,-935.7808390358834,287.7358551102527 -525.8977570231223,518.9731383766141,772.1479341910501 -458.06748565898806,855.6201232953927,-334.68680035821706 -6.418833503086148,-971.8406734342186,-986.0848253934175 --519.7467590969602,-798.3856057218295,-479.57726412849274 --645.9134109432052,-942.9599503227035,818.6082928120989 --983.5537372222169,472.16428867417085,-695.704226160967 -824.4592439992,785.5918791797715,307.8022927385148 -344.4682996012102,-989.3217160606229,969.7431322272041 -755.6652071516287,790.212451460184,318.4890741017439 --310.4261426909269,787.2972981809617,-416.9661436976153 -125.42308668440569,-800.5380553122352,843.9112602655002 --718.4590844575733,-550.2063885391855,116.2683162564299 -528.1860004259631,238.7026118725978,-535.7321743996877 --998.1139149450194,514.3011606148784,970.4146518221874 -619.8262406121808,-79.58676368676936,807.5345227982132 --180.30465376329994,49.86816848693502,-45.74046520863351 --104.75225466895006,550.3815385878115,53.537814538984094 --366.5657559495679,-483.6836646830434,-924.5053660651332 -166.39032376609202,-540.0771691979317,-703.7321559672339 -307.65992765535543,362.41851564309763,504.309784515332 -7.153792677182992,788.1092104077732,872.6855067964557 -614.7418795849787,271.18696401637453,-392.55809281762265 -965.8898432404424,-451.7276656161233,-594.6861560191378 --115.69177242683452,-886.3188585752231,956.9889293435815 -176.86711283284967,113.90418332835043,311.59255979943987 --5.952704445586733,-935.8729658109169,224.62257768079348 -432.3477539128612,-166.50187875189374,514.5911441423859 --545.9974013231588,-557.4468178676319,-677.1660246248521 --256.01048042167633,694.024070778167,655.8241242981287 --234.3515840729924,178.23747196047316,441.6326329498313 --517.5864507439541,-663.7178282105058,944.191986424622 -235.11462641923708,962.8314436673277,-324.4880257355418 -406.06339994826294,-554.7927269175245,-477.59965745217414 -23.80424253924798,-360.76374898385757,-664.756872318831 --474.23859602134803,-928.5032110682707,408.8472429549731 --15.766685828276763,-811.5138671909488,-656.6120137430175 --794.930923774712,225.1856165517529,-811.5792727750124 -508.56466607043217,-958.9781613592177,-501.2484240082158 -781.3333517838144,437.06263624449207,-854.0633341486246 -642.2522089703596,-13.929756919590432,693.5660543376584 -201.47954890078677,363.66606406571736,987.0031207914162 --535.3289081519637,247.8911495227767,-79.35721988520322 --921.0960941546172,-971.05871699427,-761.5428443642827 -298.1834810770963,134.3261758267845,106.85912232745477 --936.2864749434798,-61.394007279985885,849.2456356850571 --204.81626137870683,249.84493957691257,559.6373512462872 -567.8505582837752,38.560164790542785,715.9038908046728 --217.24381327250603,777.3864295695967,-519.5456672089094 --439.5671860188579,-893.7587516019978,591.1636730845657 --165.88952753458886,-541.7667721772019,-536.4194447668407 -802.7998824584663,667.8332009220737,107.06177071436673 -232.22160083144217,-51.34885889941802,-216.6669142423823 -830.953762436663,-748.7745929593958,-163.1064205675441 --310.87618402424937,-3.698559497703286,-84.73625090964993 -37.77906330216274,-720.1620455460118,26.28300302655407 --515.1623722255783,-631.3373020236174,-870.3315624276175 -525.3051175122819,-145.11615828688002,253.28736662351662 -455.18668660948674,358.63333062710694,-58.99856182063547 --224.20294209654037,-248.08018071867252,280.09759386011274 --10.411290116253213,698.2644959770212,749.4039686534243 --658.879243986963,-727.5326969085487,260.80185207199906 --397.54850387544116,-962.8585624698023,777.2853387259102 --546.1984655123836,858.5613033716181,434.8689017565073 -525.3069798229685,-597.0770084136791,-531.6111487663742 -42.53550764813144,-655.8002947002757,-389.13661463393544 --357.07504410439105,-680.7401334944718,-589.6343332096785 -577.1036840165132,-665.6082909054633,-943.085216312155 -258.70988525787675,951.9662387849,-337.57237075375724 --762.6885936074955,140.77465073506164,812.7084221912924 -568.1235596569577,245.03173682543206,-369.8870067848012 -83.76034655243984,-817.5103173914893,357.8908485613399 -450.19203779530176,930.0632458198377,-479.2052825098567 --963.0871619139547,91.21692885430116,413.5810087936288 -580.814951765976,-612.5221339503788,-476.4942619259526 -25.18185053459274,-338.79838005999625,721.02297317489 --52.4796925225595,599.1572882040059,161.23952096470748 -546.1802832342239,-334.6540269393523,662.8332438606224 --450.85536889795685,92.19761600658171,-571.9857736522515 --48.946956747613285,-363.64958098259365,-466.5931387255715 -933.9700360560751,-679.8517890265388,574.6516749147904 -968.3299189664299,-960.1970325198444,398.0548280841899 --494.1763888874258,-919.0243513433911,-194.22084208673834 -870.4356203417501,-976.4698112660046,175.77138385956346 -2.7929571906486217,746.768328742095,-831.9965709587486 -363.0520597733007,360.2193968665547,338.1600337245666 -884.668989870074,646.1750580137609,-916.0545475129879 --57.83429859097362,-204.09388759733304,-379.70555781839585 --97.32654969180544,-231.61163014804504,-135.3322002426694 -958.5237312172849,-822.7340505008385,844.4617396774597 --39.52657305794662,247.48449099908225,660.3659332353877 --279.07394170148893,-139.15618382406626,-180.96303944257204 --250.5379549284803,851.0586432937898,657.8597823860241 --782.0000202740478,-783.7532950458079,-144.26097029401762 --802.6852465343819,238.18619054223927,-712.6167854765322 -44.74652793360201,-985.5601059925644,-366.8073031747066 -354.3814473453108,-31.922119544303087,956.5389719979762 -748.2075921324215,-281.85844191369756,-909.0269170554508 -691.2526002300376,822.4686206293427,641.2547868380736 --744.1001181604703,995.8302688245756,-482.8315568944523 -448.40982561674014,816.0697526714432,-528.6257713385811 -816.5171093541321,-381.03684161026604,952.8264447681122 --437.4799592390508,906.8716495156702,-892.9106982146502 -418.54402333962594,64.2222676740073,-44.245845754538664 --553.01137148832,411.19157955298397,-618.3810171073858 -105.68359196953656,-493.5092739194984,911.2427595627121 --942.7376123286944,-600.5434397775268,-515.3787872251046 --171.86434846436714,-534.5395162598929,-17.301819462429535 -744.9310465170779,424.12684281834163,159.92396107022205 --821.9936440346407,387.9842167785512,-667.1714313781204 -572.734771923396,-499.8864829796936,-165.90254335819816 --299.0595953641441,717.6278293497137,-746.9110825731838 -131.28976476957723,-715.8767811138755,409.5916722643733 -810.1562555889623,-130.78469226549316,-23.815479470048217 -854.8456729655245,41.982777298714154,-24.803123900878177 -156.6582054086084,378.4594727259039,-786.2332498259373 -642.2210554830322,-128.98994509348154,-855.3029802050289 -572.3653383964263,-246.10005662745584,-799.2650098098921 -267.55807908650104,760.2627068672834,775.5070188279726 -915.3269496179464,735.410919533376,-995.7181613090496 --239.5176671732196,637.0851598110062,-267.4939880030515 -203.09701275941234,212.63389474906398,-269.9493919223539 -808.9478545625752,6.45669077223522,-70.43158812499837 -995.0274913237918,-12.999271854766675,-643.2034961428378 -26.13884572687607,628.0334710398602,553.7206537965628 -577.163530216942,416.04756799582356,-491.5643418666236 -724.1681716804628,786.8869307525301,-611.6946067629019 --739.0887268972122,951.2099371782242,736.6479273007358 -786.4722944198934,772.7527692487904,83.37364806745677 -292.80347333159943,90.72570426728339,-897.5873016193418 -491.0061707055454,10.664066671760565,295.4181495804596 -5.279609951070597,-16.37735535508807,-656.4217810444663 --442.5725697177021,-682.2946161120884,-608.6674087493152 -945.9547608406099,-693.7731084556032,-461.4591513895847 -181.1793154771699,220.3571524732838,-692.0517405123419 -587.4348515704246,570.40573582565,-525.3645915922178 --422.66739464907914,875.975730918994,651.3428919589562 -395.5940661250477,-835.533556978799,-163.4718381948486 -118.60374415365413,-625.1774240324462,-103.54683578355093 -202.05175497737991,-345.2466397692016,561.8896379009743 -680.8991632776108,-352.78106113185845,677.3143089849143 --792.84686779397,675.4581972453127,-694.4991366647669 --834.1456949805479,283.55080888202247,-56.12526848941138 -815.7812008256656,-273.6216078183015,-425.69547312474265 -1.4698122883967244,-88.10762846267744,-311.1439075656235 -387.4825973966572,519.1236678278167,705.9679380602734 -945.7132094206856,-466.687615734991,432.186964979923 --211.48352900850955,354.16394390221626,-48.03661930155931 -987.5462055358632,457.80427158149973,904.9826008686491 -669.9390989623714,805.8020223267422,628.8383944293498 --81.68173924817722,-496.42309330623124,-259.35964909895563 --959.5275347200991,47.98633492933436,10.115600540817354 -50.50092966097645,948.0624499441276,822.9080069096785 --676.574443339784,-262.23495688822163,-152.08764107347622 --278.93416429670447,596.9919272078262,48.075339735173884 -144.1996339432501,706.0271179758511,611.8563068307171 --735.5769543594006,427.82916816726856,-129.12774219592893 --410.702193874999,-899.9623581956273,-25.50087930909808 --289.1266385509373,-496.9739206471984,389.3434591939151 -538.970774631174,-510.4209619411504,-901.1051266413054 -697.5054011304701,-980.0805175913933,874.2249878429441 -255.23974796541188,-356.30672959735944,-507.0441808465276 --981.9886714710495,-529.0571659782456,-724.5433969657178 -224.33244144629134,-666.9088228123974,57.25967507323867 -180.23284468894167,-403.91660330617094,-929.8701019625626 --925.4922387716078,-947.3053356121648,478.2493342730925 --363.98059037140376,592.6003719353273,-136.5343523143017 --94.00379834007231,25.765205019147515,426.0629127502077 --452.9942683405859,-756.8253009329462,112.1146703829229 --346.0447535145215,-115.01737266392524,293.89341667461076 --11.748517717458753,240.5576342016857,88.40000422725575 -479.5927438721983,411.87323542324,68.37978361723845 -357.80604171941377,747.1192045452256,-135.45742442366281 --174.47385450241268,528.4912417047603,165.10767408398806 --857.9864395548229,784.2240313821626,-938.4337955247197 -496.7927124194862,517.5882854086258,906.2221705638608 --891.7311831953584,193.713721568982,-144.3188587458941 --338.7340902809159,-819.3628794018539,125.30823934261844 --41.918548650772664,-790.8910836979514,224.97901419416667 -475.9062405058769,534.5566021072964,810.7463765248549 --181.05851622244563,906.145537244274,730.8588101653722 --406.9968579521219,-681.433925301083,-129.2212077439732 --196.20258408806683,151.43861066240856,166.77246465549592 -499.9739687599506,19.779896411220307,-790.3547181184689 -716.5826711062123,-380.4708336296259,942.5949206131841 --764.2797826404596,916.5023444650064,-817.9763862349661 --537.927724105881,-906.8401158269169,410.22629327798995 -700.5974731435836,-131.85783636803922,857.0441500848594 -180.59814351119917,260.0142708930464,690.8384034015398 --406.39958989632214,-291.46855734474843,811.9038383892887 -801.9269920775275,952.9655524017417,803.6766328833423 --745.2559279332783,647.4485722739746,-180.32304378081187 -981.6027118918757,-55.43807134239785,107.67216500444124 -59.549830513597044,-356.52594028344447,-849.9558222141636 -791.302460803837,605.3516250525736,-720.9464388806614 -553.5365427001457,251.69333210122,-181.71242416475536 --491.95770180887456,719.4575670044649,400.37651858810614 -95.47981893827364,219.13706779692825,-817.8676358356381 --52.16047817761614,-612.599414428596,-583.2326419823493 -322.6079245737335,822.5123036685761,-192.4867790433069 --584.5014539756193,297.49387447330855,742.3740927006354 -496.63760224498174,737.5144610731743,73.10934202159865 -503.75248873838177,-719.8708812821271,-303.45076927361697 --220.90167103695512,22.591492492069165,858.1527205136474 -748.5931204443486,-730.949015421631,-654.4206962350736 --284.7189008221774,-418.51226821865214,229.5419063125246 -805.5520955290897,924.5830833451737,307.2059050704529 -676.3184028021733,50.40440046159415,-583.3461062799206 -49.376824186954764,110.16520287530216,484.91512842711313 --560.2340205853018,-263.3792358265365,-271.94506157086744 -918.8791914823298,-112.11007934656209,510.18793459629296 -501.62276274887813,-468.91163039351727,143.73937874346416 -788.6057866372962,-49.60456108610117,890.2350146850922 --571.0835413516768,-851.6817884519385,782.9077462894986 -695.3623959244333,985.1797518676894,358.7869762248522 -873.3758533342991,653.8980501682217,688.8526662401737 -138.28314090853655,-235.27080416657827,869.1161450865636 --135.76564876821112,77.63873449933817,-107.77138574962453 -129.63662792039418,-58.98984201534563,-904.0648828410483 -764.0963720153973,-111.21236216846046,177.88729701469742 --721.624394484026,-993.2243040347217,-509.4198127127141 -409.17206426670054,-801.6109397742428,817.7748807729356 --569.9548612876308,-590.8127714164484,-636.984076757009 --972.0365740572705,543.6109369564692,750.0690624905171 -228.32540523239777,-623.6000366402754,-429.4440061182405 --48.14660527007345,908.6919032466017,-505.2972563645144 -463.2918078397761,-121.10355341415936,-404.30530327995643 --88.16812595577255,-857.5865649175349,597.374741860725 --513.3961440340657,450.8242463859408,-863.3032571036106 -910.1971123313722,-613.9700291886028,765.4841524141609 -618.946419230869,935.719848162832,-44.21867810850074 -454.79458769190296,-258.57868592443185,-631.2635239606124 --113.84813413310235,-668.5019692230902,964.0892455727678 --807.5070177185672,178.42344690524078,252.9277105081119 -76.15908574810851,324.37177142366704,-767.6384499762181 -110.0370484105822,-425.574857745277,880.3521266021132 -524.1433068794515,945.0289643194853,-924.887860519621 --429.7336496385826,-609.154826723302,-977.690825376339 --515.3485395073571,357.5519670408578,-537.822155730863 -18.006890965236494,775.6362299299972,387.51584069815044 --210.74186018793603,-255.06212217578343,-88.52837198303052 --645.9171178801872,268.0015348319762,-271.694361790789 -704.7306985240873,513.1053201156326,221.02632818432016 --271.5955547009679,-580.1363366530312,552.3037282112457 --27.181802017826953,-550.499923645285,-609.6507699199876 --669.1981909972819,554.3223924111899,-542.0256293993766 -53.2845270503949,-96.90727805388713,159.22179845656774 -754.3098007423885,735.4947801634612,-97.84785635028072 --969.2674985305534,-147.1123885713937,212.3870748482807 -115.52951819612349,302.67221160041095,-691.8485350538331 -293.0701975614652,-634.6967625124555,501.04796139349787 --321.82477347464,419.79086676290717,-904.2688021877858 --184.27994881817324,410.0690445266655,-546.2589673370117 -590.5740895944452,261.559466209864,175.1235442995967 --292.9022915913257,-35.097059237764825,194.69860195570618 --55.075772170219125,396.62664788112033,-132.60613378608093 --595.4536365159393,-572.1324343979055,-988.3924623141178 --398.08456888265505,497.83528095703923,588.3254176752191 --595.0649158085,918.0879937428156,4.805586960253436 -833.9574980370053,413.5305637232623,444.86684604482616 --829.9127573878577,-560.0177462061387,-982.3703334110547 -432.255280953475,-311.1234231429801,573.3050321526937 --322.1275601259474,638.6675045977222,-738.6034925033739 --653.2536864849836,-318.246920832127,-183.02522223545338 --302.5943783140432,527.2940650464398,-806.0972147465706 --297.56596072302386,674.4799990309186,-866.405845475656 -884.6870153427149,972.6336845440258,-822.8636523498399 --417.454955488526,-255.1986679292877,552.7827373054522 -191.8536242334676,288.73140098513477,515.019645637012 --764.0420011259486,666.4189138205247,411.239608360288 -154.6834503927405,779.4706695661134,400.6127077676142 --596.6000747379492,-140.50923784866654,-11.914266128533427 --889.5647464991887,909.2750267201116,-742.845478406243 -394.92253445345364,12.462072181760277,-948.7355002311548 -849.4949517287234,703.6736176378663,48.51585580767096 --542.1153277211095,-756.7542186398115,-273.2150411357468 --489.143437907819,13.382402012597481,932.8185922468579 -149.90698645928273,779.8621117801958,301.7576749915545 --49.50694682559913,709.2151254667424,-57.26377965400502 -737.256341020722,-416.8464608484694,-742.3738524740238 -710.6289287258767,174.83032758533363,778.1847964979202 -875.6544139847665,-892.7432192571016,1.9386037177366688 --250.07090185094148,251.71679414023424,587.1823944046471 --438.8195680512621,113.59676874634329,417.4571598097991 --731.137834328532,628.1338119025338,212.21919970594627 -899.0748742273036,-320.94216173861344,-783.7081153256026 -13.00240207385059,-828.3784565811222,939.0530466480136 --922.630083485617,507.00780221461605,50.20479628448811 --262.75869500342264,-868.3156709826907,244.3338483472155 -170.44065878191054,-438.2334538648005,820.4434028206242 --391.77998531432627,-100.54917881578774,87.52491183731127 --799.5362436474278,864.3234384272646,-250.92769509791776 --838.4415722513128,-225.41765264934008,200.4050941851615 -27.30534364265918,389.08394807454806,-889.0321158641788 --430.9187794558877,638.4611536802045,-840.2126244172782 -710.9719093919152,-816.2078158457875,668.9084297833924 --278.42319784254664,224.4181265144316,-694.2257687040037 --867.6625565496383,-568.1235919597298,-744.2923641826089 --375.18820464073644,28.766493022040322,177.51892713001894 -579.7362147594858,312.4797864967172,217.51665025910597 --176.43594502845076,-52.383130079722605,-170.95834121963787 -684.3320601227663,-539.9990949032003,-988.5581369160708 -302.63979445247855,-595.0756327223372,780.2302726196187 -718.092659413312,-846.5452561435882,-787.2231891718453 --9.656815506667385,218.4453255387093,-450.18332503551846 -433.5954333987413,189.83204183774296,-350.3517805028906 --949.2570239153688,500.3005625970354,-570.4926683498345 -668.9474869252567,-159.4194798914897,154.1548852635308 -745.8974608180038,727.2460018399067,-256.96084951285343 --582.2222145703138,550.2921554571894,-133.83959279573764 --615.9160128819918,808.8506846343005,-603.7916115178252 --948.3856636175378,-959.4400524651601,244.6307129085285 -323.3501214350606,-377.91658988603217,-359.97802150587324 --321.01216988011447,360.31709351775726,-883.7324179463428 -858.2327053826514,-554.9579116451071,999.3464104841844 --656.954612425626,543.0929146247549,-553.17491014075 --838.3063967134921,749.8666487012977,717.5025183817838 --192.85921510079731,404.7922850808536,114.13186536783428 -705.9122273474975,-369.88806136269113,47.34479999797031 --29.255257590899078,-292.1883474862825,782.9101291127445 --668.244150674929,-700.9827209586076,153.81907064550273 -314.98845996988393,-610.7614913508696,-218.56511549075174 -893.1276859574875,-506.765154618652,336.7214042347882 -480.29878739518153,-103.74260106968097,875.051973519166 -473.3134704375809,-84.15084027820433,138.67040355218796 -385.22688685020125,184.38036085843646,757.3951676521517 --286.2226754391977,-400.2285198883901,-572.3222210094714 --924.4340638708097,-913.9720712398894,740.1103862185655 -356.7862928118145,321.06483087297215,229.28563786977202 -698.4382893882098,-39.46614866874506,740.8216571166006 --281.1099476355216,853.415008678181,397.31396016248027 --485.64572795114543,128.16984337725034,66.06112297651111 --724.2023565393321,182.48581150122823,-370.4287525660841 --895.3024663807952,897.3123154131297,282.9807381285757 -753.837863741694,352.11201002650637,-286.03261571977407 -25.376144657622945,351.4935206943542,920.5046504028751 --492.6610817566071,749.9541172482354,848.1556105885388 -340.83102931791313,862.5332548026756,-204.2428250452631 -906.0323520808854,405.56575433194985,-915.9884651623762 -813.7456636381055,-31.054381933614877,-79.34603044433425 -132.93321195926865,-701.2309064575442,-61.66790286520279 -662.2544334354914,-969.0350817249694,-454.1656793512574 --995.0908271123116,-168.57738170030336,456.63102098746936 -597.5436582292571,890.3795222540132,217.00922594157305 --490.74626669420906,848.2958982733978,550.6315077607521 -148.85696600628899,391.28043143787204,848.6327100148583 -424.7880569458432,-263.25098483053205,426.05640457819345 --919.4436745292243,-227.16887633883755,-187.3539363088414 --666.3235311583306,-953.8290388964597,-733.2375267245143 -309.2429915941102,604.577632727375,976.4069854539484 --307.27299378301143,198.7584445222035,874.2899336302439 --665.9164373236947,435.29117268548544,509.9574662983264 --822.0489282613232,722.49877036613,626.2100942216878 --933.1939868451311,-817.831170239897,-901.7462122162954 --330.5129364012755,18.577981359852288,64.69545590925759 --464.6664804611147,823.1937731205483,-263.47442025617363 --908.899688069295,-399.5457769172273,62.2188450883109 --183.5563548235359,-452.3149618014817,-737.3535004713651 -638.3290001924595,992.2904842483838,-340.9157329522359 --236.7579116467922,236.0750493539142,436.8829494710826 --215.94093039281745,809.8590339636305,120.00797845783677 --99.21984718813803,293.3455063198103,905.6076964983463 -589.104588843411,-919.9737389297513,-335.3801785200807 --58.910630097554645,-370.9648555817895,400.375121660913 -652.538299725162,462.6901903705432,978.6665736565506 --454.90470421394184,749.9789900488429,533.2453303489724 --275.64248488370777,468.24908731393725,-791.8480871635061 -578.6669646811047,64.66120517420518,-415.41965458149366 -311.55460356836033,283.239997428818,-581.0275545608006 --939.2051703769478,-132.7548261966523,139.0237386888425 -753.2105567411968,856.4335912951888,57.61043631353277 -507.60696753708976,-121.39345534400616,492.1643131457861 --590.3969501216661,-257.8705303929372,268.45599762722964 --963.6840687858423,444.92262067790807,671.0710025363335 --201.71667781209715,-104.11516564567137,702.564424433062 -551.3092706520667,-423.70102193325,-352.04778687692203 -357.75646478119324,126.39618489632244,-675.5408578070062 --380.1401815416672,799.9665537573082,376.3488734445268 -971.948635371039,534.0250599615388,883.9488642871804 --567.6228522590492,542.9697496338515,-959.5649597044052 -341.5200434230678,-61.435443759517284,-306.4798561598627 -724.8087045861782,708.5353853150614,-955.3965902027128 -219.01024489886208,-264.3355513580872,-168.67799699910165 -664.081478437552,-380.3204569446434,886.0976212752403 --640.7323472557184,325.44484673635543,344.2101340275294 --495.6096771441636,-350.49878206559606,669.5969851598809 -523.610509909905,-341.8082393704809,67.91309386986768 --876.6394074938091,-582.5082352027415,-28.358882279201794 --828.0525294415768,686.664709783875,436.01242021529583 -887.2673412969896,386.9338119280544,880.8027445243711 -109.02511138192995,200.43722212393868,953.9421092525217 -284.2582937285208,-938.4268622785069,447.60555326104645 -810.9373842748314,591.1604995886532,167.66654525084527 -342.6070261870327,980.3835785033434,-818.6758229813233 -334.48965726647907,-433.2046108588123,280.18079317234015 -215.24715176787754,-693.0863357836758,-586.5067085195217 -243.25915608642708,-743.5401053924518,-469.63824973935425 -670.4910954760048,-345.8169879967228,-23.879687460674177 -882.2806702916805,-545.7018223261075,-220.74796528397917 -212.91555108709122,510.67785900794433,803.3067734254103 -830.9459751470304,553.2801487452459,-543.3383268133791 --950.3813399148684,-232.4521392887524,-716.9022980243533 -420.77529487659626,322.26117365143364,-912.0567167570903 -673.1875582619023,-502.51346741763547,-135.54584901791554 -335.8674709114848,-141.16242629549333,-117.42439440011321 --868.7440093285193,-197.1129014799924,529.6957864399669 -830.3526743731954,-173.00572587325644,-152.82834624184227 -405.25421264730426,885.5440022105531,-465.8781195212796 --119.71158692412632,591.9464871046023,219.38713874807695 --778.8273120720905,255.4654711245314,-626.5074308053462 -20.431868156808264,58.20653532087704,752.4067244499697 --75.01145197512369,-441.1151555282115,-538.0673035679368 -748.5037533686723,-657.9782911635432,-148.2628782337125 --625.653770146106,546.6080802287506,-51.25472005076199 --297.71261888637594,-277.8007187470664,704.4284134459588 -107.54790858887623,435.7357022625272,794.0770325013691 -803.483352081284,-342.98189132427365,904.9025262927705 --950.2482359707891,-246.32887796766863,791.5977150176832 --450.7262403660342,-453.8370993573633,-394.75542983622256 -224.62676969384438,-123.33444877129239,453.46967270668506 -789.8212851293315,348.3987498857214,-591.066559604849 -865.3638047210043,-471.014253305043,-700.2114093436837 --820.0654422780782,126.76748133233127,-772.4750750386963 --722.4482317747385,-399.9390388090068,-436.69398063107235 -208.4790206642847,633.4905589453631,522.6993124057849 --475.0310905670465,-509.37900402804013,931.5830602139351 --983.5275168160797,759.4410661204315,-600.54296175519 -894.5686461795358,-315.3854303449606,-119.2964522134954 -414.24122788876184,175.33810294652062,-364.12134058635434 -107.66183173564696,461.41376872577234,-915.3301081950158 --977.6013894885917,-83.86612185421734,-736.3267643929717 -328.6885829294288,-571.8950875451317,-134.2977864086581 --604.6581262514621,96.96717149824894,-767.8930812308622 --953.7862944250395,-897.7367237866056,908.5168830306197 --715.4275627781283,416.95650627367036,-864.1475915543475 --783.6792955296357,17.752502818669313,-70.25813969131264 -903.1606188797391,889.6709060414746,559.2172850849302 -204.20366025469957,-90.07936521397801,-287.6429313431579 -894.1750939511107,205.81762284937122,158.14505537198897 --536.1977564621702,-906.6043642297739,890.3771595190888 --372.5294823106922,-114.82195335108258,-770.7201128285863 -673.8486598185839,-944.7363342881388,667.981524198193 --719.4299744240664,773.1282252623041,459.5452746723147 --670.6594749853898,131.63598571893613,-374.68737128956104 --643.5338021768331,718.3643988222168,-192.95446698554122 --202.91257126923506,-660.22665038676,-233.8686478284426 -743.2336926577004,-273.74257902072816,903.2071249995761 -892.6177984167748,-710.202681385308,-645.3774929547103 -725.3481406637784,-214.47816215056162,-991.2520354339813 --452.25636058925795,195.25798639111986,598.5319319199361 --733.2227658134809,-778.9172711665293,844.1853071446633 -502.2967356451652,179.55920155615695,538.3735799918561 --142.2912773867231,516.9114946182531,-256.39401745092846 --511.81085501479527,458.0268425859372,-160.65541568546337 -962.7542086523897,-301.029635383798,843.4548410621319 -865.9250971341589,-516.2941058705078,596.4423631760267 --133.85098971086973,835.0494544606961,-99.75145472952238 -488.6074346747323,-66.06518167240426,-544.3984885742876 --601.2997421106274,-149.13761148730885,510.9893140284298 -210.14297036153357,377.2585798010866,-435.3472985361151 --37.12930808478893,-911.209470061346,635.0648319162412 -979.7843244797493,-186.2418747506582,-978.0726937369133 --660.4147208981053,305.0537555008377,224.1586364077184 -575.729439171088,-492.2319780778637,527.2638310942682 -375.9680430473395,-354.3710045723134,90.97629611392404 --705.4523830033465,-94.8709931288347,762.3946791112819 --157.61724034921838,679.1334129508439,180.50673051938884 --616.2465737952864,162.21248939579277,11.966658314126903 --202.71732960723193,-760.7391209678593,-166.5826723055403 --854.4752475207458,-802.4618972024975,-168.166934134568 --389.23703606307254,851.0886517244469,-248.58838923945893 -515.7162441442003,60.49505273248542,408.1713372846709 --479.7680339692016,883.8099456766581,60.1769938288478 -662.6481425704992,-269.908613047773,-799.577301898951 -347.4232954416975,-984.480703325151,-49.414046868983405 --614.3961946670815,254.75100887072426,958.8397462757043 --71.19418735870806,634.9965130513333,15.568373902242115 --8.319937791951816,860.8469863575556,779.931737493363 -571.6009303759488,-407.4884933664317,90.01683144788103 --552.20553338863,-112.1666039069205,-31.57386848041881 -663.2800803386617,792.0567306499861,-170.75987520704427 --964.5911098535256,723.5476795787092,-651.4426429972787 -243.76392778078707,-950.0581991317376,-200.98704947887143 -971.9206042306996,-798.6127977923938,-152.61369600071544 --385.70009962009567,810.1762467765286,738.6802158147104 --524.6024793875424,-837.6244258991377,254.27678812223508 --327.2625762325805,344.1687812121261,-935.760487864371 --733.2015296450211,372.74446554528663,-575.2586893950045 -715.1753515248031,-882.8182245797291,-569.0360344288508 -997.1204969701373,-133.84779482641477,405.9313270892869 --634.6739022859726,219.73746997107537,452.212136738837 --371.0467282669789,657.7942239517556,206.8351569445665 --221.75398076993952,115.28478668631715,153.52169487184847 --668.9294146122679,-194.53526026606767,-313.1388239610138 --198.19455484174784,522.2211769705159,-34.923185066654696 -880.6323064785286,-412.6471732831276,-168.592843430142 -573.9136209580829,92.04918664150046,94.05629284889551 --893.319673989633,-202.80067456308836,-458.532535156535 -998.6702456622306,-383.2898587353794,768.993069587727 -352.46747008095485,-318.1671816158191,87.06875674824732 -681.0717598983874,766.7365960618238,-679.2122499877096 --320.8537175836608,-329.5536395728567,-915.9104078481106 -196.475519703793,709.6401059843761,-236.85122434896448 -480.07188996835407,255.40082720147984,-248.7025290139984 --717.8804010154058,418.6477055519347,709.130337882481 -371.70898480298365,-964.2430319303638,-567.5342112180175 --861.0400302329361,140.7721991524536,512.9553576808248 --778.8416258626811,676.6756411867705,111.01795679096631 -379.93802428344975,942.8036972172924,-832.6380235046054 -802.4480459555784,-747.7946080251813,-214.0823867266355 -702.8773926622287,812.5084734757363,12.743347090290627 -188.2092765508503,416.2946691971142,665.5173369054285 --756.9776609246677,620.1386164584553,-37.447698976766446 --98.75314978366202,-152.2004960060035,18.423170492085205 -890.101106789207,96.4075455843033,906.3550765262785 --639.4197387687188,448.2719576652662,624.4790772174945 -358.2576626697239,213.8445604530807,129.62556217236443 -721.860965157392,643.293194329,-755.422557638801 -697.1753140617564,-171.86276111911502,-492.6063400083784 -739.5371360278518,-135.95040073251675,616.7293803536334 --473.192776088311,-992.1413571555644,-9.08161419411124 --799.5434867142314,508.7519110498192,-447.8497278611793 --112.70870679304255,-825.9328698168915,-426.6815031054947 -562.9804865171438,-696.8241761953611,294.31912225391466 -834.8517056090022,359.6735195154406,622.0433785844536 --782.0567413921684,-498.5363479958911,789.0777044811821 -430.2112272361785,279.10765275462245,327.53347224339996 --171.5988913907131,-910.8867367646935,568.8830841414581 -357.4264724307077,-54.391071774550596,799.5192307365148 --327.6806700298023,-411.35651153752815,745.5926501588856 -593.975309517971,29.95962129668942,-738.5305210843001 --569.8570570698951,312.4559808176132,-229.91752431917666 -672.9463833319423,899.9100186644082,611.2738505498364 --244.9091540088857,577.3728584628482,-297.1166530586331 --665.7998244687321,-933.2135902682852,-228.56657447795988 -807.1186073945637,-522.026824488647,-586.973670140432 -939.6415704820806,-949.9917742988158,571.5643007875087 --357.2600885182593,-925.0240862606813,835.6050804191673 --720.7153395808327,103.5585674513909,-451.89158514090445 --869.614395630618,-900.1550286732418,-768.8866023273224 --857.26597222124,521.1162310398458,-28.867595433141673 --314.2158173020406,-163.26217973598568,857.8934711452466 -821.5036254762945,431.3529602451538,769.3647548433755 --360.70394482475047,-237.78134798343433,227.42436370845599 -247.25189459452827,-36.60032397531813,-198.6843031240935 -972.3606232173902,642.2472522354487,-130.03960422390958 -454.58495447913697,-460.8766134950811,-799.6613475253403 --295.1379488945187,-194.05439975321156,-966.9257508786584 -629.5840032717922,-281.61319522163694,160.83633156029418 --852.073625458088,-650.006342498832,779.3874506551199 -217.37505576560147,900.5681003409711,997.5000687826339 --256.27976933381126,-402.3938718334508,716.7121103181935 -997.2228540749084,259.2824684649147,590.2814450230446 -563.4917176305489,-289.320583560906,148.5407605141745 -666.1138825284272,376.2277525221109,-957.6723720359234 --326.58866220493303,-711.0486068107894,-534.0555758439218 -810.9789549826514,-926.2134221784637,-560.3985760761525 --380.86129552353714,233.7681439327896,68.20338017173094 --563.4610342932278,-671.5178655536911,-526.4039308077624 -5.059253403311118,-457.6444285775931,895.2050032154443 --72.26955714230485,-882.4079669107259,458.5328116732667 --342.3094235820207,306.9778641164951,-440.811258953536 -141.4874834666398,544.3050096149293,856.017483549108 --477.74571113384593,-330.28609800203765,-71.46715942812068 -854.3496754719777,802.7737136213143,-820.2434397987239 --736.1403484923783,-8.981645338723524,-786.761454389153 --308.83825330260504,-703.2292435650447,272.0807102637716 -898.9908634783235,993.4675405887629,-249.51773500617037 -198.02527422922458,712.5353070481626,-765.075854407232 -379.1288221039299,-182.31267654986345,-587.7076794396719 --194.49276250511605,-848.0794260701663,390.81429717861147 --494.51466250309386,-377.18870991024403,-757.8374035170746 -729.3182277797835,-13.111441434522817,144.2937555728006 -138.86536618970922,-179.0137709173165,-614.940169123721 -490.2654969967998,-745.8874692846514,-792.252419442379 -420.2900751930067,-582.3259590960324,-386.4544972943354 --49.5450659965195,-101.29736654090755,417.15825012999835 -246.86358688672203,288.7923245637314,428.1086613109146 --414.7745451530693,-355.33337639905267,-124.00450420889172 --385.07565393294783,969.8757379417268,628.1038528428594 --670.6906234879409,-988.811688236261,-914.4334635054643 --511.87309791414947,-771.4174283262869,66.67622978514419 -715.9904454547172,473.5004418264548,-568.7818738356192 --201.40148794842833,15.78841906255525,620.4116990066711 -678.2432062123296,819.4366238155519,18.49050100575039 -388.549492871726,-776.3992575321257,130.5779199079641 --502.61638105772977,-136.56622994677775,268.1010166134388 --486.02812429243784,-895.6298844064778,-979.532287182485 --955.6809289109569,-983.3005249724607,-779.2898868842491 --521.0225708597402,-557.5569716354016,973.5931883597934 --387.9877895821136,-745.1584332812017,91.12508833551601 -715.9149107950166,356.12075357535036,-407.8358217290994 -123.2323195829099,429.7119484008183,456.2089847354846 -333.07691059537774,741.620849551236,740.2109166882087 -157.8731188140066,-140.2872617775754,283.1405911301997 -636.4240027409262,-988.6957903176306,983.9940180297021 --634.2124553416015,-59.5020286800476,744.0594696857333 --549.9192019116012,-46.409552199233644,-734.8356396376416 --209.84734922361486,-645.729090413995,-272.74450245768605 --253.07156641455595,986.3415791966654,989.6260586075446 --770.4274426787752,451.9375586566946,-896.5090406617977 --939.6159693256227,-789.3322115100714,930.9713140158681 -881.7270957893948,-612.1443594386391,-676.655328892577 --518.929826968106,31.093988150284304,139.40926407081975 --556.8131391211052,513.2455761798903,-380.89366119469844 -844.2626510588207,313.44541291346127,-127.29761139277662 -579.8240034056907,635.8292520933296,-419.0367887821127 --320.57091232783125,871.9103074572067,-670.5179232734562 --915.6991660741317,-91.88935478090161,602.4198004872578 -543.3362126214915,839.061257825665,66.40132873808057 --799.8706568669334,177.37794867203206,556.7912287064232 --813.3437594603472,-654.6851978048205,-975.4186776886582 -187.30515889362073,773.4687838918089,341.3266320041989 -964.080175181964,-873.9326950004769,806.0021703029925 -628.1365747733614,-371.51695900099014,947.0531036745035 --424.12450365716995,778.6094476564369,761.4971541483787 -515.3152332059449,126.94094762570376,-759.9945007662238 -63.943468992996486,-286.4074886901309,584.4340663107034 -516.2584129936897,821.2250147452105,-970.3396751365842 -618.2064336460921,876.9241062493377,578.6008982163003 --739.6110802592666,-837.4417903182245,-958.3095203845984 -257.4904516561421,259.3453037197746,973.8274284364245 --203.91365179180855,-336.18743020500654,248.84985436878492 -651.2173450151879,873.5478990460037,606.2483323580773 --146.65203876839053,269.8284706241284,712.598653432234 --18.780623376521135,-566.6267125892145,-660.5531205042541 --999.6845108438865,436.4759899625685,-777.805582308019 --512.3218006081191,-404.2473369544133,120.75972027353669 --204.0854454084615,349.3479840463235,-888.7226813425946 --752.1216114711211,-1.576992933466613,-326.0704243063403 --408.3732744972806,-865.9438419249545,791.438349496003 -383.63717225010146,-756.7636863607013,-869.9080845257188 -949.745066862486,362.3451008790098,-165.08785781251697 -403.46208151156975,512.6635729603181,559.9244047775587 --44.245388693884706,-140.23448375030398,-977.9438314621993 -853.1142302836761,206.6157567778862,-593.6921256200637 -839.2068388428734,829.8638035405927,978.3683287321919 -748.1131262779577,995.5687756401294,-510.6276237534548 -684.4991703984681,646.056617591529,-538.1192815585325 --803.1249019980185,958.8410273551992,-407.95089695877925 -741.7835809356122,-991.7456906507922,-957.9503855607956 --68.25738260726325,-522.5706321298728,379.68256687192866 -131.12865113590874,-845.0284050990172,-674.7434073685658 --223.90145988317147,-628.7918720891337,584.4446944878571 --167.85952889343992,-813.1362663150014,-31.314195455750337 --818.3236378771717,-742.1253891603656,-520.7803359435894 -719.0554104949795,849.2250646659438,652.5154586641381 --331.8455651643055,-455.1071177823367,98.31138158047838 -443.70632106622475,986.7455763203498,-736.8585762421476 --901.4160019523911,388.71177799054203,664.451567007811 -692.6975597328465,356.92709815432136,908.0316082383742 -22.009527089173844,827.6295966724249,935.6242739830461 -694.3149140062155,-380.4828734827588,-607.5686976594095 -96.24012996363695,-93.97049923962311,755.5166843854659 --799.9366578656926,-484.51987737696277,503.5978890374172 --810.0267100453757,-358.4711719565996,-225.68921189203377 -245.18759312537986,-683.7347085612708,721.208980699419 --104.91552906745153,834.043423761113,-64.26017273213677 --449.9194821185333,-716.3423426246502,-992.5098105774304 -64.31496996967121,-785.6866061461532,-216.54447273764356 -178.54352247417341,-448.62820619459944,-649.5514152677695 -549.4432452186832,893.5823445632411,-799.119164276068 --688.8193512299842,920.0253145054373,-924.4315563755074 -955.2646731009445,-990.7110338300224,747.3373113026628 --385.3496380245009,877.177716354593,-366.10942272882903 -308.612643068112,-839.9348604681268,-515.340377092522 -547.3586929585015,57.37170735763948,855.9381235740896 --142.4971833172914,739.6247316278461,-102.08912504352497 -958.4965574039707,919.6687627977535,-341.7265888878394 -771.8473408336065,695.2227484312984,-578.6392053448743 -248.58080156653932,-854.6353688203703,673.4214411669232 --650.908232993007,-858.370597228471,-199.56180892237762 -153.84427719928703,709.8339171195421,948.485051043473 --121.01497486027267,-879.1061540294596,498.23115805174143 -130.34651244787483,-104.21731031107367,-381.4622424156206 -4.797055687071293,-322.6407910859381,514.0237354947205 -87.78739298528217,753.695548308224,87.08782929888412 --523.4751733201399,702.183764464289,114.43808986008776 --586.3179237128775,247.0156199124442,-284.56647011514497 -688.8112245841317,-93.40052270691433,452.8827162148334 --808.9275847275258,-207.9513073953076,966.4828729447975 -616.9205789542966,-680.1183952661427,-444.47190104548986 --340.3683822872779,300.73112099089144,513.989518979311 -499.05321761581945,19.748112612805585,621.6410756763025 --125.84383448504991,-752.2388694088762,128.8836833076266 -904.6027692022135,585.9873027850226,157.40129538448468 -293.6113206981938,861.1240540711453,-143.31441113007907 --337.21172211472526,954.483130000898,726.8862670206668 --353.91283076279524,-72.4388052781544,-169.84374198440185 --701.8086426571322,915.6386476265181,-191.37513756048236 -750.6581652758159,-621.2875446386699,95.74162127443947 --952.0772297514603,528.4409676846171,161.82779649255667 -251.17916693950542,-896.558234890693,-577.9233395827691 --851.3382552928397,-422.1713683923765,254.87801536430197 -132.37196863475037,224.29964322678052,98.50254275578868 --453.94240864828123,-510.98500531114956,-725.8806329268375 -698.1417498069841,232.95871708248887,-626.9779749918805 --645.581240357521,746.0712030522734,485.4617275266387 -318.79815981074285,-186.27178492140035,-476.0488714429649 -958.9015262256476,594.4791500456004,-396.44155372744706 -695.1295925569893,517.8638972293629,-405.8389002440033 --146.8942915167206,-628.0931092179467,-777.8951112437812 -445.5240656793935,-464.97628529226677,640.1187314925071 -991.2174230288522,-846.7603721407027,-53.92974983259944 -604.1251186216061,577.9017930824671,519.9943166619369 --302.01012939617806,-92.29348862989536,189.93671468294042 -947.8811671465144,-344.9054581230142,846.2877754337155 --461.28616363901176,978.1489309474091,340.5273736551835 --72.97703928289809,226.78085612720974,-454.9376619195864 --451.65228497706676,-772.8909123130123,-771.8994045892025 --304.6565170621774,525.7109557927433,215.94233519632508 --794.8308793379583,704.4730499518218,202.7352539801327 -921.7111535695594,340.37093482241517,-649.650272591638 --52.43327538435551,296.99519509440825,-943.4705979000446 --970.1794716903842,-741.1939988028641,-496.6711299090585 --140.9017529586489,-25.119052480423193,-723.9447821242064 -346.7831582316617,192.2761233930696,-411.0718023176796 --972.680233129416,-844.7041692934185,-216.6104489783212 --692.0512976686322,-246.36078770405834,256.36520902071015 -94.47485575856717,-537.6482337252115,-312.3550174824952 -228.06239689730114,721.7100560868973,506.4268774777545 -106.80005366682985,-275.4140033670276,-269.8974449163891 -758.8346205287921,-921.5128479189073,975.9652888405219 -328.75082170312453,362.2753981447811,-924.0043253905156 -211.05854978254433,-30.443879819105973,-788.442186211866 --444.15597846128185,780.6289124273026,99.9768317319058 --173.16684965218258,-854.6356883183781,428.2430548046111 -405.70164679206505,228.08721394512713,20.52529244129846 --132.4311955852546,186.5421859759847,-533.2090965431867 -882.5181283552954,177.58905836045915,-377.6151112912469 --100.64029822968541,611.3695777537846,-676.767878539405 --414.32875507947915,359.0160454731108,-369.0215870355522 -585.0033637229319,-739.0930256452783,525.372340909217 --863.2965702988676,-974.8147746650104,796.4470376643242 -162.6784338645973,-296.34620582637706,-534.8107260722992 -233.77156652163217,18.004367073476374,983.1955510599703 -966.4319733074915,270.04913228321925,-114.25898778821897 --17.7180617306758,364.95813247372394,-796.8509115292372 --343.2958523785636,-849.4555179927922,-853.2784809661609 --608.3215162115325,-29.49349081354626,569.5486423255786 --29.00821766825493,-329.0467788782605,-835.2940193264837 -100.5910463662592,-457.4628270336465,229.8683558342948 -954.3754782648366,-777.3713570448997,-575.7492025561202 --53.81092380125051,937.2276306918591,543.6195525399912 -796.4583863256603,-332.5703030484142,984.0769475571892 --794.3343678716852,-894.0541879077983,711.2052541080564 -854.5297404139724,-818.8292849077965,-773.145146508317 --933.6516844884524,-790.9848747145518,-581.1603663994383 -940.153237820002,335.7204444793608,557.1060510370842 -552.2788073830443,70.14749955842922,594.9779554260344 -191.6150647799393,-370.90780479328475,122.22021753680156 -67.01717226902701,646.9061075186412,963.454434763318 --177.9148691581389,526.7813568827194,-800.4739919237329 -553.6627388965771,-257.16617601353573,-921.2196742206266 --273.5076428756455,221.28550184328947,-761.4996646370669 -848.0689848605091,-844.6551734543228,860.0134396663323 -414.2750358713729,-340.5756491715928,-218.4993045818136 -481.6187294654883,202.9422017624147,343.28584290989033 --221.67076697304003,-24.37303638480205,979.7349680757868 --572.1542590005646,-164.2876269557372,-416.3536248520654 -530.2230208796996,528.0252513314415,-415.1090780052083 --837.2193667340342,-977.134646655592,-145.098933515029 --179.32481132845828,976.7797572797258,-60.39584860464072 --487.16326084915875,782.4588820629349,-17.864100692843067 -198.35127042115573,-808.6625791435747,-234.16718534045185 -888.4473489475736,179.01076835085087,-310.9962897150766 -251.3343612631861,820.8221791562323,-452.01879905481985 -10.233436941348828,917.3813078235107,-655.2077134030947 -439.32785119342316,228.96201640596473,359.3502622812696 --297.56073866486065,-372.2412530324701,368.419341176741 --568.9134297909093,-160.69051028198976,-623.650707894164 --983.3903177533405,940.1147200761388,-136.59404268716196 -938.6992288396505,-719.3529604643478,174.73355891497204 --598.0519344175208,580.1482539265494,567.4059775219505 --774.7857019213764,824.1289057527783,-610.7407055935507 -225.95468317872064,971.267240175408,764.7930695327277 -913.1278571223381,-314.8024575637611,-788.8487155610733 --623.3062534210999,0.9897901532276592,586.4593565466444 --699.6927116322495,319.4630645215143,-352.84479192097626 --317.59585521569295,323.83546031585274,-66.00116093355962 -624.0665860519878,-688.1629806743458,579.896539534077 --871.5295038851582,-611.89223950879,312.2994290063307 -709.8513130221424,-494.64074452130194,-345.6167883421741 -74.24149657347994,-576.8543870213954,622.3125231750114 -547.2732900115216,-709.4165760684368,-72.34053636673582 -549.6555333092429,-325.3409377931704,266.2136454354634 --899.5737570848546,217.37752105863592,-694.6940399987859 -661.1666502289027,-289.1010728390431,-436.89227454360855 -681.7779534229701,-899.7119538563795,-206.78240133131044 --259.99291884993727,-430.39925150089834,823.508664002954 -501.85678703344456,-872.1536716161224,429.3748988699083 -54.598266257587966,801.7357888031584,-374.1087653032831 -148.3239992191659,1.5105494819720207,-20.87818754478849 --87.78920096557476,-588.7410489354374,511.41984498478564 --97.32793452142266,917.0325500052115,-478.38314561444736 -365.4876792540822,881.4341592782168,326.9166460321851 -742.5458152347892,654.9619195140122,-279.7645690219923 -200.247879878993,-687.4773203772888,71.05176539119907 --539.1560563713256,487.47362990489114,56.11684378424911 --177.54527473667906,-462.4058076660449,997.3969636825736 --856.5789582301346,-912.8786388551599,-565.4851990122709 -942.1449172556393,958.4763366399688,309.85546954427195 -760.2133344128094,-572.0765383184092,944.0841883532471 --714.4302997208706,-797.7496236366835,-775.5769215054543 -146.25584654512932,561.9488014361048,-266.66564425073375 -955.791975572253,-131.15972376334105,-699.1028984535674 --68.06650362772655,358.0743308448798,664.4515610087574 --82.46342008681415,187.21365209833493,-465.31057568229323 -291.833052811028,971.9438879006875,-901.8928548244123 -773.0613414103354,124.56500553504566,-495.80268087540014 -909.7794200185158,-33.2913938822021,-336.6194966532288 --637.0047434583178,-511.09557948667583,665.6980831828851 -228.82001863433175,826.4912389766321,-536.0630956844284 --757.722852302197,-987.82493804882,15.724075231987626 -996.6138607639764,389.9305376372779,-383.2108160697079 -753.7171660523434,563.4445319759193,-969.1696678469215 -633.7209610820448,-398.94648552300805,-700.6530708327978 --547.3383205258508,-62.84039124972196,-150.264145863978 --422.2254012515465,-655.5633555859346,524.4615792843385 -980.2195674698341,555.5831608393808,-408.1260646569176 --510.38207717573323,-564.6682478681236,-726.6098510219274 -102.6610993846025,210.80074390668824,411.0053213262745 -360.426741867336,-415.3333774332351,-339.3779892063069 -363.0290708846758,-301.1047184327433,-574.7536207613739 --251.32769260652083,-455.83168484404473,-823.3745575628444 -660.2778045533071,706.2227783140727,-560.4993996662411 --870.4556009495965,477.65487470235894,-576.9427482731726 --213.12902112627955,-871.7294955252335,-547.4608304831297 -585.8045566592716,608.7928938304037,-585.8303502245792 --328.172309786621,-731.5231618125129,-851.6547394301552 -984.343428896819,311.18790248967844,84.1930183966374 -530.997000810599,680.1543193754483,613.429536089455 --966.9211014202468,-626.3842036190031,309.81060423566214 --248.4813043920742,964.9653021222141,330.80958527650796 -913.0978174584129,-597.1070367084124,727.9140562300461 --357.2953883695493,979.1296164756136,-684.6226558537054 -32.6796376766531,585.6890676742439,-134.71503879192824 --63.83187962470663,972.7115910114821,-149.38369939769336 -208.14420119812712,-890.9206786496986,684.42016042052 -296.33609795908706,-191.95979427437294,-967.6609200909605 -183.33764118700788,-974.6843430316757,-997.5927721819642 -232.19712429870924,-621.9658653308915,-616.2249005638093 -306.5431316654874,-892.6056241212515,-373.1888770508873 --701.1361957159619,160.35273959306778,323.5303094547917 -442.27170719808714,-489.53756616286915,-821.500496726832 --842.6326861162044,-147.6969030985524,891.6888181254301 --564.5419315059507,-486.5167973169014,-798.2223957882821 -211.14054778786044,359.74574789434973,285.86241632151996 -722.2604860895624,-27.148329947856496,-731.0859184658711 --421.18973859117466,324.8599468427035,226.24394748311965 -62.00625948592506,365.9288373773743,274.78170074659874 -762.6497789299033,172.03275495659318,557.202717401113 --502.58568806706427,356.36516917813606,804.3882367653514 --228.5353442003335,558.2083746772932,449.57860239087086 --880.947606256355,163.01661924814448,-739.6213015983952 -934.6383444611822,622.8150054013124,-780.5523975057598 --756.4960047046432,188.947709825238,-310.22165165363333 --930.1882818537814,83.28301566610617,-224.30980062830622 --797.8470152565146,603.8407845119652,830.1535305576119 -513.18786802826,644.8446200325545,-567.0188654677652 --472.854098162798,-582.9449194016245,530.1268627311279 -895.8341578689942,433.67441346780515,762.9335297591119 -277.398189766345,-224.6801988824019,-148.4767701393896 --849.3571356651903,-937.0856095079479,390.9512083781549 --123.14221597763878,104.43013610925891,115.32249524483268 --445.2483733333971,-48.21497834101865,-58.47955666459552 --223.14555754428602,641.3507668021409,-97.67199262480824 -207.28904901197575,791.0402407616521,732.4672457178449 -780.8444075583302,-459.9900070699721,-930.0350233838743 --477.8664002093416,-442.58530875858276,818.720653449936 -298.4854656759412,-836.5920807955424,-729.2428079777977 --688.6477489160492,260.8434963378463,470.8280510140062 -719.2878211307923,881.2731016124862,-596.5908852271165 --380.4550305519019,-519.3542385103387,-282.4768650677245 -829.3302148474988,150.225133878723,476.3837946489982 --19.76152774643606,-942.284173327751,-871.6090280043713 -75.84606253577158,437.57806964005135,-569.338944942537 -443.819147984608,621.3315469670249,-176.2050432757776 -492.8384656882099,-191.9400993430802,356.70125891004 -527.9940986390861,983.8532366162217,-309.20667587280786 --177.91843885077708,-668.7598811796573,-591.8538831963863 -386.7900051967554,834.0911803089521,-210.79009667751893 --640.3111063289175,-429.8010012340119,-89.89659038372281 --418.6993412692632,-532.8418337562675,471.9689775141592 --984.3101575187536,78.46105467296616,587.5336140595077 --467.5434273650636,206.5830212240346,337.80021123723554 -310.04939281018005,-108.30073160256461,-306.84402424844154 -671.848146055627,516.8919139997286,-357.48965317217494 --793.9616111155879,-856.3849091090616,-811.4480442021279 -165.73872238408558,-896.6756483420206,-326.1462500719232 -506.3994038284586,-411.30366696924386,526.6161543602598 -490.9340764141107,-508.3457347335674,457.644360185491 -495.5532765442015,-205.0921486659463,-579.1590325169635 -42.541613783738285,842.7951760003928,279.233464864124 --654.1550047454775,365.5138494670398,-145.59394543633084 -183.05759471074612,468.1280700462157,29.89470302888958 -627.9679491466172,444.31115863325545,230.14668003702127 --698.414368335297,671.8982218231367,871.8111706396321 --726.0697523814104,-23.517741133138884,-482.222516058991 -509.04661485112933,443.25927200939987,-718.2297588592025 -754.0545425232742,-638.0538720439954,594.5180512962149 --86.03928074399028,-343.4554128836975,-683.521474651573 --664.7714877067413,323.7811094018007,100.86077589424099 --755.8291566975346,-774.6042791233497,-855.378850454417 -487.5346947470882,423.7641704585783,-883.1380182908497 -120.5401511939458,-830.6476895146202,807.4915412178834 -814.2348383602648,396.46597962626015,852.3778428788999 -622.906060827381,657.0771518540987,139.41570113986654 --387.8816035676482,-564.4017697671568,-345.5999559221417 -256.9908601781242,-654.6869283352021,-482.7195267253568 --63.87827440907108,-533.8998029507688,177.2873394321232 -846.3520569126597,496.17873140625284,332.85322829782604 -165.44295196755752,-24.104181485870185,-626.8722807306806 -789.4209108537311,-502.92799597432736,-817.3822448436786 -500.0303584573903,-648.7689313376673,-256.20800091764795 --943.4301434180405,-725.8641149191038,-653.5927384801759 --891.1797444996441,313.3139132456904,674.0155916062345 --253.36918726811803,749.1529534364015,-573.306850879747 --349.2191528775211,-698.5260139376633,241.11839083799714 --160.26081825938627,226.56669368379744,523.3498107883672 -91.40603206589685,255.26070980357576,870.5006287886658 --401.87138078231374,-281.6721227320937,435.4067234186739 -222.61103411077352,-642.9341909205704,-247.70537997901965 --64.32397375057008,-161.22032406322126,-643.4503833559183 -848.8601835685245,524.6375233879517,-37.28833578429544 -360.12205661367307,794.5653442710436,-727.6517152768575 --499.2538985860446,85.4024945132901,598.0207427047173 --927.4902091169453,968.0363003927209,-90.18679423520575 --281.537718756554,-414.5511243204562,-651.2865846982568 -583.1478178600557,910.828329492193,-172.71049030920358 -904.8413895069125,647.5952308700682,-37.8977450473634 -348.05235825226555,-130.03164165907413,117.44681642510477 --883.9073259629923,392.52695060106635,-894.3507110317266 -634.169893839299,649.893858921115,-525.8454248875707 --352.67443792839947,-37.37924288341344,193.32581386496304 --425.2926765160065,184.97280926384997,-404.42585354140226 --889.0185578578787,-994.9449003361821,-797.6978841631428 -584.5014003280364,922.8626247666743,-146.0676014375615 -25.36790689988561,-706.3036618531478,102.06270536031411 --710.6901959860463,222.42866239766022,866.5173351617077 --608.6029213939207,529.1274361142039,-952.995154363352 --249.005517356758,-778.502984338982,-295.0491168086012 --652.9261607222329,-253.39001975422514,-164.95438778493929 --398.8177544381632,313.24389894625824,837.7041025178194 --198.8092517894553,-615.3136870499571,-458.55448360803325 -708.001646992738,143.2794465402958,-89.9779353860855 --700.7265569821466,-100.54538335243615,-443.0159932852267 -886.3262557066985,768.1402188314626,-832.194916343604 -33.30697852248568,-549.8833089706559,-178.4458209514188 -753.6959965029127,55.029039777089565,-331.5694132584804 --584.2232917900059,600.6497188129786,249.0360307286942 --63.869079147537605,-565.0312922740438,-331.5072516857374 -919.686853477037,40.17987521166856,-198.60143751349415 -42.84408469664777,557.9770117992173,-319.7821269942624 --642.5877581347822,169.87223667809553,330.4082069621343 -425.43600591709924,763.9751815322593,-257.65175862177387 --849.2902075422164,916.6971672618845,-129.97614512504958 -246.51501934626253,332.61064625658446,93.02741740240708 --589.4849405274598,510.28610023228293,607.5039486081632 -105.95117203487962,-22.87767883031688,-772.1236337440293 --832.0966770004324,-320.8703088729426,-378.3076889652135 -907.3129019265425,567.2454848868595,319.84859051811986 -35.29617803521023,-665.2649385466973,956.9133443685678 --249.91860351957996,-786.1487951055104,-12.402208568507831 -747.9960232261665,774.582003554659,-978.0681678871055 -772.5914895027995,-457.03156500028297,-922.0552720631539 -695.5805407257487,727.7335119764166,192.46215968470005 -148.86751459271682,626.2405452428388,572.6191054205597 -780.2109468854082,105.49489519340705,935.2941854656174 -992.293661866677,-766.9107800027348,699.0875191082441 --0.35548450282192334,-224.86732340033575,226.14461976542998 --888.068885475986,12.922237534159763,741.7811400533335 --573.0769677220624,-147.2202104611497,878.961775429751 --142.87232438860542,-283.26473533520334,-118.9267037532436 -38.90553303511274,263.9826882629377,601.3856018334623 --95.7955884713715,634.9618701802806,67.44132270416117 --323.03897926404466,315.9016562388283,435.4445094869827 -116.09795125897494,-886.7700537305532,-660.2342496783501 --429.40455821954356,-434.74878809701374,346.8416004937412 --963.3026766527348,511.3635540990397,-469.31505038613363 --379.9563075677952,55.81965588784851,-568.1487981220849 -768.9426271510551,-829.2624413468694,-111.23527539787028 -698.8445389097799,231.6877888424715,-415.3409683147331 --158.47958444707854,413.3887606850292,946.5214867277987 -786.277436758867,-315.13438323524645,996.395758575715 --992.9906729378835,-944.7404883831698,647.6810303423877 --601.074626333896,-878.4614632075182,-525.7038535269955 --147.79969203827955,461.1325408668097,248.67105310241095 --524.7575648791592,6.5408962011688345,852.4282107971376 -630.0155539675154,-353.62043033641316,964.5291227113926 -417.24080087026186,-875.1012886664364,-929.6785734227226 --663.1841019799401,455.7117361002936,-632.5221483151442 -22.973538417666987,-813.4797596383365,841.7723156603902 --312.07877283286484,816.2641131212615,889.7512838210887 --987.7427053726384,-71.72962560253598,-950.6878885862143 -817.3855326058117,36.815089469151644,-850.1119746030064 --779.4465434468663,-232.98195101452188,880.468385745779 -385.81830313616183,735.2377323782648,-267.08670732004066 --913.5726009000034,948.6352744088283,-965.6540186752609 -895.3033061621779,-262.6451523017106,-979.819189956237 -378.31446344901656,961.0806080627083,931.2514456751851 --678.1259775951631,-637.50438786769,131.07782923932018 -274.60965285664884,478.83582733173125,-637.8992790557049 -918.0141735288689,277.47851257847583,694.0938377411096 -80.1314305683436,-171.4463048202348,954.365813189992 -164.2427416396722,733.7471655983579,906.5847927325799 -350.7092540173185,97.87735703734984,-992.9782981786988 --919.960718521988,-598.2975678977673,-627.9831362880095 --490.4824096003093,-390.13072460467833,-279.8690128985435 --158.9246198622469,-802.2673230879707,-915.276136094436 -347.8888981460468,74.66964968615548,-111.71159555976078 -268.87988233670467,655.3588144070809,-144.61418176759082 -282.23893010395864,907.1444476703175,679.2489917231214 --147.99837899518104,289.43367562948606,-645.8581561681206 -121.04436979017964,962.6565822768855,36.630230405044585 -855.2765983802947,-185.33015899347856,997.6896543692624 -158.44007045511557,-915.4620115281309,173.50959338277607 --450.85460864080676,-935.0373559282106,641.7066093893266 --448.5407260384882,593.0971080929969,-423.564834088266 --611.3472922524514,947.871148208855,-276.7093444899609 -202.7524228863208,219.96298562894322,120.94696434700359 -829.3914870424292,348.88214273373706,-192.53399179013968 -724.7607690485481,-637.8742017680712,88.473515220835 -901.1007438875126,250.7952597608255,633.9369009497525 -307.1214510903858,678.7417270757808,888.9757596904872 --454.15654493452644,-660.6778374865623,-32.01849933492019 -403.7248536484317,-545.6174936355678,-991.7970991396659 --314.1297683265893,937.7186709355769,389.93492121169334 --197.34911211755218,-614.8478053063193,-287.82065249050606 --660.3211333975041,-787.3883573740972,813.4847451451078 -995.3006767509471,-671.7711208084194,-890.9548822434406 --340.53778570757527,-76.68163847716937,-590.3575058482911 --397.15017640288306,-598.2585286166845,548.5211368649025 -425.1558864945216,269.9030315219634,-225.5642858415905 -818.0818826284719,939.0650830700399,-652.721374749176 --553.974717176244,51.26205600073922,-817.4988614355094 --127.10320235377435,163.58252955542025,44.147142274666294 --338.18283384394783,84.89161215441368,917.6019085176956 --587.965191417248,309.6627167880072,-913.2066116878963 --867.1671910371301,103.65644844717008,-790.121639344101 --955.3064231462853,-656.9740047039556,129.69834199914885 -406.6819090378649,-595.04287171724,336.51887441634904 --635.0473378015413,226.91485326251427,-176.08064020840231 -307.5990186672334,990.1055049584945,875.633930465124 --991.4364843277928,770.8775287246115,-867.018409650467 -906.09317231969,-436.3486418006306,-235.9303391774581 --816.7235896485442,-775.4544833421808,453.4811304586392 -888.6644714965832,221.49698990861907,431.70003105362207 -523.939489194307,-474.3714508941166,-909.5407381595702 --996.2545121616629,-298.7014340919627,-517.0715436015678 --875.3645499016287,-640.9434150126665,-751.0022034641045 -829.7567612347407,-719.4655730816621,75.29692797535836 -186.21191022432913,86.97891541726744,-801.8871315680241 --362.40327649889764,-897.4593350736934,-208.660171807368 --622.802137456816,123.2650665687595,385.61678769820105 -64.23972040941294,-131.52660677720849,-225.33315828661512 -683.3835361940075,-561.2638698694599,468.4366790577376 -514.964649480238,-161.59998545853102,-405.3988015487213 --58.91702790804959,-813.572148214603,-908.13993554182 --776.7936010962164,-625.7099370755477,8.353640676086002 -698.2732723222443,-528.715336000626,870.3240214935561 -909.8158178700069,917.8092096904104,675.1254693526475 --272.3499184045588,-854.6321779947539,137.63746353298984 -117.36288787446756,699.951534219191,991.9821018922103 -16.31461312029512,-309.5919379204315,-628.196576887466 --990.4003503652585,18.227384977758334,111.03733340519148 -649.876959634795,9.15393578560122,832.936697332113 -256.1669531428711,680.6724764421663,-703.3965303845058 -710.6722606046294,350.2877088876967,-659.5339351233389 --620.4728837079783,853.0012380884427,-935.5692790992542 --74.93011340858777,-373.04942013179686,330.15487999685615 -679.258775137984,-279.24375688686087,-146.19582535432562 -963.8355690028284,567.8330193584056,794.4082618635828 --122.47555869674056,-531.8475920317696,-176.27306922709658 -432.1838356630269,-781.1391903280414,-459.0617887669823 --906.7281990768192,-135.30452332373693,654.8914719592265 --950.6726234039784,350.647053614332,864.9917490274793 --526.1442769776354,387.2696814552962,950.2038022004008 -924.5561203049265,-530.1416139417134,-799.3378935758626 --703.4349242081681,404.0713369642842,451.5177509065511 -348.4731232563979,-327.84322451552384,-660.4461204837557 -161.52218390450616,-32.63910848426701,457.66829424460684 --117.27984262875714,-322.72061062706325,-413.04284528197127 --577.0593599005069,-468.5072476266772,-810.3391223117973 --306.28597814222087,-926.8603752740836,-627.1723056673463 -493.5408892388582,-349.0620226467547,336.4740339546877 -433.7683511945547,162.3706854642271,917.3954827307969 --957.1202667537735,477.3053011762843,917.573287880816 -724.5434587058785,-664.2146163899733,-346.3593874965359 --655.0963202470692,202.61672762940816,424.3759639589846 --365.8524612738836,79.01314796859083,381.84114014239003 --157.32036677790325,708.0310609109185,543.0998705756342 --870.6689122988587,242.250598181658,-529.3488980805007 -115.03652933455055,913.7768852659324,758.1240091045004 --190.96719376973658,-416.97228331129327,-531.188511183482 -65.02973951304011,-771.5030934838874,98.5500162564972 --997.332721018416,-352.30073850831036,-560.1313723388375 -942.4375799215641,454.48463913995806,-300.6932390755246 --814.309826938759,33.601189381248105,-573.1042373479154 -72.85909179671557,670.724708357785,231.5851042027707 -267.57683909000434,82.0605781256229,854.5312652628184 -863.8053688412067,25.446402147104436,-388.48102571299114 --80.82598824111221,-626.8841756087686,272.6886306361787 -0.18467156446649824,-793.3990443734402,-604.7044377607693 --40.73608760094635,775.1779814377167,132.7814412621949 -363.07000041694164,-321.9429005121806,142.82278608846855 --105.24035472386515,318.25982524632127,-898.8488678419792 --13.399567522081725,-408.0147497120661,-347.6298774441815 -921.8348631161227,-634.6103745772344,-377.50949484280613 -19.785151461743567,726.0538962992473,-166.65983358725907 -487.73056177634203,712.7481964296048,-379.9672883563021 --214.49963292258008,-286.88755262328743,665.7116172358421 --911.3062760927977,-383.15782234264,358.81711519025976 -130.88699913068535,-127.42128141261139,79.8964544427688 --604.8308283433635,-138.56675678397926,3.405968352698096 -802.3782439092033,-478.3296743920473,735.6570043298652 -288.4828016519639,-959.3183378647981,449.2626737987873 --928.8962449018898,994.7622536276263,745.2733753823957 --405.31250491990863,-485.1775396065891,-237.11783578878226 --287.66606937111396,-255.32436322923786,-363.44690776103914 -242.2668136966629,-671.472672558752,691.9625848920264 -624.8049680626307,-47.0335842894591,705.4599305570953 --505.70985993941343,-964.8690885920661,238.41585005964612 --84.1811860705692,134.3290925917413,798.678818036806 -939.8511471318868,268.9062795112061,528.1111797048768 --832.3831330256714,-678.5688302169888,466.4096099059532 --137.26908722399617,-108.06945919118857,-382.78463672912676 -214.7127669554875,-629.6699091675948,253.8325586277913 --652.4022857295206,-872.3479305805728,-339.284622601878 --537.7193159803046,777.9832771126646,-890.0930922627468 --646.7726148517543,97.43921116609886,-37.86561830505275 --908.295963250597,-985.4951439697111,976.1358839222999 -317.66940071767635,-269.18773819688636,-59.1355046735174 --466.89975909142606,-310.2524326135805,298.08893453642804 -765.6235977347415,-631.7399538376303,680.7230107706375 --756.8867409634619,-570.0155528232176,-925.649423900708 --718.376275814001,834.6062909281011,-81.12250676324288 --844.6682764432929,919.4536760779226,757.9846155173002 -509.3650417362826,866.9455838951158,-559.7411583284718 -672.7385860201728,379.9823927086122,739.5184991353767 -593.8231314852596,-307.00987364635,548.7970740345111 --475.08739403021934,-342.8156739438904,-784.1885655540477 -870.1532319609375,-417.9932731994369,41.24493034290367 --217.3343270676147,919.856241167003,-329.9016581230352 -557.0916428453781,710.83230926236,-128.78700503806817 --243.6563710941375,495.49164186525604,825.7919606124681 -509.86346614447643,-545.7472688162688,776.6154948754106 --224.83666512633386,152.45882355586855,662.8712385854221 --623.2104651990155,569.0202713551062,192.3255958213549 -786.6832836552164,-656.0591963129141,-158.63552591814312 -665.6861857336748,-961.5365930864797,-775.5972664687143 -981.1304255134694,-439.21164281929896,951.0863874479066 --634.9368979826522,-277.8111139853288,505.7388890071413 -315.556814476357,162.24479985811104,59.79835161001506 -686.8808873294804,-530.1028743332146,-115.0581460129631 --689.0954156870855,191.88319146140884,-498.91115145735967 --332.3158713132284,-57.4985667529437,-946.4588285937443 --816.1241281583247,371.8584414164393,-142.06003856498546 -729.5804439997908,389.34400728839887,-983.7981167053551 -233.42466153426972,-812.5502678805672,561.8663595809885 -983.015376557004,62.3975884830229,365.55900038826076 --525.3716782104968,-124.80451249241287,712.1906644727674 --665.1541045074976,-468.92878877247574,-109.13264942793967 -424.497783688028,-248.2320904086523,855.4645595660077 --811.0858974625617,-258.391604910305,417.9082468568438 --548.0264686770151,312.826268459346,-671.5660835453082 --888.0394302766273,-757.9685665027023,859.9695662682693 -103.50176587910255,592.691550959298,-334.6909981898975 -185.31729577089322,-10.095732590016837,891.475918804588 -495.14927210822066,461.08526299315804,-907.293461131441 -99.33933800738214,-66.0170921963703,855.6845332123889 --485.31602362093554,-460.33309341781137,-177.3075022369992 --513.2605731872479,-741.6321643825011,714.8296933016015 -116.5530488078316,722.7254379131336,662.2695308073919 --435.9152904206578,95.4748886485479,-833.5645945198592 -830.5037680615169,-191.47456986969382,-212.64763222195722 --394.4892587640936,-78.67251057859232,-496.4812269091039 --250.29545440639095,599.8940971697637,668.5110071703436 --391.6350447429677,-61.97113889442414,747.6395525601044 --894.6533363406057,778.2899239915707,-561.6313086953367 -357.0784884287516,165.10339276920058,105.88149637850415 -718.7204495056428,-796.8557127106775,-305.943949348728 -76.50549268953114,622.5777078920796,-567.113833176657 -605.8596827485526,-200.72303501212855,-622.1722871326092 -517.9728808869652,-818.2021970509044,29.53474815088589 --872.2484322762232,-287.16428968442483,202.15359801278532 -112.23108297442627,-190.68916419066693,-141.9040120557686 --546.460893298467,-88.23482315179422,906.5097114416685 -700.9058355675809,-709.5342618473123,-940.4384253581582 -867.0486254332611,53.49949976149537,75.67564629861545 -561.4359914130446,-370.6220522573469,-36.18486232799569 -937.3258262934751,344.2973738648143,-692.5099360084282 --733.5465040312934,-591.4704833339893,533.423348841435 --409.2459923187679,-957.2223066498404,888.3487270113237 --660.5731672101787,-980.8836277038629,-525.7367952333541 --529.9424257637327,-155.98949830855395,840.7796630000737 -758.3698355581957,-86.21089003514419,-178.20019001638695 -110.0181729497026,-513.0919760564685,-895.6300160672744 -878.4482723424135,-626.6020302456545,-603.1985415085672 --55.0793422921048,-16.773310319338634,-963.1315805985162 --704.0905224520586,-243.69036287851657,367.46138702107805 --543.1630863361283,-153.97110751647472,114.69012943293365 -777.1849892465841,-347.8589953457533,-732.883468273033 --21.455548204783554,493.44320336812416,-780.2804858945332 --150.6330166060792,-964.4297174750332,-932.8816367054977 --34.09327356666881,-403.6054036981411,690.2145980108244 -204.30861225290846,-92.13407651401928,-184.1292578914073 --5.509039620873409,-919.1223375746773,785.5867128413199 -996.6063114679166,-637.0257502826026,-759.2340704507606 --712.8450731028095,322.05411646873426,322.88167690154955 -695.8483245568218,503.6527768525066,-100.62065326132051 -225.7107231306377,376.5693407360159,25.47294057045042 --48.69803109672671,290.19489128530654,114.94909795130752 -287.8846106718206,225.70954792672774,438.39312102730923 -285.60701756575213,39.484972874534606,363.59362256877307 --101.03606962914387,-516.6575480547979,-997.1635597321691 -119.92829429168637,181.31045321728197,944.0979295514287 --277.04333181144887,-211.73351434337656,-596.4008373156196 --858.9314095253562,545.608985723481,-500.63787132134996 -217.80972206007596,375.5460710909631,-57.52662541670463 -752.7042260543833,-112.4103180405425,-430.1827539164698 -792.0310459232446,723.128568499913,-671.920105847174 --948.0779632921581,-820.0288873007586,-426.9052028923659 -944.5196034834214,117.03230632165014,-253.47653594146232 -777.4321892254927,-93.72733704300072,-369.52274319795777 -882.4390574913148,699.035332385356,687.3367508388819 -24.569486100426275,578.87679763091,-641.2932814708963 -146.44591511248723,967.6918456950914,-418.0831389640766 -588.7046584953503,-19.04318558386558,-920.3886335558253 -526.0387956313348,-662.8617112157744,262.9471342655004 --828.6716119060542,893.7347949919297,-416.55222563927816 --547.0706166452102,-741.7271918673314,892.0043866780957 -423.8074848826104,483.3217774361774,-1.1908772395108826 --50.544429459033154,-779.9575140170467,119.68219116798355 --506.16700978241914,954.2906656008117,593.1618800302947 --174.0158796142248,-697.317482616934,570.663382277568 --755.892465837368,-621.3324930058591,-576.9589645115452 -113.78127654618879,574.1133079807325,-371.37024255061556 --830.6603714494212,-70.92307295116166,496.22048231987105 --556.6723138252235,-560.1509039212515,894.4540546934215 -908.3074542383558,980.9314641231529,615.3192031495603 --623.6316616641088,-576.0369584014772,-319.54951695521606 --363.73493733301837,913.0554981560181,578.1479657633872 -448.0175843231077,-628.0735518837364,819.0511187246591 -655.7407590123476,-672.7163173441527,742.340663921945 --455.50492725905747,-838.2605083357879,313.64461302842005 -307.6093187686613,-810.1359808687638,-362.2963821268353 -985.6289245110772,356.8533340174738,460.1503332066584 --574.1654287913886,-842.4358579921713,-446.19662051812475 --502.2032296136161,-530.9117985038938,-614.4913562259209 -149.5113813108087,-343.7930483163565,640.6900300950608 --632.1051643052319,-70.74585826291104,-972.68432714784 --36.63535508961593,-888.3235582470512,955.4470237452872 -581.1842573008257,-19.777046727089214,-826.8252836412995 -184.8908815808286,517.527501403755,-618.5654939905094 -136.41668157498157,628.421796765736,536.4955552926326 -605.9840357343057,758.6468497394396,875.3642043189404 --188.9576895929281,137.53820504575447,581.3190520912217 -394.2796278915664,991.0404565287577,-972.6446977907117 --289.73356936841867,-437.9441474595951,-475.36829966893083 --554.9404350022285,418.24768163045815,-830.4810534493563 -483.21766788667674,386.8516840325469,-498.3917349982072 --494.33243366967747,257.72117068900434,524.3422109673556 -752.9712261747311,704.2791277089516,929.7659883277063 -162.76979067302227,817.3111226807193,617.0265465208215 -789.3352486280271,-976.7467974292667,931.8059837316218 --52.93967430704333,596.3659791496857,-745.5917613244383 --208.11780837205185,-457.07867395801816,-416.682458998126 --753.4887600982365,611.5276650860139,-981.5153708378436 --374.989086029595,-651.17891356717,178.0778812166809 --491.4951947709123,-482.00309094380066,-23.323712009362566 -305.3780786818513,-757.3905908696728,-648.9770950690076 --505.6505108109648,947.496428235921,-205.69500011415926 -197.98018126205307,-516.9143745680442,-19.080949685024166 --851.7616512280839,-930.5157081553461,-62.532946357079595 --202.6814249631759,-726.2393606163446,375.20285784146745 -985.8069817985288,-208.70635760657512,249.11727183478888 -925.9518847289714,663.0699448937505,-72.89555339462845 -474.97896891983874,-743.729919498952,24.207710927598328 --441.87944564012696,-677.6726242076778,-147.43818749093032 --737.9708911327712,397.970216348971,-87.51991189332898 -62.28926512932753,-707.248122663686,-720.4566778130111 -166.83087052024825,970.0194956588925,-807.4988335245488 --428.5371428684375,738.9182330757751,-855.455975489526 -751.7714427339026,48.57196674950228,-183.4664521471483 --380.63887129708826,-405.7656837443162,-388.3948351010424 -769.6061619203915,447.590460349571,339.4460156623011 -597.4982979040014,-485.77067399171005,236.0856241635115 --79.86752208409814,564.8832704003867,-381.487779053429 -286.3572337397916,764.424823634627,-195.69904761014254 --866.7558252650771,32.10164468358562,-308.0550243859482 -344.4507610943499,902.0658494972122,-28.783364006305987 --67.61953968893226,309.1696003829204,-793.0049928128647 --492.9876221499707,837.9586510007971,339.8852267275324 --973.1119120331675,-590.7490548819603,365.67453205779816 -528.7984051251485,679.7191453480837,-415.6463932359102 -862.0571925551253,105.89378715578482,393.0780447757859 -193.477725559816,-754.5198906507591,926.2293187697596 --754.2488402116946,-490.2360871776328,627.2557604459603 -237.19392300220284,676.298330752714,31.4723767480898 --246.0135292667303,843.6909990955699,-927.4953649704103 -712.2604407060917,-538.3644296244368,697.4726555079355 --721.6067731662288,160.43792738108095,776.2158380229441 --52.92070620221898,493.13334760678595,609.3432357111169 -472.9884174335584,850.6594737491966,-106.33153896014267 --653.7491216696885,-904.3778725950405,-507.0802607249898 --713.6049922395158,115.89748286896088,-630.109325576536 --922.1325854212577,-928.0203422626643,663.1389967297232 -182.89986288604973,-283.8293962132436,788.4560854804938 --859.6067771845728,960.6441454556518,232.58358050892207 --633.071492062303,358.13819795393715,526.7625195671253 --141.314433258451,723.2652124910949,-698.5351854070593 --442.32483284478326,-813.0152768320204,-578.2443187852957 --522.5423761777099,835.2663818434203,-843.7806224976875 --145.16975962458116,64.79737445382602,797.3861076043215 -995.392437322427,506.7762298396717,941.5819811380591 -574.2022650717474,926.4052819428332,414.5414518889104 --840.4731490978579,-196.15962601464696,293.19456760494086 --298.56298109149805,-453.23216377244285,154.79853426618206 -867.0037534048697,-930.0362529676929,538.4624070828754 -445.4545560892543,927.9068507765742,861.4224446650871 -524.4651240883857,40.81752936519729,-591.4648935329603 -90.47143665114868,530.7039878393075,791.3384252757862 -579.4240184210983,-609.466129617892,199.37262845611872 --335.65308093728595,-981.588665218714,-599.5581284226679 --773.5587001331014,685.4382470789371,-482.9874957043761 --430.60406222488905,919.8731435977686,-241.8265539022957 --980.8287197112109,-432.3077033077269,-761.4008387963751 --794.3828765282921,-845.025419728501,186.51894035075452 --621.3045527402828,-277.51441191797915,724.0354322600335 --151.32372040744872,831.3827001032753,-4.123893208787422 --202.32677032048855,500.7778541814032,-853.6498024639958 --821.0432340351653,303.9474278459213,-26.118573521503436 -580.8305006384205,832.5416746870628,-223.26624465690497 -192.82005316929258,1.3932555906197877,963.2213112848658 -662.1688147131904,823.4754165547072,-491.31982484479164 -545.0528463251887,-469.0535500047022,-582.5149331432202 -888.5323193111017,-961.3911665642668,930.7774073268592 --701.4762060223876,638.8761635865362,-448.15489386379386 --298.5953451385452,-566.4845773560301,171.02808496215926 --303.80890498425185,314.78607898932637,-968.7053641158681 --871.2502329699207,-800.6776945375027,-162.01262937953788 -629.5923453199521,776.3558207567653,-510.3785198781985 -148.73944847802795,536.729985385201,-422.34114016078263 --181.98452652745357,47.94840537142795,-730.2503071839046 --948.0354125484394,-694.3883813634335,253.70724250706667 --852.7634769326366,-620.6072702997434,-324.2922286093925 --844.2598713872674,-616.6014576767311,822.5395779670221 --961.4017355460305,306.86384834872433,-231.1821381696302 -345.2974788647423,177.3834407268091,-553.0024912907114 -694.418975146777,-16.11923478128665,645.0720378269434 --187.9749276235616,969.3711078304782,540.9787170025927 -931.900410225147,28.652957819717585,-52.61773541859907 -510.9076186505158,760.5825260268605,928.2915917311161 --350.8961879350005,597.409147685278,-578.7088047289267 -91.14869349089054,-640.3037031816017,-305.2052764993223 -862.7167344129184,-707.8186004538279,264.801790270393 -185.90854585480656,-758.5232945820271,-348.04191246237565 -125.96300903053157,-625.6427820230194,601.2473128256308 -944.3130190694997,-570.4812000750559,-626.1760704188482 --90.12985640511079,495.5305542800643,-436.7987795294972 --960.2401826054391,82.44125606578791,913.2011355346153 --217.44628918610886,-159.73089163379916,937.803434228076 -389.21522325345677,438.34384568425025,125.40401074213514 -949.2184217264833,377.7329688511122,790.0655032103389 -398.75773146644224,470.23164968079186,-419.17815571550693 --393.04260397236203,565.9692991520585,-406.5874216602008 -125.54014160306315,-501.2953781865961,633.9667616181389 --778.99729754462,658.8932795233288,205.4596010152036 --626.1809303458454,84.07077101223626,-435.0023263053191 --353.0653305390068,-296.9439168062394,-873.3615060553582 -971.9233688028348,-936.9307437375518,324.9937463685569 --257.54470448513894,292.0205818933978,-287.5034938248324 -347.5012925177175,458.4710189367215,381.10528079928963 --772.0760372836954,313.7864693093693,-440.0249010918054 --942.397258861333,-170.33865622209214,-132.9137943923979 --65.65173329510696,409.6483307814324,-382.31238171508176 --369.4389737921548,-878.8954875174788,373.6424319845919 -135.6521827991678,-301.1497746124239,410.3779578347094 -74.71549845375444,-61.510108258920695,22.649087322252853 -272.696250534113,320.0052091491989,-422.0843617185657 --718.5132732176935,-686.7316376189625,278.78177180600323 -745.7465715342519,-181.00744330889643,-660.9596793410752 -513.2049965877093,664.9789488388972,761.1648862419331 -213.6628578274665,721.4571187761694,-969.1700831031847 --785.528396460953,-814.8478658958024,425.209368509466 --860.8364329128419,-7.271255067385937,-54.58620272742178 --378.59295288351814,740.8103398841997,-659.133596240008 --295.0744312015204,548.3430000458582,-939.1553712134315 -345.9008004927373,632.7954527231411,864.5356776763344 -752.5932809829699,-361.2317663326296,172.7282826459052 --845.4130136990683,-484.25999290398283,-811.5552425049852 --369.62541969207234,750.3744269174579,-305.6663206514147 -123.79620600285284,-133.23830377011836,-82.16695140252943 -939.1441036731164,-407.6910634722841,254.64893904634278 --159.87466084110588,-877.7076379046275,-21.338336751528118 -626.6866580902167,-802.4940626366233,-860.8163052073821 --692.7369592134667,528.8002227786121,447.9907682894759 -130.03553781222104,-63.54719181473524,776.6516294052442 -533.395647666965,623.8845026036104,626.5246027013086 -285.434309491116,-83.97075136810827,729.3555051713008 -852.0148352065014,-952.3879134833139,-896.8902534674974 -917.4865938168746,-445.6787723116105,746.7388792988374 --222.40976207719473,-761.7998847812888,-839.1135995813315 --686.9842018390871,-500.2136102652706,-22.963292138347583 -402.9958011315671,972.7971529705999,-116.98651342165795 -36.36988468621962,43.6314027665112,78.86871097587209 -35.48131420892446,-982.4504898761644,-996.5503557803186 --804.6673637477542,-796.8867931416423,409.79381790959224 --590.1679349680005,789.4282095112258,857.2126591540391 -951.7866757917975,878.1626097740402,-456.2233561629507 -19.55368940702499,-649.090059606118,612.4193103448663 -776.8634102881922,702.5776785950297,-133.26610260633015 -517.347769373562,-804.8416608474611,-919.5104587614986 -506.4728286175218,-149.28945134263256,991.0985294791383 --805.4915682889352,711.2553630704674,-40.03386894201651 -654.3003910077541,634.2545643402898,831.9840027241548 --404.2999774277945,899.5987069240061,-696.6660792847595 --836.0624448130189,-136.76896525530174,656.6459372836853 --53.15773873310877,658.5733550610282,459.3736115886104 --581.1432277221329,897.7632497989275,-878.4376627411932 -796.55941508759,-391.113102019252,0.29616632879856297 --155.29625459853105,-656.3308861661676,-283.7062671966137 --614.1311274144094,-592.2270490789523,-625.8863279472394 --21.96523930681144,595.8627350226311,137.94006752248197 -786.4131771016837,273.08897715344847,378.68023126520893 -335.2144594540064,-101.0816136325177,378.6776444001655 --860.5845070620777,719.7029438313264,555.6242868878346 --509.5400835366424,536.0649085081648,-974.714797199963 --565.5068550382391,-869.7255226582081,560.4538332357893 -511.7483023567743,627.2720476036613,-991.0366133489423 -2.465453356816056,409.67239503467295,-689.1977425219691 -299.5814550252494,-831.7798013806286,-637.3482877913737 --48.4063700107979,307.1303053622041,-708.2617460922079 --629.5533383381241,-591.107265868674,-522.5983906020431 --546.8923029474175,-209.7017830047265,307.5793016734458 --123.93643373106067,551.9478174997762,438.5370118972296 --746.9461719018486,-902.3167533585122,755.8831279992121 --840.3378668742532,-703.3216385605738,-955.7334488837639 -256.67273059730746,164.7411263166971,973.8073328705113 -773.864792634344,-178.31364503818054,-256.82831817493 --406.2959314400298,-695.1861599242372,-723.8326867959819 --735.4325839807891,-771.7704856264429,-518.9759151889261 --386.6627393737672,923.1579420778316,156.94650200377146 -975.1915490265619,-255.06610434865354,-84.74673482111791 --350.8426816694416,-634.2246982068946,-713.6705844448417 -890.1583956156637,973.6213635975114,-910.1810069825369 --699.308250536467,-152.95181539795476,-627.3330473111853 --272.2392127462334,-741.8073002807332,-86.97648655641956 --456.6107676614814,-296.1898884826784,-811.3746970745049 --143.74389857971664,966.5152219231397,-342.33390623761943 -752.85854968487,686.3982832473703,904.1168365944211 -580.219024534189,319.1936541176299,713.1688884549153 --848.7106386853008,-74.33868560238443,978.5124772301176 -539.2003025894644,924.1507560744462,559.2687122669581 -749.7639348842883,413.05926460638193,521.0040088344797 -46.35601967900129,848.4754016282659,650.0778212467233 -687.7699313312644,346.01820192610467,-390.84010582550195 --928.7404092197213,871.3102588190891,172.24069761099372 --403.7140577037195,-701.7297843049244,659.0463310015093 -673.0403888951578,629.015936261063,290.16538393357246 --267.96922481624824,-391.859430439486,-982.8904597636596 -667.2151173764807,-825.134605012715,261.5099960815353 -8.14989368017666,53.378717852702266,853.4256906155467 --936.7699774575158,546.7844492575446,-895.8952032653857 --923.6927881292456,-140.36460371723615,-873.8496513140666 -578.287902585824,59.126187296674516,-941.9224346804511 --918.998627036161,225.33705947895874,612.2236353168098 --124.40093745045283,109.1613430712489,599.658908099803 -221.01234808363824,-550.479524682361,226.1040517389572 -256.5589181304272,468.21396176225335,241.74837511360238 -938.484260916076,-605.423382565863,902.1813591341524 -76.67898070003253,343.912280989824,-801.0768050956203 --238.84811724378596,538.7582929263453,413.82203019798067 --919.7212236691796,93.18852699448917,-823.4436140631811 -991.7128583563247,794.5931770665893,-957.8386791429261 -717.2991578052618,838.8592011168153,-292.9035548730899 -439.0033100955318,-115.7925075844422,310.4649691526881 --319.36519140361713,-354.88152673346326,-151.13222228484187 --708.8644826949976,662.2779288707652,-302.6042092767267 --199.7008921883097,788.1092254042892,-6.752371873657239 -88.50781870172591,912.996249554197,773.4527662899784 --661.066582223121,-53.56994016378985,942.5924548570911 --255.26740354279468,-256.85378296759984,-609.9395364216913 --771.3537717617496,480.6095815119636,540.060937403033 -938.0259270059998,546.836421810726,-513.2950119328026 --919.7668434229691,970.8747687393204,-319.09860891278856 --376.05691513515853,811.9104194987649,170.1997970899722 --570.2576523017308,778.1924854324791,986.7217101094868 --826.6428776983386,724.5032566049745,-218.9686046312121 -48.14489301340882,829.6319515299615,946.7583915502344 --475.67217918240124,-574.2984580801724,-838.9668828169763 -123.59570532427597,-972.7912090986634,-176.2034047801269 --853.2319666959829,-189.548434141332,-920.1356214687814 -670.4345212175378,-580.5220121228683,-343.382579284176 -740.0959932127837,492.53212266441005,-561.923276715883 --856.2011626850078,431.347553710679,-218.59489862378132 -532.1599982364423,-109.41045524957917,-307.99517405544714 --97.58918357520702,497.1179713413535,804.4405730807482 --900.4656068228489,48.223082453910365,-934.3291418322448 --63.180909951282615,770.5656581938008,-276.8194671593807 -864.9008421612864,261.21694330121886,868.3106875860128 -514.3332508250394,-793.1296667024754,-537.6972648746458 --211.65909083298766,-659.786235975848,-10.176790446678979 --57.26368859701881,912.5183960547624,-132.5442342080445 -571.2536085759957,883.8210897029596,753.977661947971 --582.6647509768163,-7.9402114929114305,-304.5204354081485 --200.28260972556905,-278.3863475084976,652.7184203500083 --95.72188975510505,47.388664489376424,964.8947140941493 --880.0414556169671,-24.084720418502457,548.1234138922323 --697.6760836235469,223.0631892295478,-521.0704409310665 -734.8082264491352,-345.8006691998414,-341.87436619818095 -196.387757035787,-632.8741837601826,-430.22272219387787 --166.73629976117695,-292.72427371977926,49.7544360111649 -199.28028813793253,133.3349075003291,308.33662398386446 --384.50096678435955,-747.1475456899439,521.6150828621542 -701.5607652613639,-485.98753555513554,-185.81608768396052 --2.8615660728894454,66.65368550587277,318.9803421753036 --916.7935332893574,442.95416546803403,-876.0579860411794 --63.42286465426423,655.3422711383882,-97.5693734432075 --701.8205024635045,970.0676900119195,778.5709241485265 -542.627266450028,-176.9767942015792,-632.3085462214044 -882.8223628370024,64.7022530342781,704.7109207749702 --315.8099884811485,-329.42336584105885,971.0809613480783 -43.666096989699554,-718.6091522785074,-560.6506440105852 --36.111441214558454,-915.0581790231773,-74.93202924339903 --162.1183158397448,558.672530638974,-290.1160710215165 -965.0975230791987,-638.4601613981938,181.97336993626982 --820.6014059834907,467.7279679879641,989.507376123943 -638.2772755032645,111.4070814406025,-30.517285200615902 -670.0599225336939,871.9481694214485,978.413051596186 --206.92154487103176,981.8349495890245,-688.147495652337 --492.90044813618164,-821.9677505322077,-456.5229670310367 -535.8751032360224,705.8487163568993,557.7852902051434 -262.1315563353926,27.93302504529106,417.4085784272929 --218.33290146555635,682.6167029994037,354.38018795357084 -395.609396988817,71.87198625814244,770.4579684223452 --495.97053264189503,-237.7046932778985,555.2851393553781 --14.502207741324582,778.4280268483817,-307.20136047429537 --261.33966236071046,777.4715787732507,-71.25935963591792 -32.24916840497349,-334.47256932864127,-446.6601156418361 -311.897421676784,-760.3186769175923,758.5452823658186 -558.4062735302157,-618.5034725883945,388.0398916491308 -205.2658425712698,-630.9298985267118,-453.59298789953505 --182.02699253233118,398.4854704909478,277.44681763401195 -64.46969535339576,536.8210862280685,515.8754792123318 -235.71830812451185,573.9801667696504,-331.4732504415816 -762.4990566452111,229.82017160388136,644.7270276248612 -92.55820958056802,-563.1235100226393,84.82025735661728 --257.7766724468238,394.99807207418894,-48.41241653052839 -672.2256098553753,356.14502464383327,369.08886606264787 --565.68933301787,968.4995329825808,683.3504185429774 -578.0097691213891,-339.5695496799451,71.26330569446372 --725.7936238513428,76.95195332541198,-708.2215070334255 -106.07568797920248,297.4437603098113,-219.60806550019527 --2.910243337413476,751.3067753491719,-782.8737105943812 -583.4657859993058,-658.4908980076073,-926.5840343907432 --628.8507945099045,530.0863799409794,-189.74785332627994 -745.041033692364,49.4150823645316,-955.4992961473381 -433.4272192038536,-779.5341825575346,578.7592669238488 --663.7949003896399,-309.1072283889731,522.5428592507205 -908.4627149528433,-257.1320987065353,658.8004403978716 --618.4154690483226,614.3595404049822,314.98811851250207 --614.5129855752632,-394.9920792971768,-736.458222805928 --234.06597787137343,-592.7027177534452,287.995907260947 -989.0102084411174,-975.9816738314718,81.83962657459733 -147.33319509801936,828.4175793616237,12.010669533875102 -87.4028392898349,-56.69439734322282,-462.1913908770372 --887.9417335021726,-182.68463558032772,-894.817057518643 -100.98493893183559,-385.41271351541377,67.20480305085562 --731.4060712096266,865.2599314787192,789.0424870998697 --620.006981595431,-313.1114334119802,226.98554370395914 --808.6275853881875,-290.8643577676984,-497.7754263619878 -831.0334574333933,705.0212725784104,159.66548253372753 -40.69267374314836,861.4515890907944,864.8555659576307 -938.6602507033208,-749.2422317836247,-678.8843784736596 -353.47339735977334,82.86895321968973,-963.068190213528 --876.0499280209613,776.1607645176102,737.7415910787727 --285.4581560079097,782.1012338610694,187.35014879580353 -611.8112940378037,-145.13785767957143,-773.2033453101825 --132.54587470796753,-85.40040400620421,101.88838768120604 --788.8345741911439,982.8037260992228,-511.7263583861873 --602.8951929258142,53.605837711873164,74.41635878977718 --120.35852433351147,543.7842926505091,33.30880145720539 -219.39091028996836,447.49277081557125,-949.9497968722668 -141.28836509008966,768.3889424567385,-965.2225141491322 --189.6357923980778,852.45490041166,-293.69119543492434 --82.54235159951827,963.0827860886254,-601.3522820988524 --869.4896217499881,718.8451817226087,736.9306824247369 --55.84433063997358,28.41434895457246,671.612739235672 -477.11899623159024,-469.7019955659787,-966.2132898569631 --40.599674932908556,717.8246521912827,791.6693533803243 -912.4523941523078,759.1264752255624,160.08711059619668 --110.78880152779823,549.699693068198,479.64326873119285 -76.28686016290885,-825.3452548830618,852.1626935738375 --88.79492499667572,-273.3324361674714,259.13479033754334 -347.67592233395385,-578.6241659393971,673.8776896199124 --420.12581267524433,-626.6321481713666,-187.2002942910052 -461.1201617949305,930.9163568796068,618.5625287428663 -880.6967553403836,-718.7883918469464,-857.6464022726465 -115.40952381334228,-419.40503391193124,656.1099459385457 -343.9757428046521,941.4563279715887,-490.4152885373916 --28.431771289535277,2.480954850706553,-521.6464102852476 -180.18679897601555,-113.42802784152093,-106.55688802025281 --274.5267040550327,-966.1412951489299,44.19047382957797 --329.5043285993378,-997.3602620313407,-384.11258467613595 --442.743333820486,-213.10369355272837,-736.2960207132061 -15.36764927016884,384.88070503626,260.371138109145 -607.5098951383814,-95.98342402583773,38.1834606794564 -620.8038817179665,-144.59765836152292,403.19869979919395 --130.7952625640163,-164.5276109768747,520.4112490583207 --650.3261690675777,-322.82805611685285,-551.6554465061965 --281.78011406480573,-539.2503552679519,158.8112621733094 -596.3416052356904,573.2261224358037,-270.99807090241507 -977.5208117885234,187.70872941160155,-201.19939644341048 -671.0785584828509,459.74802528528176,498.5506736482089 --607.7213005322568,-63.35138526288972,723.6562616492056 -8.076015257514541,366.9054868421006,175.8674660685292 -684.7135754367641,-430.8783204767948,150.95055577272979 --753.5306639803921,380.42155339893566,463.93567670542416 --914.3253576220031,351.5819272559702,-170.61969166842732 --751.8062477806353,-160.18490460306475,-611.5341406088367 --168.88093575336688,-231.32194408294458,476.78327387211493 -548.4311163327175,214.05730876909342,-954.6263156351049 -862.0445581419881,372.46656019289526,-931.6091001576224 -637.6657984282356,-599.4676905640077,158.44237914221367 --66.73126009962573,-160.32243528984668,779.4274402487952 --125.27741687477055,-849.3117648536985,893.2774544299052 -841.0704624792552,368.86537916319753,-64.2149437359501 --814.2810541129575,581.4962371549523,-849.0441711519421 --862.7980302097087,74.76768487873619,-679.7435196307196 --984.539465319302,-153.7731380084275,-725.5655367798681 --678.9691694386175,-846.1787225293307,-589.8124925527801 -430.96835954877884,617.8546144355828,-94.9327119413988 -13.107631762835354,-934.6899308115948,-861.3674772573663 --484.8645487009662,87.79684142629503,479.10229746998584 -210.00612267606607,-215.74429002642353,-763.3518539937236 -561.5464697743789,-272.4278968018858,472.10802896557925 -25.957683828683685,477.3241071236505,814.5791229051438 -842.059032107604,70.21356000120682,23.01672953127752 --468.6430689943255,871.5996630585828,-84.16166560075817 --744.8175214252457,-134.59017074690018,-745.8934995239921 -5.06336851415017,122.55102971242445,-324.4884770128293 --856.6987715370307,887.0070712664781,546.7062269668593 -677.7621610102419,-266.26321142754114,521.662060038901 --29.254209661611526,-597.8330231879081,-751.1532461855734 --309.89826135588623,-724.8957770497207,996.5379524081372 --901.6220195359559,-117.71280126184695,-95.81295521923175 --398.7361428366489,142.7031314138908,-700.0459516969106 -567.8247611744673,-335.1045635047234,182.68517959728342 -431.27847213391874,778.0842353803223,671.5748729044003 -216.61805620711925,-223.21363923222611,6.409340149927857 -537.4695867576052,755.091085118946,-792.4361436466563 --230.28747501389307,552.2331968270012,-136.696474812078 --335.5444718674323,-177.35460635346078,205.68949357270162 -999.610288267603,-14.015141790936468,-583.0110500914789 --674.3068494418105,-915.3005050471714,117.6344698366429 -89.14418297766838,-589.5321464393817,390.658812905134 -482.2140832593616,-481.8035892357775,-311.8004719405269 -980.9433446945134,-251.4710642985316,521.6033435122035 --94.54914674012002,586.6896557219518,538.0464775652958 -335.5120503970711,709.5566925911585,878.4369897553704 -159.9666409041679,-525.0621855545086,-202.7420767118499 -516.6114270265864,301.766970247739,-644.4033228695025 --897.5209177071506,365.9231870841297,-497.84195194130933 diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls index bbc6aa4c72..31b8773fb5 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls @@ -6,6 +6,6 @@ module AdjacentClasses with class D() with () fun f() = - let {obj_13} - obj_13 = new C(1) - obj_13 \ No newline at end of file + let {obj_11} + obj_11 = new C(1) + obj_11 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index e831ab6cfa..2b1f62bfb3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -69,13 +69,13 @@ module CombinedModule with module LinkingGeneratedClasses with class D fun f() = + let {obj_4} + obj_4 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_4 + fun g() = let {obj_5} - obj_5 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_5 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() obj_5 - fun g() = - let {obj_7} - obj_7 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() - obj_7 fun test1 = let {obj_1} obj_1 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 47ecd40b8a..bacd42b125 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -6,13 +6,13 @@ class S with module LinkingGeneratedClasses with class D fun f() = + let {obj_4} + obj_4 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_4 + fun g() = let {obj_5} - obj_5 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_5 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() obj_5 - fun g() = - let {obj_7} - obj_7 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() - obj_7 fun test1 = let {obj_2} obj_2 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index baf183b742..d9e6051e95 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -18,9 +18,9 @@ module StagedClass with class C() with () fun h() = - let {obj_8} - obj_8 = new D() - obj_8 + let {obj_6} + obj_6 = new D() + obj_6 class X(val x) with () fun f(y) = @@ -38,9 +38,9 @@ module StagedClass with tmp2 = x + y StagedClass.helpFoo(tmp2) private fun f_X_sp_0(y) = - let {obj_11} - obj_11 = new Bar(0) - obj_11 + let {obj_9} + obj_9 = new Bar(0) + obj_9 fun bar(b) = if b is true then Bar(0) @@ -63,15 +63,15 @@ module StagedClass with y4 + 1 else -1 fun foo() = - let {obj_9} - obj_9 = new Foo() - obj_9 + let {obj_7} + obj_7 = new Foo() + obj_7 fun g() = - let {obj_10} - obj_10 = new D() - obj_10 + let {obj_8} + obj_8 = new D() + obj_8 fun helpFoo(x) = StagedClass__Legacy."Helper$StagedClass".foo(x) fun xx() = - let {obj_12} - obj_12 = new Bar(0) - obj_12 \ No newline at end of file + let {obj_10} + obj_10 = new Bar(0) + obj_10 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 58107ef3e8..6319c3252b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -1,1285 +1,3883 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) import "../Transform3D.mls" as Transform3D__Legacy module Transform3D with - () + class Matrix(val arr, val r, val c) fun ident(w) = - let {m5} - m5 = zeros(w, w) - iterID(m5, w, w) + let {m3} + m3 = zeros(w, w) + iterID_Transform3D_sp_0(m3, w, w) fun iter(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = >(k, 0) if scrut is true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter(tmp3, x, y, colX, i, j, tmp4) + tmp = *(i, x.c) + tmp1 = tmp + colX + tmp2 = tmp1 - k + tmp3 = colX - k + tmp4 = *(tmp3, y.c) + tmp5 = tmp4 + j + tmp6 = *(x.arr.(tmp2), y.arr.(tmp5)) + tmp7 = sum + tmp6 + tmp8 = k - 1 + iter(tmp7, x, y, colX, i, j, tmp8) else sum fun iterCol(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = ===(j, 0) if scrut1 is true then m else - tmp5 = colY - j - tmp6 = colY - j - tmp7 = iter_Transform3D_sp_0(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, tmp5, tmp7) - tmp9 = j - 1 - iterCol(tmp8, x, y, colX, colY, i, tmp9) + tmp9 = colY - j + tmp10 = colY - j + tmp11 = iter_Transform3D_sp_0(0, x, y, colX, i, tmp10, colX) + tmp12 = update(m, i, tmp9, tmp11) + tmp13 = j - 1 + iterCol_Transform3D_sp_0(tmp12, x, y, colX, colY, i, tmp13) fun iterID(m, w, i) = - let {scrut4, tmp17, tmp18, tmp19, tmp20} - scrut4 = ===(i, 0) - if scrut4 is + let {scrut3, tmp17, tmp18, tmp19, tmp20} + scrut3 = ===(i, 0) + if scrut3 is true then m else tmp17 = w - i tmp18 = w - i - tmp19 = Transform3D__Legacy."Mx$Transform3D".set2D(m, tmp17, tmp18, 1) + tmp19 = update_Transform3D_sp_1(m, tmp17, tmp18, 1) tmp20 = i - 1 - iterID(tmp19, w, tmp20) - fun iterInit(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16} - scrut3 = ===(i, 0) - if scrut3 is - true then m - else - tmp13 = r - i - tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, tmp13, tmp14) - tmp16 = i - 1 - iterInit(tmp15, r, c, tmp16) + iterID_Transform3D_sp_0(tmp19, w, tmp20) fun iterRow(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} + let {scrut2, tmp14, tmp15, tmp16} scrut2 = ===(i, 0) if scrut2 is true then m else - tmp10 = rowX - i - tmp11 = iterCol(m, x, y, colX, colY, tmp10, colY) - tmp12 = i - 1 - iterRow(tmp11, x, y, rowX, colX, colY, tmp12) + tmp14 = rowX - i + tmp15 = iterCol(m, x, y, colX, colY, tmp14, colY) + tmp16 = i - 1 + iterRow(tmp15, x, y, rowX, colX, colY, tmp16) fun model(local, position, scaling, rotation) = - let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_216, tup_217, tup_218, tup_219, tup_220} - tmp43 = rotateZ(rotation.2) - tmp44 = rotateY(rotation.1) - tmp45 = rotateX(rotation.0) - tup_216 = [1, 0, 0, 0] - tup_217 = [0, 1, 0, 0] - tup_218 = [0, 0, 1, 0] - tup_219 = [0, 0, 0, 1] - tup_220 = [tup_216, tup_217, tup_218, tup_219] - tmp46 = tup_220 - tmp47 = multiply_Transform3D_sp_0(tmp45, tmp46) - tmp48 = multiply(tmp44, tmp47) - rot = multiply(tmp43, tmp48) - tmp49 = transform(position.0, position.1, position.2) - tmp50 = scale(scaling.0, scaling.1, scaling.2) - tmp51 = [local.0] - tmp52 = [local.1] - tmp53 = [local.2] - tmp54 = [1] - tmp55 = [tmp51, tmp52, tmp53, tmp54] - tmp56 = multiply_Transform3D_sp_1(tmp50, tmp55) - tmp57 = multiply(rot, tmp56) - res1 = multiply(tmp49, tmp57) - [res1.0, res1.1, res1.2] + let {rot, res1, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58} + tmp47 = rotateZ(rotation.2) + tmp48 = rotateY(rotation.1) + tmp49 = rotateX(rotation.0) + tmp50 = ident_Transform3D_sp_0(4) + tmp51 = multiply_Transform3D_sp_0(tmp49, tmp50) + tmp52 = multiply_Transform3D_sp_1(tmp48, tmp51) + rot = multiply_Transform3D_sp_1(tmp47, tmp52) + tmp53 = transform(position.0, position.1, position.2) + tmp54 = scale(scaling.0, scaling.1, scaling.2) + tmp55 = [local.0, local.1, local.2, 1] + tmp56 = new Matrix(tmp55, 4, 1) + tmp57 = multiply_Transform3D_sp_2(tmp54, tmp56) + tmp58 = multiply_Transform3D_sp_3(rot, tmp57) + res1 = multiply_Transform3D_sp_3(tmp53, tmp58) + [res1.arr.0, res1.arr.1, res1.arr.2] fun model0(local) = - let {tmp58, tmp59, tmp60, tmp61} - tmp58 = [11, 4, 51] - tmp59 = [0.4, 0.19, 0.19] - tmp60 = 2.51327412 - tmp61 = [tmp60, 3.1415926535, 0] - model_Transform3D_sp_0(local, tmp58, tmp59, tmp61) + let {tmp59, tmp60, tmp61, tmp62} + tmp59 = [11, 4, 51] + tmp60 = [0.4, 0.19, 0.19] + tmp61 = 2.51327412 + tmp62 = [tmp61, 3.1415926535, 0] + model_Transform3D_sp_0(local, tmp59, tmp60, tmp62) + fun moveBy(v, dx, dy, dz) = + let {m5, tmp63, tmp64} + m5 = transform(dx, dy, dz) + tmp63 = [v.0, v.1, v.2, 1] + tmp64 = new Matrix(tmp63, 4, 1) + multiply_Transform3D_sp_2(m5, tmp64) fun multiply(x, y) = - let {rowX1, colX3, rowY, colY2, res} - rowX1 = x.length - colX3 = x.0.length - rowY = y.length - colY2 = y.0.length - res = zeros(rowX1, colY2) - iterRow(res, x, y, rowX1, colX3, colY2, rowX1) + let {res} + res = zeros(x.r, y.c) + iterRow_Transform3D_sp_0(res, x, y, x.r, x.c, y.c, x.r) fun rotateX(angle) = - let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_196, tup_197, tup_198, tup_199, tup_200} + let {s, c2, tmp32, tmp33, tmp34, tmp35, tmp36} s = globalThis.Math.sin(angle) c2 = globalThis.Math.cos(angle) - tup_196 = [1, 0, 0, 0] - tup_197 = [0, 1, 0, 0] - tup_198 = [0, 0, 1, 0] - tup_199 = [0, 0, 0, 1] - tup_200 = [tup_196, tup_197, tup_198, tup_199] - tmp28 = tup_200 - tmp29 = update_Transform3D_sp_6(tmp28, 1, 1, c2) - tmp30 = -(s) - tmp31 = update_Transform3D_sp_7(tmp29, 1, 2, tmp30) - tmp32 = update_Transform3D_sp_8(tmp31, 2, 1, s) - update_Transform3D_sp_5(tmp32, 2, 2, c2) + tmp32 = ident_Transform3D_sp_0(4) + tmp33 = update_Transform3D_sp_13(tmp32, 1, 1, c2) + tmp34 = -(s) + tmp35 = update_Transform3D_sp_14(tmp33, 1, 2, tmp34) + tmp36 = update_Transform3D_sp_15(tmp35, 2, 1, s) + update_Transform3D_sp_12(tmp36, 2, 2, c2) fun rotateY(angle) = - let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_206, tup_207, tup_208, tup_209, tup_210} + let {s1, c3, tmp37, tmp38, tmp39, tmp40, tmp41} s1 = globalThis.Math.sin(angle) c3 = globalThis.Math.cos(angle) - tup_206 = [1, 0, 0, 0] - tup_207 = [0, 1, 0, 0] - tup_208 = [0, 0, 1, 0] - tup_209 = [0, 0, 0, 1] - tup_210 = [tup_206, tup_207, tup_208, tup_209] - tmp33 = tup_210 - tmp34 = update_Transform3D_sp_3(tmp33, 0, 0, c3) - tmp35 = update_Transform3D_sp_9(tmp34, 0, 2, s1) - tmp36 = -(s1) - tmp37 = update_Transform3D_sp_10(tmp35, 2, 0, tmp36) - update_Transform3D_sp_5(tmp37, 2, 2, c3) + tmp37 = ident_Transform3D_sp_0(4) + tmp38 = update_Transform3D_sp_10(tmp37, 0, 0, c3) + tmp39 = update_Transform3D_sp_16(tmp38, 0, 2, s1) + tmp40 = -(s1) + tmp41 = update_Transform3D_sp_17(tmp39, 2, 0, tmp40) + update_Transform3D_sp_12(tmp41, 2, 2, c3) fun rotateZ(angle) = - let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_211, tup_212, tup_213, tup_214, tup_215} + let {s2, c4, tmp42, tmp43, tmp44, tmp45, tmp46} s2 = globalThis.Math.sin(angle) c4 = globalThis.Math.cos(angle) - tup_211 = [1, 0, 0, 0] - tup_212 = [0, 1, 0, 0] - tup_213 = [0, 0, 1, 0] - tup_214 = [0, 0, 0, 1] - tup_215 = [tup_211, tup_212, tup_213, tup_214] - tmp38 = tup_215 - tmp39 = update_Transform3D_sp_3(tmp38, 0, 0, c4) - tmp40 = -(s2) - tmp41 = update_Transform3D_sp_11(tmp39, 0, 1, tmp40) - tmp42 = update_Transform3D_sp_12(tmp41, 1, 0, s2) - update_Transform3D_sp_4(tmp42, 1, 1, c4) + tmp42 = ident_Transform3D_sp_0(4) + tmp43 = update_Transform3D_sp_10(tmp42, 0, 0, c4) + tmp44 = -(s2) + tmp45 = update_Transform3D_sp_18(tmp43, 0, 1, tmp44) + tmp46 = update_Transform3D_sp_19(tmp45, 1, 0, s2) + update_Transform3D_sp_11(tmp46, 1, 1, c4) fun scale(sx, sy, sz) = - let {tmp25, tmp26, tmp27, tup_186, tup_187, tup_188, tup_189, tup_190} - tup_186 = [1, 0, 0, 0] - tup_187 = [0, 1, 0, 0] - tup_188 = [0, 0, 1, 0] - tup_189 = [0, 0, 0, 1] - tup_190 = [tup_186, tup_187, tup_188, tup_189] - tmp25 = tup_190 - tmp26 = update_Transform3D_sp_3(tmp25, 0, 0, sx) - tmp27 = update_Transform3D_sp_4(tmp26, 1, 1, sy) - update_Transform3D_sp_5(tmp27, 2, 2, sz) + let {tmp29, tmp30, tmp31} + tmp29 = ident_Transform3D_sp_0(4) + tmp30 = update_Transform3D_sp_10(tmp29, 0, 0, sx) + tmp31 = update_Transform3D_sp_11(tmp30, 1, 1, sy) + update_Transform3D_sp_12(tmp31, 2, 2, sz) fun transform(dx, dy, dz) = - let {tmp22, tmp23, tmp24, tup_176, tup_177, tup_178, tup_179, tup_180} - tup_176 = [1, 0, 0, 0] - tup_177 = [0, 1, 0, 0] - tup_178 = [0, 0, 1, 0] - tup_179 = [0, 0, 0, 1] - tup_180 = [tup_176, tup_177, tup_178, tup_179] - tmp22 = tup_180 - tmp23 = update_Transform3D_sp_0(tmp22, 0, 3, dx) - tmp24 = update_Transform3D_sp_1(tmp23, 1, 3, dy) - update_Transform3D_sp_2(tmp24, 2, 3, dz) - fun update(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, j, v) + let {tmp26, tmp27, tmp28} + tmp26 = ident_Transform3D_sp_0(4) + tmp27 = update_Transform3D_sp_7(tmp26, 0, 3, dx) + tmp28 = update_Transform3D_sp_8(tmp27, 1, 3, dy) + update_Transform3D_sp_9(tmp28, 2, 3, dz) + fun update(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = *(i, m.c) + tmp24 = tmp23 + j + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, v) + new Matrix(tmp25, m.r, m.c) fun zeros(r, c) = - let {m4, tmp21, tup_1} - tmp21 = [] - tup_1 = [] - m4 = Transform3D__Legacy."Mx$Transform3D".init(r, tup_1) - iterInit(m4, r, c, r) + let {tmp21, tmp22} + tmp21 = *(r, c) + tmp22 = Transform3D__Legacy."Mx$Transform3D".init(tmp21, 0) + new Matrix(tmp22, r, c) private fun ident_Transform3D_sp_0(w) = - let {tup_171, tup_172, tup_173, tup_174, tup_175} - tup_171 = [1, 0, 0, 0] - tup_172 = [0, 1, 0, 0] - tup_173 = [0, 0, 1, 0] - tup_174 = [0, 0, 0, 1] - tup_175 = [tup_171, tup_172, tup_173, tup_174] - tup_175 + let {tup_26, obj_27} + tup_26 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_27 = new Matrix(tup_26, 4, 4) + obj_27 private fun iterCol_Transform3D_sp_0(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = false - tmp5 = 0 - tmp6 = 0 - tmp7 = iter_Transform3D_sp_1(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 0, tmp7) - tmp9 = 3 - iterCol_Transform3D_sp_1(tmp8, x, y, colX, colY, i, tmp9) + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = ===(j, 0) + if scrut1 is + true then m + else + tmp9 = colY - j + tmp10 = colY - j + tmp11 = iter_Transform3D_sp_0(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_0(m, i, tmp9, tmp11) + tmp13 = j - 1 + iterCol_Transform3D_sp_0(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_1(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = false - tmp5 = 1 - tmp6 = 1 - tmp7 = iter_Transform3D_sp_3(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 1, tmp7) - tmp9 = 2 - iterCol_Transform3D_sp_2(tmp8, x, y, colX, colY, i, tmp9) + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_1(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_20(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_2(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_10(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = true m private fun iterCol_Transform3D_sp_11(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = false - tmp5 = 0 - tmp6 = 0 - tmp7 = iter_Transform3D_sp_21(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 0, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_12(tmp8, x, y, colX, colY, i, tmp9) + tmp10 = 0 + tmp11 = iter_Transform3D_sp_41(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_17(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_12(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_12(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = true - m + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_46(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_15(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_13(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_13(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = false - tmp5 = 0 - tmp6 = 0 - tmp7 = 1 - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 3, 0, 1) - tmp9 = 0 - iterCol_Transform3D_sp_14(tmp8, x, y, colX, colY, i, tmp9) + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_51(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_12(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_14(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_14(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_56(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_9(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_15(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_15(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = true m - private fun iterCol_Transform3D_sp_15(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = ===(j, 0) - if scrut1 is - true then m - else - tmp5 = colY - j - tmp6 = colY - j - tmp7 = iter_Transform3D_sp_31(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 0, tmp5, tmp7) - tmp9 = j - 1 - iterCol_Transform3D_sp_15(tmp8, x, y, colX, colY, i, tmp9) private fun iterCol_Transform3D_sp_16(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = ===(j, 0) - if scrut1 is - true then m - else - tmp5 = colY - j - tmp6 = colY - j - tmp7 = iter_Transform3D_sp_36(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, tmp5, tmp7) - tmp9 = j - 1 - iterCol_Transform3D_sp_16(tmp8, x, y, colX, colY, i, tmp9) + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_61(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_22(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_17(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_17(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = ===(j, 0) - if scrut1 is - true then m - else - tmp5 = colY - j - tmp6 = colY - j - tmp7 = iter_Transform3D_sp_41(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, tmp5, tmp7) - tmp9 = j - 1 - iterCol_Transform3D_sp_17(tmp8, x, y, colX, colY, i, tmp9) + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_66(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_23(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_18(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_18(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} - scrut1 = ===(j, 0) - if scrut1 is - true then m - else - tmp5 = colY - j - tmp6 = colY - j - tmp7 = iter_Transform3D_sp_46(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 3, tmp5, tmp7) - tmp9 = j - 1 - iterCol_Transform3D_sp_18(tmp8, x, y, colX, colY, i, tmp9) + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_71(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_24(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_19(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_19(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_76(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_25(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_20(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_2(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_6(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_18(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_3(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_20(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_21(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_81(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_20(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_22(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_22(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_86(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_18(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_23(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_23(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_91(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_16(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_24(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_24(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_96(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_21(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_25(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_25(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_26(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_101(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_19(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_27(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_27(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = false - tmp5 = 2 - tmp6 = 2 - tmp7 = iter_Transform3D_sp_5(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 2, tmp7) tmp9 = 1 - iterCol_Transform3D_sp_3(tmp8, x, y, colX, colY, i, tmp9) + tmp10 = 1 + tmp11 = iter_Transform3D_sp_106(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_11(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_28(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_28(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_111(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_14(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_29(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_29(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_116(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_8(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_30(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_3(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_11(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_16(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_4(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_30(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_31(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_121(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_17(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_32(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_32(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_126(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_15(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_33(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_33(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_131(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_12(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_34(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_34(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_136(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_9(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_35(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_35(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_36(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = false - tmp5 = 3 - tmp6 = 3 - tmp7 = iter_Transform3D_sp_7(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 3, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_4(tmp8, x, y, colX, colY, i, tmp9) + tmp10 = 0 + tmp11 = iter_Transform3D_sp_141(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_22(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_37(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_37(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_146(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_23(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_38(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_38(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_151(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_24(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_39(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_39(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_156(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_25(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_40(tmp12, x, y, colX, colY, i, tmp13) private fun iterCol_Transform3D_sp_4(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_16(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_21(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_5(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_40(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = true m - private fun iterCol_Transform3D_sp_5(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + private fun iterCol_Transform3D_sp_41(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = false - tmp5 = 0 - tmp6 = 0 - tmp7 = iter_Transform3D_sp_9(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, i, 0, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_6(tmp8, x, y, colX, colY, i, tmp9) - private fun iterCol_Transform3D_sp_6(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + tmp10 = 0 + tmp11 = iter_Transform3D_sp_161(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_42(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_42(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = true m - private fun iterCol_Transform3D_sp_7(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9, tup_501, tup_502, tup_503, tup_504, tup_505} + private fun iterCol_Transform3D_sp_43(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = false - tmp5 = 0 - tmp6 = 0 - tmp7 = iter_Transform3D_sp_11(0, x, y, colX, i, tmp6, colX) - tup_501 = [0] - tup_502 = [0] - tup_503 = [0] - tup_504 = [0] - tup_505 = [tup_501, tup_502, tup_503, tup_504] - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(tup_505, 0, 0, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_8(tmp8, x, y, colX, colY, i, tmp9) - private fun iterCol_Transform3D_sp_8(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + tmp10 = 0 + tmp11 = iter_Transform3D_sp_166(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_44(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_44(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = true m - private fun iterCol_Transform3D_sp_9(m, x, y, colX, colY, i, j) = - let {scrut1, tmp5, tmp6, tmp7, tmp8, tmp9} + private fun iterCol_Transform3D_sp_45(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = false - tmp5 = 0 - tmp6 = 0 - tmp7 = iter_Transform3D_sp_16(0, x, y, colX, i, tmp6, colX) - tmp8 = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 0, tmp7) tmp9 = 0 - iterCol_Transform3D_sp_10(tmp8, x, y, colX, colY, i, tmp9) - private fun iterID_Transform3D_sp_0(m, w, i) = - let {tup_161, tup_162, tup_163, tup_164, tup_165} - tup_161 = [1, 0, 0, 0] - tup_162 = [0, 1, 0, 0] - tup_163 = [0, 0, 1, 0] - tup_164 = [0, 0, 0, 1] - tup_165 = [tup_161, tup_162, tup_163, tup_164] - tup_165 - private fun iterID_Transform3D_sp_1(m, w, i) = - let {tup_151, tup_152, tup_153, tup_154, tup_155} - tup_151 = [1, 0, 0, 0] - tup_152 = [0, 1, 0, 0] - tup_153 = [0, 0, 1, 0] - tup_154 = [0, 0, 0, 1] - tup_155 = [tup_151, tup_152, tup_153, tup_154] - tup_155 - private fun iterID_Transform3D_sp_2(m, w, i) = - let {tup_141, tup_142, tup_143, tup_144, tup_145} - tup_141 = [1, 0, 0, 0] - tup_142 = [0, 1, 0, 0] - tup_143 = [0, 0, 1, 0] - tup_144 = [0, 0, 0, 1] - tup_145 = [tup_141, tup_142, tup_143, tup_144] - tup_145 - private fun iterID_Transform3D_sp_3(m, w, i) = - let {tup_131, tup_132, tup_133, tup_134, tup_135} - tup_131 = [1, 0, 0, 0] - tup_132 = [0, 1, 0, 0] - tup_133 = [0, 0, 1, 0] - tup_134 = [0, 0, 0, 1] - tup_135 = [tup_131, tup_132, tup_133, tup_134] - tup_135 - private fun iterID_Transform3D_sp_4(m, w, i) = - let {tup_121, tup_122, tup_123, tup_124, tup_125} - tup_121 = [1, 0, 0, 0] - tup_122 = [0, 1, 0, 0] - tup_123 = [0, 0, 1, 0] - tup_124 = [0, 0, 0, 1] - tup_125 = [tup_121, tup_122, tup_123, tup_124] - tup_125 - private fun iterInit_Transform3D_sp_0(m, r, c, i) = - let {tup_76, tup_77, tup_78, tup_79, tup_80} - tup_76 = [0, 0, 0, 0] - tup_77 = [0, 0, 0, 0] - tup_78 = [0, 0, 0, 0] - tup_79 = [0, 0, 0, 0] - tup_80 = [tup_76, tup_77, tup_78, tup_79] - tup_80 - private fun iterInit_Transform3D_sp_1(m, r, c, i) = - let {tup_66, tup_67, tup_68, tup_69, tup_70} - tup_66 = [0, 0, 0, 0] - tup_67 = [0, 0, 0, 0] - tup_68 = [0, 0, 0, 0] - tup_69 = [0, 0, 0, 0] - tup_70 = [tup_66, tup_67, tup_68, tup_69] - tup_70 - private fun iterInit_Transform3D_sp_10(m, r, c, i) = - let {tup_451, tup_452, tup_453, tup_454, tup_455} - tup_451 = [0] - tup_452 = [0] - tup_453 = [0] - tup_454 = [0] - tup_455 = [tup_451, tup_452, tup_453, tup_454] - tup_455 - private fun iterInit_Transform3D_sp_11(m, r, c, i) = - let {tup_441, tup_442, tup_443, tup_444, tup_445} - tup_441 = [0] - tup_442 = [0] - tup_443 = [0] - tup_444 = [0] - tup_445 = [tup_441, tup_442, tup_443, tup_444] - tup_445 - private fun iterInit_Transform3D_sp_12(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_511, tup_512, tup_513, tup_514, tup_515} - scrut3 = false + tmp10 = 0 + tmp11 = iter_Transform3D_sp_171(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) tmp13 = 0 - tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) - tup_511 = [] - tup_512 = [] - tup_513 = [] - tup_514 = [] - tup_515 = [tup_511, tup_512, tup_513, tup_514] - tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(tup_515, 0, tmp14) - tmp16 = 3 - iterInit_Transform3D_sp_13(tmp15, r, c, tmp16) - private fun iterInit_Transform3D_sp_13(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16} - scrut3 = false - tmp13 = 1 - tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, 1, tmp14) - tmp16 = 2 - iterInit_Transform3D_sp_14(tmp15, r, c, tmp16) - private fun iterInit_Transform3D_sp_14(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16} - scrut3 = false - tmp13 = 2 - tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, 2, tmp14) - tmp16 = 1 - iterInit_Transform3D_sp_15(tmp15, r, c, tmp16) - private fun iterInit_Transform3D_sp_15(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16} - scrut3 = false - tmp13 = 3 - tmp14 = Transform3D__Legacy."Mx$Transform3D".init(c, 0) - tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, 3, tmp14) - tmp16 = 0 - iterInit_Transform3D_sp_16(tmp15, r, c, tmp16) - private fun iterInit_Transform3D_sp_16(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16} - scrut3 = true + iterCol_Transform3D_sp_46(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_46(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true m - private fun iterInit_Transform3D_sp_2(m, r, c, i) = - let {tup_56, tup_57, tup_58, tup_59, tup_60} - tup_56 = [0, 0, 0, 0] - tup_57 = [0, 0, 0, 0] - tup_58 = [0, 0, 0, 0] - tup_59 = [0, 0, 0, 0] - tup_60 = [tup_56, tup_57, tup_58, tup_59] - tup_60 - private fun iterInit_Transform3D_sp_3(m, r, c, i) = - let {tup_46, tup_47, tup_48, tup_49, tup_50} - tup_46 = [0, 0, 0, 0] - tup_47 = [0, 0, 0, 0] - tup_48 = [0, 0, 0, 0] - tup_49 = [0, 0, 0, 0] - tup_50 = [tup_46, tup_47, tup_48, tup_49] - tup_50 - private fun iterInit_Transform3D_sp_4(m, r, c, i) = - let {tup_36, tup_37, tup_38, tup_39, tup_40} - tup_36 = [0, 0, 0, 0] - tup_37 = [0, 0, 0, 0] - tup_38 = [0, 0, 0, 0] - tup_39 = [0, 0, 0, 0] - tup_40 = [tup_36, tup_37, tup_38, tup_39] - tup_40 - private fun iterInit_Transform3D_sp_5(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_222, tup_223} - scrut3 = ===(i, 0) - if scrut3 is - true then m - else - tmp13 = r - i - tup_222 = [0, 0, 0, 0] - tmp14 = tup_222 - tup_223 = [0, 0, 0, 0] - tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, tmp13, tup_223) - tmp16 = i - 1 - iterInit_Transform3D_sp_5(tmp15, r, c, tmp16) - private fun iterInit_Transform3D_sp_6(m, r, c, i) = - let {scrut3, tmp13, tmp14, tmp15, tmp16, tup_265, tup_266} - scrut3 = ===(i, 0) - if scrut3 is - true then m - else - tmp13 = r - i - tup_265 = [0] - tmp14 = tup_265 - tup_266 = [0] - tmp15 = Transform3D__Legacy."Mx$Transform3D".set1D(m, tmp13, tup_266) - tmp16 = i - 1 - iterInit_Transform3D_sp_6(tmp15, r, c, tmp16) - private fun iterInit_Transform3D_sp_7(m, r, c, i) = - let {tup_481, tup_482, tup_483, tup_484, tup_485} - tup_481 = [0] - tup_482 = [0] - tup_483 = [0] - tup_484 = [0] - tup_485 = [tup_481, tup_482, tup_483, tup_484] - tup_485 - private fun iterInit_Transform3D_sp_8(m, r, c, i) = - let {tup_471, tup_472, tup_473, tup_474, tup_475} - tup_471 = [0] - tup_472 = [0] - tup_473 = [0] - tup_474 = [0] - tup_475 = [tup_471, tup_472, tup_473, tup_474] - tup_475 - private fun iterInit_Transform3D_sp_9(m, r, c, i) = - let {tup_461, tup_462, tup_463, tup_464, tup_465} - tup_461 = [0] - tup_462 = [0] - tup_463 = [0] - tup_464 = [0] - tup_465 = [tup_461, tup_462, tup_463, tup_464] - tup_465 - private fun iterRow_Transform3D_sp_0(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = ===(i, 0) - if scrut2 is - true then m - else - tmp10 = rowX - i - tmp11 = iterCol_Transform3D_sp_0(m, x, y, colX, colY, tmp10, colY) - tmp12 = i - 1 - iterRow_Transform3D_sp_0(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iterRow_Transform3D_sp_1(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = ===(i, 0) - if scrut2 is - true then m - else - tmp10 = rowX - i - tmp11 = iterCol_Transform3D_sp_5(m, x, y, colX, colY, tmp10, colY) - tmp12 = i - 1 - iterRow_Transform3D_sp_1(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iterRow_Transform3D_sp_10(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = false - tmp10 = 3 - tmp11 = iterCol_Transform3D_sp_18(m, x, y, colX, colY, tmp10, colY) - tmp12 = 0 - iterRow_Transform3D_sp_11(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iterRow_Transform3D_sp_11(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = true + private fun iterCol_Transform3D_sp_47(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_176(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_29(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_48(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_48(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true m - private fun iterRow_Transform3D_sp_2(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = false + private fun iterCol_Transform3D_sp_49(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 tmp10 = 0 - tmp11 = iterCol_Transform3D_sp_7(m, x, y, colX, colY, tmp10, colY) - tmp12 = 3 - iterRow_Transform3D_sp_3(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iterRow_Transform3D_sp_3(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = false - tmp10 = 1 - tmp11 = iterCol_Transform3D_sp_9(m, x, y, colX, colY, tmp10, colY) - tmp12 = 2 - iterRow_Transform3D_sp_4(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iterRow_Transform3D_sp_4(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = false - tmp10 = 2 - tmp11 = iterCol_Transform3D_sp_11(m, x, y, colX, colY, tmp10, colY) - tmp12 = 1 - iterRow_Transform3D_sp_5(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iterRow_Transform3D_sp_5(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = false - tmp10 = 3 - tmp11 = iterCol_Transform3D_sp_13(m, x, y, colX, colY, tmp10, colY) - tmp12 = 0 - iterRow_Transform3D_sp_6(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iterRow_Transform3D_sp_6(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = true + tmp11 = iter_Transform3D_sp_181(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_50(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_5(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true m - private fun iterRow_Transform3D_sp_7(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = false + private fun iterCol_Transform3D_sp_50(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_51(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 tmp10 = 0 - tmp11 = iterCol_Transform3D_sp_15(m, x, y, colX, colY, tmp10, colY) - tmp12 = 3 - iterRow_Transform3D_sp_8(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iterRow_Transform3D_sp_8(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = false - tmp10 = 1 - tmp11 = iterCol_Transform3D_sp_16(m, x, y, colX, colY, tmp10, colY) - tmp12 = 2 - iterRow_Transform3D_sp_9(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iterRow_Transform3D_sp_9(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp10, tmp11, tmp12} - scrut2 = false - tmp10 = 2 - tmp11 = iterCol_Transform3D_sp_17(m, x, y, colX, colY, tmp10, colY) - tmp12 = 1 - iterRow_Transform3D_sp_10(tmp11, x, y, rowX, colX, colY, tmp12) - private fun iter_Transform3D_sp_0(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(j)) - tmp3 = 0 + tmp2 - tmp4 = k - 1 - iter(tmp3, x, y, colX, i, j, tmp4) - else 0 - private fun iter_Transform3D_sp_1(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_224, tup_225, tup_226, tup_227, tup_228} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) - tmp3 = 0 + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_2(tmp3, x, y, colX, i, j, tmp4) - else 0 - private fun iter_Transform3D_sp_10(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + tmp11 = iter_Transform3D_sp_186(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_52(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_52(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_53(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_191(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_54(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_54(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_55(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_196(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_29(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_56(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_56(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_57(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_201(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_58(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_58(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_59(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_206(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_60(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_6(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_21(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_19(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_7(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_60(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_61(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_211(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_62(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_62(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_63(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_216(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_36(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_64(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_64(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_65(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_221(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_66(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_66(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_67(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_226(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_68(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_68(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_69(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_231(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_70(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_7(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_26(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_11(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_8(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_70(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_71(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_236(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_29(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_72(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_72(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m + private fun iterCol_Transform3D_sp_8(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_31(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_14(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_9(tmp12, x, y, colX, colY, i, tmp13) + private fun iterCol_Transform3D_sp_9(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_36(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_8(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_10(tmp12, x, y, colX, colY, i, tmp13) + private fun iterID_Transform3D_sp_0(m, w, i) = + let {scrut3, tmp17, tmp18, tmp19, tmp20} + scrut3 = ===(i, 0) + if scrut3 is + true then m + else + tmp17 = w - i + tmp18 = w - i + tmp19 = update_Transform3D_sp_2(m, tmp17, tmp18, 1) + tmp20 = i - 1 + iterID_Transform3D_sp_0(tmp19, w, tmp20) + private fun iterID_Transform3D_sp_1(m, w, i) = + let {tup_24, obj_25} + tup_24 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_25 = new Matrix(tup_24, 4, 4) + obj_25 + private fun iterID_Transform3D_sp_2(m, w, i) = + let {tup_22, obj_23} + tup_22 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_23 = new Matrix(tup_22, 4, 4) + obj_23 + private fun iterID_Transform3D_sp_3(m, w, i) = + let {tup_20, obj_21} + tup_20 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_21 = new Matrix(tup_20, 4, 4) + obj_21 + private fun iterID_Transform3D_sp_4(m, w, i) = + let {tup_18, obj_19} + tup_18 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_19 = new Matrix(tup_18, 4, 4) + obj_19 + private fun iterID_Transform3D_sp_5(m, w, i) = + let {tup_16, obj_17} + tup_16 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_17 = new Matrix(tup_16, 4, 4) + obj_17 + private fun iterRow_Transform3D_sp_0(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp14 = rowX - i + tmp15 = iterCol_Transform3D_sp_0(m, x, y, colX, colY, tmp14, colY) + tmp16 = i - 1 + iterRow(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_1(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_1(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_2(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_10(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m + private fun iterRow_Transform3D_sp_11(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_41(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_12(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_12(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_43(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_13(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_13(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_45(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_14(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_14(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_47(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_15(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_15(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m + private fun iterRow_Transform3D_sp_16(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_49(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_17(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_17(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_51(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_18(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_18(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_53(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_19(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_19(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_55(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_20(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_2(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_6(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_3(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_20(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m + private fun iterRow_Transform3D_sp_21(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_57(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_22(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_22(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_59(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_23(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_23(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_61(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_24(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_24(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_63(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_25(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_25(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m + private fun iterRow_Transform3D_sp_26(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_65(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_27(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_27(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_67(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_28(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_28(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_69(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_29(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_29(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_71(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_30(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_3(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_11(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_4(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_30(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m + private fun iterRow_Transform3D_sp_4(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_16(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_5(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_5(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m + private fun iterRow_Transform3D_sp_6(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_21(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_7(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_7(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_26(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_8(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_8(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_31(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_9(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iterRow_Transform3D_sp_9(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_36(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_10(tmp15, x, y, rowX, colX, colY, tmp16) + private fun iter_Transform3D_sp_0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = >(k, 0) if scrut is true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_10(tmp3, x, y, colX, i, j, tmp4) - else sum + tmp = *(i, x.c) + tmp1 = tmp + colX + tmp2 = tmp1 - k + tmp3 = colX - k + tmp4 = *(tmp3, y.c) + tmp5 = tmp4 + j + tmp6 = *(x.arr.(tmp2), y.arr.(tmp5)) + tmp7 = 0 + tmp6 + tmp8 = k - 1 + iter(tmp7, x, y, colX, i, j, tmp8) + else 0 + private fun iter_Transform3D_sp_1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(0), 1) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_2(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_10(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_100(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_101(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(4), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_102(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_102(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = *(x.arr.(5), y.arr.(4)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_103(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_103(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = *(x.arr.(6), y.arr.(8)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_104(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_104(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = *(x.arr.(7), y.arr.(12)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_105(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_105(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_106(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = *(x.arr.(4), y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_107(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_107(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(5), y.arr.(5)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_108(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_108(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = *(x.arr.(6), y.arr.(9)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_109(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_109(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = *(x.arr.(7), y.arr.(13)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_110(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_11(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_12(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_110(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_111(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = *(x.arr.(4), y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_112(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_112(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = *(x.arr.(5), y.arr.(6)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_113(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_113(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(6), y.arr.(10)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_114(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_114(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = *(x.arr.(7), y.arr.(14)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_115(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_115(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_116(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = *(x.arr.(4), y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_117(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_117(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = *(x.arr.(5), y.arr.(7)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_118(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_118(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = *(x.arr.(6), y.arr.(11)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_119(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_119(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(7), y.arr.(15)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_120(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_12(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_13(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_120(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_121(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(8), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_122(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_122(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = *(x.arr.(9), y.arr.(4)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_123(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_123(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = *(x.arr.(10), y.arr.(8)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_124(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_124(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = *(x.arr.(11), y.arr.(12)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_125(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_125(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_126(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = *(x.arr.(8), y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_127(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_127(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(9), y.arr.(5)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_128(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_128(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = *(x.arr.(10), y.arr.(9)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_129(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_129(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = *(x.arr.(11), y.arr.(13)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_130(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_13(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(2), 1) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_14(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_130(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_131(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = *(x.arr.(8), y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_132(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_132(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = *(x.arr.(9), y.arr.(6)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_133(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_133(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(10), y.arr.(10)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_134(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_134(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = *(x.arr.(11), y.arr.(14)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_135(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_135(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_136(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = *(x.arr.(8), y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_137(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_137(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = *(x.arr.(9), y.arr.(7)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_138(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_138(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = *(x.arr.(10), y.arr.(11)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_139(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_139(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(11), y.arr.(15)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_140(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_14(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_15(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_140(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_141(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(12), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_142(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_142(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = *(x.arr.(13), y.arr.(4)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_143(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_143(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = *(x.arr.(14), y.arr.(8)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_144(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_144(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = *(x.arr.(15), y.arr.(12)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_145(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_145(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_146(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = *(x.arr.(12), y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_147(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_147(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(13), y.arr.(5)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_148(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_148(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = *(x.arr.(14), y.arr.(9)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_149(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_149(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = *(x.arr.(15), y.arr.(13)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_150(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_15(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_150(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_151(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = *(x.arr.(12), y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_152(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_152(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = *(x.arr.(13), y.arr.(6)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_153(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_153(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(14), y.arr.(10)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_154(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_154(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = *(x.arr.(15), y.arr.(14)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_155(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_155(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_156(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = *(x.arr.(12), y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_157(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_157(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = *(x.arr.(13), y.arr.(7)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_158(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_158(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = *(x.arr.(14), y.arr.(11)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_159(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_159(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(15), y.arr.(15)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_160(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_16(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_17(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_160(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_161(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(0), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_162(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_162(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(1), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_163(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_163(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(2), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_164(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_164(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true tmp = 0 - tmp1 = 0 - tmp2 = *(0.4, y.(0).(0)) - tmp3 = 0 + tmp2 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 tmp4 = 3 - iter_Transform3D_sp_12(tmp3, x, y, colX, i, j, tmp4) - private fun iter_Transform3D_sp_12(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + tmp5 = 3 + tmp6 = *(x.arr.(3), 1) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_165(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_165(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_166(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = 0 - tmp3 = sum + 0 + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(4), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_167(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_167(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(5), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_168(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_168(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 tmp4 = 2 - iter_Transform3D_sp_13(tmp3, x, y, colX, i, j, tmp4) - private fun iter_Transform3D_sp_13(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + tmp5 = 2 + tmp6 = *(x.arr.(6), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_169(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_169(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = 0 - tmp3 = sum + 0 + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(7), 1) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_170(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_17(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_18(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_170(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_171(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(8), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_172(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_172(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 tmp4 = 1 - iter_Transform3D_sp_14(tmp3, x, y, colX, i, j, tmp4) - private fun iter_Transform3D_sp_14(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + tmp5 = 1 + tmp6 = *(x.arr.(9), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_173(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_173(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = 0 - tmp3 = sum + 0 + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(10), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_174(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_174(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(11), 1) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_175(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_175(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_176(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 tmp4 = 0 - iter_Transform3D_sp_15(tmp3, x, y, colX, i, j, tmp4) - private fun iter_Transform3D_sp_15(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + tmp5 = 0 + tmp6 = *(x.arr.(12), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_177(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_177(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(13), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_178(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_178(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(14), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_179(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_179(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(15), 1) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_180(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_18(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_19(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_180(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = false sum - private fun iter_Transform3D_sp_16(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + private fun iter_Transform3D_sp_181(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true tmp = 0 - tmp1 = 0 + tmp1 = 4 tmp2 = 0 tmp3 = 0 - tmp4 = 3 - iter_Transform3D_sp_17(tmp3, x, y, colX, i, j, tmp4) - private fun iter_Transform3D_sp_17(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(0), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_182(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_182(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(1), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_183(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_183(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = *(0.19, y.(1).(0)) - tmp3 = 0 + tmp2 + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 tmp4 = 2 - iter_Transform3D_sp_18(tmp3, x, y, colX, i, j, tmp4) - private fun iter_Transform3D_sp_18(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + tmp5 = 2 + tmp6 = *(x.arr.(2), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_184(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_184(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = 0 - tmp3 = sum + 0 + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(3), y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_185(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_185(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_186(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(4), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_187(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_187(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 tmp4 = 1 - iter_Transform3D_sp_19(tmp3, x, y, colX, i, j, tmp4) + tmp5 = 1 + tmp6 = *(x.arr.(5), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_188(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_188(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(6), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_189(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_189(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(7), y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_190(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_19(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = 0 - tmp3 = sum + 0 + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(3), 1) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_20(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_190(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_191(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(8), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_192(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_192(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(9), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_193(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_193(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(10), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_194(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_194(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(11), y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_195(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_195(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_196(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 tmp4 = 0 - iter_Transform3D_sp_20(tmp3, x, y, colX, i, j, tmp4) + tmp5 = 0 + tmp6 = *(x.arr.(12), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_197(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_197(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(13), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_198(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_198(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(14), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_199(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_199(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(15), y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_200(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_2(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_229, tup_230, tup_231, tup_232, tup_233} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_2(tmp3, x, y, colX, i, j, tmp4) - else sum + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_3(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_20(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = false sum - private fun iter_Transform3D_sp_21(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + private fun iter_Transform3D_sp_200(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_201(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true tmp = 0 - tmp1 = 0 + tmp1 = 4 tmp2 = 0 tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(0.4, y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_202(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_202(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_203(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_203(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_204(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_204(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_205(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_205(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_206(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_207(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_207(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(0.19, y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_208(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_208(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_209(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_209(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 tmp4 = 3 - iter_Transform3D_sp_22(tmp3, x, y, colX, i, j, tmp4) + tmp5 = 3 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_210(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_21(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(4), 1) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_22(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_210(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_211(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_212(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_212(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_213(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_213(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(0.19, y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_214(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_214(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_215(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_215(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_216(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_217(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_218(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_219(sum, x, y, colX, i, j, k) = 1 private fun iter_Transform3D_sp_22(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_23(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_220(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_221(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(1, y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_222(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_222(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_223(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_223(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_224(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_224(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(11, y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_225(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_225(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_226(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_227(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_227(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(1, y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_228(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_228(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_229(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_229(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(4, y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_230(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_23(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_24(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_230(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_231(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_232(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_232(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_233(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_233(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(1, y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_234(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_234(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(51, y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_235(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_235(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_236(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_237(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_237(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_238(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_238(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = 0 - tmp3 = 0 + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 tmp4 = 2 - iter_Transform3D_sp_23(tmp3, x, y, colX, i, j, tmp4) - private fun iter_Transform3D_sp_23(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_239(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_239(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = *(0.19, y.(2).(0)) - tmp3 = 0 + tmp2 - tmp4 = 1 - iter_Transform3D_sp_24(tmp3, x, y, colX, i, j, tmp4) + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(1, y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_240(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_24(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = 0 - tmp3 = sum + 0 - tmp4 = 0 - iter_Transform3D_sp_25(tmp3, x, y, colX, i, j, tmp4) + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_25(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_240(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum private fun iter_Transform3D_sp_25(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = false sum - private fun iter_Transform3D_sp_26(sum, x, y, colX, i, j, k) = 1 - private fun iter_Transform3D_sp_27(sum, x, y, colX, i, j, k) = 1 - private fun iter_Transform3D_sp_28(sum, x, y, colX, i, j, k) = 1 - private fun iter_Transform3D_sp_29(sum, x, y, colX, i, j, k) = 1 + private fun iter_Transform3D_sp_26(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_27(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_27(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(5), 1) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_28(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_28(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_29(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_29(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_30(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_3(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_234, tup_235, tup_236, tup_237, tup_238} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) - tmp3 = 0 + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_4(tmp3, x, y, colX, i, j, tmp4) - else 0 - private fun iter_Transform3D_sp_30(sum, x, y, colX, i, j, k) = 1 - private fun iter_Transform3D_sp_31(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true tmp = 0 - tmp1 = 0 - tmp2 = *(1, y.(0).(j)) - tmp3 = 0 + tmp2 - tmp4 = 3 - iter_Transform3D_sp_32(tmp3, x, y, colX, i, j, tmp4) + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_4(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_30(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_31(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_32(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_32(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = 0 - tmp3 = sum + 0 - tmp4 = 2 - iter_Transform3D_sp_33(tmp3, x, y, colX, i, j, tmp4) + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_33(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_33(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = 0 - tmp3 = sum + 0 - tmp4 = 1 - iter_Transform3D_sp_34(tmp3, x, y, colX, i, j, tmp4) + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(6), 1) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_34(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_34(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = *(11, y.(3).(j)) - tmp3 = sum + tmp2 - tmp4 = 0 - iter_Transform3D_sp_35(tmp3, x, y, colX, i, j, tmp4) + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_35(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_35(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = false sum private fun iter_Transform3D_sp_36(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 0 - tmp1 = 0 - tmp2 = 0 + tmp = 4 + tmp1 = 8 + tmp2 = 4 tmp3 = 0 - tmp4 = 3 - iter_Transform3D_sp_37(tmp3, x, y, colX, i, j, tmp4) + tmp4 = 0 + tmp5 = 3 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_37(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_37(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = *(1, y.(1).(j)) - tmp3 = 0 + tmp2 - tmp4 = 2 - iter_Transform3D_sp_38(tmp3, x, y, colX, i, j, tmp4) + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_38(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_38(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = 0 - tmp3 = sum + 0 - tmp4 = 1 - iter_Transform3D_sp_39(tmp3, x, y, colX, i, j, tmp4) + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_39(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_39(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = *(4, y.(3).(j)) - tmp3 = sum + tmp2 - tmp4 = 0 - iter_Transform3D_sp_40(tmp3, x, y, colX, i, j, tmp4) + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(7), 1) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_40(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_4(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_239, tup_240, tup_241, tup_242, tup_243} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(1)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_4(tmp3, x, y, colX, i, j, tmp4) - else sum + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_5(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_40(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = false sum private fun iter_Transform3D_sp_41(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 0 - tmp1 = 0 - tmp2 = 0 + tmp = 8 + tmp1 = 12 + tmp2 = 8 tmp3 = 0 - tmp4 = 3 - iter_Transform3D_sp_42(tmp3, x, y, colX, i, j, tmp4) + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(8), 1) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_42(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_42(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = 0 - tmp3 = 0 - tmp4 = 2 - iter_Transform3D_sp_43(tmp3, x, y, colX, i, j, tmp4) + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_43(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_43(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = *(1, y.(2).(j)) - tmp3 = 0 + tmp2 - tmp4 = 1 - iter_Transform3D_sp_44(tmp3, x, y, colX, i, j, tmp4) + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_44(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_44(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = *(51, y.(3).(j)) - tmp3 = sum + tmp2 - tmp4 = 0 - iter_Transform3D_sp_45(tmp3, x, y, colX, i, j, tmp4) + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_45(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_45(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = false sum private fun iter_Transform3D_sp_46(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 0 - tmp1 = 0 - tmp2 = 0 + tmp = 8 + tmp1 = 12 + tmp2 = 8 tmp3 = 0 - tmp4 = 3 - iter_Transform3D_sp_47(tmp3, x, y, colX, i, j, tmp4) + tmp4 = 0 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_47(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_47(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 1 - tmp1 = 1 - tmp2 = 0 - tmp3 = 0 - tmp4 = 2 - iter_Transform3D_sp_48(tmp3, x, y, colX, i, j, tmp4) + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(9), 1) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_48(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_48(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 2 - tmp1 = 2 - tmp2 = 0 - tmp3 = 0 - tmp4 = 1 - iter_Transform3D_sp_49(tmp3, x, y, colX, i, j, tmp4) + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_49(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_49(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = true - tmp = 3 - tmp1 = 3 - tmp2 = *(1, y.(3).(j)) - tmp3 = 0 + tmp2 - tmp4 = 0 - iter_Transform3D_sp_50(tmp3, x, y, colX, i, j, tmp4) + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_50(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_5(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_244, tup_245, tup_246, tup_247, tup_248} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) - tmp3 = 0 + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_6(tmp3, x, y, colX, i, j, tmp4) - else 0 + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum private fun iter_Transform3D_sp_50(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_51(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_52(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_52(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_53(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_53(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(10), 1) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_54(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_54(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_55(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_55(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} scrut = false sum + private fun iter_Transform3D_sp_56(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_57(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_57(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_58(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_58(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_59(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_59(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(11), 1) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_60(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_6(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_249, tup_250, tup_251, tup_252, tup_253} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(2)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_6(tmp3, x, y, colX, i, j, tmp4) - else sum + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_7(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_60(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_61(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(12), 1) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_62(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_62(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_63(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_63(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_64(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_64(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_65(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_65(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_66(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_67(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_67(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(13), 1) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_68(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_68(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_69(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_69(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_70(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_7(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_254, tup_255, tup_256, tup_257, tup_258} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(3)) - tmp3 = 0 + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_8(tmp3, x, y, colX, i, j, tmp4) - else 0 + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(1), 1) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_8(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_70(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_71(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_72(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_72(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_73(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_73(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(14), 1) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_74(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_74(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_75(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_75(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_76(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_77(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_77(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_78(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_78(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_79(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_79(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(15), 1) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_80(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_8(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tup_259, tup_260, tup_261, tup_262, tup_263} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(3)) - tmp3 = sum + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_8(tmp3, x, y, colX, i, j, tmp4) - else sum + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_9(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_80(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_81(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(0), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_82(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_82(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = *(x.arr.(1), y.arr.(4)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_83(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_83(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = *(x.arr.(2), y.arr.(8)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_84(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_84(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = *(x.arr.(3), y.arr.(12)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_85(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_85(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_86(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = *(x.arr.(0), y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_87(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_87(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(1), y.arr.(5)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_88(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_88(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = *(x.arr.(2), y.arr.(9)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_89(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_89(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = *(x.arr.(3), y.arr.(13)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_90(tmp7, x, y, colX, i, j, tmp8) private fun iter_Transform3D_sp_9(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4} - scrut = >(k, 0) - if scrut is - true then - tmp = colX - k - tmp1 = colX - k - tmp2 = *(x.(i).(tmp), y.(tmp1).(0)) - tmp3 = 0 + tmp2 - tmp4 = k - 1 - iter_Transform3D_sp_10(tmp3, x, y, colX, i, j, tmp4) - else 0 + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_10(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_90(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_91(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = *(x.arr.(0), y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_92(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_92(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = *(x.arr.(1), y.arr.(6)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_93(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_93(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(2), y.arr.(10)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_94(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_94(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = *(x.arr.(3), y.arr.(14)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_95(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_95(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum + private fun iter_Transform3D_sp_96(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = *(x.arr.(0), y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_97(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_97(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = *(x.arr.(1), y.arr.(7)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_98(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_98(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = *(x.arr.(2), y.arr.(11)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_99(tmp7, x, y, colX, i, j, tmp8) + private fun iter_Transform3D_sp_99(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(3), y.arr.(15)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_100(tmp7, x, y, colX, i, j, tmp8) private fun model_Transform3D_sp_0(local, position, scaling, rotation) = - let {rot, res1, tmp43, tmp44, tmp45, tmp46, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tup_282, tup_283, tup_284, tup_285, tup_286, tup_342, tup_343, tup_344, tup_345, tup_346, tup_402, tup_403, tup_404, tup_405, tup_406} - tmp43 = rotateZ_Transform3D_sp_0(rotation.2) - tmp44 = rotateY_Transform3D_sp_0(rotation.1) - tmp45 = rotateX_Transform3D_sp_0(rotation.0) - tup_282 = [1, 0, 0, 0] - tup_283 = [0, 1, 0, 0] - tup_284 = [0, 0, 1, 0] - tup_285 = [0, 0, 0, 1] - tup_286 = [tup_282, tup_283, tup_284, tup_285] - tmp46 = tup_286 - tmp47 = multiply_Transform3D_sp_0(tmp45, tmp46) - tmp48 = multiply(tmp44, tmp47) - rot = multiply(tmp43, tmp48) - tup_342 = [1, 0, 0, 11] - tup_343 = [0, 1, 0, 4] - tup_344 = [0, 0, 1, 51] - tup_345 = [0, 0, 0, 1] - tup_346 = [tup_342, tup_343, tup_344, tup_345] - tmp49 = tup_346 - tup_402 = [0.4, 0, 0, 0] - tup_403 = [0, 0.19, 0, 0] - tup_404 = [0, 0, 0.19, 0] - tup_405 = [0, 0, 0, 1] - tup_406 = [tup_402, tup_403, tup_404, tup_405] - tmp50 = tup_406 - tmp51 = [local.0] - tmp52 = [local.1] - tmp53 = [local.2] - tmp54 = [1] - tmp55 = [tmp51, tmp52, tmp53, tmp54] - tmp56 = multiply_Transform3D_sp_2(tmp50, tmp55) - tmp57 = multiply(rot, tmp56) - res1 = multiply_Transform3D_sp_3(tmp49, tmp57) - [res1.0, res1.1, res1.2] + let {rot, res1, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58} + tmp47 = rotateZ_Transform3D_sp_0(rotation.2) + tmp48 = rotateY_Transform3D_sp_0(rotation.1) + tmp49 = rotateX_Transform3D_sp_0(rotation.0) + tmp50 = ident_Transform3D_sp_0(4) + tmp51 = multiply_Transform3D_sp_0(tmp49, tmp50) + tmp52 = multiply_Transform3D_sp_1(tmp48, tmp51) + rot = multiply_Transform3D_sp_1(tmp47, tmp52) + tmp53 = transform_Transform3D_sp_0(position.0, position.1, position.2) + tmp54 = scale_Transform3D_sp_0(scaling.0, scaling.1, scaling.2) + tmp55 = [local.0, local.1, local.2, 1] + tmp56 = new Matrix(tmp55, 4, 1) + tmp57 = multiply_Transform3D_sp_4(tmp54, tmp56) + tmp58 = multiply_Transform3D_sp_3(rot, tmp57) + res1 = multiply_Transform3D_sp_5(tmp53, tmp58) + [res1.arr.0, res1.arr.1, res1.arr.2] private fun multiply_Transform3D_sp_0(x, y) = - let {rowX1, colX3, rowY, colY2, res} - rowX1 = x.length - colX3 = x.0.length - rowY = 4 - colY2 = 4 - res = zeros_Transform3D_sp_1(rowX1, colY2) - iterRow_Transform3D_sp_0(res, x, y, rowX1, colX3, colY2, rowX1) + let {res} + res = zeros_Transform3D_sp_0(x.r, y.c) + iterRow_Transform3D_sp_1(res, x, y, x.r, x.c, y.c, x.r) private fun multiply_Transform3D_sp_1(x, y) = - let {rowX1, colX3, rowY, colY2, res} - rowX1 = x.length - colX3 = x.0.length - rowY = 4 - colY2 = 1 - res = zeros_Transform3D_sp_2(rowX1, colY2) - iterRow_Transform3D_sp_1(res, x, y, rowX1, colX3, colY2, rowX1) + let {res} + res = zeros_Transform3D_sp_0(x.r, y.c) + iterRow_Transform3D_sp_6(res, x, y, x.r, x.c, y.c, x.r) private fun multiply_Transform3D_sp_2(x, y) = - let {rowX1, colX3, rowY, colY2, res, tup_496, tup_497, tup_498, tup_499, tup_500} - rowX1 = 4 - colX3 = 4 - rowY = 4 - colY2 = 1 - tup_496 = [0] - tup_497 = [0] - tup_498 = [0] - tup_499 = [0] - tup_500 = [tup_496, tup_497, tup_498, tup_499] - res = tup_500 - iterRow_Transform3D_sp_2(res, x, y, rowX1, colX3, colY2, rowX1) + let {res} + res = zeros_Transform3D_sp_1(x.r, y.c) + iterRow_Transform3D_sp_11(res, x, y, x.r, x.c, y.c, x.r) private fun multiply_Transform3D_sp_3(x, y) = - let {rowX1, colX3, rowY, colY2, res} - rowX1 = 4 - colX3 = 4 - rowY = y.length - colY2 = y.0.length - res = zeros_Transform3D_sp_4(rowX1, colY2) - iterRow_Transform3D_sp_7(res, x, y, rowX1, colX3, colY2, rowX1) + let {res} + res = zeros_Transform3D_sp_1(x.r, y.c) + iterRow_Transform3D_sp_16(res, x, y, x.r, x.c, y.c, x.r) + private fun multiply_Transform3D_sp_4(x, y) = + let {res} + res = zeros_Transform3D_sp_1(x.r, y.c) + iterRow_Transform3D_sp_21(res, x, y, x.r, x.c, y.c, x.r) + private fun multiply_Transform3D_sp_5(x, y) = + let {res} + res = zeros_Transform3D_sp_1(x.r, y.c) + iterRow_Transform3D_sp_26(res, x, y, x.r, x.c, y.c, x.r) private fun rotateX_Transform3D_sp_0(angle) = - let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_277, tup_278, tup_279, tup_280, tup_281} + let {s, c2, tmp32, tmp33, tmp34, tmp35, tmp36} s = globalThis.Math.sin(2.51327412) c2 = globalThis.Math.cos(2.51327412) - tup_277 = [1, 0, 0, 0] - tup_278 = [0, 1, 0, 0] - tup_279 = [0, 0, 1, 0] - tup_280 = [0, 0, 0, 1] - tup_281 = [tup_277, tup_278, tup_279, tup_280] - tmp28 = tup_281 - tmp29 = update_Transform3D_sp_6(tmp28, 1, 1, c2) - tmp30 = -(s) - tmp31 = update_Transform3D_sp_7(tmp29, 1, 2, tmp30) - tmp32 = update_Transform3D_sp_8(tmp31, 2, 1, s) - update_Transform3D_sp_5(tmp32, 2, 2, c2) + tmp32 = ident_Transform3D_sp_0(4) + tmp33 = update_Transform3D_sp_13(tmp32, 1, 1, c2) + tmp34 = -(s) + tmp35 = update_Transform3D_sp_14(tmp33, 1, 2, tmp34) + tmp36 = update_Transform3D_sp_15(tmp35, 2, 1, s) + update_Transform3D_sp_12(tmp36, 2, 2, c2) private fun rotateY_Transform3D_sp_0(angle) = - let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_272, tup_273, tup_274, tup_275, tup_276} + let {s1, c3, tmp37, tmp38, tmp39, tmp40, tmp41} s1 = globalThis.Math.sin(3.1415926535) c3 = globalThis.Math.cos(3.1415926535) - tup_272 = [1, 0, 0, 0] - tup_273 = [0, 1, 0, 0] - tup_274 = [0, 0, 1, 0] - tup_275 = [0, 0, 0, 1] - tup_276 = [tup_272, tup_273, tup_274, tup_275] - tmp33 = tup_276 - tmp34 = update_Transform3D_sp_3(tmp33, 0, 0, c3) - tmp35 = update_Transform3D_sp_9(tmp34, 0, 2, s1) - tmp36 = -(s1) - tmp37 = update_Transform3D_sp_10(tmp35, 2, 0, tmp36) - update_Transform3D_sp_5(tmp37, 2, 2, c3) + tmp37 = ident_Transform3D_sp_0(4) + tmp38 = update_Transform3D_sp_10(tmp37, 0, 0, c3) + tmp39 = update_Transform3D_sp_16(tmp38, 0, 2, s1) + tmp40 = -(s1) + tmp41 = update_Transform3D_sp_17(tmp39, 2, 0, tmp40) + update_Transform3D_sp_12(tmp41, 2, 2, c3) private fun rotateZ_Transform3D_sp_0(angle) = - let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_267, tup_268, tup_269, tup_270, tup_271} + let {s2, c4, tmp42, tmp43, tmp44, tmp45, tmp46} s2 = globalThis.Math.sin(0) c4 = globalThis.Math.cos(0) - tup_267 = [1, 0, 0, 0] - tup_268 = [0, 1, 0, 0] - tup_269 = [0, 0, 1, 0] - tup_270 = [0, 0, 0, 1] - tup_271 = [tup_267, tup_268, tup_269, tup_270] - tmp38 = tup_271 - tmp39 = update_Transform3D_sp_3(tmp38, 0, 0, c4) - tmp40 = -(s2) - tmp41 = update_Transform3D_sp_11(tmp39, 0, 1, tmp40) - tmp42 = update_Transform3D_sp_12(tmp41, 1, 0, s2) - update_Transform3D_sp_4(tmp42, 1, 1, c4) + tmp42 = ident_Transform3D_sp_0(4) + tmp43 = update_Transform3D_sp_10(tmp42, 0, 0, c4) + tmp44 = -(s2) + tmp45 = update_Transform3D_sp_18(tmp43, 0, 1, tmp44) + tmp46 = update_Transform3D_sp_19(tmp45, 1, 0, s2) + update_Transform3D_sp_11(tmp46, 1, 1, c4) private fun scale_Transform3D_sp_0(sx, sy, sz) = - let {tup_397, tup_398, tup_399, tup_400, tup_401} - tup_397 = [0.4, 0, 0, 0] - tup_398 = [0, 0.19, 0, 0] - tup_399 = [0, 0, 0.19, 0] - tup_400 = [0, 0, 0, 1] - tup_401 = [tup_397, tup_398, tup_399, tup_400] - tup_401 + let {tup_51, obj_52} + tup_51 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] + obj_52 = new Matrix(tup_51, 4, 4) + obj_52 private fun transform_Transform3D_sp_0(dx, dy, dz) = - let {tup_337, tup_338, tup_339, tup_340, tup_341} - tup_337 = [1, 0, 0, 11] - tup_338 = [0, 1, 0, 4] - tup_339 = [0, 0, 1, 51] - tup_340 = [0, 0, 0, 1] - tup_341 = [tup_337, tup_338, tup_339, tup_340] - tup_341 + let {tup_40, obj_41} + tup_40 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] + obj_41 = new Matrix(tup_40, 4, 4) + obj_41 private fun update_Transform3D_sp_0(m, i, j, v) = - let {tup_181, tup_182, tup_183, tup_184, tup_185} - tup_181 = [1, 0, 0, 0] - tup_182 = [0, 1, 0, 0] - tup_183 = [0, 0, 1, 0] - tup_184 = [0, 0, 0, 1] - tup_185 = [tup_181, tup_182, tup_183, tup_184] - Transform3D__Legacy."Mx$Transform3D".set2D(tup_185, 0, 3, v) - private fun update_Transform3D_sp_1(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 3, v) - private fun update_Transform3D_sp_10(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 0, v) - private fun update_Transform3D_sp_11(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 0, 1, v) - private fun update_Transform3D_sp_12(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 0, v) + let {tmp23, tmp24, tmp25} + tmp23 = *(i, m.c) + tmp24 = tmp23 + j + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_1(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = *(i, m.c) + tmp24 = tmp23 + j + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, 1) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_10(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 0 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 0, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_11(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 5 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 5, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_12(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 8 + tmp24 = 10 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 10, v) + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_13(m, i, j, v) = - let {tup_297, tup_298, tup_299, tup_300, tup_301} - tup_297 = [1, 0, 0, 11] - tup_298 = [0, 1, 0, 0] - tup_299 = [0, 0, 1, 0] - tup_300 = [0, 0, 0, 1] - tup_301 = [tup_297, tup_298, tup_299, tup_300] - tup_301 + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 5 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 5, v) + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_14(m, i, j, v) = - let {tup_312, tup_313, tup_314, tup_315, tup_316} - tup_312 = [1, 0, 0, 11] - tup_313 = [0, 1, 0, 4] - tup_314 = [0, 0, 1, 0] - tup_315 = [0, 0, 0, 1] - tup_316 = [tup_312, tup_313, tup_314, tup_315] - tup_316 + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 6 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 6, v) + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_15(m, i, j, v) = - let {tup_327, tup_328, tup_329, tup_330, tup_331} - tup_327 = [1, 0, 0, 11] - tup_328 = [0, 1, 0, 4] - tup_329 = [0, 0, 1, 51] - tup_330 = [0, 0, 0, 1] - tup_331 = [tup_327, tup_328, tup_329, tup_330] - tup_331 + let {tmp23, tmp24, tmp25} + tmp23 = 8 + tmp24 = 9 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 9, v) + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_16(m, i, j, v) = - let {tup_357, tup_358, tup_359, tup_360, tup_361} - tup_357 = [0.4, 0, 0, 0] - tup_358 = [0, 1, 0, 0] - tup_359 = [0, 0, 1, 0] - tup_360 = [0, 0, 0, 1] - tup_361 = [tup_357, tup_358, tup_359, tup_360] - tup_361 + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 2 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 2, v) + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_17(m, i, j, v) = - let {tup_372, tup_373, tup_374, tup_375, tup_376} - tup_372 = [0.4, 0, 0, 0] - tup_373 = [0, 0.19, 0, 0] - tup_374 = [0, 0, 1, 0] - tup_375 = [0, 0, 0, 1] - tup_376 = [tup_372, tup_373, tup_374, tup_375] - tup_376 + let {tmp23, tmp24, tmp25} + tmp23 = 8 + tmp24 = 8 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 8, v) + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_18(m, i, j, v) = - let {tup_387, tup_388, tup_389, tup_390, tup_391} - tup_387 = [0.4, 0, 0, 0] - tup_388 = [0, 0.19, 0, 0] - tup_389 = [0, 0, 0.19, 0] - tup_390 = [0, 0, 0, 1] - tup_391 = [tup_387, tup_388, tup_389, tup_390] - tup_391 - private fun update_Transform3D_sp_2(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 3, v) + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 1 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 1, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_19(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 4 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 4, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_2(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = *(i, m.c) + tmp24 = tmp23 + j + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, 1) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_20(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 0 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 0, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_21(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 3 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_22(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 12 + tmp24 = 12 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 12, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_23(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 12 + tmp24 = 13 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 13, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_24(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 12 + tmp24 = 14 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 14, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_25(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 12 + tmp24 = 15 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 15, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_26(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 0 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 0, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_27(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 1 + tmp24 = 1 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 1, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_28(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 2 + tmp24 = 2 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 2, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_29(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 3 + tmp24 = 3 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_3(m, i, j, v) = - let {tup_191, tup_192, tup_193, tup_194, tup_195} - tup_191 = [1, 0, 0, 0] - tup_192 = [0, 1, 0, 0] - tup_193 = [0, 0, 1, 0] - tup_194 = [0, 0, 0, 1] - tup_195 = [tup_191, tup_192, tup_193, tup_194] - Transform3D__Legacy."Mx$Transform3D".set2D(tup_195, 0, 0, v) - private fun update_Transform3D_sp_4(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 1, v) - private fun update_Transform3D_sp_5(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 2, v) + let {tup_5, obj_6} + tup_5 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + obj_6 = new Matrix(tup_5, 4, 4) + obj_6 + private fun update_Transform3D_sp_30(m, i, j, v) = + let {tup_32, obj_33} + tup_32 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_33 = new Matrix(tup_32, 4, 4) + obj_33 + private fun update_Transform3D_sp_31(m, i, j, v) = + let {tup_35, obj_36} + tup_35 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] + obj_36 = new Matrix(tup_35, 4, 4) + obj_36 + private fun update_Transform3D_sp_32(m, i, j, v) = + let {tup_38, obj_39} + tup_38 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] + obj_39 = new Matrix(tup_38, 4, 4) + obj_39 + private fun update_Transform3D_sp_33(m, i, j, v) = + let {tup_43, obj_44} + tup_43 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_44 = new Matrix(tup_43, 4, 4) + obj_44 + private fun update_Transform3D_sp_34(m, i, j, v) = + let {tup_46, obj_47} + tup_46 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_47 = new Matrix(tup_46, 4, 4) + obj_47 + private fun update_Transform3D_sp_35(m, i, j, v) = + let {tup_49, obj_50} + tup_49 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] + obj_50 = new Matrix(tup_49, 4, 4) + obj_50 + private fun update_Transform3D_sp_36(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 3 + tmp24 = 3 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, 1) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_4(m, i, j, v) = + let {tup_8, obj_9} + tup_8 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + obj_9 = new Matrix(tup_8, 4, 4) + obj_9 + private fun update_Transform3D_sp_5(m, i, j, v) = + let {tup_11, obj_12} + tup_11 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] + obj_12 = new Matrix(tup_11, 4, 4) + obj_12 private fun update_Transform3D_sp_6(m, i, j, v) = - let {tup_201, tup_202, tup_203, tup_204, tup_205} - tup_201 = [1, 0, 0, 0] - tup_202 = [0, 1, 0, 0] - tup_203 = [0, 0, 1, 0] - tup_204 = [0, 0, 0, 1] - tup_205 = [tup_201, tup_202, tup_203, tup_204] - Transform3D__Legacy."Mx$Transform3D".set2D(tup_205, 1, 1, v) - private fun update_Transform3D_sp_7(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 1, 2, v) - private fun update_Transform3D_sp_8(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 2, 1, v) - private fun update_Transform3D_sp_9(m, i, j, v) = Transform3D__Legacy."Mx$Transform3D".set2D(m, 0, 2, v) + let {tup_14, obj_15} + tup_14 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_15 = new Matrix(tup_14, 4, 4) + obj_15 + private fun update_Transform3D_sp_7(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 3 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_8(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 7 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 7, v) + new Matrix(tmp25, m.r, m.c) + private fun update_Transform3D_sp_9(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 8 + tmp24 = 11 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 11, v) + new Matrix(tmp25, m.r, m.c) private fun zeros_Transform3D_sp_0(r, c) = - let {tup_86, tup_87, tup_88, tup_89, tup_90} - tup_86 = [0, 0, 0, 0] - tup_87 = [0, 0, 0, 0] - tup_88 = [0, 0, 0, 0] - tup_89 = [0, 0, 0, 0] - tup_90 = [tup_86, tup_87, tup_88, tup_89] - tup_90 + let {tup_2, obj_3} + tup_2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + obj_3 = new Matrix(tup_2, 4, 4) + obj_3 private fun zeros_Transform3D_sp_1(r, c) = - let {m4, tmp21, tup_221} - tmp21 = [] - tup_221 = [] - m4 = Transform3D__Legacy."Mx$Transform3D".init(r, tup_221) - iterInit_Transform3D_sp_5(m4, r, c, r) - private fun zeros_Transform3D_sp_2(r, c) = - let {m4, tmp21, tup_264} - tmp21 = [] - tup_264 = [] - m4 = Transform3D__Legacy."Mx$Transform3D".init(r, tup_264) - iterInit_Transform3D_sp_6(m4, r, c, r) - private fun zeros_Transform3D_sp_3(r, c) = - let {tup_491, tup_492, tup_493, tup_494, tup_495} - tup_491 = [0] - tup_492 = [0] - tup_493 = [0] - tup_494 = [0] - tup_495 = [tup_491, tup_492, tup_493, tup_494] - tup_495 - private fun zeros_Transform3D_sp_4(r, c) = - let {m4, tmp21, tup_506, tup_507, tup_508, tup_509, tup_510} - tmp21 = [] - tup_506 = [] - tup_507 = [] - tup_508 = [] - tup_509 = [] - tup_510 = [tup_506, tup_507, tup_508, tup_509] - m4 = tup_510 - iterInit_Transform3D_sp_12(m4, r, c, r) \ No newline at end of file + let {tup_29, obj_30} + tup_29 = [0, 0, 0, 0] + obj_30 = new Matrix(tup_29, 4, 1) + obj_30 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 62b9a69a15..e8d0113dfc 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -217,28 +217,23 @@ print(Dispatching."cache$Dispatching") //│ > fun test(b) = //│ > let {y1, m, tmp1, tmp2, tmp3} //│ > tmp1 = new L1.class(1) -//│ > y1 = 11 +//│ > y1 = twice_Dispatching_sp_0(tmp1, 5) //│ > tmp2 = new L2.class(2) //│ > tmp3 = new L3.class(3) //│ > m = pick_Dispatching_sp_2(tmp2, tmp3, b) //│ > twice_Dispatching_sp_3(m, 5) //│ > private fun pick_Dispatching_sp_0(x, y, b) = +//│ > let {obj_1} +//│ > obj_1 = new L2.class(2) +//│ > obj_1 +//│ > private fun pick_Dispatching_sp_1(x, y, b) = //│ > let {obj_2} -//│ > obj_2 = new L2.class(2) +//│ > obj_2 = new L3.class(3) //│ > obj_2 -//│ > private fun pick_Dispatching_sp_1(x, y, b) = -//│ > let {obj_5} -//│ > obj_5 = new L3.class(3) -//│ > obj_5 //│ > private fun pick_Dispatching_sp_2(x, y, b) = -//│ > let {obj_7, obj_8} //│ > if b is -//│ > true then -//│ > obj_7 = new L2.class(2) -//│ > obj_7 -//│ > else -//│ > obj_8 = new L3.class(3) -//│ > obj_8 +//│ > true then x +//│ > else y //│ > private fun test_Dispatching_sp_0(b) = 9 //│ > private fun test_Dispatching_sp_1(b) = 29 //│ > private fun twice_Dispatching_sp_0(f, x) = 11 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls new file mode 100644 index 0000000000..519f377419 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls @@ -0,0 +1,514 @@ +:js +:staging +:noModuleCheck + +import "../../mlscript-compile/staging/StagedRegExp.mls" + + +StagedRegExp."generate"("../StagedRegExp.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] RangeError: Maximum call stack size exceeded +//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:549:56) +//│ at SpecializeHelpers.sor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2433:30) +//│ at lambda (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2338:34) +//│ at Array.map () +//│ at SpecializeHelpers.sorBuiltinOp (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2340:42) +//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:782:40) +//│ at SpecializeHelpers.sor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2433:30) +//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1259:52) +//│ at SpecializeHelpers.prop (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2657:30) +//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1047:46) + + +import "../../mlscript-compile/staging/out/StagedRegExp.mls" +//│ FAILURE: Unexpected exception +//│ /!!!\ Uncaught error: java.nio.file.NoSuchFileException: /home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls +//│ at: java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) +//│ at: java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106) +//│ at: java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) +//│ at: java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55) +//│ at: java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:171) +//│ at: java.base/sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99) +//│ at: java.base/java.nio.file.Files.readAttributes(Files.java:1854) +//│ at: java.base/java.nio.file.Files.getLastModifiedTime(Files.java:2397) +//│ at: os.mtime$.apply(StatOps.scala:61) +//│ at: hkmc2.io.JavaFileSystem.getLastChangedTimestamp(PlatformFileSystem.scala:13) + +open StagedRegExp + +match(Exact("x"), "x") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL23:1:109 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + +match(Exact("x"), "x") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL26:1:111 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Exact("x"), "") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL29:1:111 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Exact("x"), "xyz") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL32:1:111 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + +match(Any(), "x") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL35:1:106 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Any(), "") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL38:1:106 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Any(), "xyz") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL41:1:107 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Not(["x", "y", "z"]), "xyz") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL44:1:175 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Not(["x", "y", "z"]), "w") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL47:1:177 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "z") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL50:1:368 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "y") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL53:1:368 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + +match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "w") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL56:1:368 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(question(Exact("x")), "x") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.question is not a function +//│ at REPL59:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + +match(question(Exact("x")), "y") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.question is not a function +//│ at REPL62:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + +match(question(Exact("x")), "xx") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.question is not a function +//│ at REPL65:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(question(Any()), "y") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.question is not a function +//│ at REPL68:1:110 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Concat(Star(Exact("x")), Exact("y")), "x") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL71:1:302 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Concat(Star(Exact("x")), Exact("y")), "y") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL74:1:302 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Concat(Star(Exact("x")), Exact("y")), "xxxxxy") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL77:1:302 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(Concat(Star(Exact("x")), Exact("y")), "xyyyy") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function +//│ at REPL80:1:302 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(plus(Exact("x")), "") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function +//│ at REPL83:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + +match(plus(Exact("x")), "x") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function +//│ at REPL86:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(plus(Exact("x")), "y") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function +//│ at REPL89:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(plus(Exact("x")), "xxx") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function +//│ at REPL92:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(plus(Exact("x")), "xxxy") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function +//│ at REPL95:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +// x{3}, equivalent to xxx +match(nTimes(Exact("x"), 3), "xxx") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.nTimes is not a function +//│ at REPL98:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(nTimes(Exact("x"), 3), "xxy") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.nTimes is not a function +//│ at REPL101:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +match(nTimes(Exact("x"), 3), "xx") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.nTimes is not a function +//│ at REPL104:1:115 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +:silent +let p = Concat(In(["T", "t"]), Concat(Star(words()), notWord())) +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.words is not a function +//│ at REPL107:1:197 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + + +matchAll(p, "To be or not to be, that is the question.") +//│ FAILURE: Unexpected runtime error +//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) +//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.matchAll is not a function +//│ at REPL109:1:52 +//│ at ContextifyScript.runInThisContext (node:vm:137:12) +//│ at defaultEval (node:repl:610:24) +//│ at REPLEvalInContext (node:repl:693:9) +//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) +//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) +//│ at REPLServer.onLine (node:repl:830:12) +//│ at REPLServer.emit (node:events:509:20) +//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) +//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) + diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls index 81c44cd747..6d8ed0de99 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Transform3DTest.mls @@ -5,63 +5,111 @@ import "../../mlscript-compile/NaiveTransform3D.mls" -let x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] -let y = [[9, 8, 7], [6, 5, 4], [3, 2, 1]] -//│ x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] -//│ y = [[9, 8, 7], [6, 5, 4], [3, 2, 1]] +let x = new NaiveTransform3D.Matrix([1, 2, 3, 4, 5, 6, 7, 8, 9], 3, 3) +let y = new NaiveTransform3D.Matrix([9, 8, 7, 6, 5, 4, 3, 2, 1], 3, 3) +//│ x = Matrix([1, 2, 3, 4, 5, 6, 7, 8, 9], 3, 3) +//│ y = Matrix([9, 8, 7, 6, 5, 4, 3, 2, 1], 3, 3) NaiveTransform3D.multiply of x, y -//│ = [[30, 24, 18], [84, 69, 54], [138, 114, 90]] +//│ = Matrix([30, 24, 18, 84, 69, 54, 138, 114, 90], 3, 3) NaiveTransform3D.ident(4) -//│ = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] +//│ = Matrix([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 4, 4) NaiveTransform3D.update(NaiveTransform3D.ident(3), 1, 2, 5) -//│ = [[1, 0, 0], [0, 1, 5], [0, 0, 1]] +//│ = Matrix([1, 0, 0, 0, 1, 5, 0, 0, 1], 3, 3) NaiveTransform3D.transform(1, 2, 3) -//│ = [[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 3], [0, 0, 0, 1]] +//│ = Matrix([1, 0, 0, 1, 0, 1, 0, 2, 0, 0, 1, 3, 0, 0, 0, 1], 4, 4) NaiveTransform3D.scale(2, 2, 2) -//│ = [[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 1]] +//│ = Matrix([2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1], 4, 4) NaiveTransform3D.rotateX(3.1415 / 2) -//│ = [ -//│ [1, 0, 0, 0], -//│ [0, 0.00004632679487995776, -0.999999998926914, 0], -//│ [0, 0.999999998926914, 0.00004632679487995776, 0], -//│ [0, 0, 0, 1] -//│ ] +//│ = Matrix( +//│ [ +//│ 1, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 0.00004632679487995776, +//│ -0.999999998926914, +//│ 0, +//│ 0, +//│ 0.999999998926914, +//│ 0.00004632679487995776, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 1 +//│ ], +//│ 4, +//│ 4 +//│ ) NaiveTransform3D.rotateY(3.1415 / 2) -//│ = [ -//│ [0.00004632679487995776, 0, 0.999999998926914, 0], -//│ [0, 1, 0, 0], -//│ [-0.999999998926914, 0, 0.00004632679487995776, 0], -//│ [0, 0, 0, 1] -//│ ] +//│ = Matrix( +//│ [ +//│ 0.00004632679487995776, +//│ 0, +//│ 0.999999998926914, +//│ 0, +//│ 0, +//│ 1, +//│ 0, +//│ 0, +//│ -0.999999998926914, +//│ 0, +//│ 0.00004632679487995776, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 1 +//│ ], +//│ 4, +//│ 4 +//│ ) NaiveTransform3D.rotateZ(3.1415 / 2) -//│ = [ -//│ [0.00004632679487995776, -0.999999998926914, 0, 0], -//│ [0.999999998926914, 0.00004632679487995776, 0, 0], -//│ [0, 0, 1, 0], -//│ [0, 0, 0, 1] -//│ ] +//│ = Matrix( +//│ [ +//│ 0.00004632679487995776, +//│ -0.999999998926914, +//│ 0, +//│ 0, +//│ 0.999999998926914, +//│ 0.00004632679487995776, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 1, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 1 +//│ ], +//│ 4, +//│ 4 +//│ ) NaiveTransform3D.model([[10], [0], [0]], [5, 0, 0], [0.5, 0.5, 0.5], [0, 0, 3.1415926535 / 2.0]) -//│ = [[5.000000000224483], [5], [0]] +//│ = [5.000000000224483, 5, 0] NaiveTransform3D.model0([[10], [0], [0]]) -//│ = [[7], [4], [50.99999999964083]] +//│ = [7, 4, 50.99999999964083] import "../../mlscript-compile/staging/Transform3D.mls" @@ -70,54 +118,106 @@ Transform3D."generate"("../Transform3D.mls", "./hkmc2/shared/src/test/mlscript-c import "../../mlscript-compile/staging/out/Transform3D.mls" +let x = new Transform3D.Matrix([1, 2, 3, 4, 5, 6, 7, 8, 9], 3, 3) +let y = new Transform3D.Matrix([9, 8, 7, 6, 5, 4, 3, 2, 1], 3, 3) +//│ x = Matrix([1, 2, 3, 4, 5, 6, 7, 8, 9], 3, 3) +//│ y = Matrix([9, 8, 7, 6, 5, 4, 3, 2, 1], 3, 3) Transform3D.multiply of x, y -//│ = [[30, 24, 18], [84, 69, 54], [138, 114, 90]] +//│ = Matrix([30, 24, 18, 84, 69, 54, 138, 114, 90], 3, 3) Transform3D.ident(4) -//│ = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] +//│ = Matrix([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 4, 4) Transform3D.update(Transform3D.ident(3), 1, 2, 5) -//│ = [[1, 0, 0], [0, 1, 5], [0, 0, 1]] +//│ = Matrix([1, 0, 0, 0, 1, 5, 0, 0, 1], 3, 3) Transform3D.transform(1, 2, 3) -//│ = [[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 3], [0, 0, 0, 1]] +//│ = Matrix([1, 0, 0, 1, 0, 1, 0, 2, 0, 0, 1, 3, 0, 0, 0, 1], 4, 4) Transform3D.scale(2, 2, 2) -//│ = [[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 1]] +//│ = Matrix([2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1], 4, 4) Transform3D.rotateX(3.1415 / 2) -//│ = [ -//│ [1, 0, 0, 0], -//│ [0, 0.00004632679487995776, -0.999999998926914, 0], -//│ [0, 0.999999998926914, 0.00004632679487995776, 0], -//│ [0, 0, 0, 1] -//│ ] +//│ = Matrix( +//│ [ +//│ 1, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 0.00004632679487995776, +//│ -0.999999998926914, +//│ 0, +//│ 0, +//│ 0.999999998926914, +//│ 0.00004632679487995776, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 1 +//│ ], +//│ 4, +//│ 4 +//│ ) Transform3D.rotateY(3.1415 / 2) -//│ = [ -//│ [0.00004632679487995776, 0, 0.999999998926914, 0], -//│ [0, 1, 0, 0], -//│ [-0.999999998926914, 0, 0.00004632679487995776, 0], -//│ [0, 0, 0, 1] -//│ ] +//│ = Matrix( +//│ [ +//│ 0.00004632679487995776, +//│ 0, +//│ 0.999999998926914, +//│ 0, +//│ 0, +//│ 1, +//│ 0, +//│ 0, +//│ -0.999999998926914, +//│ 0, +//│ 0.00004632679487995776, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 1 +//│ ], +//│ 4, +//│ 4 +//│ ) Transform3D.rotateZ(3.1415 / 2) -//│ = [ -//│ [0.00004632679487995776, -0.999999998926914, 0, 0], -//│ [0.999999998926914, 0.00004632679487995776, 0, 0], -//│ [0, 0, 1, 0], -//│ [0, 0, 0, 1] -//│ ] +//│ = Matrix( +//│ [ +//│ 0.00004632679487995776, +//│ -0.999999998926914, +//│ 0, +//│ 0, +//│ 0.999999998926914, +//│ 0.00004632679487995776, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 1, +//│ 0, +//│ 0, +//│ 0, +//│ 0, +//│ 1 +//│ ], +//│ 4, +//│ 4 +//│ ) Transform3D.model([[10], [0], [0]], [5, 0, 0], [0.5, 0.5, 0.5], [0, 0, 3.1415926535 / 2.0]) -//│ = [[5.000000000224483], [5], [0]] +//│ = [5.000000000224483, 5, 0] Transform3D.model0([[10], [0], [0]]) -//│ = [[7], [4], [50.99999999964083]] +//│ = [7, 4, 50.99999999964083] From 679daa8c9fcda0425ac4be13cff40834e5a51c73 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 28 May 2026 16:32:11 +0800 Subject: [PATCH 633/654] WIP: Remove flat --- .../src/test/mlscript-compile/Shape.mls | 30 +++++++---- .../src/test/mlscript-compile/ShapeSet.mls | 40 +++++++-------- .../mlscript-compile/SpecializeHelpers.mls | 8 +-- .../shared/src/test/mlscript/ShapeSetTest.mls | 6 +-- .../block-staging/ShapeSetHelpers.mls | 51 ++++++++++--------- 5 files changed, 71 insertions(+), 64 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index c1025b32c8..ec29204a71 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -1,11 +1,13 @@ import "./Block.mls" import "./Option.mls" import "./CachedHash.mls" +import "./ShapeSet.mjs" open Block { Literal, ConcreteClassSymbol, isPrimitiveType, isPrimitiveTypeOf } open Option type Shape = Shape.Shape +type ShSet = ShapeSet.ShapeSet module Shape with... @@ -15,32 +17,32 @@ class Shape extends CachedHash with constructor Dyn() Lit(val l: Literal) - Arr(val shapes: Array[Shape]) - Class(val sym: ConcreteClassSymbol, val fields: Array[Shape]) // TODO: track the auxParams as well + Arr(val shapes: Array[ShSet]) + Class(val sym: ConcreteClassSymbol, val fields: Array[ShSet]) // TODO: track the auxParams as well fun show(s: Shape) = if s is Dyn then "Dyn" Lit(lit) then "Lit(" + printer.showLiteral(lit) + ")" - Arr(shapes) then "Arr(" + shapes.map(show).join(", ") + ")" - Class(sym, fields) then "Class(" + printer.showSymbol(sym) + ", {" + [...fields.entries()].map(e => e.0 + ": " + show(e.1)).join(", ") + "})" + Arr(shapes) then "Arr(" + shapes.map(_.toString()).join(", ") + ")" + Class(sym, fields) then "Class(" + printer.showSymbol(sym) + ", {" + [...fields.entries()].map(e => e.0 + ": " + e.1.toString()).join(", ") + "})" fun sel(s1: Shape, s2: Shape): Array[Shape] = if [s1, s2] is [Class(ConcreteClassSymbol(_, _, paramsOpt, auxParams, _), params), Lit(n)] and n is Str and paramsOpt is Some(paramsSymb) and paramsSymb.map(_.sym.name).indexOf(n) is -1 then [] - n then [params.(n)] + n then params.(n).values() [Class(ConcreteClassSymbol, p), Dyn] then [Dyn()] [Dyn, Lit(n)] and n is Str then [Dyn()] n is Int then [Dyn()] else throw Error("Unknown selection") [Arr(shapes), Lit(n)] and // n can be both string or integer - n < shapes.length then [shapes.(n)] // This utilizes the string and number conversion in JS lol + n < shapes.length then shapes.(n).values() // This utilizes the string and number conversion in JS lol else throw Error("Array out of bound") [Arr(shapes), Dyn] then - shapes + shapes.flatMap(_.values()) [Dyn, Dyn] then [Dyn()] else [] @@ -48,8 +50,14 @@ fun static(s: Shape) = if s is Dyn then false Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? - Class(_, params) then params.every(static) - Arr(shapes) then shapes.every(static) + Class(_, params) then params.every(field => + let values = field.values() + values.length is 1 and static(values.0) + ) + Arr(shapes) then shapes.every(field => + let values = field.values() + values.length is 1 and static(values.0) + ) open Block { Case } @@ -57,8 +65,8 @@ fun silh(p: Case): Shape = if p is Block.Lit(l) then Lit(l) Block.Cls(clsSymb, path) then let paramsSize = if clsSymb.paramsOpt is Some(params) then params.length else 0 - Class(clsSymb, Array(paramsSize).fill(Dyn())) - Block.Tup(n) then Arr(Array(n).fill(Dyn())) + Class(clsSymb, Array(paramsSize).fill(ShapeSet.mkDyn())) + Block.Tup(n) then Arr(Array(n).fill(ShapeSet.mkDyn())) fun getActualClass(c) = if not (c."class" is undefined) then c.class else c fun isSubClassOf(d, b) = diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index 4d884cf796..f883aa02d8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -34,21 +34,27 @@ class ShapeSet(val shapeset: Map[String, Shape]) extends CachedHash with module ShapeSet with fun empty = ShapeSet(new Map) -fun lift(s: Shape) = ShapeSet(new Map([[s.hash(), s]])) +fun makeShapeSet(entries) = + let shapeMap = new Map(entries) + let dyn = Dyn() + if shapeMap.has(dyn.hash()) then ShapeSet(new Map([[dyn.hash(), dyn]])) + else ShapeSet(shapeMap) + +fun lift(s: Shape) = makeShapeSet([[s.hash(), s]]) fun liftMany(arr: Array[Shape]) = - ShapeSet(new Map(arr.map(s => [s.hash(), s]))) + makeShapeSet(arr.map(s => [s.hash(), s])) fun union2(s1: ShapeSet, s2: ShapeSet) = if s1.isDyn() then s1 else if s2.isDyn() then s2 - else ShapeSet(new Map([...s1.shapeset, ...s2.shapeset])) + else makeShapeSet([...s1.shapeset, ...s2.shapeset]) fun union(...s) = if s.length is 0 then ShapeSet.empty else s.reduce((acc, next) => union2(acc, next)) -fun flat(arr: Array[ShapeSet]) = ShapeSet(new Map(arr.map(_.shapeset.entries().toArray()).flat())) +fun flat(arr: Array[ShapeSet]) = makeShapeSet(arr.map(_.shapeset.entries().toArray()).flat()) fun prod(xs) = xs.reduce((a, b) => a.flatMap(d => b.map(e => [...d, e])), [[]]) @@ -61,18 +67,10 @@ fun mkDyn() = lift(Dyn()) fun mkLit(l) = lift(Lit(l)) fun mkArr(shapes: Array[ShapeSet]) = - shapes - .map(_.shapeset.values().toArray()) - |> prod - .map(x => Arr(x)) - |> liftMany + lift(Arr(shapes)) fun mkClass(sym: ConcreteClassSymbol, params: Array[ShapeSet]) = - params - .map(_.shapeset.values().toArray()) - |> prod - .map(Class(sym, _)) - |> liftMany + lift(Class(sym, params)) fun mkClassFromMap(sym: ConcreteClassSymbol, paramsMap: Map[String, ShapeSet], psOpt: Option[Array[Array[Param]]]) = if sym is ConcreteClassSymbol(name, value, paramsOpt, auxParams, redir) then @@ -87,11 +85,7 @@ fun mkClassFromMap(sym: ConcreteClassSymbol, paramsMap: Map[String, ShapeSet], p ) let params = entries.map(_.1) let newSym = ConcreteClassSymbol(name, value, Some(keys), auxParams, redir) - params - .map(_.shapeset.values().toArray()) - |> prod - .map(Class(newSym, _)) - |> liftMany + lift(Class(newSym, params)) fun filterSet(s: ShapeSet, p: Block.Case) = s.flatMap(Shape.filter(_, p)) @@ -170,8 +164,8 @@ fun valOf(s : Shape) = if s is Dyn() then throw Error("valOf on Dyn") Lit(l) then l - Arr(shapes) then shapes.map((x, _, _) => valOf(x)) - Class(ConcreteClassSymbol(name, value, paramsOpt, auxParams, _), params) then new! value(...params.map(valOf)) + Arr(shapes) then shapes.map((x, _, _) => valOfSet(x)) + Class(ConcreteClassSymbol(name, value, paramsOpt, auxParams, _), params) then new! value(...params.map(valOfSet)) else throw Error("Unknown shape: " + s) fun valOfSet(s : ShapeSet) = @@ -189,7 +183,7 @@ private fun shape2path(s: Shape, allocs) = if s is Lit(l) then [Block.End(), Block.ValueLit(l)] Arr(v) then - let mapped = v.map(shape2path(_, allocs)) + let mapped = v.map(shapeset2path(_, allocs)) let blocks = mapped.map(_.0) blocks.reverse() let paths = mapped.map(_.1) @@ -199,7 +193,7 @@ private fun shape2path(s: Shape, allocs) = let fullBlock = foldr((acc, b) => Block.concat(b, acc))(tupAssign, ...blocks) [fullBlock, Block.ValueRef(tupSym)] Class(sym, fields) then - let mapped = fields.map(shape2path(_, allocs)) + let mapped = fields.map(shapeset2path(_, allocs)) let blocks = mapped.map(_.0) blocks.reverse() let paths = mapped.map(_.1) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 4b4626e326..214ecf4a79 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -500,10 +500,10 @@ fun buildShapeName(s: Shape): Str = if s is Dyn then "Dyn" Lit(lit) and lit is Str then "Str" + lit Lit(lit) then "Lit" + lit.toString().replace(".", "_p_") - Arr(shapes) then "Arr_" + shapes.map(buildShapeName).join("_") + "_end" + Arr(shapes) then "Arr_" + shapes.map(buildShapeSetName).join("_") + "_end" Class(sym, params) and params.length is 0 then sym.name - else sym.name + "_" + params.map(buildShapeName).join("_") + else sym.name + "_" + params.map(buildShapeSetName).join("_") else throw Error("unknown shape when building shape name" + s.toString()) fun buildShapeSetName(ss: ShapeSet): Str = @@ -579,9 +579,9 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = fun collectClasses(s) = if s is Class(sym, params) then ctx.valueNameCtx.set(getActualClass(sym.value), sym) - params.forEach(collectClasses) + params.forEach(_.values().forEach(collectClasses)) Arr(shapes) then - shapes.forEach(collectClasses) + shapes.forEach(_.values().forEach(collectClasses)) else () if ctx.thisShape is Some(ts) then ts.values().forEach(collectClasses) else () ctx.ctx.values().forEach(_.values().forEach(collectClasses)) diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 47e514654a..5c32b1ad63 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -31,7 +31,7 @@ union(mkLit(1), mkLit(2), mkLit(3)) //│ = {Lit(1),Lit(2),Lit(3)} mkArr([x, y]) -//│ = {Arr([Lit(1), Arr([Lit(1)])]),Arr([Lit(1), Arr([Lit(2)])]),Arr([Lit(2), Arr([Lit(1)])]),Arr([Lit(2), Arr([Lit(2)])])} +//│ = {Arr([{Lit(1),Lit(2)}, {Arr([Lit(1)]),Arr([Lit(2)])}])} class C(val a) val clsSym = ConcreteClassSymbol("C", C, Some([Param(None, Symbol("a"))]), [], false) @@ -47,12 +47,12 @@ val clsSym = ConcreteClassSymbol("C", C, Some([Param(None, Symbol("a"))]), [], f let x = liftMany([Class(clsSym, [Lit(42)]), Arr([Lit(1), Lit("a")])]) let y = liftMany([Lit(1), Lit("a")]) selSet(x, y) -//│ ═══[RUNTIME ERROR] Error: Array out of bound +//│ ═══[RUNTIME ERROR] TypeError: params[n1].values is not a function //│ x = {Arr([Lit(1), Lit("a")]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), [], false), [Lit(42)])} //│ y = {Lit("a"),Lit(1)} mkClass(clsSym, [mkLit(1)]) -//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), [], false), [Lit(1)])} +//│ = {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), [], false), [{Lit(1)}])} filterSet(liftMany([Lit(1), Lit("s"), Arr([Lit(1), Lit(2), Lit(3)])]), Tup(3)) //│ = {Arr([Lit(1), Lit(2), Lit(3)])} diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index f90eea60db..bdb8336457 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -28,7 +28,7 @@ mkDyn() == mkDyn() //│ = false mkArr([mkLit(0)]) -//│ = {Arr([Lit(0)])} +//│ = {Arr([{Lit(0)}])} assert(mkBot().isEmpty()) @@ -40,7 +40,7 @@ Shape.static(Shape.Lit("Hi")) valOf(Dyn()) //│ ═══[RUNTIME ERROR] Error: valOf on Dyn -valOf(Arr([Lit(1), Arr([Lit(2), Lit(3)])])) +valOf(Arr([mkLit(1), lift(Arr([mkLit(2), mkLit(3)]))])) //│ = [1, [2, 3]] :re @@ -53,7 +53,7 @@ valOfSet(mkLit(0)) // sel let arrSp = mkArr([mkLit(0), mkDyn()]) -//│ arrSp = {Arr([Lit(0), Dyn()])} +//│ arrSp = {Arr([{Lit(0)}, {Dyn()}])} selSet(arrSp, mkLit(0)) //│ = {Lit(0)} @@ -68,11 +68,10 @@ selSet(mkDyn(), mkLit(5)) class A(val a, val b) let aSym = ConcreteClassSymbol("A", A, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false) -:fixme -let a = Class(aSym, [Lit(42), Lit("c")]) -let x = liftMany([Dyn(), a, Arr([Lit(100), Lit(false), Lit(undefined)])]) -selSet(x, liftMany([Lit("a"), Lit(2)])) -//│ ═══[RUNTIME ERROR] Error: Array out of bound +let a = Class(aSym, [mkLit(42), mkLit("c")]) +let x = liftMany([Dyn(), a, Arr([mkLit(100), mkLit(false), mkLit(undefined)])]) +selSet(x, union(mkLit("a"), mkLit(2))) +//│ = {Dyn()} //│ a = Class( //│ ConcreteClassSymbol( //│ "A", @@ -81,21 +80,27 @@ selSet(x, liftMany([Lit("a"), Lit(2)])) //│ [], //│ false //│ ), -//│ [Lit(42), Lit("c")] +//│ [{Lit(42)}, {Lit("c")}] //│ ) -//│ x = {Arr([Lit(100), Lit(false), Lit(undefined)]),Class(ConcreteClassSymbol("A", fun A { class: class A }, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false), [Lit(42), Lit("c")]),Dyn()} +//│ x = {Dyn()} -selSet(lift(Arr([Dyn(), Lit(1), a])), mkLit(1)) +selSet(lift(Arr([mkDyn(), mkLit(1), lift(a)])), mkLit(1)) //│ = {Lit(1)} // union +mkClass(aSym, [union2(mkLit(42), mkLit(43)), union2(mkLit("c"), mkLit("d"))]) +//│ = {Class(ConcreteClassSymbol("A", fun A { class: class A }, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false), [{Lit(42),Lit(43)}, {Lit("c"),Lit("d")}])} + +mkArr([union2(mkLit(42), mkLit(43)), union2(mkLit("c"), mkLit("d"))]) +//│ = {Arr([{Lit(42),Lit(43)}, {Lit("c"),Lit("d")}])} + let x = liftMany([Lit(1), Lit(2)]) -let y = liftMany([Arr([Lit(2)]), Lit(1), Arr([Lit(1)])]) +let y = liftMany([Arr([mkLit(2)]), Lit(1), Arr([mkLit(1)])]) union(x, y) -//│ = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1),Lit(2)} +//│ = {Arr([{Lit(1)}]),Arr([{Lit(2)}]),Lit(1),Lit(2)} //│ x = {Lit(1),Lit(2)} -//│ y = {Arr([Lit(1)]),Arr([Lit(2)]),Lit(1)} +//│ y = {Arr([{Lit(1)}]),Arr([{Lit(2)}]),Lit(1)} // filterSet @@ -103,10 +108,10 @@ filterSet(mkDyn(), Block.Lit("a")) //│ = {Lit("a")} filterSet(mkDyn(), Block.Tup(2)) -//│ = {Arr([Dyn(), Dyn()])} +//│ = {Arr([{Dyn()}, {Dyn()}])} -let filterShapes = liftMany([Lit(1), Lit(null), Arr([Dyn()]), Arr([Lit(1), Lit(2), Lit(3)]), a]) -//│ filterShapes = {Arr([Dyn()]),Arr([Lit(1), Lit(2), Lit(3)]),Class(ConcreteClassSymbol("A", fun A { class: class A }, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false), [Lit(42), Lit("c")]),Lit(1),Lit(null)} +let filterShapes = liftMany([Lit(1), Lit(null), Arr([mkDyn()]), Arr([mkLit(1), mkLit(2), mkLit(3)]), a]) +//│ filterShapes = {Arr([{Dyn()}]),Arr([{Lit(1)}, {Lit(2)}, {Lit(3)}]),Class(ConcreteClassSymbol("A", fun A { class: class A }, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false), [{Lit(42)}, {Lit("c")}]),Lit(1),Lit(null)} // wildcard is represented as dflt in Match @@ -116,13 +121,13 @@ filterSet(filterShapes, Block.Lit(1)) assert(filterSet(filterShapes, Block.Lit(2)).isEmpty()) filterSet(filterShapes, Block.Cls(aSym, undefined)) -//│ = {Class(ConcreteClassSymbol("A", fun A { class: class A }, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false), [Lit(42), Lit("c")])} +//│ = {Class(ConcreteClassSymbol("A", fun A { class: class A }, Some([Param(None, Symbol("a")), Param(None, Symbol("b"))]), [], false), [{Lit(42)}, {Lit("c")}])} filterSet(filterShapes, Block.Cls(Symbol("Int"), undefined)) //│ = {Lit(1)} filterSet(filterShapes, Tup(3)) -//│ = {Arr([Lit(1), Lit(2), Lit(3)])} +//│ = {Arr([{Lit(1)}, {Lit(2)}, {Lit(3)}])} filterSet(filterShapes, Tup(4)) //│ = {} @@ -197,7 +202,7 @@ sop(ctx, selPath) //│ C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), [], false) //│ ctx = Ctx( //│ Map(1) { -//│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), [], false), [Lit("pass")])} +//│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), [], false), [{Lit("pass")}])} //│ }, //│ Map(0) {}, //│ Map(0) {}, @@ -214,7 +219,7 @@ sor(Ctx.empty(), tup) //│ = [ //│ End(), //│ Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]), -//│ {Arr([Lit(1), Lit(true)])} +//│ {Arr([{Lit(1)}, {Lit(true)}])} //│ ] //│ tup = Tuple([Arg(ValueLit(1)), Arg(ValueLit(true))]) @@ -236,7 +241,7 @@ sor(Ctx.empty(), inst) //│ ), //│ [Arg(ValueLit(123))] //│ ), -//│ {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("p")]), [], false), [Lit(123)])} +//│ {Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Symbol("p")]), [], false), [{Lit(123)}])} //│ ] //│ c = ConcreteClassSymbol( //│ "C", @@ -384,7 +389,7 @@ module M with :ignore val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.385: val MSym = ValueRef(ModuleSymbol("M", M, false)) +//│ ║ l.390: val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ║ ^ //│ ╙── Module argument passed to a non-module parameter. //│ MSym = ValueRef(ModuleSymbol("M", class M, false)) From ee72d27937181f875bee302214d88983ef73ce04 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 28 May 2026 16:57:21 +0800 Subject: [PATCH 634/654] WIP: cache static calls --- .../mlscript-compile/SpecializeHelpers.mls | 81 ++++++-- .../staging/out/AdjacentClasses.mls | 5 +- .../staging/out/CombinedModule.mls | 15 +- .../staging/out/LinkingGeneratedClasses.mls | 22 +- .../staging/out/SimpleStagedExample.mls | 5 +- .../staging/out/StagedClass.mls | 28 +-- .../staging/out/Transform3D.mls | 194 ++++++++++-------- .../test/mlscript/block-staging/ShapeProp.mls | 12 +- .../block-staging/ShapeSetHelpers.mls | 7 +- .../block-staging/StagedRegExpTest.mls | 20 +- 10 files changed, 224 insertions(+), 165 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 214ecf4a79..e7c884c574 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -28,13 +28,24 @@ fun showCtxPath(p) = if p is else throw Error(l) ValueLit(lit) then "Lit(" + lit.toString() + ")" +fun staticCallKey(f, argShapes) = + showCtxPath(f) + "(" + argShapes.map(_.hash()).join(",") + ")" + +class StaticCallEntry( + val block: Block.Block, + val path: Path, + val shape: ShapeSet, +) + class Ctx( // ctx tracks shapes of variables val ctx: Map[String, ShapeSet], // valueNameCtx tracks the assigned name of the pointer in the previous module for the current runtime value val valueNameCtx: Map[Class, ConcreteClassSymbol | ModuleSymbol], // valDefnCtx tracks fields defined by ValDefn during shape prop of constructor - val valDefnCtx: Map[String, ShapeSet] + val valDefnCtx: Map[String, ShapeSet], + // staticCallCtx tracks results of non-staged calls with static arguments + val staticCallCtx: Map[String, StaticCallEntry], // allocs tracks the new variables allocated val allocs: Array[Block.Symbol], // thisShape stores the shapeset of this, e.g., C1(1) U C1(2) @@ -45,11 +56,13 @@ class Ctx( if ctx.has(ps) then Some(ctx.get(ps)) else None fun getValDefn(name) = if valDefnCtx.has(name) then Some(valDefnCtx.get(name)) else None - fun clone = Ctx(new Map(ctx), valueNameCtx, new Map(valDefnCtx), allocs, thisShape) - // For propagation of instantiation of derived class, - // we need to keep track of fields defined in parent class, - // which is stored in valDefnCtx - fun clearCtx = Ctx(new Map(), valueNameCtx, valDefnCtx, allocs, thisShape) + fun getStaticCall(key) = + if staticCallCtx.has(key) then Some(staticCallCtx.get(key)) else None + fun addStaticCall(key, entry) = + staticCallCtx.set(key, entry) + this + fun clone = Ctx(new Map(ctx), valueNameCtx, new Map(valDefnCtx), new Map(staticCallCtx), allocs, thisShape) + fun clearCtx = Ctx(new Map(), valueNameCtx, new Map(), new Map(staticCallCtx), allocs, thisShape) fun sub(other: Ctx) = let res = new Map() fun otherIsBot(ps) = @@ -74,7 +87,7 @@ class Ctx( valDefnCtx.set(ps, ss) this module Ctx with - fun empty() = Ctx(new Map(), new Map(), new Map(), mut [], None) + fun empty() = Ctx(new Map(), new Map(), new Map(), new Map(), mut [], None) class FunEntry( val defn: FunDefn, @@ -287,6 +300,27 @@ fun sorBuiltinOp(ctx, r, f, name, args) = if args is let newArgs = evaledArgs.map(e => Arg(if e.1 is Path then e.1 else throw Error("expected path"))) [fullBlk, Call(f, newArgs), mkDyn()] +fun sorUnknownCall(ctx, f, args) = + let evaledArgs = args.map(a => sor(ctx, a.value)) + let fullBlk = foldl((acc, e) => concat(acc, e.0))(End(), ...evaledArgs) + let newArgs = evaledArgs.map(e => Arg(if e.1 is Path then e.1 else throw Error("expected path"))) + [fullBlk, Call(f, newArgs), mkDyn()] + +fun sorStaticModuleCall(ctx, f, value, fld, args, argShapes) = + let key = staticCallKey(f, argShapes) + if ctx.getStaticCall(key) is + Some(entry) then [End(), entry.path, entry.shape] + None then + let fimp = value.(fld) + let evaluated = fimp(...argShapes.map(valOfSet)) + let inferredShape = sov(evaluated) + if staticSet(inferredShape) then + let evaluatedPath = shapeset2path(inferredShape, ctx.allocs) + let entry = StaticCallEntry(evaluatedPath.0, evaluatedPath.1, inferredShape) + ctx.addStaticCall(key, entry) + [entry.block, entry.path, entry.shape] + else sorUnknownCall(ctx, f, args) + fun sorCall(ctx, r, f, args, argShapes) = if f is Select(Select(ValueRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) // runtime.Tuple.get is generated by the compiler in the IR and args is [Arg(scrut), Arg(litArg)] then @@ -316,18 +350,9 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is [End(), Call(callPath, args), res.1] else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") - argShapes.every(staticSet) and // non staged function and params known - let fimp = value.(fld) - let evaluated = fimp(...argShapes.map(valOfSet)) - let inferredShape = sov(evaluated) - staticSet(inferredShape) then // shape can be inferred from runtime value - let evaluatedPath = shapeset2path(inferredShape, ctx.allocs) - [evaluatedPath.0, evaluatedPath.1, inferredShape] - else - let evaledArgs = args.map(a => sor(ctx, a.value)) - let fullBlk = foldl((acc, e) => concat(acc, e.0))(End(), ...evaledArgs) - let newArgs = evaledArgs.map(e => Arg(if e.1 is Path then e.1 else throw Error("expected path"))) - [fullBlk, Call(f, newArgs), mkDyn()] // non staged function and some params unknown + argShapes.every(staticSet) then // non staged function and params known + sorStaticModuleCall(ctx, f, value, fld, args, argShapes) + else sorUnknownCall(ctx, f, args) // non staged function and some params unknown // else throw Error("unknown call in sor: " + r.toString()) // shape of result: return [blk, res, s] @@ -423,7 +448,7 @@ fun prop(ctx, b) = if b is Scoped(symbols, rest) then symbols.forEach(x => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] - let newCtx = Ctx(new Map(ctx.ctx), ctx.valueNameCtx, ctx.valDefnCtx, newAllocs, ctx.thisShape) + let newCtx = Ctx(new Map(ctx.ctx), ctx.valueNameCtx, ctx.valDefnCtx, new Map(ctx.staticCallCtx), newAllocs, ctx.thisShape) let res = prop(newCtx, rest) [wrapScoped([...symbols, ...newAllocs], res.0), res.1, res.2] Assign(x, Call(Select(p, Symbol(f)), args), restBlock) and p is // TODO Can we deduplicate this? @@ -542,6 +567,18 @@ class ValueCollection(defn: Map[Class, Str]) extends Printer(None) with else () "" +fun isStaticShapePath(s: Shape) = if s is + Lit(_) then true + Arr(shapes) then shapes.every(x => x is Lit) + Class(_, fields) then fields.every(x => x is Lit) + else false + +fun isStaticSetPath(ss: ShapeSet) = + staticSet(ss) and ss.values().every(isStaticShapePath) + +fun isStaticPath(ss: ShapeSet) = + isStaticSetPath(ss) + fun specialize(cache: FunCache, funName, dflt, shapes) = // FIXME // right now the function name depends on the parameter constraints @@ -561,7 +598,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let ctx = if isMethod then let clsSymb = cache.owner - Ctx(new Map(), new Map(), new Map(), mut [], Some(shapes.(0).(0))) + Ctx(new Map(), new Map(), new Map(), new Map(), mut [], Some(shapes.(0).(0))) else Ctx.empty() // console.log("checking", ctx.valueNameCtx, Printer.default.showBlock(body)) @@ -594,7 +631,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let actualRetShape = res.1 actualRetShape.values().forEach(collectClasses) - let finalBody = if staticSet(actualRetShape) then + let finalBody = if isStaticPath(actualRetShape) then let allocs = mut [] let v2p = shapeset2path(actualRetShape, allocs) wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls index 31b8773fb5..bb6a3ccc18 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/AdjacentClasses.mls @@ -5,7 +5,4 @@ module AdjacentClasses with () class D() with () - fun f() = - let {obj_11} - obj_11 = new C(1) - obj_11 \ No newline at end of file + fun f() = new AdjacentClasses.C(1) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index 2b1f62bfb3..96f0f8691a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -48,10 +48,7 @@ module CombinedModule with tmp11 = 0 z = 0 y1 + 0 - fun spaces() = - let {tup_3} - tup_3 = ["\t", "\n", "\r"] - tup_3 + fun spaces() = ["\t", "\n", "\r"] private fun f_SimpleStagedExample_sp_0(x, y) = 5 private fun fib_SimpleStagedExample_sp_0(n) = 55 private fun fib_SimpleStagedExample_sp_1(n) = 34 @@ -69,13 +66,13 @@ module CombinedModule with module LinkingGeneratedClasses with class D fun f() = + let {obj_3} + obj_3 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_3 + fun g() = let {obj_4} - obj_4 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_4 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() obj_4 - fun g() = - let {obj_5} - obj_5 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() - obj_5 fun test1 = let {obj_1} obj_1 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index bacd42b125..6624fdc918 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -6,17 +6,17 @@ class S with module LinkingGeneratedClasses with class D fun f() = + let {obj_3} + obj_3 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_3 + fun g() = let {obj_4} - obj_4 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_4 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() obj_4 - fun g() = - let {obj_5} - obj_5 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() - obj_5 fun test1 = - let {obj_2} - obj_2 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() - obj_2 + let {obj_1} + obj_1 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() + obj_1 fun test2(x) = let {tmp} if x is @@ -25,6 +25,6 @@ module LinkingGeneratedClasses with tmp.f_S_sp_0(1) else new S() fun test3 = - let {obj_3} - obj_3 = new D() - obj_3 \ No newline at end of file + let {obj_2} + obj_2 = new D() + obj_2 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index a0105adf9a..a3e45544ce 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -45,10 +45,7 @@ module SimpleStagedExample with tmp11 = 0 z = 0 y1 + 0 - fun spaces() = - let {tup_1} - tup_1 = ["\t", "\n", "\r"] - tup_1 + fun spaces() = ["\t", "\n", "\r"] private fun f_SimpleStagedExample_sp_0(x, y) = 5 private fun fib_SimpleStagedExample_sp_0(n) = 55 private fun fib_SimpleStagedExample_sp_1(n) = 34 diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index d9e6051e95..0b1fc95c3a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -18,9 +18,9 @@ module StagedClass with class C() with () fun h() = - let {obj_6} - obj_6 = new D() - obj_6 + let {obj_5} + obj_5 = new D() + obj_5 class X(val x) with () fun f(y) = @@ -38,9 +38,9 @@ module StagedClass with tmp2 = x + y StagedClass.helpFoo(tmp2) private fun f_X_sp_0(y) = - let {obj_9} - obj_9 = new Bar(0) - obj_9 + let {scrut} + scrut = true + new StagedClass.Bar(x) fun bar(b) = if b is true then Bar(0) @@ -63,15 +63,15 @@ module StagedClass with y4 + 1 else -1 fun foo() = + let {obj_6} + obj_6 = new Foo() + obj_6 + fun g() = let {obj_7} - obj_7 = new Foo() + obj_7 = new D() obj_7 - fun g() = - let {obj_8} - obj_8 = new D() - obj_8 fun helpFoo(x) = StagedClass__Legacy."Helper$StagedClass".foo(x) fun xx() = - let {obj_10} - obj_10 = new Bar(0) - obj_10 \ No newline at end of file + let {tmp3} + tmp3 = new X(0) + tmp3.f_X_sp_0(1) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 6319c3252b..d68f78e8b9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -143,10 +143,9 @@ module Transform3D with tmp22 = Transform3D__Legacy."Mx$Transform3D".init(tmp21, 0) new Matrix(tmp22, r, c) private fun ident_Transform3D_sp_0(w) = - let {tup_26, obj_27} - tup_26 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_27 = new Matrix(tup_26, 4, 4) - obj_27 + let {m3} + m3 = zeros_Transform3D_sp_0(w, w) + iterID_Transform3D_sp_1(m3, w, w) private fun iterCol_Transform3D_sp_0(m, x, y, colX, colY, i, j) = let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = ===(j, 0) @@ -699,30 +698,41 @@ module Transform3D with tmp20 = i - 1 iterID_Transform3D_sp_0(tmp19, w, tmp20) private fun iterID_Transform3D_sp_1(m, w, i) = - let {tup_24, obj_25} - tup_24 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_25 = new Matrix(tup_24, 4, 4) - obj_25 + let {scrut3, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp17 = 0 + tmp18 = 0 + tmp19 = update_Transform3D_sp_3(m, tmp17, tmp18, 1) + tmp20 = 3 + iterID_Transform3D_sp_2(tmp19, w, tmp20) private fun iterID_Transform3D_sp_2(m, w, i) = - let {tup_22, obj_23} - tup_22 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_23 = new Matrix(tup_22, 4, 4) - obj_23 + let {scrut3, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp17 = 1 + tmp18 = 1 + tmp19 = update_Transform3D_sp_4(m, tmp17, tmp18, 1) + tmp20 = 2 + iterID_Transform3D_sp_3(tmp19, w, tmp20) private fun iterID_Transform3D_sp_3(m, w, i) = - let {tup_20, obj_21} - tup_20 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_21 = new Matrix(tup_20, 4, 4) - obj_21 + let {scrut3, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp17 = 2 + tmp18 = 2 + tmp19 = update_Transform3D_sp_5(m, tmp17, tmp18, 1) + tmp20 = 1 + iterID_Transform3D_sp_4(tmp19, w, tmp20) private fun iterID_Transform3D_sp_4(m, w, i) = - let {tup_18, obj_19} - tup_18 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_19 = new Matrix(tup_18, 4, 4) - obj_19 + let {scrut3, tmp17, tmp18, tmp19, tmp20} + scrut3 = false + tmp17 = 3 + tmp18 = 3 + tmp19 = update_Transform3D_sp_6(m, tmp17, tmp18, 1) + tmp20 = 0 + iterID_Transform3D_sp_5(tmp19, w, tmp20) private fun iterID_Transform3D_sp_5(m, w, i) = - let {tup_16, obj_17} - tup_16 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_17 = new Matrix(tup_16, 4, 4) - obj_17 + let {scrut3, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + m private fun iterRow_Transform3D_sp_0(m, x, y, rowX, colX, colY, i) = let {scrut2, tmp14, tmp15, tmp16} scrut2 = ===(i, 0) @@ -3650,15 +3660,17 @@ module Transform3D with tmp46 = update_Transform3D_sp_19(tmp45, 1, 0, s2) update_Transform3D_sp_11(tmp46, 1, 1, c4) private fun scale_Transform3D_sp_0(sx, sy, sz) = - let {tup_51, obj_52} - tup_51 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] - obj_52 = new Matrix(tup_51, 4, 4) - obj_52 + let {tmp29, tmp30, tmp31} + tmp29 = ident_Transform3D_sp_0(4) + tmp30 = update_Transform3D_sp_33(tmp29, 0, 0, sx) + tmp31 = update_Transform3D_sp_34(tmp30, 1, 1, sy) + update_Transform3D_sp_35(tmp31, 2, 2, sz) private fun transform_Transform3D_sp_0(dx, dy, dz) = - let {tup_40, obj_41} - tup_40 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] - obj_41 = new Matrix(tup_40, 4, 4) - obj_41 + let {tmp26, tmp27, tmp28} + tmp26 = ident_Transform3D_sp_0(4) + tmp27 = update_Transform3D_sp_30(tmp26, 0, 3, dx) + tmp28 = update_Transform3D_sp_31(tmp27, 1, 3, dy) + update_Transform3D_sp_32(tmp28, 2, 3, dz) private fun update_Transform3D_sp_0(m, i, j, v) = let {tmp23, tmp24, tmp25} tmp23 = *(i, m.c) @@ -3798,40 +3810,54 @@ module Transform3D with tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_3(m, i, j, v) = - let {tup_5, obj_6} - tup_5 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_6 = new Matrix(tup_5, 4, 4) - obj_6 + let {tmp23, tmp24, tmp25, tup_2} + tmp23 = 0 + tmp24 = 0 + tup_2 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + tmp25 = tup_2 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_30(m, i, j, v) = - let {tup_32, obj_33} - tup_32 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_33 = new Matrix(tup_32, 4, 4) - obj_33 + let {tmp23, tmp24, tmp25, tup_7} + tmp23 = 0 + tmp24 = 3 + tup_7 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_7 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_31(m, i, j, v) = - let {tup_35, obj_36} - tup_35 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] - obj_36 = new Matrix(tup_35, 4, 4) - obj_36 + let {tmp23, tmp24, tmp25, tup_8} + tmp23 = 4 + tmp24 = 7 + tup_8 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_8 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_32(m, i, j, v) = - let {tup_38, obj_39} - tup_38 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] - obj_39 = new Matrix(tup_38, 4, 4) - obj_39 + let {tmp23, tmp24, tmp25, tup_9} + tmp23 = 8 + tmp24 = 11 + tup_9 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] + tmp25 = tup_9 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_33(m, i, j, v) = - let {tup_43, obj_44} - tup_43 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_44 = new Matrix(tup_43, 4, 4) - obj_44 + let {tmp23, tmp24, tmp25, tup_10} + tmp23 = 0 + tmp24 = 0 + tup_10 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_10 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_34(m, i, j, v) = - let {tup_46, obj_47} - tup_46 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_47 = new Matrix(tup_46, 4, 4) - obj_47 + let {tmp23, tmp24, tmp25, tup_11} + tmp23 = 4 + tmp24 = 5 + tup_11 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_11 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_35(m, i, j, v) = - let {tup_49, obj_50} - tup_49 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] - obj_50 = new Matrix(tup_49, 4, 4) - obj_50 + let {tmp23, tmp24, tmp25, tup_12} + tmp23 = 8 + tmp24 = 10 + tup_12 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] + tmp25 = tup_12 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_36(m, i, j, v) = let {tmp23, tmp24, tmp25} tmp23 = 3 @@ -3839,20 +3865,26 @@ module Transform3D with tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, 1) new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_4(m, i, j, v) = - let {tup_8, obj_9} - tup_8 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_9 = new Matrix(tup_8, 4, 4) - obj_9 + let {tmp23, tmp24, tmp25, tup_3} + tmp23 = 4 + tmp24 = 5 + tup_3 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + tmp25 = tup_3 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_5(m, i, j, v) = - let {tup_11, obj_12} - tup_11 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] - obj_12 = new Matrix(tup_11, 4, 4) - obj_12 + let {tmp23, tmp24, tmp25, tup_4} + tmp23 = 8 + tmp24 = 10 + tup_4 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] + tmp25 = tup_4 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_6(m, i, j, v) = - let {tup_14, obj_15} - tup_14 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_15 = new Matrix(tup_14, 4, 4) - obj_15 + let {tmp23, tmp24, tmp25, tup_5} + tmp23 = 12 + tmp24 = 15 + tup_5 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_5 + new Matrix(tmp25, m.r, m.c) private fun update_Transform3D_sp_7(m, i, j, v) = let {tmp23, tmp24, tmp25} tmp23 = 0 @@ -3872,12 +3904,14 @@ module Transform3D with tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 11, v) new Matrix(tmp25, m.r, m.c) private fun zeros_Transform3D_sp_0(r, c) = - let {tup_2, obj_3} - tup_2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_3 = new Matrix(tup_2, 4, 4) - obj_3 + let {tmp21, tmp22, tup_1} + tmp21 = 16 + tup_1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + tmp22 = tup_1 + new Matrix(tmp22, r, c) private fun zeros_Transform3D_sp_1(r, c) = - let {tup_29, obj_30} - tup_29 = [0, 0, 0, 0] - obj_30 = new Matrix(tup_29, 4, 1) - obj_30 \ No newline at end of file + let {tmp21, tmp22, tup_6} + tmp21 = 4 + tup_6 = [0, 0, 0, 0] + tmp22 = tup_6 + new Matrix(tmp22, r, c) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e8d0113dfc..da52b9f5dd 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -222,14 +222,8 @@ print(Dispatching."cache$Dispatching") //│ > tmp3 = new L3.class(3) //│ > m = pick_Dispatching_sp_2(tmp2, tmp3, b) //│ > twice_Dispatching_sp_3(m, 5) -//│ > private fun pick_Dispatching_sp_0(x, y, b) = -//│ > let {obj_1} -//│ > obj_1 = new L2.class(2) -//│ > obj_1 -//│ > private fun pick_Dispatching_sp_1(x, y, b) = -//│ > let {obj_2} -//│ > obj_2 = new L3.class(3) -//│ > obj_2 +//│ > private fun pick_Dispatching_sp_0(x, y, b) = x +//│ > private fun pick_Dispatching_sp_1(x, y, b) = y //│ > private fun pick_Dispatching_sp_2(x, y, b) = //│ > if b is //│ > true then x @@ -325,7 +319,7 @@ staged module Inheritance with else "not B" Inheritance."test_gen"() -//│ = ["test", {Lit(5)}] +//│ = ["test", {}] staged module NonTermination with fun f(x, y) = if y diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index bdb8336457..d34cee8804 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -141,7 +141,7 @@ open SpecializeHelpers { Ctx, sop, sor, prop } let ctx = Ctx.empty() let x = ValueRef(Symbol("x")) -//│ ctx = Ctx(Map(0) {}, Map(0) {}, Map(0) {}, [], None) +//│ ctx = Ctx(Map(0) {}, Map(0) {}, Map(0) {}, Map(0) {}, [], None) //│ x = ValueRef(Symbol("x")) ctx.add(x, mkLit(1)) @@ -166,6 +166,7 @@ ctx2.get(y) //│ Map(2) {"Symbol(x)" => {Lit(1),Lit(2)}, "Symbol(y)" => {Lit("a"),Lit("b")}}, //│ Map(0) {}, //│ Map(0) {}, +//│ Map(0) {}, //│ [], //│ None //│ ) @@ -206,6 +207,7 @@ sop(ctx, selPath) //│ }, //│ Map(0) {}, //│ Map(0) {}, +//│ Map(0) {}, //│ [], //│ None //│ ) @@ -389,7 +391,7 @@ module M with :ignore val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.390: val MSym = ValueRef(ModuleSymbol("M", M, false)) +//│ ║ l.392: val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ║ ^ //│ ╙── Module argument passed to a non-module parameter. //│ MSym = ValueRef(ModuleSymbol("M", class M, false)) @@ -414,6 +416,7 @@ val ctxXY = Ctx.empty() //│ Map(2) {"Symbol(x)" => {Lit(10)}, "Symbol(y)" => {Lit(32)}}, //│ Map(0) {}, //│ Map(0) {}, +//│ Map(0) {}, //│ [], //│ None //│ ) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls index 519f377419..48a6ceecec 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls @@ -9,16 +9,16 @@ StagedRegExp."generate"("../StagedRegExp.mls", "./hkmc2/shared/src/test/mlscript //│ FAILURE: Unexpected runtime error //│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) //│ ═══[RUNTIME ERROR] RangeError: Maximum call stack size exceeded -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:549:56) -//│ at SpecializeHelpers.sor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2433:30) -//│ at lambda (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2338:34) -//│ at Array.map () -//│ at SpecializeHelpers.sorBuiltinOp (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2340:42) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:782:40) -//│ at SpecializeHelpers.sor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2433:30) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1259:52) -//│ at SpecializeHelpers.prop (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2657:30) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1047:46) +//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:582:56) +//│ at SpecializeHelpers.prop (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2731:30) +//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1046:46) +//│ at SpecializeHelpers.prop (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2731:30) +//│ at SpecializeHelpers.specialize (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:3044:35) +//│ at mkUnion_gen (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mjs:10964:30) +//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:736:49) +//│ at SpecializeHelpers.sor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2507:30) +//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:917:58) +//│ at SpecializeHelpers.prop (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2731:30) import "../../mlscript-compile/staging/out/StagedRegExp.mls" From 5142c4129b59a3ca041391e9853c13a2657276ce Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 28 May 2026 17:06:00 +0800 Subject: [PATCH 635/654] WIP: Add fixme for this generation --- .../mlscript-compile/staging/StagedRegExp.mls | 18 +- .../staging/out/StagedRegExp.mls | 2706 +++++++++++++++++ .../block-staging/StagedRegExpTest.mls | 474 +-- 3 files changed, 2760 insertions(+), 438 deletions(-) create mode 100644 hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls index 6404d05f61..a677539036 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls @@ -36,12 +36,12 @@ staged module StagedRegExp with staged class DedupSet(val arr) with fun addImp(e, i) = let s = len(arr) - if i == s then new DedupSet(push(arr, e)) + if s - i == s then new DedupSet(push(arr, e)) else let e' = arr.(i) - if e.eq(e') then this else addImp(e, i + 1) + if e.eq(e') then this else addImp(e, i - 1) fun add(e) = - addImp(e, 0) + addImp(e, len(arr)) staged class RegExp() with fun derive(c) @@ -95,11 +95,11 @@ staged module StagedRegExp with fun notDigit() = new Not(CharSet.digit()) fun mkUnion(arr, i, s) = - if i == s - 1 then arr.(i) + if s - i == s - 1 then arr.(i) else if arr.(i) is - Nothing() then mkUnion(arr, i + 1, s) - else new Union(arr.(i), mkUnion(arr, i + 1, s)) + Nothing() then mkUnion(arr, i - 1, s) + else new Union(arr.(i), mkUnion(arr, i - 1, s)) staged class Union(val p1, val p2) extends RegExp with fun derive(c) = (new Union(p1.derive(c), p2.derive(c))).normalize() @@ -109,15 +109,15 @@ staged module StagedRegExp with let p2' = if p2 is Union then p2.flat() else [p2] concat(p1', p2') fun iter(st, arr, i, s) = - if i == s then st - else iter(st.add(arr.(i)), arr, i + 1, s) + if s - i == s then st + else iter(st.add(arr.(s - i)), arr, i - 1, s) fun normalize() = let p1' = p1.normalize() let p2' = p2.normalize() let arr1 = if p1' is Union then p1'.flat() else [p1'] let arr2 = if p2' is Union then p2'.flat() else [p2'] let s = iter(new DedupSet(arr1), arr2, 0, len(arr2)) - mkUnion(s.arr, 0, len(s.arr)) + mkUnion(s.arr, len(s.arr), len(s.arr)) fun eq(other) = let n = other.normalize() if n is diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls new file mode 100644 index 0000000000..c21f58c8d5 --- /dev/null +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls @@ -0,0 +1,2706 @@ +#config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) +import "../StagedRegExp.mls" as StagedRegExp__Legacy +module StagedRegExp with + class Some(val x) + class None + class DedupSet(val arr) with + () + fun add(e) = + let {tmp3} + tmp3 = StagedRegExp.len(arr) + addImp(e, tmp3) + fun addImp(e, i) = + let {s, scrut, e__, scrut1, tmp, tmp1, tmp2} + s = StagedRegExp.len(arr) + tmp = s - i + scrut = ==(tmp, s) + if scrut is + true then + tmp1 = StagedRegExp.push(arr, e) + new StagedRegExp.DedupSet.class(tmp1) + else + e__ = arr.(i) + scrut1 = e.eq(e__) + if scrut1 is + true then DedupSet + else + tmp2 = i - 1 + addImp(e, tmp2) + class RegExp() with + () + class Nothing() extends RegExp() with + () + fun canBeEmpty() = false + fun derive(c) = Nothing + fun eq(other) = + if other is + Nothing then true + else false + fun normalize() = Nothing + fun startsWith(c) = false + private fun canBeEmpty_Nothing_sp_0() = false + private fun derive_Nothing_sp_0(c) = Nothing + private fun normalize_Nothing_sp_0() = Nothing + private fun startsWith_Nothing_sp_0(c) = false + class Empty() extends RegExp() with + () + fun canBeEmpty() = true + fun derive(c) = + let {obj_1} + obj_1 = new Nothing() + obj_1 + fun eq(other) = + if other is + Empty then true + else false + fun normalize() = Empty + fun startsWith(c) = false + private fun canBeEmpty_Empty_sp_0() = true + private fun derive_Empty_sp_0(c) = + let {obj_15} + obj_15 = new Nothing() + obj_15 + private fun normalize_Empty_sp_0() = Empty + private fun startsWith_Empty_sp_0(c) = false + class Exact(val ch) extends RegExp() with + () + fun canBeEmpty() = false + fun derive(c) = + let {scrut2} + scrut2 = startsWith(c) + if scrut2 is + true then new StagedRegExp.Empty() + else new StagedRegExp.Nothing() + fun eq(other) = + let {ch__, arg_Exact_0_} + if other is + Exact then + arg_Exact_0_ = other.ch + ch__ = arg_Exact_0_ + ==(ch, ch__) + else false + fun normalize() = Exact + fun startsWith(c) = ==(ch, c) + private fun canBeEmpty_Exact_sp_0() = false + private fun canBeEmpty_Exact_sp_1() = false + private fun derive_Exact_sp_0(c) = + let {scrut2} + scrut2 = startsWith(c) + if scrut2 is + true then new StagedRegExp.Empty() + else new StagedRegExp.Nothing() + private fun derive_Exact_sp_1(c) = + let {scrut2} + scrut2 = startsWith(c) + if scrut2 is + true then new StagedRegExp.Empty() + else new StagedRegExp.Nothing() + private fun normalize_Exact_sp_0() = Exact + private fun normalize_Exact_sp_1() = Exact + private fun normalize_Exact_sp_2() = Exact + private fun normalize_Exact_sp_3() = Exact + private fun normalize_Exact_sp_4() = Exact + private fun normalize_Exact_sp_5() = Exact + private fun normalize_Exact_sp_6() = Exact + private fun normalize_Exact_sp_7() = Exact + private fun startsWith_Exact_sp_0(c) = ==("2", c) + private fun startsWith_Exact_sp_1(c) = ==("1", c) + class Any() extends RegExp() with + () + fun canBeEmpty() = false + fun derive(c) = + let {obj_2} + obj_2 = new Empty() + obj_2 + fun eq(other) = + if other is + Any then true + else false + fun normalize() = Any + fun startsWith(c) = true + class Not(val chars) extends RegExp() with + () + fun canBeEmpty() = false + fun derive(c) = + let {scrut3} + scrut3 = startsWith(c) + if scrut3 is + true then new StagedRegExp.Empty() + else new StagedRegExp.Nothing() + fun eq(other) = + let {chars__, arg_Not_0_} + if other is + Not then + arg_Not_0_ = other.chars + chars__ = arg_Not_0_ + StagedRegExp.arrEq(chars, chars__) + else false + fun normalize() = Not + fun startsWith(c) = + let {tmp4} + tmp4 = StagedRegExp.has(chars, c) + not tmp4 + private fun normalize_Not_sp_0() = Not + private fun normalize_Not_sp_1() = Not + class Union(val p1, val p2) extends RegExp() with + () + fun canBeEmpty() = + let {tmp8} + tmp8 = p1.canBeEmpty() + if tmp8 is + false then p2.canBeEmpty() + else true + fun derive(c) = + let {tmp5, tmp6, tmp7} + tmp5 = p1.derive(c) + tmp6 = p2.derive(c) + tmp7 = new StagedRegExp.Union.class(tmp5, tmp6) + tmp7.normalize_Union_sp_0() + fun eq(other) = + let {n, tmp21, tmp22, tmp23} + n = other.normalize() + if n is + Union then + tmp21 = normalize() + tmp22 = tmp21.flat() + tmp23 = n.flat_Union_sp_0() + StagedRegExp.setEq(tmp22, tmp23) + else false + fun flat() = + let {p1__, scrut4, p2__, scrut5, tmp9, tmp10} + scrut4 = p1 + if scrut4 is + Union then + tmp9 = p1.flat() + else + tmp9 = [p1] + p1__ = tmp9 + scrut5 = p2 + if scrut5 is + Union then + tmp10 = p2.flat() + else + tmp10 = [p2] + p2__ = tmp10 + StagedRegExp.concat(p1__, p2__) + fun iter(st, arr, i, s) = + let {scrut6, tmp11, tmp12, tmp13, tmp14} + tmp11 = s - i + scrut6 = ==(tmp11, s) + if scrut6 is + true then st + else + tmp12 = s - i + tmp13 = st.add(arr.(tmp12)) + tmp14 = i - 1 + iter(tmp13, arr, tmp14, s) + fun normalize() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = StagedRegExp.len(s2.arr) + tmp20 = StagedRegExp.len(s2.arr) + StagedRegExp.mkUnion(s2.arr, tmp19, tmp20) + fun startsWith(c) = + let {tmp24} + tmp24 = p1.startsWith(c) + if tmp24 is + false then p2.startsWith(c) + else true + private fun canBeEmpty_Union_sp_0() = false + private fun canBeEmpty_Union_sp_1() = false + private fun canBeEmpty_Union_sp_2() = true + private fun canBeEmpty_Union_sp_3() = true + private fun derive_Union_sp_0(c) = + let {tmp5, tmp6, tmp7} + tmp5 = p1.derive_Concat_sp_16(c) + tmp6 = p2.derive_Union_sp_1(c) + tmp7 = new StagedRegExp.Union.class(tmp5, tmp6) + tmp7.normalize_Union_sp_15() + private fun derive_Union_sp_1(c) = + let {tmp5, tmp6, tmp7} + tmp5 = p1.derive_Concat_sp_17(c) + tmp6 = p2.derive_Concat_sp_18(c) + tmp7 = new StagedRegExp.Union.class(tmp5, tmp6) + tmp7.normalize_Union_sp_15() + private fun derive_Union_sp_2(c) = + let {tmp5, tmp6, tmp7} + tmp5 = p1.derive_Exact_sp_1(c) + tmp6 = p2.derive_Empty_sp_0(c) + tmp7 = new StagedRegExp.Union.class(tmp5, tmp6) + tmp7.normalize_Union_sp_11() + private fun derive_Union_sp_3(c) = + let {tmp5, tmp6, tmp7} + tmp5 = p1.derive_In_sp_2(c) + tmp6 = p2.derive_Empty_sp_0(c) + tmp7 = new StagedRegExp.Union.class(tmp5, tmp6) + tmp7.normalize_Union_sp_11() + private fun flat_Union_sp_0() = + let {p1__, scrut4, p2__, scrut5, tmp9, tmp10} + scrut4 = p1 + if scrut4 is + Union then + tmp9 = p1.flat() + else + tmp9 = [p1] + p1__ = tmp9 + scrut5 = p2 + if scrut5 is + Union then + tmp10 = p2.flat() + else + tmp10 = [p2] + p2__ = tmp10 + StagedRegExp.concat(p1__, p2__) + private fun normalize_Union_sp_0() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_1() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_0() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_10() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_26() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_11() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + if p1 is + Empty then + p1__1 = p1.normalize_Empty_sp_0() + Nothing then + p1__1 = p1.normalize_Nothing_sp_0() + p2__1 = p2.normalize_Nothing_sp_0() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_12() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_33() + if p2 is + Empty then + p2__1 = p2.normalize_Empty_sp_0() + Nothing then + p2__1 = p2.normalize_Nothing_sp_0() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_13() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_34() + p2__1 = p2.normalize() + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_14() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_In_sp_5() + p2__1 = p2.normalize_Empty_sp_0() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_15() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_16() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_40() + p2__1 = p2.normalize_Union_sp_17() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = len_StagedRegExp_sp_0(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_17() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_41() + p2__1 = p2.normalize_Concat_sp_42() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = len_StagedRegExp_sp_0(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_18() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Exact_sp_7() + p2__1 = p2.normalize_Empty_sp_0() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_2() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_1() + if p2 is + Star then + p2__1 = p2.normalize_Star_sp_0() + Nothing then + p2__1 = p2.normalize_Nothing_sp_0() + Concat then + p2__1 = p2.normalize_Concat_sp_1() + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_3() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_8() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_4() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_9() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_5() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_10() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_6() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_12() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_7() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_23() + p2__1 = p2.normalize_Empty_sp_0() + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_8() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_24() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun normalize_Union_sp_9() = + let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + p1__1 = p1.normalize_Concat_sp_25() + p2__1 = p2.normalize() + if p1__1 is + Union then + tmp15 = p1__1.flat_Union_sp_0() + else + tmp15 = [p1__1] + arr11 = tmp15 + if p2__1 is + Union then + tmp16 = p2__1.flat_Union_sp_0() + else + tmp16 = [p2__1] + arr2 = tmp16 + tmp17 = new StagedRegExp.DedupSet(arr11) + tmp18 = StagedRegExp.len(arr2) + s2 = iter(tmp17, arr2, 0, tmp18) + tmp19 = len_StagedRegExp_sp_0(s2.arr) + tmp20 = len_StagedRegExp_sp_0(s2.arr) + mkUnion_StagedRegExp_sp_0(s2.arr, tmp19, tmp20) + private fun startsWith_Union_sp_0(c) = + let {tmp24} + tmp24 = p1.startsWith_Concat_sp_16(c) + if tmp24 is + false then p2.startsWith_Union_sp_1(c) + else true + private fun startsWith_Union_sp_1(c) = + let {tmp24} + tmp24 = p1.startsWith_Concat_sp_17(c) + if tmp24 is + false then p2.startsWith_Concat_sp_18(c) + else true + private fun startsWith_Union_sp_2(c) = + let {tmp24} + tmp24 = p1.startsWith_Exact_sp_1(c) + if tmp24 is + false then p2.startsWith_Empty_sp_0(c) + else true + private fun startsWith_Union_sp_3(c) = + let {tmp24} + tmp24 = p1.startsWith_In_sp_2(c) + if tmp24 is + false then p2.startsWith_Empty_sp_0(c) + else true + class In(val chars) extends RegExp() with + () + fun canBeEmpty() = false + fun derive(c) = + let {scrut7} + scrut7 = startsWith(c) + if scrut7 is + true then new StagedRegExp.Empty() + else new StagedRegExp.Nothing() + fun eq(other) = + let {chars__1, arg_In_0_} + if other is + In then + arg_In_0_ = other.chars + chars__1 = arg_In_0_ + StagedRegExp.arrEq(chars, chars__1) + else false + fun normalize() = In + fun startsWith(c) = StagedRegExp.has(chars, c) + private fun canBeEmpty_In_sp_0() = false + private fun canBeEmpty_In_sp_1() = false + private fun canBeEmpty_In_sp_2() = false + private fun derive_In_sp_0(c) = + let {scrut7} + scrut7 = startsWith(c) + if scrut7 is + true then new StagedRegExp.Empty() + else new StagedRegExp.Nothing() + private fun derive_In_sp_1(c) = + let {scrut7} + scrut7 = startsWith(c) + if scrut7 is + true then new StagedRegExp.Empty() + else new StagedRegExp.Nothing() + private fun derive_In_sp_2(c) = + let {scrut7} + scrut7 = startsWith(c) + if scrut7 is + true then new StagedRegExp.Empty() + else new StagedRegExp.Nothing() + private fun normalize_In_sp_0() = In + private fun normalize_In_sp_1() = In + private fun normalize_In_sp_2() = In + private fun normalize_In_sp_3() = In + private fun normalize_In_sp_4() = In + private fun normalize_In_sp_5() = In + private fun startsWith_In_sp_0(c) = has_StagedRegExp_sp_0(chars, c) + private fun startsWith_In_sp_1(c) = has_StagedRegExp_sp_1(chars, c) + private fun startsWith_In_sp_2(c) = has_StagedRegExp_sp_2(chars, c) + class Concat(val p1, val p2) extends RegExp() with + () + fun canBeEmpty() = + let {scrut9, scrut10} + scrut9 = p1.canBeEmpty() + if scrut9 is + true then + scrut10 = p2.canBeEmpty() + if scrut10 is + true then true + else false + else false + fun derive(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive(c) + scrut8 = p1.canBeEmpty() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + tmp26 = p2.derive(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_1() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_0() + fun eq(other) = + let {p2__2, p1__4, scrut11, scrut12, arg_Concat_0_, arg_Concat_1_} + if other is + Concat then + arg_Concat_0_ = other.p1 + arg_Concat_1_ = other.p2 + p2__2 = arg_Concat_1_ + p1__4 = arg_Concat_0_ + scrut11 = p1.eq(p1__4) + if scrut11 is + true then + scrut12 = p2.eq(p2__2) + if scrut12 is + true then true + else false + else false + else false + fun normalize() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize() + Nothing then p1__3 + else + tmp29 = p2.normalize() + new StagedRegExp.Concat.class(p1__3, tmp29) + fun startsWith(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty() + if scrut13 is + true then + scrut14 = p2.startsWith(c) + if scrut14 is + true then true + else false + else false + else true + private fun canBeEmpty_Concat_sp_0() = false + private fun canBeEmpty_Concat_sp_1() = false + private fun canBeEmpty_Concat_sp_10() = + let {scrut9, scrut10} + scrut9 = p1.canBeEmpty_Concat_sp_11() + if scrut9 is + true then + scrut10 = p2.canBeEmpty() + if scrut10 is + true then true + else false + else false + private fun canBeEmpty_Concat_sp_11() = + let {scrut9, scrut10} + if p1 is + Star then + scrut9 = p1.canBeEmpty_Star_sp_0() + Concat then + scrut9 = p1.canBeEmpty_Concat_sp_3() + if scrut9 is + true then + if p2 is + Star then + scrut10 = p2.canBeEmpty_Star_sp_0() + Nothing then + scrut10 = p2.canBeEmpty_Nothing_sp_0() + Concat then + scrut10 = p2.canBeEmpty_Concat_sp_3() + if scrut10 is + true then true + else false + else false + private fun canBeEmpty_Concat_sp_12() = + let {scrut9, scrut10} + scrut9 = p1.canBeEmpty() + if scrut9 is + true then + if p2 is + Nothing then + scrut10 = p2.canBeEmpty_Nothing_sp_0() + Concat then + scrut10 = p2.canBeEmpty_Concat_sp_10() + if scrut10 is + true then true + else false + else false + private fun canBeEmpty_Concat_sp_13() = false + private fun canBeEmpty_Concat_sp_14() = false + private fun canBeEmpty_Concat_sp_15() = false + private fun canBeEmpty_Concat_sp_16() = false + private fun canBeEmpty_Concat_sp_17() = false + private fun canBeEmpty_Concat_sp_18() = false + private fun canBeEmpty_Concat_sp_19() = false + private fun canBeEmpty_Concat_sp_2() = + let {scrut9, scrut10} + if p1 is + Star then + scrut9 = p1.canBeEmpty_Star_sp_0() + Concat then + scrut9 = p1.canBeEmpty_Concat_sp_3() + if scrut9 is + true then + if p2 is + Star then + scrut10 = p2.canBeEmpty_Star_sp_0() + Nothing then + scrut10 = p2.canBeEmpty_Nothing_sp_0() + Concat then + scrut10 = p2.canBeEmpty_Concat_sp_3() + Concat then + scrut10 = p2.canBeEmpty_Concat_sp_4() + if scrut10 is + true then true + else false + else false + private fun canBeEmpty_Concat_sp_20() = + let {scrut9, scrut10} + scrut9 = p1.canBeEmpty() + if scrut9 is + true then + scrut10 = p2.canBeEmpty() + if scrut10 is + true then true + else false + else false + private fun canBeEmpty_Concat_sp_3() = + let {scrut9, scrut10} + scrut9 = p1.canBeEmpty() + if scrut9 is + true then + scrut10 = p2.canBeEmpty_Star_sp_0() + true + else false + private fun canBeEmpty_Concat_sp_4() = + let {scrut9, scrut10} + scrut9 = p1.canBeEmpty() + if scrut9 is + true then + if p2 is + Star then + scrut10 = p2.canBeEmpty_Star_sp_0() + Nothing then + scrut10 = p2.canBeEmpty_Nothing_sp_0() + Concat then + scrut10 = p2.canBeEmpty_Concat_sp_3() + if scrut10 is + true then true + else false + else false + private fun canBeEmpty_Concat_sp_5() = + let {scrut9, scrut10} + scrut9 = p1.canBeEmpty() + if scrut9 is + true then + if p2 is + Nothing then + scrut10 = p2.canBeEmpty_Nothing_sp_0() + Concat then + scrut10 = p2.canBeEmpty_Concat_sp_2() + if scrut10 is + true then true + else false + else false + private fun canBeEmpty_Concat_sp_6() = + let {scrut9, scrut10} + scrut9 = p1.canBeEmpty() + if scrut9 is + true then + if p2 is + Nothing then + scrut10 = p2.canBeEmpty_Nothing_sp_0() + Concat then + scrut10 = p2.canBeEmpty_Concat_sp_2() + Concat then + scrut10 = p2.canBeEmpty_Concat_sp_5() + if scrut10 is + true then true + else false + else false + private fun canBeEmpty_Concat_sp_7() = false + private fun canBeEmpty_Concat_sp_8() = false + private fun canBeEmpty_Concat_sp_9() = false + private fun derive_Concat_sp_0(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Concat_sp_1(c) + scrut8 = p1.canBeEmpty_Concat_sp_1() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_3() + private fun derive_Concat_sp_1(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_In_sp_0(c) + scrut8 = p1.canBeEmpty_In_sp_0() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_2() + private fun derive_Concat_sp_10(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Concat_sp_11(c) + scrut8 = p1.canBeEmpty_Concat_sp_11() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + tmp26 = p2.derive(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_9() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_25() + private fun derive_Concat_sp_11(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + if p1 is + Star then + p1__2 = p1.derive_Star_sp_0(c) + Concat then + p1__2 = p1.derive_Concat_sp_3(c) + if p1 is + Star then + scrut8 = p1.canBeEmpty_Star_sp_0() + Concat then + scrut8 = p1.canBeEmpty_Concat_sp_3() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + if p2 is + Star then + tmp26 = p2.derive_Star_sp_0(c) + Nothing then + tmp26 = p2.derive_Nothing_sp_0(c) + Concat then + tmp26 = p2.derive_Concat_sp_3(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_8() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_24() + private fun derive_Concat_sp_12(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive(c) + scrut8 = p1.canBeEmpty() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + if p2 is + Nothing then + tmp26 = p2.derive_Nothing_sp_0(c) + Concat then + tmp26 = p2.derive_Concat_sp_10(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_10() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_26() + private fun derive_Concat_sp_13(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Concat_sp_14(c) + scrut8 = p1.canBeEmpty_Concat_sp_14() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_43() + private fun derive_Concat_sp_14(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Concat_sp_15(c) + scrut8 = p1.canBeEmpty_Concat_sp_15() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_37() + private fun derive_Concat_sp_15(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Union_sp_0(c) + scrut8 = p1.canBeEmpty_Union_sp_0() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_36() + private fun derive_Concat_sp_16(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Exact_sp_0(c) + scrut8 = p1.canBeEmpty_Exact_sp_0() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_29() + private fun derive_Concat_sp_17(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Exact_sp_0(c) + scrut8 = p1.canBeEmpty_Exact_sp_0() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_31() + private fun derive_Concat_sp_18(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Union_sp_2(c) + scrut8 = p1.canBeEmpty_Union_sp_2() + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + tmp26 = p2.derive_Concat_sp_19(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_13() + private fun derive_Concat_sp_19(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Union_sp_3(c) + scrut8 = p1.canBeEmpty_Union_sp_3() + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + tmp26 = p2.derive_In_sp_2(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_12() + private fun derive_Concat_sp_2(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + if p1 is + Star then + p1__2 = p1.derive_Star_sp_0(c) + Concat then + p1__2 = p1.derive_Concat_sp_3(c) + if p1 is + Star then + scrut8 = p1.canBeEmpty_Star_sp_0() + Concat then + scrut8 = p1.canBeEmpty_Concat_sp_3() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + if p2 is + Star then + tmp26 = p2.derive_Star_sp_0(c) + Nothing then + tmp26 = p2.derive_Nothing_sp_0(c) + Concat then + tmp26 = p2.derive_Concat_sp_3(c) + Concat then + tmp26 = p2.derive_Concat_sp_4(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_4() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_9() + private fun derive_Concat_sp_20(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive(c) + scrut8 = p1.canBeEmpty() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + tmp26 = p2.derive(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_9() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_25() + private fun derive_Concat_sp_3(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive(c) + scrut8 = p1.canBeEmpty() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + tmp26 = p2.derive_Star_sp_0(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_2() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_1() + private fun derive_Concat_sp_4(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive(c) + scrut8 = p1.canBeEmpty() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + if p2 is + Star then + tmp26 = p2.derive_Star_sp_0(c) + Nothing then + tmp26 = p2.derive_Nothing_sp_0(c) + Concat then + tmp26 = p2.derive_Concat_sp_3(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_3() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_8() + private fun derive_Concat_sp_5(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive(c) + scrut8 = p1.canBeEmpty() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + if p2 is + Nothing then + tmp26 = p2.derive_Nothing_sp_0(c) + Concat then + tmp26 = p2.derive_Concat_sp_2(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_5() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_10() + private fun derive_Concat_sp_6(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive(c) + scrut8 = p1.canBeEmpty() + if scrut8 is + true then + tmp25 = new StagedRegExp.Concat.class(p1__2, p2) + if p2 is + Nothing then + tmp26 = p2.derive_Nothing_sp_0(c) + Concat then + tmp26 = p2.derive_Concat_sp_2(c) + Concat then + tmp26 = p2.derive_Concat_sp_5(c) + tmp27 = new StagedRegExp.Union(tmp25, tmp26) + tmp27.normalize_Union_sp_6() + else + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_12() + private fun derive_Concat_sp_7(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Concat_sp_8(c) + scrut8 = p1.canBeEmpty_Concat_sp_8() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_17() + private fun derive_Concat_sp_8(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_Concat_sp_9(c) + scrut8 = p1.canBeEmpty_Concat_sp_9() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_14() + private fun derive_Concat_sp_9(c) = + let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + p1__2 = p1.derive_In_sp_1(c) + scrut8 = p1.canBeEmpty_In_sp_1() + tmp28 = new StagedRegExp.Concat.class(p1__2, p2) + tmp28.normalize_Concat_sp_13() + private fun normalize_Concat_sp_0() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize() + Nothing then p1__3 + else + tmp29 = p2.normalize() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_1() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize_Star_sp_0() + Nothing then p1__3 + else + tmp29 = p2.normalize_Star_sp_0() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_10() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then + if p2 is + Nothing then p2.normalize_Nothing_sp_0() + Concat then p2.normalize_Concat_sp_11() + Nothing then p1__3 + else + if p2 is + Nothing then + tmp29 = p2.normalize_Nothing_sp_0() + Concat then + tmp29 = p2.normalize_Concat_sp_11() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_11() = + let {p1__3, tmp29} + if p1 is + Star then + p1__3 = p1.normalize_Star_sp_0() + Concat then + p1__3 = p1.normalize_Concat_sp_1() + if p1__3 is + Nothing then p1__3 + else + if p2 is + Star then + tmp29 = p2.normalize_Star_sp_0() + Nothing then + tmp29 = p2.normalize_Nothing_sp_0() + Concat then + tmp29 = p2.normalize_Concat_sp_1() + Concat then + tmp29 = p2.normalize_Concat_sp_8() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_12() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then + if p2 is + Nothing then p2.normalize_Nothing_sp_0() + Concat then p2.normalize_Concat_sp_11() + Concat then p2.normalize_Concat_sp_10() + Nothing then p1__3 + else + if p2 is + Nothing then + tmp29 = p2.normalize_Nothing_sp_0() + Concat then + tmp29 = p2.normalize_Concat_sp_11() + Concat then + tmp29 = p2.normalize_Concat_sp_10() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_13() = + let {p1__3, tmp29} + if p1 is + Empty then + p1__3 = p1.normalize_Empty_sp_0() + Nothing then + p1__3 = p1.normalize_Nothing_sp_0() + if p1__3 is + Empty then p2.normalize_Star_sp_2() + Nothing then p1__3 + else + tmp29 = p2.normalize_Star_sp_2() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_14() = + let {p1__3, tmp29} + if p1 is + Star then + p1__3 = p1.normalize_Star_sp_0() + Nothing then + p1__3 = p1.normalize_Nothing_sp_0() + Concat then + p1__3 = p1.normalize_Concat_sp_1() + if p1__3 is + Empty then p2.normalize_Concat_sp_15() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_15() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_15() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Exact_sp_2() + if p1__3 is + Empty then p2.normalize_Concat_sp_16() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_16() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_16() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Exact_sp_3() + if p1__3 is + Empty then p2.normalize_Exact_sp_3() + Nothing then p1__3 + else + tmp29 = p2.normalize_Exact_sp_3() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_17() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize_Concat_sp_18() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_18() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_18() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Concat_sp_19() + if p1__3 is + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_22() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_19() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Concat_sp_20() + if p1__3 is + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_21() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_2() = + let {p1__3, tmp29} + if p1 is + Empty then + p1__3 = p1.normalize_Empty_sp_0() + Nothing then + p1__3 = p1.normalize_Nothing_sp_0() + if p1__3 is + Empty then p2.normalize_Star_sp_1() + Nothing then p1__3 + else + tmp29 = p2.normalize_Star_sp_1() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_20() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Not_sp_0() + if p1__3 is + Empty then p2.normalize_Star_sp_3() + Nothing then p1__3 + else + tmp29 = p2.normalize_Star_sp_3() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_21() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Not_sp_1() + if p1__3 is + Empty then p2.normalize_Star_sp_4() + Nothing then p1__3 + else + tmp29 = p2.normalize_Star_sp_4() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_22() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Union_sp_7() + private fun normalize_Concat_sp_23() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Exact_sp_4() + if p1__3 is + Empty then p2.normalize_Star_sp_5() + Nothing then p1__3 + else + tmp29 = p2.normalize_Star_sp_5() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_24() = + let {p1__3, tmp29} + if p1 is + Star then + p1__3 = p1.normalize_Star_sp_0() + Nothing then + p1__3 = p1.normalize_Nothing_sp_0() + Concat then + p1__3 = p1.normalize_Concat_sp_1() + if p1__3 is + Empty then + if p2 is + Star then p2.normalize_Star_sp_0() + Nothing then p2.normalize_Nothing_sp_0() + Concat then p2.normalize_Concat_sp_1() + Nothing then p1__3 + else + if p2 is + Star then + tmp29 = p2.normalize_Star_sp_0() + Nothing then + tmp29 = p2.normalize_Nothing_sp_0() + Concat then + tmp29 = p2.normalize_Concat_sp_1() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_25() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize() + Nothing then p1__3 + else + tmp29 = p2.normalize() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_26() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then + if p2 is + Nothing then p2.normalize_Nothing_sp_0() + Concat then p2.normalize_Concat_sp_27() + Nothing then p1__3 + else + if p2 is + Nothing then + tmp29 = p2.normalize_Nothing_sp_0() + Concat then + tmp29 = p2.normalize_Concat_sp_27() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_27() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Concat_sp_28() + if p1__3 is + Nothing then p1__3 + else + tmp29 = p2.normalize() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_28() = + let {p1__3, tmp29} + if p1 is + Star then + p1__3 = p1.normalize_Star_sp_0() + Concat then + p1__3 = p1.normalize_Concat_sp_1() + if p1__3 is + Nothing then p1__3 + else + if p2 is + Star then + tmp29 = p2.normalize_Star_sp_0() + Nothing then + tmp29 = p2.normalize_Nothing_sp_0() + Concat then + tmp29 = p2.normalize_Concat_sp_1() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_29() = + let {p1__3, tmp29} + if p1 is + Empty then + p1__3 = p1.normalize_Empty_sp_0() + Nothing then + p1__3 = p1.normalize_Nothing_sp_0() + if p1__3 is + Empty then p2.normalize_Concat_sp_30() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_30() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_3() = + let {p1__3, tmp29} + if p1 is + Star then + p1__3 = p1.normalize_Star_sp_0() + Nothing then + p1__3 = p1.normalize_Nothing_sp_0() + Concat then + p1__3 = p1.normalize_Concat_sp_1() + if p1__3 is + Empty then p2.normalize_Concat_sp_4() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_4() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_30() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Exact_sp_5() + if p1__3 is + Empty then p2.normalize_In_sp_3() + Nothing then p1__3 + else + tmp29 = p2.normalize_In_sp_3() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_31() = + let {p1__3, tmp29} + if p1 is + Empty then + p1__3 = p1.normalize_Empty_sp_0() + Nothing then + p1__3 = p1.normalize_Nothing_sp_0() + if p1__3 is + Empty then p2.normalize_Concat_sp_32() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_32() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_32() = + let {p1__3, tmp29} + p1__3 = p1.normalize_In_sp_4() + if p1__3 is + Empty then p2.normalize_In_sp_5() + Nothing then p1__3 + else + tmp29 = p2.normalize_In_sp_5() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_33() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize_In_sp_5() + Nothing then p1__3 + else + tmp29 = p2.normalize_In_sp_5() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_34() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize_Concat_sp_35() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_35() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_35() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Union_sp_14() + private fun normalize_Concat_sp_36() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize_Exact_sp_1() + Nothing then p1__3 + else + tmp29 = p2.normalize_Exact_sp_1() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_37() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize_Concat_sp_38() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_38() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_38() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Concat_sp_39() + private fun normalize_Concat_sp_39() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Union_sp_16() + private fun normalize_Concat_sp_4() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Exact_sp_0() + if p1__3 is + Empty then p2.normalize_Concat_sp_5() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_5() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_40() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Exact_sp_6() + if p1__3 is + Empty then p2.normalize_Concat_sp_30() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_30() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_41() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Exact_sp_6() + if p1__3 is + Empty then p2.normalize_Concat_sp_32() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_32() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_42() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Union_sp_18() + private fun normalize_Concat_sp_43() = + let {p1__3, tmp29} + if p1 is + Nothing then + p1__3 = p1.normalize_Nothing_sp_0() + Concat then + p1__3 = p1.normalize_Concat_sp_25() + if p1__3 is + Empty then p2.normalize_Union_sp_16() + Nothing then p1__3 + else + tmp29 = p2.normalize_Union_sp_16() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_5() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Concat_sp_6() + if p1__3 is + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_7() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_6() = + let {p1__3, tmp29} + p1__3 = p1.normalize_In_sp_0() + if p1__3 is + Empty then p2.normalize_Star_sp_1() + Nothing then p1__3 + else + tmp29 = p2.normalize_Star_sp_1() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_7() = + let {p1__3, tmp29} + p1__3 = p1.normalize_Exact_sp_1() + if p1__3 is + Empty then p2.normalize_Concat_sp_6() + Nothing then p1__3 + else + tmp29 = p2.normalize_Concat_sp_6() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_8() = + let {p1__3, tmp29} + p1__3 = p1.normalize() + if p1__3 is + Empty then + if p2 is + Star then p2.normalize_Star_sp_0() + Nothing then p2.normalize_Nothing_sp_0() + Concat then p2.normalize_Concat_sp_1() + Nothing then p1__3 + else + if p2 is + Star then + tmp29 = p2.normalize_Star_sp_0() + Nothing then + tmp29 = p2.normalize_Nothing_sp_0() + Concat then + tmp29 = p2.normalize_Concat_sp_1() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun normalize_Concat_sp_9() = + let {p1__3, tmp29} + if p1 is + Star then + p1__3 = p1.normalize_Star_sp_0() + Nothing then + p1__3 = p1.normalize_Nothing_sp_0() + Concat then + p1__3 = p1.normalize_Concat_sp_1() + if p1__3 is + Empty then + if p2 is + Star then p2.normalize_Star_sp_0() + Nothing then p2.normalize_Nothing_sp_0() + Concat then p2.normalize_Concat_sp_1() + Concat then p2.normalize_Concat_sp_8() + Nothing then p1__3 + else + if p2 is + Star then + tmp29 = p2.normalize_Star_sp_0() + Nothing then + tmp29 = p2.normalize_Nothing_sp_0() + Concat then + tmp29 = p2.normalize_Concat_sp_1() + Concat then + tmp29 = p2.normalize_Concat_sp_8() + new StagedRegExp.Concat.class(p1__3, tmp29) + private fun startsWith_Concat_sp_0(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Concat_sp_1(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Concat_sp_1() + false + else true + private fun startsWith_Concat_sp_1(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_In_sp_0(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_In_sp_0() + false + else true + private fun startsWith_Concat_sp_10(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Concat_sp_11(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Concat_sp_11() + if scrut13 is + true then + scrut14 = p2.startsWith(c) + if scrut14 is + true then true + else false + else false + else true + private fun startsWith_Concat_sp_11(c) = + let {scrut13, scrut14, tmp30} + if p1 is + Star then + tmp30 = p1.startsWith_Star_sp_0(c) + Concat then + tmp30 = p1.startsWith_Concat_sp_3(c) + if tmp30 is + false then + if p1 is + Star then + scrut13 = p1.canBeEmpty_Star_sp_0() + Concat then + scrut13 = p1.canBeEmpty_Concat_sp_3() + if scrut13 is + true then + if p2 is + Star then + scrut14 = p2.startsWith_Star_sp_0(c) + Nothing then + scrut14 = p2.startsWith_Nothing_sp_0(c) + Concat then + scrut14 = p2.startsWith_Concat_sp_3(c) + if scrut14 is + true then true + else false + else false + else true + private fun startsWith_Concat_sp_12(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty() + if scrut13 is + true then + if p2 is + Nothing then + scrut14 = p2.startsWith_Nothing_sp_0(c) + Concat then + scrut14 = p2.startsWith_Concat_sp_10(c) + if scrut14 is + true then true + else false + else false + else true + private fun startsWith_Concat_sp_13(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Concat_sp_14(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Concat_sp_14() + false + else true + private fun startsWith_Concat_sp_14(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Concat_sp_15(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Concat_sp_15() + false + else true + private fun startsWith_Concat_sp_15(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Union_sp_0(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Union_sp_0() + false + else true + private fun startsWith_Concat_sp_16(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Exact_sp_0(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Exact_sp_0() + false + else true + private fun startsWith_Concat_sp_17(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Exact_sp_0(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Exact_sp_0() + false + else true + private fun startsWith_Concat_sp_18(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Union_sp_2(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Union_sp_2() + scrut14 = p2.startsWith_Concat_sp_19(c) + if scrut14 is + true then true + else false + else true + private fun startsWith_Concat_sp_19(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Union_sp_3(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Union_sp_3() + scrut14 = p2.startsWith_In_sp_2(c) + if scrut14 is + true then true + else false + else true + private fun startsWith_Concat_sp_2(c) = + let {scrut13, scrut14, tmp30} + if p1 is + Star then + tmp30 = p1.startsWith_Star_sp_0(c) + Concat then + tmp30 = p1.startsWith_Concat_sp_3(c) + if tmp30 is + false then + if p1 is + Star then + scrut13 = p1.canBeEmpty_Star_sp_0() + Concat then + scrut13 = p1.canBeEmpty_Concat_sp_3() + if scrut13 is + true then + if p2 is + Star then + scrut14 = p2.startsWith_Star_sp_0(c) + Nothing then + scrut14 = p2.startsWith_Nothing_sp_0(c) + Concat then + scrut14 = p2.startsWith_Concat_sp_3(c) + Concat then + scrut14 = p2.startsWith_Concat_sp_4(c) + if scrut14 is + true then true + else false + else false + else true + private fun startsWith_Concat_sp_20(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty() + if scrut13 is + true then + scrut14 = p2.startsWith(c) + if scrut14 is + true then true + else false + else false + else true + private fun startsWith_Concat_sp_3(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty() + if scrut13 is + true then + scrut14 = p2.startsWith_Star_sp_0(c) + if scrut14 is + true then true + else false + else false + else true + private fun startsWith_Concat_sp_4(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty() + if scrut13 is + true then + if p2 is + Star then + scrut14 = p2.startsWith_Star_sp_0(c) + Nothing then + scrut14 = p2.startsWith_Nothing_sp_0(c) + Concat then + scrut14 = p2.startsWith_Concat_sp_3(c) + if scrut14 is + true then true + else false + else false + else true + private fun startsWith_Concat_sp_5(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty() + if scrut13 is + true then + if p2 is + Nothing then + scrut14 = p2.startsWith_Nothing_sp_0(c) + Concat then + scrut14 = p2.startsWith_Concat_sp_2(c) + if scrut14 is + true then true + else false + else false + else true + private fun startsWith_Concat_sp_6(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty() + if scrut13 is + true then + if p2 is + Nothing then + scrut14 = p2.startsWith_Nothing_sp_0(c) + Concat then + scrut14 = p2.startsWith_Concat_sp_2(c) + Concat then + scrut14 = p2.startsWith_Concat_sp_5(c) + if scrut14 is + true then true + else false + else false + else true + private fun startsWith_Concat_sp_7(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Concat_sp_8(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Concat_sp_8() + false + else true + private fun startsWith_Concat_sp_8(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_Concat_sp_9(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_Concat_sp_9() + false + else true + private fun startsWith_Concat_sp_9(c) = + let {scrut13, scrut14, tmp30} + tmp30 = p1.startsWith_In_sp_1(c) + if tmp30 is + false then + scrut13 = p1.canBeEmpty_In_sp_1() + false + else true + class Star(val p) extends RegExp() with + () + fun canBeEmpty() = true + fun derive(c) = + let {tmp31, tmp32, tmp33} + tmp31 = p.derive(c) + tmp32 = new StagedRegExp.Star.class(p) + tmp33 = new StagedRegExp.Concat(tmp31, tmp32) + tmp33.normalize_Concat_sp_1() + fun eq(other) = + let {p__, arg_Star_0_} + if other is + Star then + arg_Star_0_ = other.p + p__ = arg_Star_0_ + p.eq(p__) + else false + fun normalize() = + let {tmp34} + tmp34 = p.normalize() + new StagedRegExp.Star.class(tmp34) + fun startsWith(c) = p.startsWith(c) + private fun canBeEmpty_Star_sp_0() = true + private fun derive_Star_sp_0(c) = + let {tmp31, tmp32, tmp33} + tmp31 = p.derive(c) + tmp32 = new StagedRegExp.Star.class(p) + tmp33 = new StagedRegExp.Concat(tmp31, tmp32) + tmp33.normalize_Concat_sp_1() + private fun normalize_Star_sp_0() = + let {tmp34} + tmp34 = p.normalize() + new StagedRegExp.Star.class(tmp34) + private fun normalize_Star_sp_1() = + let {tmp34} + tmp34 = p.normalize_In_sp_0() + new StagedRegExp.Star.class(tmp34) + private fun normalize_Star_sp_2() = + let {tmp34} + tmp34 = p.normalize_In_sp_1() + new StagedRegExp.Star.class(tmp34) + private fun normalize_Star_sp_3() = + let {tmp34} + tmp34 = p.normalize_Not_sp_0() + new StagedRegExp.Star.class(tmp34) + private fun normalize_Star_sp_4() = + let {tmp34} + tmp34 = p.normalize_Not_sp_1() + new StagedRegExp.Star.class(tmp34) + private fun normalize_Star_sp_5() = + let {tmp34} + tmp34 = p.normalize_In_sp_2() + new StagedRegExp.Star.class(tmp34) + private fun startsWith_Star_sp_0(c) = p.startsWith(c) + fun arrEq(arr1, arr2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".eq(arr1, arr2) + fun concat(lhs, rhs) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".concat(lhs, rhs) + fun digits() = + let {tmp46, tup_8} + tup_8 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + tmp46 = tup_8 + new In(tmp46) + fun has(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) + fun len(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) + fun match(p, s) = matchImpl_StagedRegExp_sp_0(p, s, "") + fun matchAll(p, s) = + let {tmp61} + tmp61 = [] + matchAllImpl_StagedRegExp_sp_0(p, s, tmp61) + fun matchAllEmail(s) = + let {p7, email, tmp62, tmp63, tmp64, tmp65, tmp66, tmp67, tmp68, tmp69, tmp70, tup_9, tup_10} + tup_9 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp62 = tup_9 + tmp63 = ["-", "."] + tup_10 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] + tmp64 = tup_10 + tmp65 = new In(tmp64) + p7 = plus_StagedRegExp_sp_0(tmp65) + tmp66 = new Exact("@") + tmp67 = new Exact(".") + tmp68 = new Concat(tmp67, p7) + tmp69 = new Concat(p7, tmp68) + tmp70 = new Concat(tmp66, tmp69) + email = new Concat(p7, tmp70) + matchAll_StagedRegExp_sp_0(email, s) + fun matchAllIPv4(s) = + let {fo, fi, segment, ipv4, tmp97, tmp98, tmp99, tmp100, tmp101, tmp102, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112, tmp113, tmp114, tmp115, tmp116, tmp117} + tmp97 = ["0", "1", "2", "3", "4"] + fo = new In(tmp97) + tmp98 = ["0", "1", "2", "3", "4", "5"] + fi = new In(tmp98) + tmp99 = new Exact("2") + tmp100 = new Exact("5") + tmp101 = new Concat(tmp100, fi) + tmp102 = new Concat(tmp99, tmp101) + tmp103 = new Exact("2") + tmp104 = digits() + tmp105 = new Concat(fo, tmp104) + tmp106 = new Concat(tmp103, tmp105) + tmp107 = new Exact("1") + tmp108 = question_StagedRegExp_sp_2(tmp107) + tmp109 = digits() + tmp110 = question_StagedRegExp_sp_3(tmp109) + tmp111 = digits() + tmp112 = new Concat(tmp110, tmp111) + tmp113 = new Concat(tmp108, tmp112) + tmp114 = new Union(tmp106, tmp113) + segment = new Union(tmp102, tmp114) + tmp115 = new Exact(".") + tmp116 = new Concat(segment, tmp115) + tmp117 = nTimes_StagedRegExp_sp_0(tmp116, 3) + ipv4 = new Concat(tmp117, segment) + matchAll_StagedRegExp_sp_2(ipv4, s) + fun matchAllImpl(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} + tmp54 = len(s) + scrut22 = ==(tmp54, 0) + if scrut22 is + true then res + else + scrut23 = match(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp55 = len(ss) + scrut24 = >(tmp55, 0) + if scrut24 is + true then + tmp56 = len(ss) + tmp57 = s.slice(tmp56) + tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl(p, tmp57, tmp58) + else + tmp59 = s.slice(1) + matchAllImpl(p, tmp59, res) + else + tmp60 = s.slice(1) + matchAllImpl(p, tmp60, res) + fun matchAllURI(s) = + let {n1, n2, n3, w, d, p8, head, body, params, uri, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tup_11, tup_12, tup_13, tup_14} + tmp71 = ["/", "?", "#", " ", "\n", "\t", "\r"] + n1 = new Not(tmp71) + tmp72 = ["?", "#", " ", "\n", "\t", "\r"] + n2 = new Not(tmp72) + tmp73 = ["#", " ", "\n", "\t", "\r"] + n3 = new Not(tmp73) + w = words() + d = digits() + tup_11 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp74 = tup_11 + tup_12 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + tmp75 = tup_12 + tmp76 = ["-", "_"] + tup_13 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] + tmp77 = tup_13 + tup_14 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] + p8 = tup_14 + tmp78 = plus_StagedRegExp_sp_1(w) + tmp79 = new Exact(":") + tmp80 = new Exact("/") + tmp81 = new Exact("/") + tmp82 = new Concat(tmp80, tmp81) + tmp83 = new Concat(tmp79, tmp82) + head = new Concat(tmp78, tmp83) + tmp84 = plus_StagedRegExp_sp_2(n1) + tmp85 = plus_StagedRegExp_sp_3(n2) + body = new Concat(tmp84, tmp85) + tmp86 = new Exact("?") + tmp87 = new In(p8) + tmp88 = new Star(tmp87) + tmp89 = new Concat(tmp86, tmp88) + tmp90 = question_StagedRegExp_sp_0(tmp89) + tmp91 = new Exact("#") + tmp92 = new In(p8) + tmp93 = new Star(tmp92) + tmp94 = new Concat(tmp91, tmp93) + tmp95 = question_StagedRegExp_sp_1(tmp94) + params = new Concat(tmp90, tmp95) + tmp96 = new Concat(body, params) + uri = new Concat(head, tmp96) + matchAll_StagedRegExp_sp_1(uri, s) + fun matchImpl(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} + tmp50 = len(s) + scrut18 = ==(tmp50, 0) + if scrut18 is + true then + scrut19 = p.canBeEmpty() + if scrut19 is + true then new Some(acc) + else new None() + else + if p is + Nothing then new None() + else + c18 = s.0 + scrut20 = p.startsWith(c18) + if scrut20 is + true then + tmp51 = p.derive(c18) + tmp52 = s.slice(1) + tmp53 = acc + c18 + matchImpl(tmp51, tmp52, tmp53) + else + scrut21 = p.canBeEmpty() + if scrut21 is + true then new Some(acc) + else new None() + fun mkUnion(arr, i, s) = + let {scrut15, scrut16, tmp38, tmp39, tmp40, tmp41, tmp42} + tmp38 = s - i + tmp39 = s - 1 + scrut15 = ==(tmp38, tmp39) + if scrut15 is + true then arr.(i) + else + scrut16 = arr.(i) + if scrut16 is + Nothing then + tmp40 = i - 1 + mkUnion(arr, tmp40, s) + else + tmp41 = i - 1 + tmp42 = mkUnion(arr, tmp41, s) + new Union(arr.(i), tmp42) + fun nTimes(r, i) = + let {scrut17, tmp47, tmp48} + scrut17 = ==(i, 1) + if scrut17 is + true then r + else + tmp47 = i - 1 + tmp48 = nTimes(r, tmp47) + new Concat(r, tmp48) + fun notDigit() = + let {tmp37, tup_5} + tup_5 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + tmp37 = tup_5 + new Not(tmp37) + fun notSpace() = + let {tmp36, tup_4} + tup_4 = [" ", "\n", "\t", "\r"] + tmp36 = tup_4 + new Not(tmp36) + fun notWord() = + let {tmp35, tup_3} + tup_3 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp35 = tup_3 + new Not(tmp35) + fun plus(r) = + let {tmp49} + tmp49 = new Star(r) + new Concat(r, tmp49) + fun push(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(arr, ele) + fun question(r) = + let {tmp43} + tmp43 = new Empty() + new Union(r, tmp43) + fun setEq(s1, s2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".setEq(s1, s2) + fun spaces() = + let {tmp45, tup_7} + tup_7 = [" ", "\n", "\t", "\r"] + tmp45 = tup_7 + new In(tmp45) + fun words() = + let {tmp44, tup_6} + tup_6 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp44 = tup_6 + new In(tmp44) + private fun has_StagedRegExp_sp_0(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) + private fun has_StagedRegExp_sp_1(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) + private fun has_StagedRegExp_sp_2(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) + private fun len_StagedRegExp_sp_0(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) + private fun matchAllImpl_StagedRegExp_sp_0(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} + tmp54 = len(s) + scrut22 = ==(tmp54, 0) + if scrut22 is + true then res + else + scrut23 = match(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp55 = len(ss) + scrut24 = >(tmp55, 0) + if scrut24 is + true then + tmp56 = len(ss) + tmp57 = s.slice(tmp56) + tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl(p, tmp57, tmp58) + else + tmp59 = s.slice(1) + matchAllImpl_StagedRegExp_sp_0(p, tmp59, res) + else + tmp60 = s.slice(1) + matchAllImpl_StagedRegExp_sp_0(p, tmp60, res) + private fun matchAllImpl_StagedRegExp_sp_1(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} + tmp54 = len(s) + scrut22 = ==(tmp54, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_0(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp55 = len(ss) + scrut24 = >(tmp55, 0) + if scrut24 is + true then + tmp56 = len(ss) + tmp57 = s.slice(tmp56) + tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_2(p, tmp57, tmp58) + else + tmp59 = s.slice(1) + matchAllImpl_StagedRegExp_sp_1(p, tmp59, res) + else + tmp60 = s.slice(1) + matchAllImpl_StagedRegExp_sp_1(p, tmp60, res) + private fun matchAllImpl_StagedRegExp_sp_2(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} + tmp54 = len(s) + scrut22 = ==(tmp54, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_0(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp55 = len(ss) + scrut24 = >(tmp55, 0) + if scrut24 is + true then + tmp56 = len(ss) + tmp57 = s.slice(tmp56) + tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_2(p, tmp57, tmp58) + else + tmp59 = s.slice(1) + matchAllImpl_StagedRegExp_sp_2(p, tmp59, res) + else + tmp60 = s.slice(1) + matchAllImpl_StagedRegExp_sp_2(p, tmp60, res) + private fun matchAllImpl_StagedRegExp_sp_3(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} + tmp54 = len(s) + scrut22 = ==(tmp54, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_1(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp55 = len(ss) + scrut24 = >(tmp55, 0) + if scrut24 is + true then + tmp56 = len(ss) + tmp57 = s.slice(tmp56) + tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_4(p, tmp57, tmp58) + else + tmp59 = s.slice(1) + matchAllImpl_StagedRegExp_sp_3(p, tmp59, res) + else + tmp60 = s.slice(1) + matchAllImpl_StagedRegExp_sp_3(p, tmp60, res) + private fun matchAllImpl_StagedRegExp_sp_4(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} + tmp54 = len(s) + scrut22 = ==(tmp54, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_1(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp55 = len(ss) + scrut24 = >(tmp55, 0) + if scrut24 is + true then + tmp56 = len(ss) + tmp57 = s.slice(tmp56) + tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_4(p, tmp57, tmp58) + else + tmp59 = s.slice(1) + matchAllImpl_StagedRegExp_sp_4(p, tmp59, res) + else + tmp60 = s.slice(1) + matchAllImpl_StagedRegExp_sp_4(p, tmp60, res) + private fun matchAllImpl_StagedRegExp_sp_5(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} + tmp54 = len(s) + scrut22 = ==(tmp54, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_2(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp55 = len(ss) + scrut24 = >(tmp55, 0) + if scrut24 is + true then + tmp56 = len(ss) + tmp57 = s.slice(tmp56) + tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_6(p, tmp57, tmp58) + else + tmp59 = s.slice(1) + matchAllImpl_StagedRegExp_sp_5(p, tmp59, res) + else + tmp60 = s.slice(1) + matchAllImpl_StagedRegExp_sp_5(p, tmp60, res) + private fun matchAllImpl_StagedRegExp_sp_6(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} + tmp54 = len(s) + scrut22 = ==(tmp54, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_2(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp55 = len(ss) + scrut24 = >(tmp55, 0) + if scrut24 is + true then + tmp56 = len(ss) + tmp57 = s.slice(tmp56) + tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_6(p, tmp57, tmp58) + else + tmp59 = s.slice(1) + matchAllImpl_StagedRegExp_sp_6(p, tmp59, res) + else + tmp60 = s.slice(1) + matchAllImpl_StagedRegExp_sp_6(p, tmp60, res) + private fun matchAll_StagedRegExp_sp_0(p, s) = + let {tmp61} + tmp61 = [] + matchAllImpl_StagedRegExp_sp_1(p, s, tmp61) + private fun matchAll_StagedRegExp_sp_1(p, s) = + let {tmp61} + tmp61 = [] + matchAllImpl_StagedRegExp_sp_3(p, s, tmp61) + private fun matchAll_StagedRegExp_sp_2(p, s) = + let {tmp61} + tmp61 = [] + matchAllImpl_StagedRegExp_sp_5(p, s, tmp61) + private fun matchImpl_StagedRegExp_sp_0(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} + tmp50 = len(s) + scrut18 = ==(tmp50, 0) + if scrut18 is + true then + scrut19 = p.canBeEmpty() + if scrut19 is + true then new Some(acc) + else new None() + else + if p is + Nothing then new None() + else + c18 = s.0 + scrut20 = p.startsWith(c18) + if scrut20 is + true then + tmp51 = p.derive(c18) + tmp52 = s.slice(1) + tmp53 = "" + c18 + matchImpl(tmp51, tmp52, tmp53) + else + scrut21 = p.canBeEmpty() + if scrut21 is + true then new Some(acc) + else new None() + private fun matchImpl_StagedRegExp_sp_1(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} + tmp50 = len(s) + scrut18 = ==(tmp50, 0) + if scrut18 is + true then + scrut19 = p.canBeEmpty_Concat_sp_0() + new None() + else + c18 = s.0 + scrut20 = p.startsWith_Concat_sp_0(c18) + if scrut20 is + true then + tmp51 = p.derive_Concat_sp_0(c18) + tmp52 = s.slice(1) + tmp53 = "" + c18 + matchImpl_StagedRegExp_sp_2(tmp51, tmp52, tmp53) + else + scrut21 = p.canBeEmpty_Concat_sp_0() + new None() + private fun matchImpl_StagedRegExp_sp_2(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} + tmp50 = len(s) + scrut18 = ==(tmp50, 0) + if scrut18 is + true then + if p is + Nothing then + scrut19 = p.canBeEmpty_Nothing_sp_0() + Concat then + scrut19 = p.canBeEmpty_Concat_sp_2() + Concat then + scrut19 = p.canBeEmpty_Concat_sp_5() + Concat then + scrut19 = p.canBeEmpty_Concat_sp_6() + if scrut19 is + true then new Some(acc) + else new None() + else + if p is + Nothing then new None() + else + c18 = s.0 + if p is + Concat then + scrut20 = p.startsWith_Concat_sp_2(c18) + Concat then + scrut20 = p.startsWith_Concat_sp_5(c18) + Concat then + scrut20 = p.startsWith_Concat_sp_6(c18) + if scrut20 is + true then + if p is + Concat then + tmp51 = p.derive_Concat_sp_2(c18) + Concat then + tmp51 = p.derive_Concat_sp_5(c18) + Concat then + tmp51 = p.derive_Concat_sp_6(c18) + tmp52 = s.slice(1) + tmp53 = acc + c18 + matchImpl(tmp51, tmp52, tmp53) + else + if p is + Concat then + scrut21 = p.canBeEmpty_Concat_sp_2() + Concat then + scrut21 = p.canBeEmpty_Concat_sp_5() + Concat then + scrut21 = p.canBeEmpty_Concat_sp_6() + if scrut21 is + true then new Some(acc) + else new None() + private fun matchImpl_StagedRegExp_sp_3(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} + tmp50 = len(s) + scrut18 = ==(tmp50, 0) + if scrut18 is + true then + scrut19 = p.canBeEmpty_Concat_sp_7() + new None() + else + c18 = s.0 + scrut20 = p.startsWith_Concat_sp_7(c18) + if scrut20 is + true then + tmp51 = p.derive_Concat_sp_7(c18) + tmp52 = s.slice(1) + tmp53 = "" + c18 + matchImpl_StagedRegExp_sp_4(tmp51, tmp52, tmp53) + else + scrut21 = p.canBeEmpty_Concat_sp_7() + new None() + private fun matchImpl_StagedRegExp_sp_4(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} + tmp50 = len(s) + scrut18 = ==(tmp50, 0) + if scrut18 is + true then + if p is + Nothing then + scrut19 = p.canBeEmpty_Nothing_sp_0() + Concat then + scrut19 = p.canBeEmpty_Concat_sp_10() + Concat then + scrut19 = p.canBeEmpty_Concat_sp_12() + if scrut19 is + true then new Some(acc) + else new None() + else + if p is + Nothing then new None() + else + c18 = s.0 + if p is + Concat then + scrut20 = p.startsWith_Concat_sp_10(c18) + Concat then + scrut20 = p.startsWith_Concat_sp_12(c18) + if scrut20 is + true then + if p is + Concat then + tmp51 = p.derive_Concat_sp_10(c18) + Concat then + tmp51 = p.derive_Concat_sp_12(c18) + tmp52 = s.slice(1) + tmp53 = acc + c18 + matchImpl(tmp51, tmp52, tmp53) + else + if p is + Concat then + scrut21 = p.canBeEmpty_Concat_sp_10() + Concat then + scrut21 = p.canBeEmpty_Concat_sp_12() + if scrut21 is + true then new Some(acc) + else new None() + private fun matchImpl_StagedRegExp_sp_5(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} + tmp50 = len(s) + scrut18 = ==(tmp50, 0) + if scrut18 is + true then + scrut19 = p.canBeEmpty_Concat_sp_13() + new None() + else + c18 = s.0 + scrut20 = p.startsWith_Concat_sp_13(c18) + if scrut20 is + true then + tmp51 = p.derive_Concat_sp_13(c18) + tmp52 = s.slice(1) + tmp53 = "" + c18 + matchImpl_StagedRegExp_sp_6(tmp51, tmp52, tmp53) + else + scrut21 = p.canBeEmpty_Concat_sp_13() + new None() + private fun matchImpl_StagedRegExp_sp_6(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} + tmp50 = len(s) + scrut18 = ==(tmp50, 0) + if scrut18 is + true then + if p is + Nothing then + scrut19 = p.canBeEmpty_Nothing_sp_0() + Concat then + scrut19 = p.canBeEmpty_Concat_sp_20() + if scrut19 is + true then new Some(acc) + else new None() + else + if p is + Nothing then new None() + else + c18 = s.0 + scrut20 = p.startsWith_Concat_sp_20(c18) + if scrut20 is + true then + tmp51 = p.derive_Concat_sp_20(c18) + tmp52 = s.slice(1) + tmp53 = acc + c18 + matchImpl(tmp51, tmp52, tmp53) + else + scrut21 = p.canBeEmpty_Concat_sp_20() + if scrut21 is + true then new Some(acc) + else new None() + private fun match_StagedRegExp_sp_0(p, s) = matchImpl_StagedRegExp_sp_1(p, s, "") + private fun match_StagedRegExp_sp_1(p, s) = matchImpl_StagedRegExp_sp_3(p, s, "") + private fun match_StagedRegExp_sp_2(p, s) = matchImpl_StagedRegExp_sp_5(p, s, "") + private fun mkUnion_StagedRegExp_sp_0(arr, i, s) = + let {scrut15, scrut16, tmp38, tmp39, tmp40, tmp41, tmp42} + tmp38 = s - i + tmp39 = s - 1 + scrut15 = ==(tmp38, tmp39) + if scrut15 is + true then arr.(i) + else + scrut16 = arr.(i) + private fun nTimes_StagedRegExp_sp_0(r, i) = + let {scrut17, tmp47, tmp48} + scrut17 = false + tmp47 = 2 + tmp48 = nTimes_StagedRegExp_sp_1(r, tmp47) + new Concat(r, tmp48) + private fun nTimes_StagedRegExp_sp_1(r, i) = + let {scrut17, tmp47, tmp48} + scrut17 = false + tmp47 = 1 + tmp48 = nTimes_StagedRegExp_sp_2(r, tmp47) + new Concat(r, tmp48) + private fun nTimes_StagedRegExp_sp_2(r, i) = + let {scrut17, tmp47, tmp48} + scrut17 = true + r + private fun plus_StagedRegExp_sp_0(r) = + let {tmp49} + tmp49 = new Star(r) + new Concat(r, tmp49) + private fun plus_StagedRegExp_sp_1(r) = + let {tmp49} + tmp49 = new Star(r) + new Concat(r, tmp49) + private fun plus_StagedRegExp_sp_2(r) = + let {tmp49} + tmp49 = new Star(r) + new Concat(r, tmp49) + private fun plus_StagedRegExp_sp_3(r) = + let {tmp49} + tmp49 = new Star(r) + new Concat(r, tmp49) + private fun question_StagedRegExp_sp_0(r) = + let {tmp43} + tmp43 = new Empty() + new Union(r, tmp43) + private fun question_StagedRegExp_sp_1(r) = + let {tmp43} + tmp43 = new Empty() + new Union(r, tmp43) + private fun question_StagedRegExp_sp_2(r) = + let {tmp43} + tmp43 = new Empty() + new Union(r, tmp43) + private fun question_StagedRegExp_sp_3(r) = + let {tmp43} + tmp43 = new Empty() + new Union(r, tmp43) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls index 48a6ceecec..edf7328700 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls @@ -6,509 +6,125 @@ import "../../mlscript-compile/staging/StagedRegExp.mls" StagedRegExp."generate"("../StagedRegExp.mls", "./hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] RangeError: Maximum call stack size exceeded -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:582:56) -//│ at SpecializeHelpers.prop (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2731:30) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:1046:46) -//│ at SpecializeHelpers.prop (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2731:30) -//│ at SpecializeHelpers.specialize (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:3044:35) -//│ at mkUnion_gen (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mjs:10964:30) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:736:49) -//│ at SpecializeHelpers.sor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2507:30) -//│ at SpecializeHelpers.sorInstantiate_sorCall_sor_prop_specializeCtor (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:917:58) -//│ at SpecializeHelpers.prop (file:///home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mjs:2731:30) import "../../mlscript-compile/staging/out/StagedRegExp.mls" -//│ FAILURE: Unexpected exception -//│ /!!!\ Uncaught error: java.nio.file.NoSuchFileException: /home/neilkleistgao/mlscript/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls -//│ at: java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) -//│ at: java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106) -//│ at: java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) -//│ at: java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55) -//│ at: java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:171) -//│ at: java.base/sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99) -//│ at: java.base/java.nio.file.Files.readAttributes(Files.java:1854) -//│ at: java.base/java.nio.file.Files.getLastModifiedTime(Files.java:2397) -//│ at: os.mtime$.apply(StatOps.scala:61) -//│ at: hkmc2.io.JavaFileSystem.getLastChangedTimestamp(PlatformFileSystem.scala:13) open StagedRegExp match(Exact("x"), "x") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL23:1:109 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = Some("x") match(Exact("x"), "x") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL26:1:111 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = Some("x") match(Exact("x"), "") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL29:1:111 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = None match(Exact("x"), "xyz") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL32:1:111 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = Some("x") match(Any(), "x") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL35:1:106 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = Some("x") match(Any(), "") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL38:1:106 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = None match(Any(), "xyz") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL41:1:107 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = Some("x") match(Not(["x", "y", "z"]), "xyz") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL44:1:175 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = None match(Not(["x", "y", "z"]), "w") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL47:1:177 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ = Some("w") +:fixme this generation should be fixed in another branch match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "z") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL50:1:368 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: this.p1.normalize is not a function +:fixme this generation should be fixed in another branch match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "y") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL53:1:368 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ ═══[RUNTIME ERROR] TypeError: this.p1.normalize is not a function match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "w") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL56:1:368 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ = None +:fixme this generation should be fixed in another branch match(question(Exact("x")), "x") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.question is not a function -//│ at REPL59:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ ═══[RUNTIME ERROR] TypeError: p.canBeEmpty is not a function match(question(Exact("x")), "y") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.question is not a function -//│ at REPL62:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = Some("") +:fixme this generation should be fixed in another branch match(question(Exact("x")), "xx") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.question is not a function -//│ at REPL65:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: p.startsWith is not a function +:fixme this generation should be fixed in another branch match(question(Any()), "y") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.question is not a function -//│ at REPL68:1:110 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: p.canBeEmpty is not a function +:fixme this generation should be fixed in another branch match(Concat(Star(Exact("x")), Exact("y")), "x") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL71:1:302 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: this.p1.normalize is not a function +:fixme this generation should be fixed in another branch match(Concat(Star(Exact("x")), Exact("y")), "y") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL74:1:302 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: this.p1.normalize is not a function +:fixme this generation should be fixed in another branch match(Concat(Star(Exact("x")), Exact("y")), "xxxxxy") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL77:1:302 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: this.p1.normalize is not a function +:fixme this generation should be fixed in another branch match(Concat(Star(Exact("x")), Exact("y")), "xyyyy") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.match is not a function -//│ at REPL80:1:302 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ ═══[RUNTIME ERROR] TypeError: this.p1.normalize is not a function match(plus(Exact("x")), "") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function -//│ at REPL83:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ = None +:fixme this generation should be fixed in another branch match(plus(Exact("x")), "x") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function -//│ at REPL86:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ ═══[RUNTIME ERROR] TypeError: this.p1.canBeEmpty is not a function match(plus(Exact("x")), "y") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function -//│ at REPL89:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ = None +:fixme this generation should be fixed in another branch match(plus(Exact("x")), "xxx") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function -//│ at REPL92:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: this.p1.startsWith is not a function +:fixme this generation should be fixed in another branch match(plus(Exact("x")), "xxxy") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.plus is not a function -//│ at REPL95:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: this.p1.startsWith is not a function +:fixme this generation should be fixed in another branch // x{3}, equivalent to xxx match(nTimes(Exact("x"), 3), "xxx") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.nTimes is not a function -//│ at REPL98:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: this.p1.startsWith is not a function +:fixme this generation should be fixed in another branch match(nTimes(Exact("x"), 3), "xxy") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.nTimes is not a function -//│ at REPL101:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +//│ ═══[RUNTIME ERROR] TypeError: this.p1.startsWith is not a function +:fixme this generation should be fixed in another branch match(nTimes(Exact("x"), 3), "xx") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.nTimes is not a function -//│ at REPL104:1:115 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ ═══[RUNTIME ERROR] TypeError: this.p1.startsWith is not a function :silent let p = Concat(In(["T", "t"]), Concat(Star(words()), notWord())) -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.words is not a function -//│ at REPL107:1:197 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) - +:fixme this generation should be fixed in another branch matchAll(p, "To be or not to be, that is the question.") -//│ FAILURE: Unexpected runtime error -//│ FAILURE LOCATION: mkQuery (JSBackendDiffMaker.scala:248) -//│ ═══[RUNTIME ERROR] TypeError: StagedRegExp.matchAll is not a function -//│ at REPL109:1:52 -//│ at ContextifyScript.runInThisContext (node:vm:137:12) -//│ at defaultEval (node:repl:610:24) -//│ at REPLEvalInContext (node:repl:693:9) -//│ at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:65:14) -//│ at REPLServer.REPLEval [as eval] (node:repl:692:19) -//│ at REPLServer.onLine (node:repl:830:12) -//│ at REPLServer.emit (node:events:509:20) -//│ at [_onLine] [as _onLine] (node:internal/readline/interface:465:12) -//│ at [_normalWrite] [as _normalWrite] (node:internal/readline/interface:647:22) +//│ ═══[RUNTIME ERROR] TypeError: this.p1.startsWith is not a function From 8e8a52d23ed1582eca744fe7d2b4ab76e5db1934 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 29 May 2026 17:22:08 +0800 Subject: [PATCH 636/654] remove implicit parameter from Return --- .../src/test/mlscript-compile/Runtime.mjs | 24 ++++++++--------- .../mlscript-compile/SpecializeHelpers.mls | 26 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs index 2244eb9137..41381ad15e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs +++ b/hkmc2/shared/src/test/mlscript-compile/Runtime.mjs @@ -212,32 +212,32 @@ let Runtime1; Runtime.SymbolMap = this } static { - let tmp1, tmp2; + let tmp, tmp1; + tmp = globalThis.Object.freeze(new globalThis.Map()); + this.classMap = tmp; tmp1 = globalThis.Object.freeze(new globalThis.Map()); - this.classMap = tmp1; - tmp2 = globalThis.Object.freeze(new globalThis.Map()); - this.moduleMap = tmp2; + this.moduleMap = tmp1; } static checkClassMap(key, value) { - let v, tmp1; + let v; v = runtime.safeCall(SymbolMap.classMap.get(key)); if (v instanceof Runtime.Unit.class) { - tmp1 = runtime.safeCall(SymbolMap.classMap.set(key, value)); - return (tmp1 , value) + runtime.safeCall(SymbolMap.classMap.set(key, value)); + return value } return v; - } + } static checkModuleMap(key, value) { - let v, tmp1; + let v; v = runtime.safeCall(SymbolMap.moduleMap.get(key)); if (v instanceof Runtime.Unit.class) { - tmp1 = runtime.safeCall(SymbolMap.moduleMap.set(key, value)); - return (tmp1 , value) + runtime.safeCall(SymbolMap.moduleMap.set(key, value)); + return value } return v; } toString() { return runtime.render(this); } - static [definitionMetadata] = ["class", "SymbolMap"]; + static [definitionMetadata] = ["class", "SymbolMap"]; }); this.render = Rendering.render; (class TraceLogger { diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 7a2fa42d7e..cd3c0c2c5a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -350,7 +350,7 @@ fun sor(ctx, r) = if r is // p is the path p in p.f() // f is the symbol f in p.f() // args are the arguments in p.f(args) -fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = +fun dispatchMethodCall(ctx, xOpt, p, f, args) = let pss = sop(ctx, p) let argShapes = args.map(a => sop(ctx, a.value)) let splitRes = fsplit(pss) @@ -363,7 +363,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = 0 and let dfltMatch = Call(Select(p, Symbol(f)), args) isRet then - [Return(dfltMatch, if implctOpt is Some(i) then i else false), mkDyn()] + [Return(dfltMatch), mkDyn()] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") [Assign(x, dfltMatch, End()), mkDyn()] @@ -378,7 +378,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = let retShape = ret.1 let callRes = Call(Select(p, Symbol(retSym)), args) isRet then - [Return(callRes, if implctOpt is Some(i) then i else false), retShape] + [Return(callRes), retShape] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") [Assign(x, callRes, End()), retShape] @@ -393,7 +393,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = let retShape = retData.1 let callRes = Call(Select(p, Symbol(retSym)), args) if isRet then - [Arm(Cls(C_i, p), Return(callRes, if implctOpt is Some(i) then i else false)), retShape] + [Arm(Cls(C_i, p), Return(callRes)), retShape] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") [Arm(Cls(C_i, p), Assign(x, callRes, End())), retShape] @@ -403,7 +403,7 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = let dfltRet = if unkShape.isEmpty() then [None, mkBot()] else let dfltMatch = Call(Select(p, Symbol(f)), args) if isRet then - [Some(Return(dfltMatch, if implctOpt is Some(i) then i else false)), mkDyn()] + [Some(Return(dfltMatch)), mkDyn()] else let x = if xOpt is Some(x_) then x_ else throw Error("unreachable") [Some(Assign(x, dfltMatch, End())), mkDyn()] @@ -417,13 +417,13 @@ fun dispatchMethodCall(ctx, xOpt, implctOpt, p, f, args) = // [retBlock, retShape, canReachEnd] fun prop(ctx, b) = if b is End() then [b, mkBot(), true] - Return(Call(Select(p, Symbol(f)), args), implct) and not (f is "concat") and p is // TODO[later]: Ref -> Path, remove special checks + Return(Call(Select(p, Symbol(f)), args)) and not (f is "concat") and p is // TODO[later]: Ref -> Path, remove special checks ValueRef(symb) and not symb is ModuleSymbol then - [...dispatchMethodCall(ctx, None, Some(implct), p, f, args), false] + [...dispatchMethodCall(ctx, None, p, f, args), false] Select(ValueRef(ConcreteClassSymbol), _) then - [...dispatchMethodCall(ctx, None, Some(implct), p, f, args), false] - Return(res, implct) and sor(ctx, res) is [blk, r1, s1] then - [concat(blk, Return(r1, implct)), s1, false] + [...dispatchMethodCall(ctx, None, p, f, args), false] + Return(res) and sor(ctx, res) is [blk, r1, s1] then + [concat(blk, Return(r1)), s1, false] Scoped(symbols, rest) then symbols.forEach(x => ctx.add(ValueRef(x), mkBot())) let newAllocs = mut [] @@ -432,11 +432,11 @@ fun prop(ctx, b) = if b is [wrapScoped([...symbols, ...newAllocs], res.0), res.1, res.2] Assign(x, Call(Select(p, Symbol(f)), args), restBlock) and p is // TODO Can we deduplicate this? ValueRef(symb) and not (symb is ModuleSymbol) then - let res = dispatchMethodCall(ctx, Some(x), None, p, f, args) + let res = dispatchMethodCall(ctx, Some(x), p, f, args) let b2 = prop(ctx.add(ValueRef(x), res.1), restBlock) [concat(res.0, b2.0), b2.1, b2.2] Select(ValueRef(ConcreteClassSymbol), _) then - let res = dispatchMethodCall(ctx, Some(x), None, p, f, args) + let res = dispatchMethodCall(ctx, Some(x), p, f, args) let b2 = prop(ctx.add(ValueRef(x), res.1), restBlock) [concat(res.0, b2.0), b2.1, b2.2] Define(ValDefn(opt, sym, rhs), restBlock) and @@ -577,7 +577,7 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = let finalBody = if staticSet(actualRetShape) then let allocs = mut [] let v2p = shapeset2path(actualRetShape, allocs) - wrapScoped(allocs, concat(v2p.0, Return(v2p.1, false))) + wrapScoped(allocs, concat(v2p.0, Return(v2p.1))) else bodyWithScoped // Update cache with finalized body and actual return shape From 77945d2d1ec9b5629e0924d193679a6c4382855a Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 29 May 2026 18:38:52 +0800 Subject: [PATCH 637/654] simplify printing with noModuleCheck --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 6 ++---- .../test/mlscript-compile/staging/out/CombinedModule.mls | 6 +++--- .../staging/out/LinkingGeneratedClasses.mls | 6 +++--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index d418e41915..88ba4ad6d8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -215,10 +215,8 @@ class Printer(val owner: Opt[Symbol]) with Instantiate(cls, args) then let classPath = showInstantiatePath(cls) // redirections must be dynamic selections, hence the use of new! is required - let prefix = if cls is ValueRef(cSym) and cSym.redirect and owner is Some(owner) and not isGeneratedStagedClass(cSym) - then "new! " + classPath - else "new " + classPath - prefix + "(" + showArgs(args) + ")" + // NOTE: noModuleCheck is enabled, so we don't need to switch to new! for dynamic selections from a module + "new " + classPath + "(" + showArgs(args) + ")" Tuple(elems) then "[" + showArgs(elems) + "]" _ then "" diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index e831ab6cfa..28f1031eab 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -70,15 +70,15 @@ module CombinedModule with class D fun f() = let {obj_5} - obj_5 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_5 = new LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() obj_5 fun g() = let {obj_7} - obj_7 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() + obj_7 = new LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() obj_7 fun test1 = let {obj_1} - obj_1 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() + obj_1 = new LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() obj_1 fun test2(x) = let {tmp} diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 47ecd40b8a..f834d03910 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -7,15 +7,15 @@ module LinkingGeneratedClasses with class D fun f() = let {obj_5} - obj_5 = new! LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + obj_5 = new LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() obj_5 fun g() = let {obj_7} - obj_7 = new! LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() + obj_7 = new LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() obj_7 fun test1 = let {obj_2} - obj_2 = new! LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() + obj_2 = new LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() obj_2 fun test2(x) = let {tmp} From 744dd38dda9a1d65844b8216cbfe03d66b520642 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 29 May 2026 18:55:56 +0800 Subject: [PATCH 638/654] copyediting --- hkmc2/shared/src/test/mlscript-compile/Block.mls | 16 +++++++--------- .../shared/src/test/mlscript-compile/Runtime.mls | 5 +++-- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 88ba4ad6d8..048a935f9a 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -160,13 +160,11 @@ class Printer(val owner: Opt[Symbol]) with else false fun showSymbol(s: Symbol) = - if s.redirect and not isGeneratedStagedClass(s) then - if owner is - Some(owner) and owner is ModuleSymbol then // TODO: this must be a top-level module symbol + if s.redirect and owner is + Some(owner) and owner is + ModuleSymbol then // TODO: this must be a top-level module symbol legacyName(owner.name) + ".\"" + s.name + "$" + owner.name + "\"" - Some(owner) then - owner.name + ".\"" + s.name + "$" + owner.name + "\"" - else s.name.replaceAll("$", "_") + else owner.name + ".\"" + s.name + "$" + owner.name + "\"" else s.name.replaceAll("$", "_") fun showPath(p: Path): Str = @@ -254,11 +252,11 @@ class Printer(val owner: Opt[Symbol]) with if d is FunDefn(sym, ps, body) then showFunDefn("", sym, ps, body) - ClsLikeDefn(sym, methods, _) and sym is ConcreteClassSymbol(_, v, _, _, _) and - not isStagedClass(v) then + ClsLikeDefn(sym, methods, _) and sym is ConcreteClassSymbol(_, v, _, _, _) and + isGeneratedStagedClass(sym) then getClassCache(v) + else "class " + showDefnSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams(_)).join("") + indent((if methods is [] then "" else " with\n") + methods.map(showDefn(_)).join("\n")) - isStagedClass(v) then getClassCache(v) // TODO: used to represent assignments in constructors, which still need some adjustments ValDefn(owner, sym, rhs) then "val " + showSymbol(sym) + " = " + showPath(rhs) diff --git a/hkmc2/shared/src/test/mlscript-compile/Runtime.mls b/hkmc2/shared/src/test/mlscript-compile/Runtime.mls index ac48120c0d..2d3806b382 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Runtime.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Runtime.mls @@ -107,8 +107,9 @@ module Str with fun leave(string, n) = string.slice(n) -// TODO: to add annotations we would need to import Symbol definitions from Block.mls -// A staged class with no parameters has the same runtime value as its staged companion, this causes an unwated collision when creating a symbol for both the class and the module, +// A global map for Symbols defined during reflection instrumentation to ensure uniqueness of symbols across different staged functions and compilation units +// A staged class with no parameters has the same runtime value as its staged companion, +// and this causes an unwated collision when creating a symbol for both the class and the module, // so we need to split the map into the which type of symbol used. module SymbolMap with val classMap = new Map() From d843eb55deb4cbf02c8fd4790049514629791aed Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 29 May 2026 19:07:55 +0800 Subject: [PATCH 639/654] remove unused variables defined when staging --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 0295d9f0ff..4441bd815f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -386,9 +386,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // turn into fundefn val dSym = TermSymbol(f.dSym.k, f.dSym.owner, Tree.Ident(stageSymName)) val argSyms = f.params.flatMap(_.params).map(_.sym) - val newBody = - val rest = transformFunDefn(f)(using ctx)((block, _) => Return(block)) - (Scoped(Set(argSyms*), rest)) + val newBody = transformFunDefn(f)(using ctx)((block, _) => Return(block)) FunDefn.withFreshSymbol(f.dSym.owner, stageSym, Ls(PlainParamList(Nil)), newBody)(f.configOverride, f.annotations) @@ -561,7 +559,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val ctorFun = FunDefn.withFreshSymbol(S(modSym), BlockMemberSymbol("ctor$", Nil, false), Ls(PlainParamList(Nil)), ctor)(N, Nil) val newCtorFun = stageCtor(ctorFun) - // print top-level staged classes to be printed in the next stage + // collect top-level staged classes to be printed in the next stage class UsedStagedClassesCollector extends BlockTraverser: val used: HashSet[BlockMemberSymbol] = new HashSet() override def applySymbol(sym: Symbol) = sym match From ed2fef8787f5c65a94f841bcd6212c4623608e04 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 29 May 2026 19:09:38 +0800 Subject: [PATCH 640/654] add carveout for top-level user-definde staged classes they will be reprinted, so they do not need to be redirected --- .../src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 4441bd815f..e01945621f 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -127,7 +127,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val rename = sym match case _ if pOpt.isDefined => false case _ if preserveName => scope.allocateOrGetName(sym); false + // non-top-level classes case c: ClassSymbol if c.defn.exists(_.owner.isDefined) => false + // top-level user-defined staged classes + case c: ClassSymbol if c.defn.exists(defn => defn.owner.isEmpty && defn.hasStagedModifier.isDefined) => false // avoid name collision case _: TempSymbol | _: VarSymbol | _: BaseTypeSymbol => true // FIXME: there may be more types of symbols that need to be renamed during staging From af3bf823958e5aaaf74032ac427227a33d88a57e Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 29 May 2026 19:09:54 +0800 Subject: [PATCH 641/654] rerun tests --- hkmc2/shared/src/test/mlscript/block-staging/Nested.mls | 9 +++------ .../src/test/mlscript/block-staging/ShapeSetHelpers.mls | 7 ++----- hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls | 8 ++++---- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index 3bcab0c02b..efea554eda 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -91,11 +91,10 @@ staged module LiftedNested with //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— - +// TODO: merge with fix-private-fields +:fixme staged module LiftedLambda with fun foo(x) = y => x + y -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: applyBlock (ReflectionInstrumenter.scala:595) //│ ═══[COMPILATION ERROR] Staged classes with private fields are not supported. //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let LiftedLambda⁰, lambda⁰, Function$⁰; @@ -104,11 +103,9 @@ staged module LiftedLambda with //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— - +:fixme staged module LiftedMultParams with fun foo(x)(y) = x + y -//│ FAILURE: Unexpected compilation error -//│ FAILURE LOCATION: applyBlock (ReflectionInstrumenter.scala:595) //│ ═══[COMPILATION ERROR] Staged classes with private fields are not supported. //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let LiftedMultParams⁰, lambda$⁰, Function$¹; diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index ae456a84cd..63d666b368 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -136,7 +136,7 @@ open SpecializeHelpers { Ctx, sop, sor, prop } let ctx = Ctx.empty() let x = ValueRef(Symbol("x")) -//│ ctx = Ctx(Map(0) {}, Map(0) {}, Map(0) {}, [], None) +//│ ctx = Ctx(Map(0) {}, Map(0) {}, [], None) //│ x = ValueRef(Symbol("x")) ctx.add(x, mkLit(1)) @@ -160,7 +160,6 @@ ctx2.get(y) //│ ctx2 = Ctx( //│ Map(2) {"Symbol(x)" => {Lit(1),Lit(2)}, "Symbol(y)" => {Lit("a"),Lit("b")}}, //│ Map(0) {}, -//│ Map(0) {}, //│ [], //│ None //│ ) @@ -200,7 +199,6 @@ sop(ctx, selPath) //│ "Symbol(x)" => {Class(ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), [], false), [Lit("pass")])} //│ }, //│ Map(0) {}, -//│ Map(0) {}, //│ [], //│ None //│ ) @@ -383,7 +381,7 @@ module M with :ignore val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.384: val MSym = ValueRef(ModuleSymbol("M", M, false)) +//│ ║ l.382: val MSym = ValueRef(ModuleSymbol("M", M, false)) //│ ║ ^ //│ ╙── Module argument passed to a non-module parameter. //│ MSym = ValueRef(ModuleSymbol("M", class M, false)) @@ -407,7 +405,6 @@ val ctxXY = Ctx.empty() //│ ctxXY = Ctx( //│ Map(2) {"Symbol(x)" => {Lit(10)}, "Symbol(y)" => {Lit(32)}}, //│ Map(0) {}, -//│ Map(0) {}, //│ [], //│ None //│ ) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index 0813a1db3d..f6fa4a2650 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -77,8 +77,8 @@ fun g(@static x) = x :e fun h(@dynamic @static x) = x //│ ╔══[COMPILATION ERROR] At most one reflection constraint can be added for each parameter. -//│ ║ l.127: fun h(@dynamic @static x) = x -//│ ╙── ^^^^^^^^^ +//│ ║ l.78: fun h(@dynamic @static x) = x +//│ ╙── ^^^^^^^^^ //│ ╔══[COMPILATION ERROR] Name not found: x -//│ ║ l.127: fun h(@dynamic @static x) = x -//│ ╙── ^ +//│ ║ l.78: fun h(@dynamic @static x) = x +//│ ╙── ^ From feab33dc6abdc90b3ec4e20195ffafe3269b8347 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 30 May 2026 14:48:28 +0800 Subject: [PATCH 642/654] fix Value.Ref --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 73d5bc1dbb..34acc28834 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -95,13 +95,13 @@ class DataClassTransformer(using State) extends BlockTransformer(SymbolSubst.Id) class PrivateFieldDefnRemover extends BlockTransformer(SymbolSubst.Id): override def applyPath(p: Path)(k: Path => Block) = p match // remove outdated definition symbols for private fields - case s @ Select(Value.MemberRef(cls, _), Tree.Ident(n)) if cls == defn.isym && privateFields.get(n).isDefined => k(s.copy()(N)) + case s @ Select(Value.This(cls), Tree.Ident(n)) if cls == defn.isym && privateFields.get(n).isDefined => k(s.copy()(N)) case _ => k(p) // change private field initializations to public val publicInitTransformer = new PrivateFieldDefnRemover: override def applyBlock(b: Block) = b match - case AssignField(l @ Value.MemberRef(cls, _), Tree.Ident(n), r, rest) if cls == defn.isym => + case AssignField(l @ Value.This(cls), Tree.Ident(n), r, rest) if cls == defn.isym => privateFields.get(n) match case S((b, t)) => applyResult(r): r => @@ -180,7 +180,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // top-level user-defined staged classes case c: ClassSymbol if c.defn.exists(defn => defn.owner.isEmpty && defn.hasStagedModifier.isDefined) => false // avoid name collision - case _: TempSymbol | _: VarSymbol | _: BaseTypeSymbol => true + case _: TempSymbol | _: VarSymbol | _: BaseTypeSymbol => true // FIXME: there may be more types of symbols that need to be renamed during staging case b: BlockMemberSymbol => if !b.nameIsMeaningful then scope.allocateOrGetName(sym) @@ -601,7 +601,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case S(owner: DefinitionSymbol[ModuleOrObjectDef | ClassDef]) => Select(reconstruct(owner), Tree.Ident(s.nme))(N) case N => defn match - case l: (ModuleOrObjectDef | ClassDef) => Value.Ref(l.bsym, S(s)) + case l: (ModuleOrObjectDef | ClassDef) => Value.MemberRef(l.bsym, s) case l: ClsLikeDefn => Value.MemberRef(l.sym, s) case N => s.asPath From 80bfd727e39181f3ffa8432fc6a47ce3f91dbf04 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Sat, 30 May 2026 16:12:58 +0800 Subject: [PATCH 643/654] WIP: fix tests --- .../src/test/mlscript-compile/Block.mls | 2 +- .../mlscript-compile/SpecializeHelpers.mls | 7 +- .../test/mlscript/block-staging/Functions.mls | 34 +------ .../test/mlscript/block-staging/Nested.mls | 94 ++++++++++++++++--- .../test/mlscript/block-staging/PrintCode.mls | 4 +- .../mlscript/block-staging/StageSymbols.mls | 25 +++-- .../mlscript/block-staging/SymbolRenaming.mls | 2 - .../test/mlscript/block-staging/Syntax.mls | 10 +- 8 files changed, 108 insertions(+), 70 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index bfacb87bc5..47a137a2a9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -180,7 +180,7 @@ class Printer(val owner: Opt[Symbol]) with // TODO: does this pattern exist, or is it replaced by the case below? ValueMemberRef(sym) and owner is Some(owner) and sym === owner then showSymbol(name) // NOTE: ValueThis carries information about the class, but the elaborator can infer it for us - ValueThis then "this." + showSymbol(name) + ValueThis then showSymbol(name) else showPath(qual) + "." + showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index e5c33755df..7a0faf8498 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -120,14 +120,14 @@ class FunCache( fun showPath(p) = if p is ValueSimpleRef(s) | ValueMemberRef(s) and ctx.has(s) then ctx.get(s) Select(qual, name) and qual is - ValueThis(Symbol("globalThis")) then this.showSymbol(name) + // let elaborator disambiguate ValueThis + ValueThis(_) then this.showSymbol(name) ValueMemberRef(sym) and sym == owner then this.showSymbol(name) ValueMemberRef(ModuleSymbol) and this.isGeneratedStagedClass(name) then this.showSymbol(name) else showPath(qual) + "." + this.showSymbol(name) DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" ValueSimpleRef(s) | ValueMemberRef(s) then this.showSymbol(s) - ValueThis(_) then "this" ValueLit(lit) then this.showLiteral(lit) fun inlineResult(ctx: Map[Result, String])(r) = InlinePrinter(ctx).showResult(r) @@ -205,7 +205,7 @@ fun sop(ctx, p): ShapeSet = if ctx.get(p) is None and p is Select(ValueMemberRef(clsSymb), Symbol(name)) and clsSymb is ConcreteClassSymbol and // variables defined in valdefn (this is for constructor propagation only) ctx.getValDefn(name) is Some(s) then s - Select(Select(ValueMemberRef(clsSymb), Symbol(name)), Symbol(name2)) and clsSymb is ConcreteClassSymbol and ctx.thisShape is Some(thisShape) then // this.name.name2 + Select(Select(ValueThis(clsSymb), Symbol(name)), Symbol(name2)) and clsSymb is ConcreteClassSymbol and ctx.thisShape is Some(thisShape) then // this.name.name2 selSet(selSet(thisShape, mkLit(name)), mkLit(name2)) Select(qual, Symbol(name)) and // object property ctx.thisShape is Some(thisShape) then // this.name @@ -547,7 +547,6 @@ fun specialize(cache: FunCache, funName, dflt, shapes) = // so we need to read the constraints by running dflt() anyway // which prevent the possibilily of not running dflt when specialized function already exists in cache let defn = dflt() - // print(defn) if defn is FunDefn(Symbol(_), ps, body) then let isMethod = cache.owner is ConcreteClassSymbol let specializationKey = specializeKey(funName, isMethod, ps, shapes) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls index 931b09b493..8740f8b9a7 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Functions.mls @@ -48,19 +48,6 @@ staged module Example with else 2 //│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. -// * LetSplit lowers to a Label/Break pair, which the staged-module -// * compiler (`ReflectionInstrumenter`) doesn't yet understand. With -// * the sharing threshold forced to 1, the shared `else` below would -// * emit exactly that — tracked here as a fixme. -:fixme -:patMatConsequentSharingThreshold 1 -staged module Example with - fun f(x, y, z) = if - x is 0 and y is 0 and z is 0 then 1 - else 2 -//│ ═══[COMPILATION ERROR] Other Blocks not supported in staged module: class hkmc2.codegen.Label. - -:fixme class Outside(a) staged module ClassInstrumentation with class Inside(a, b) @@ -69,8 +56,6 @@ staged module ClassInstrumentation with fun inst2() = new NoArg fun app1() = Outside(1) fun app2() = Inside(1, 2) -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. module Nonstaged with fun f() = 1 @@ -80,29 +65,16 @@ staged module CallSubst with fun call() = Nonstaged.f() + Staged.f() :ftc -:fixme staged module Arguments with fun f(x) = x = 1 x fun g(x)(y, z)() = z -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'z' -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'z' -//│ > let Arguments1, Function$2, Function$3;try { globalThis.Object.freeze(class Function$ extends globalThis.Function { static { Function$2 = this } constructor(z) { super(); this.#z = z; } static { let tmp1, tmp2, tmp3, tmp4, tmp5, sym, tmp6, tmp7, tmp8, sym1, tmp9, tmp10, tmp11, tmp12, tmp13; tmp4 = option.None; tmp5 = option.None; sym = runtime.checkCall(Block.Symbol("z")); tmp6 = runtime.checkCall(Block.Param(tmp5, sym)); tmp7 = globalThis.Object.freeze([ tmp6 ]); tmp8 = globalThis.Object.freeze([ tmp7 ]); sym1 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$2, tmp4, tmp8, true)); tmp9 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$2, sym1)); tmp10 = globalThis.Object.freeze(new globalThis.Map()); tmp11 = globalThis.Object.freeze([ "call", "z" ]); tmp12 = globalThis.Object.freeze(new globalThis.Set(tmp11)); tmp13 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp9, tmp10, tmp12)); Function$.class$cache$Function$ = tmp13; tmp1 = globalThis.Object.freeze([ "call", Function$.call_gen ]); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze(new globalThis.Map(tmp2)); Function$.class$generatorMap$Function$ = tmp3; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp1; runtime.checkCall(Function$.propagate()); tmp1 = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("Function$", Function$.class$cache$Function$, source, path, tmp1)); } static preCtor$_instr() { runtime.checkArgs("preCtor$_instr", 0, true, arguments.length); let tmp1, sym, sym1; runtime.checkCall(Block.Symbol("preCtor$")); tmp1 = option.None; sym = runtime.checkCall(Block.Symbol("z")); runtime.checkCall(Block.Param(tmp1, sym)); sym1 = runtime.checkCall(Block.NoSymbol()); runtime.checkCall(Block.ValueSimpleRef(sym1)); } static class$ctor$_instr() { runtime.checkArgs("class$ctor$_instr", 0, true, arguments.length); let sym, tmp1, sym1, tmp2, tmp3, tmp4, var1, sym2, end, assign; sym = runtime.checkCall(Block.Symbol("class$ctor$")); tmp1 = option.None; sym1 = runtime.checkCall(Block.Symbol("z")); tmp2 = runtime.checkCall(Block.Param(tmp1, sym1)); tmp3 = globalThis.Object.freeze([ tmp2 ]); tmp4 = globalThis.Object.freeze([ tmp3 ]); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); sym2 = runtime.checkCall(Block.Symbol("z")); runtime.checkCall(Block.ValueSimpleRef(sym2)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, var1, end)); return runtime.checkCall(Block.FunDefn(sym, tmp4, assign)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn, gen_call; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); gen_call = runtime.checkCall(Function$.call_gen(tmp_dyn)); runtime.checkCall(gen_call()); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp1; tmp1 = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("Function$", Function$.class$cache$Function$, tmp1)) } static call_instr() { runtime.checkArgs("call_instr", 0, true, arguments.length); let sym; runtime.checkCall(Block.Symbol("call")); sym = runtime.checkCall(Block.Symbol("lambda$")); runtime.checkCall(Block.ValueMemberRef(sym)); } static call_gen(cls) { runtime.checkArgs("call_gen", 1, true, arguments.length); return () => { let tmp1, tmp2, tmp3; tmp1 = globalThis.Object.freeze([ cls ]); tmp2 = globalThis.Object.freeze([]); tmp3 = globalThis.Object.freeze([ tmp1, tmp2 ]); return runtime.checkCall(SpecializeHelpers.specialize(Function$.class$cache$Function$, "call", Function$.call_instr, tmp3)) } } get call$__checkNotMethod() { runtime.deboundMethod("call", "Function$"); } call() { runtime.checkArgs("call", 0, true, arguments.length); return this.#z } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Function$"]; }); globalThis.Object.freeze(class Function$1 extends globalThis.Function { static { Function$3 = this } constructor() { super(); } static { let tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, sym, tmp7, tmp8, tmp9, tmp10, tmp11; tmp4 = option.None; tmp5 = globalThis.Object.freeze([]); tmp6 = globalThis.Object.freeze([ tmp5 ]); sym = runtime.checkCall(Block.ConcreteClassSymbol("Function$1", Function$3, tmp4, tmp6, true)); tmp7 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym)); tmp8 = globalThis.Object.freeze(new globalThis.Map()); tmp9 = globalThis.Object.freeze([ "call" ]); tmp10 = globalThis.Object.freeze(new globalThis.Set(tmp9)); tmp11 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp7, tmp8, tmp10)); Function$1.class$cache$Function$1 = tmp11; tmp1 = globalThis.Object.freeze([ "call", Function$1.call_gen ]); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze(new globalThis.Map(tmp2)); Function$1.class$generatorMap$Function$1 = tmp3; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp1; runtime.checkCall(Function$1.propagate()); tmp1 = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("Function$", Function$1.class$cache$Function$1, source, path, tmp1)); } static preCtor$_instr() { runtime.checkArgs("preCtor$_instr", 0, true, arguments.length); let sym; runtime.checkCall(Block.Symbol("preCtor$")); sym = runtime.checkCall(Block.NoSymbol()); runtime.checkCall(Block.ValueSimpleRef(sym)); } static class$ctor$_instr() { runtime.checkArgs("class$ctor$_instr", 0, true, arguments.length); let sym, tmp1, tmp2, end; sym = runtime.checkCall(Block.Symbol("class$ctor$")); tmp1 = globalThis.Object.freeze([]); tmp2 = globalThis.Object.freeze([ tmp1 ]); end = runtime.checkCall(Block.End()); return runtime.checkCall(Block.FunDefn(sym, tmp2, end)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn, gen_call; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); gen_call = runtime.checkCall(Function$1.call_gen(tmp_dyn)); runtime.checkCall(gen_call(tmp_dyn, tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp1; tmp1 = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("Function$", Function$1.class$cache$Function$1, tmp1)) } static call_instr() { runtime.checkArgs("call_instr", 0, true, arguments.length); let sym, tmp1, sym1, tmp2, tmp3, sym2, tmp4, tmp5, tmp6, sym3, var1, var2, tmp7, var3, tmp8, tmp9, app, return1; sym = runtime.checkCall(Block.Symbol("call")); tmp1 = option.None; sym1 = runtime.checkCall(Block.Symbol("y")); tmp2 = runtime.checkCall(Block.Param(tmp1, sym1)); tmp3 = option.None; sym2 = runtime.checkCall(Block.Symbol("z")); tmp4 = runtime.checkCall(Block.Param(tmp3, sym2)); tmp5 = globalThis.Object.freeze([ tmp2, tmp4 ]); tmp6 = globalThis.Object.freeze([ tmp5 ]); sym3 = runtime.checkCall(Block.Symbol("lambda$")); var1 = runtime.checkCall(Block.ValueMemberRef(sym3)); var2 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp7 = runtime.checkCall(Block.Arg(var2)); var3 = runtime.checkCall(Block.ValueSimpleRef(sym2)); tmp8 = runtime.checkCall(Block.Arg(var3)); tmp9 = globalThis.Object.freeze([ tmp7, tmp8 ]); app = runtime.checkCall(Block.Call(var1, tmp9)); return1 = runtime.checkCall(Block.Return(app)); return runtime.checkCall(Block.FunDefn(sym, tmp6, return1)) } static call_gen(cls) { runtime.checkArgs("call_gen", 1, true, arguments.length); return (y, z) => { let tmp1, tmp2, tmp3; tmp1 = globalThis.Object.freeze([ cls ]); tmp2 = globalThis.Object.freeze([ y, z ]); tmp3 = globalThis.Object.freeze([ tmp1, tmp2 ]); return runtime.checkCall(SpecializeHelpers.specialize(Function$1.class$cache$Function$1, "call", Function$1.call_instr, tmp3)) } } get call$__checkNotMethod() { runtime.deboundMethod("call", "Function$"); } call(y, z) { runtime.checkArgs("call", 2, true, arguments.length); return globalThis.Object.freeze(new Function$2(z)) } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Function$"]; }); globalThis.Object.freeze(class Arguments { static { Arguments1 = this } static { let tmp1, tmp2, tmp3, tmp4, sym, tmp5, tmp6, tmp7, tmp8, tmp9; sym = runtime.checkCall(Block.ModuleSymbol("Arguments", Arguments, false)); tmp5 = runtime.checkCall(runtime.SymbolMap.checkModuleMap(Arguments, sym)); tmp6 = globalThis.Object.freeze(new globalThis.Map()); tmp7 = globalThis.Object.freeze([ "f", "g" ]); tmp8 = globalThis.Object.freeze(new globalThis.Set(tmp7)); tmp9 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp5, tmp6, tmp8)); Arguments.cache$Arguments = tmp9; tmp1 = globalThis.Object.freeze([ "f", Arguments.f_gen ]); tmp2 = globalThis.Object.freeze([ "g", Arguments.g_gen ]); tmp3 = globalThis.Object.freeze([ tmp1, tmp2 ]); tmp4 = globalThis.Object.freeze(new globalThis.Map(tmp3)); Arguments.generatorMap$Arguments = tmp4; Arguments.Function$1$Arguments = Function$3; Arguments.Function$$Arguments = Function$2; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp1; runtime.checkCall(Arguments.propagate()); tmp1 = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("Arguments", Arguments.cache$Arguments, source, path, tmp1)); } static ctor$_instr() { runtime.checkArgs("ctor$_instr", 0, true, arguments.length); let sym, tmp1, tmp2, end; sym = runtime.checkCall(Block.Symbol("ctor$")); tmp1 = globalThis.Object.freeze([]); tmp2 = globalThis.Object.freeze([ tmp1 ]); end = runtime.checkCall(Block.End()); return runtime.checkCall(Block.FunDefn(sym, tmp2, end)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); runtime.checkCall(Arguments.f_gen(tmp_dyn)); runtime.checkCall(Arguments.g_gen(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp1; tmp1 = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("Arguments", Arguments.cache$Arguments, tmp1)) } static f_instr() { runtime.checkArgs("f_instr", 0, true, arguments.length); let sym, tmp1, sym1, tmp2, tmp3, tmp4, tmp5, lit, return1, assign; sym = runtime.checkCall(Block.Symbol("f")); tmp1 = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp2 = runtime.checkCall(Block.Param(tmp1, sym1)); tmp3 = globalThis.Object.freeze([ tmp2 ]); tmp4 = globalThis.Object.freeze([ tmp3 ]); tmp5 = runtime.checkCall(Block.ValueSimpleRef(sym1)); lit = runtime.checkCall(Block.ValueLit(1)); return1 = runtime.checkCall(Block.Return(tmp5)); assign = runtime.checkCall(Block.Assign(sym1, lit, return1)); return runtime.checkCall(Block.FunDefn(sym, tmp4, assign)) } static g_instr() { runtime.checkArgs("g_instr", 0, true, arguments.length); let sym, tmp1, sym1, tmp2, tmp3, tmp4, sym2, tmp5, tmp6, tmp7, tmp8, tmp9, sym3, tmp10, var1, tmp11, inst, return1, assign, tmp12; sym = runtime.checkCall(Block.Symbol("g")); tmp1 = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp2 = runtime.checkCall(Block.Param(tmp1, sym1)); tmp3 = globalThis.Object.freeze([ tmp2 ]); tmp4 = globalThis.Object.freeze([ tmp3 ]); sym2 = runtime.checkCall(Block.Symbol("tmp")); tmp5 = globalThis.Object.freeze([ sym2 ]); tmp6 = runtime.checkCall(Block.ValueSimpleRef(sym2)); tmp7 = option.None; tmp8 = globalThis.Object.freeze([]); tmp9 = globalThis.Object.freeze([ tmp8 ]); sym3 = runtime.checkCall(Block.ConcreteClassSymbol("Function$1", Function$3, tmp7, tmp9, true)); tmp10 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym3)); var1 = runtime.checkCall(Block.ValueMemberRef(tmp10)); tmp11 = globalThis.Object.freeze([]); inst = runtime.checkCall(Block.Instantiate(var1, tmp11)); return1 = runtime.checkCall(Block.Return(tmp6)); assign = runtime.checkCall(Block.Assign(sym2, inst, return1)); tmp12 = runtime.checkCall(Block.Scoped(tmp5, assign)); return runtime.checkCall(Block.FunDefn(sym, tmp4, tmp12)) } static f_gen(x1) { runtime.checkArgs("f_gen", 1, true, arguments.length); let tmp1, tmp2; tmp1 = globalThis.Object.freeze([ x1 ]); tmp2 = globalThis.Object.freeze([ tmp1 ]); return runtime.checkCall(SpecializeHelpers.specialize(Arguments.cache$Arguments, "f", Arguments.f_instr, tmp2)) } static g_gen(x1) { runtime.checkArgs("g_gen", 1, true, arguments.length); let tmp1, tmp2; tmp1 = globalThis.Object.freeze([ x1 ]); tmp2 = globalThis.Object.freeze([ tmp1 ]); return runtime.checkCall(SpecializeHelpers.specialize(Arguments.cache$Arguments, "g", Arguments.g_instr, tmp2)) } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Arguments"]; });; undefined } catch (e) { console.log('\u200B' + e + '\u200B'); } -//│ > ^ -//│ ═══[COMPILATION ERROR] [Uncaught SyntaxError] Private field '#z' must be declared in an enclosing class // :e -:fixme staged module BadArguments with fun f() = Arguments.g(1)(2, 3) -//│ ═══[RUNTIME ERROR] ReferenceError: Arguments1 is not defined - -:fixme staged module OtherBlocks with fun scope() = scope.locally of ( @@ -114,7 +86,6 @@ staged module OtherBlocks with 2 then 0 3 then 0 else 0 -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. staged module ClassDefs with class A @@ -123,13 +94,10 @@ staged module ClassDefs with staged module ValClass with class A(val a) -:fixme staged module ClassFunctions with class InnerClass() with fun f() = 1 + Arguments.f(1) fun g() = f() -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[RUNTIME ERROR] ReferenceError: Arguments1 is not defined // name collision @@ -169,7 +137,7 @@ staged module A with fun g() = {1 : 2} //│ ═══[COMPILATION ERROR] Field assignment is not supported in staged modules: a //│ ╔══[COMPILATION ERROR] Other Results not supported in staged module: class hkmc2.codegen.Record -//│ ║ l.169: fun g() = {1 : 2} +//│ ║ l.137: fun g() = {1 : 2} //│ ╙── ^ :todo diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index b81b11d909..0f0e6e43ee 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -94,8 +94,6 @@ staged module LiftedNested with :fixme staged module LiftedLambda with fun foo(x) = y => x + y -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let LiftedLambda⁰, lambda⁰, Function$⁰; //│ @staged @private @@ -144,7 +142,7 @@ staged module LiftedLambda with //│ end //│ } //│ method preCtor$_instr⁰ = fun preCtor$_instr¹() { -//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4; +//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4, sym3, tmp5, tmp6, tmp7, sym4, tmp8, sel, tmp9, app, end, assign, tmp10; //│ set sym = Block⁰.Symbol﹖("preCtor$"); //│ set tmp = option⁰.None﹖; //│ set sym1 = Block⁰.Symbol﹖("x"); @@ -153,7 +151,19 @@ staged module LiftedLambda with //│ set tmp3 = [tmp2]; //│ set sym2 = Block⁰.NoSymbol﹖(); //│ set tmp4 = Block⁰.ValueSimpleRef﹖(sym2); -//│ end +//│ set sym3 = Block⁰.Symbol﹖("globalThis"); +//│ set tmp5 = Block⁰.ValueThis﹖(sym3); +//│ set tmp6 = option⁰.None﹖; +//│ set tmp7 = []; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function", globalThis⁰.Function⁰, tmp6, tmp7, false); +//│ set tmp8 = runtime⁰.SymbolMap﹖.checkClassMap﹖(globalThis⁰.Function⁰, sym4); +//│ set sel = Block⁰.Select﹖(tmp5, tmp8); +//│ set tmp9 = []; +//│ set app = Block⁰.Call﹖(sel, tmp9); +//│ set end = Block⁰.End﹖(); +//│ set assign = Block⁰.Assign﹖(sym2, app, end); +//│ set tmp10 = Block⁰.FunDefn﹖(sym, tmp3, assign); +//│ return tmp10 //│ } //│ method class$ctor$_instr⁰ = fun class$ctor$_instr¹() { //│ let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, tmp4, end, assign, tmp5; @@ -185,7 +195,7 @@ staged module LiftedLambda with //│ return tmp1 //│ } //│ method call_instr⁰ = fun call_instr¹() { -//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1; +//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, sym5, sel, tmp11, var2, tmp12, tmp13, app, return1, tmp14; //│ set sym = Block⁰.Symbol﹖("call"); //│ set tmp = option⁰.None﹖; //│ set sym1 = Block⁰.Symbol﹖("y"); @@ -194,7 +204,25 @@ staged module LiftedLambda with //│ set tmp3 = [tmp2]; //│ set sym2 = Block⁰.Symbol﹖("lambda"); //│ set var1 = Block⁰.ValueMemberRef﹖(sym2); -//│ end +//│ set tmp4 = option⁰.None﹖; +//│ set tmp5 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp6 = Block⁰.Param﹖(tmp5, sym3); +//│ set tmp7 = [tmp6]; +//│ set tmp8 = [tmp7]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$¹, tmp4, tmp8, true); +//│ set tmp9 = runtime⁰.SymbolMap﹖.checkClassMap﹖(Function$¹, sym4); +//│ set tmp10 = Block⁰.ValueThis﹖(tmp9); +//│ set sym5 = Block⁰.Symbol﹖("x"); +//│ set sel = Block⁰.Select﹖(tmp10, sym5); +//│ set tmp11 = Block⁰.Arg﹖(sel); +//│ set var2 = Block⁰.ValueSimpleRef﹖(sym1); +//│ set tmp12 = Block⁰.Arg﹖(var2); +//│ set tmp13 = [tmp11, tmp12]; +//│ set app = Block⁰.Call﹖(var1, tmp13); +//│ set return1 = Block⁰.Return﹖(app); +//│ set tmp14 = Block⁰.FunDefn﹖(sym, tmp3, return1); +//│ return tmp14 //│ } //│ method call_gen⁰ = fun call_gen¹(cls)(y) { //│ let tmp, tmp1, tmp2, tmp3; @@ -221,6 +249,7 @@ staged module LiftedLambda with //│ set tmp2 = new globalThis⁰.Map﹖(tmp1); //│ define generatorMap$LiftedLambda⁰ as val generatorMap$LiftedLambda¹ = tmp2; //│ define Function$$LiftedLambda⁰ as val Function$$LiftedLambda¹ = Function$¹; +//│ define Function$LiftedLambda⁰ as val Function$LiftedLambda¹ = Function⁰; //│ end //│ } //│ method generate⁴ = fun generate⁵(source, path) { @@ -292,16 +321,18 @@ staged module LiftedLambda with //│ end //│ ═══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Function' +//│ ╟── which references the symbol introduced here +//│ ║ l.34: declare class Function +//│ ╙── ^^^^^^^^ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > let LiftedLambda1, Function$1;try { globalThis.Object.freeze(class Function$ extends globalThis.Function { static { Function$1 = this } constructor(x) { super(); this.#x = x; } static { let tmp, tmp1, tmp2, tmp3, tmp4, sym, tmp5, tmp6, tmp7, sym1, tmp8, tmp9, tmp10, tmp11, tmp12; tmp3 = option.None; tmp4 = option.None; sym = runtime.checkCall(Block.Symbol("x")); tmp5 = runtime.checkCall(Block.Param(tmp4, sym)); tmp6 = globalThis.Object.freeze([ tmp5 ]); tmp7 = globalThis.Object.freeze([ tmp6 ]); sym1 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$1, tmp3, tmp7, true)); tmp8 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$1, sym1)); tmp9 = globalThis.Object.freeze(new globalThis.Map()); tmp10 = globalThis.Object.freeze([ "call", "x" ]); tmp11 = globalThis.Object.freeze(new globalThis.Set(tmp10)); tmp12 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp8, tmp9, tmp11)); Function$.class$cache$Function$ = tmp12; tmp = globalThis.Object.freeze([ "call", Function$.call_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); Function$.class$generatorMap$Function$ = tmp2; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(Function$.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("Function$", Function$.class$cache$Function$, source, path, tmp)); } static preCtor$_instr() { runtime.checkArgs("preCtor$_instr", 0, true, arguments.length); let tmp, sym, sym1; runtime.checkCall(Block.Symbol("preCtor$")); tmp = option.None; sym = runtime.checkCall(Block.Symbol("x")); runtime.checkCall(Block.Param(tmp, sym)); sym1 = runtime.checkCall(Block.NoSymbol()); runtime.checkCall(Block.ValueSimpleRef(sym1)); } static class$ctor$_instr() { runtime.checkArgs("class$ctor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, end, assign; sym = runtime.checkCall(Block.Symbol("class$ctor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); sym2 = runtime.checkCall(Block.Symbol("x")); runtime.checkCall(Block.ValueSimpleRef(sym2)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, var1, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn, gen_call; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); gen_call = runtime.checkCall(Function$.call_gen(tmp_dyn)); runtime.checkCall(gen_call(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("Function$", Function$.class$cache$Function$, tmp)) } static call_instr() { runtime.checkArgs("call_instr", 0, true, arguments.length); let tmp, sym, sym1; runtime.checkCall(Block.Symbol("call")); tmp = option.None; sym = runtime.checkCall(Block.Symbol("y")); runtime.checkCall(Block.Param(tmp, sym)); sym1 = runtime.checkCall(Block.Symbol("lambda")); runtime.checkCall(Block.ValueMemberRef(sym1)); } static call_gen(cls) { runtime.checkArgs("call_gen", 1, true, arguments.length); return (y) => { let tmp, tmp1, tmp2; tmp = globalThis.Object.freeze([ cls ]); tmp1 = globalThis.Object.freeze([ y ]); tmp2 = globalThis.Object.freeze([ tmp, tmp1 ]); return runtime.checkCall(SpecializeHelpers.specialize(Function$.class$cache$Function$, "call", Function$.call_instr, tmp2)) } } get call$__checkNotMethod() { runtime.deboundMethod("call", "Function$"); } call(y) { runtime.checkArgs("call", 1, true, arguments.length); let x1; x1 = this.#x; return x1 + y } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Function$"]; }); globalThis.Object.freeze(class LiftedLambda { static { LiftedLambda1 = this } static { let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5, tmp6, tmp7; sym = runtime.checkCall(Block.ModuleSymbol("LiftedLambda", LiftedLambda, false)); tmp3 = runtime.checkCall(runtime.SymbolMap.checkModuleMap(LiftedLambda, sym)); tmp4 = globalThis.Object.freeze(new globalThis.Map()); tmp5 = globalThis.Object.freeze([ "foo" ]); tmp6 = globalThis.Object.freeze(new globalThis.Set(tmp5)); tmp7 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp3, tmp4, tmp6)); LiftedLambda.cache$LiftedLambda = tmp7; tmp = globalThis.Object.freeze([ "foo", LiftedLambda.foo_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); LiftedLambda.generatorMap$LiftedLambda = tmp2; LiftedLambda.Function$$LiftedLambda = Function$1; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(LiftedLambda.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("LiftedLambda", LiftedLambda.cache$LiftedLambda, source, path, tmp)); } static ctor$_instr() { runtime.checkArgs("ctor$_instr", 0, true, arguments.length); let sym, tmp, tmp1, end; sym = runtime.checkCall(Block.Symbol("ctor$")); tmp = globalThis.Object.freeze([]); tmp1 = globalThis.Object.freeze([ tmp ]); end = runtime.checkCall(Block.End()); return runtime.checkCall(Block.FunDefn(sym, tmp1, end)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); runtime.checkCall(LiftedLambda.foo_gen(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("LiftedLambda", LiftedLambda.cache$LiftedLambda, tmp)) } static foo_instr() { runtime.checkArgs("foo_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4, tmp5, var1, tmp6, tmp7, tmp8, sym3, tmp9, tmp10, tmp11, sym4, tmp12, var2, tmp13, inst, return1, assign, tmp14; sym = runtime.checkCall(Block.Symbol("foo")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("tmp")); tmp4 = globalThis.Object.freeze([ sym2 ]); tmp5 = runtime.checkCall(Block.ValueSimpleRef(sym2)); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp6 = runtime.checkCall(Block.Arg(var1)); tmp7 = option.None; tmp8 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp9 = runtime.checkCall(Block.Param(tmp8, sym3)); tmp10 = globalThis.Object.freeze([ tmp9 ]); tmp11 = globalThis.Object.freeze([ tmp10 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$1, tmp7, tmp11, true)); tmp12 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$1, sym4)); var2 = runtime.checkCall(Block.ValueMemberRef(tmp12)); tmp13 = globalThis.Object.freeze([ tmp6 ]); inst = runtime.checkCall(Block.Instantiate(var2, tmp13)); return1 = runtime.checkCall(Block.Return(tmp5)); assign = runtime.checkCall(Block.Assign(sym2, inst, return1)); tmp14 = runtime.checkCall(Block.Scoped(tmp4, assign)); return runtime.checkCall(Block.FunDefn(sym, tmp3, tmp14)) } static foo_gen(x) { runtime.checkArgs("foo_gen", 1, true, arguments.length); let tmp, tmp1; tmp = globalThis.Object.freeze([ x ]); tmp1 = globalThis.Object.freeze([ tmp ]); return runtime.checkCall(SpecializeHelpers.specialize(LiftedLambda.cache$LiftedLambda, "foo", LiftedLambda.foo_instr, tmp1)) } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "LiftedLambda"]; });; undefined } catch (e) { console.log('\u200B' + e + '\u200B'); } +//│ > let LiftedLambda1, Function$1;try { globalThis.Object.freeze(class Function$ extends globalThis.Function { static { Function$1 = this } constructor(x) { super(); this.#x = x; } static { let tmp, tmp1, tmp2, tmp3, tmp4, sym, tmp5, tmp6, tmp7, sym1, tmp8, tmp9, tmp10, tmp11, tmp12; tmp3 = option.None; tmp4 = option.None; sym = runtime.checkCall(Block.Symbol("x")); tmp5 = runtime.checkCall(Block.Param(tmp4, sym)); tmp6 = globalThis.Object.freeze([ tmp5 ]); tmp7 = globalThis.Object.freeze([ tmp6 ]); sym1 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$1, tmp3, tmp7, true)); tmp8 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$1, sym1)); tmp9 = globalThis.Object.freeze(new globalThis.Map()); tmp10 = globalThis.Object.freeze([ "call", "x" ]); tmp11 = globalThis.Object.freeze(new globalThis.Set(tmp10)); tmp12 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp8, tmp9, tmp11)); Function$.class$cache$Function$ = tmp12; tmp = globalThis.Object.freeze([ "call", Function$.call_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); Function$.class$generatorMap$Function$ = tmp2; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(Function$.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("Function$", Function$.class$cache$Function$, source, path, tmp)); } static preCtor$_instr() { runtime.checkArgs("preCtor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, sym3, tmp4, tmp5, tmp6, sym4, tmp7, sel, tmp8, app, end, assign; sym = runtime.checkCall(Block.Symbol("preCtor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.NoSymbol()); runtime.checkCall(Block.ValueSimpleRef(sym2)); sym3 = runtime.checkCall(Block.Symbol("globalThis")); tmp4 = runtime.checkCall(Block.ValueThis(sym3)); tmp5 = option.None; tmp6 = globalThis.Object.freeze([]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function", globalThis.Function, tmp5, tmp6, false)); tmp7 = runtime.checkCall(runtime.SymbolMap.checkClassMap(globalThis.Function, sym4)); sel = runtime.checkCall(Block.Select(tmp4, tmp7)); tmp8 = globalThis.Object.freeze([]); app = runtime.checkCall(Block.Call(sel, tmp8)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, app, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static class$ctor$_instr() { runtime.checkArgs("class$ctor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, end, assign; sym = runtime.checkCall(Block.Symbol("class$ctor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); sym2 = runtime.checkCall(Block.Symbol("x")); runtime.checkCall(Block.ValueSimpleRef(sym2)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, var1, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn, gen_call; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); gen_call = runtime.checkCall(Function$.call_gen(tmp_dyn)); runtime.checkCall(gen_call(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("Function$", Function$.class$cache$Function$, tmp)) } static call_instr() { runtime.checkArgs("call_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, sym5, sel, tmp11, var2, tmp12, tmp13, app, return1; sym = runtime.checkCall(Block.Symbol("call")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("y")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("lambda")); var1 = runtime.checkCall(Block.ValueMemberRef(sym2)); tmp4 = option.None; tmp5 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp6 = runtime.checkCall(Block.Param(tmp5, sym3)); tmp7 = globalThis.Object.freeze([ tmp6 ]); tmp8 = globalThis.Object.freeze([ tmp7 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$1, tmp4, tmp8, true)); tmp9 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$1, sym4)); tmp10 = runtime.checkCall(Block.ValueThis(tmp9)); sym5 = runtime.checkCall(Block.Symbol("x")); sel = runtime.checkCall(Block.Select(tmp10, sym5)); tmp11 = runtime.checkCall(Block.Arg(sel)); var2 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp12 = runtime.checkCall(Block.Arg(var2)); tmp13 = globalThis.Object.freeze([ tmp11, tmp12 ]); app = runtime.checkCall(Block.Call(var1, tmp13)); return1 = runtime.checkCall(Block.Return(app)); return runtime.checkCall(Block.FunDefn(sym, tmp3, return1)) } static call_gen(cls) { runtime.checkArgs("call_gen", 1, true, arguments.length); return (y) => { let tmp, tmp1, tmp2; tmp = globalThis.Object.freeze([ cls ]); tmp1 = globalThis.Object.freeze([ y ]); tmp2 = globalThis.Object.freeze([ tmp, tmp1 ]); return runtime.checkCall(SpecializeHelpers.specialize(Function$.class$cache$Function$, "call", Function$.call_instr, tmp2)) } } get call$__checkNotMethod() { runtime.deboundMethod("call", "Function$"); } call(y) { runtime.checkArgs("call", 1, true, arguments.length); let x1; x1 = this.#x; return x1 + y } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Function$"]; }); globalThis.Object.freeze(class LiftedLambda { static { LiftedLambda1 = this } static { let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5, tmp6, tmp7; sym = runtime.checkCall(Block.ModuleSymbol("LiftedLambda", LiftedLambda, false)); tmp3 = runtime.checkCall(runtime.SymbolMap.checkModuleMap(LiftedLambda, sym)); tmp4 = globalThis.Object.freeze(new globalThis.Map()); tmp5 = globalThis.Object.freeze([ "foo" ]); tmp6 = globalThis.Object.freeze(new globalThis.Set(tmp5)); tmp7 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp3, tmp4, tmp6)); LiftedLambda.cache$LiftedLambda = tmp7; tmp = globalThis.Object.freeze([ "foo", LiftedLambda.foo_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); LiftedLambda.generatorMap$LiftedLambda = tmp2; LiftedLambda.Function$$LiftedLambda = Function$1; LiftedLambda.Function$LiftedLambda = Function; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(LiftedLambda.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("LiftedLambda", LiftedLambda.cache$LiftedLambda, source, path, tmp)); } static ctor$_instr() { runtime.checkArgs("ctor$_instr", 0, true, arguments.length); let sym, tmp, tmp1, end; sym = runtime.checkCall(Block.Symbol("ctor$")); tmp = globalThis.Object.freeze([]); tmp1 = globalThis.Object.freeze([ tmp ]); end = runtime.checkCall(Block.End()); return runtime.checkCall(Block.FunDefn(sym, tmp1, end)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); runtime.checkCall(LiftedLambda.foo_gen(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("LiftedLambda", LiftedLambda.cache$LiftedLambda, tmp)) } static foo_instr() { runtime.checkArgs("foo_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4, tmp5, var1, tmp6, tmp7, tmp8, sym3, tmp9, tmp10, tmp11, sym4, tmp12, var2, tmp13, inst, return1, assign, tmp14; sym = runtime.checkCall(Block.Symbol("foo")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("tmp")); tmp4 = globalThis.Object.freeze([ sym2 ]); tmp5 = runtime.checkCall(Block.ValueSimpleRef(sym2)); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp6 = runtime.checkCall(Block.Arg(var1)); tmp7 = option.None; tmp8 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp9 = runtime.checkCall(Block.Param(tmp8, sym3)); tmp10 = globalThis.Object.freeze([ tmp9 ]); tmp11 = globalThis.Object.freeze([ tmp10 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$1, tmp7, tmp11, true)); tmp12 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$1, sym4)); var2 = runtime.checkCall(Block.ValueMemberRef(tmp12)); tmp13 = globalThis.Object.freeze([ tmp6 ]); inst = runtime.checkCall(Block.Instantiate(var2, tmp13)); return1 = runtime.checkCall(Block.Return(tmp5)); assign = runtime.checkCall(Block.Assign(sym2, inst, return1)); tmp14 = runtime.checkCall(Block.Scoped(tmp4, assign)); return runtime.checkCall(Block.FunDefn(sym, tmp3, tmp14)) } static foo_gen(x) { runtime.checkArgs("foo_gen", 1, true, arguments.length); let tmp, tmp1; tmp = globalThis.Object.freeze([ x ]); tmp1 = globalThis.Object.freeze([ tmp ]); return runtime.checkCall(SpecializeHelpers.specialize(LiftedLambda.cache$LiftedLambda, "foo", LiftedLambda.foo_instr, tmp1)) } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "LiftedLambda"]; });; undefined } catch (e) { console.log('\u200B' + e + '\u200B'); } //│ > ^ //│ ═══[COMPILATION ERROR] [Uncaught SyntaxError] Private field '#x' must be declared in an enclosing class :fixme staged module LiftedMultParams with fun foo(x)(y) = x + y -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— //│ let LiftedMultParams⁰, lambda$⁰, Function$³; //│ @staged @@ -350,7 +381,7 @@ staged module LiftedMultParams with //│ end //│ } //│ method preCtor$_instr² = fun preCtor$_instr³() { -//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4; +//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4, sym3, tmp5, tmp6, tmp7, sym4, tmp8, sel, tmp9, app, end, assign, tmp10; //│ set sym = Block⁰.Symbol﹖("preCtor$"); //│ set tmp = option⁰.None﹖; //│ set sym1 = Block⁰.Symbol﹖("x"); @@ -359,7 +390,19 @@ staged module LiftedMultParams with //│ set tmp3 = [tmp2]; //│ set sym2 = Block⁰.NoSymbol﹖(); //│ set tmp4 = Block⁰.ValueSimpleRef﹖(sym2); -//│ end +//│ set sym3 = Block⁰.Symbol﹖("globalThis"); +//│ set tmp5 = Block⁰.ValueThis﹖(sym3); +//│ set tmp6 = option⁰.None﹖; +//│ set tmp7 = []; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function", globalThis⁰.Function⁰, tmp6, tmp7, false); +//│ set tmp8 = runtime⁰.SymbolMap﹖.checkClassMap﹖(globalThis⁰.Function⁰, sym4); +//│ set sel = Block⁰.Select﹖(tmp5, tmp8); +//│ set tmp9 = []; +//│ set app = Block⁰.Call﹖(sel, tmp9); +//│ set end = Block⁰.End﹖(); +//│ set assign = Block⁰.Assign﹖(sym2, app, end); +//│ set tmp10 = Block⁰.FunDefn﹖(sym, tmp3, assign); +//│ return tmp10 //│ } //│ method class$ctor$_instr² = fun class$ctor$_instr³() { //│ let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, tmp4, end, assign, tmp5; @@ -391,7 +434,7 @@ staged module LiftedMultParams with //│ return tmp1 //│ } //│ method call_instr² = fun call_instr³() { -//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1; +//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, sym5, sel, tmp11, var2, tmp12, tmp13, app, return1, tmp14; //│ set sym = Block⁰.Symbol﹖("call"); //│ set tmp = option⁰.None﹖; //│ set sym1 = Block⁰.Symbol﹖("y"); @@ -400,7 +443,25 @@ staged module LiftedMultParams with //│ set tmp3 = [tmp2]; //│ set sym2 = Block⁰.Symbol﹖("lambda$"); //│ set var1 = Block⁰.ValueMemberRef﹖(sym2); -//│ end +//│ set tmp4 = option⁰.None﹖; +//│ set tmp5 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp6 = Block⁰.Param﹖(tmp5, sym3); +//│ set tmp7 = [tmp6]; +//│ set tmp8 = [tmp7]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$⁴, tmp4, tmp8, true); +//│ set tmp9 = runtime⁰.SymbolMap﹖.checkClassMap﹖(Function$⁴, sym4); +//│ set tmp10 = Block⁰.ValueThis﹖(tmp9); +//│ set sym5 = Block⁰.Symbol﹖("x"); +//│ set sel = Block⁰.Select﹖(tmp10, sym5); +//│ set tmp11 = Block⁰.Arg﹖(sel); +//│ set var2 = Block⁰.ValueSimpleRef﹖(sym1); +//│ set tmp12 = Block⁰.Arg﹖(var2); +//│ set tmp13 = [tmp11, tmp12]; +//│ set app = Block⁰.Call﹖(var1, tmp13); +//│ set return1 = Block⁰.Return﹖(app); +//│ set tmp14 = Block⁰.FunDefn﹖(sym, tmp3, return1); +//│ return tmp14 //│ } //│ method call_gen² = fun call_gen³(cls)(y) { //│ let tmp, tmp1, tmp2, tmp3; @@ -426,6 +487,7 @@ staged module LiftedMultParams with //│ set tmp1 = [tmp]; //│ set tmp2 = new globalThis⁰.Map﹖(tmp1); //│ define generatorMap$LiftedMultParams⁰ as val generatorMap$LiftedMultParams¹ = tmp2; +//│ define Function$LiftedMultParams⁰ as val Function$LiftedMultParams¹ = Function⁰; //│ define Function$$LiftedMultParams⁰ as val Function$$LiftedMultParams¹ = Function$⁴; //│ end //│ } @@ -498,7 +560,11 @@ staged module LiftedMultParams with //│ end //│ ═══[COMPILATION ERROR] No definition found in scope for member 'x' //│ ═══[COMPILATION ERROR] No definition found in scope for member 'x' +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Function' +//│ ╟── which references the symbol introduced here +//│ ║ l.34: declare class Function +//│ ╙── ^^^^^^^^ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > let LiftedMultParams1, Function$3;try { globalThis.Object.freeze(class Function$2 extends globalThis.Function { static { Function$3 = this } constructor(x) { super(); this.#x = x; } static { let tmp, tmp1, tmp2, tmp3, tmp4, sym, tmp5, tmp6, tmp7, sym1, tmp8, tmp9, tmp10, tmp11, tmp12; tmp3 = option.None; tmp4 = option.None; sym = runtime.checkCall(Block.Symbol("x")); tmp5 = runtime.checkCall(Block.Param(tmp4, sym)); tmp6 = globalThis.Object.freeze([ tmp5 ]); tmp7 = globalThis.Object.freeze([ tmp6 ]); sym1 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$3, tmp3, tmp7, true)); tmp8 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym1)); tmp9 = globalThis.Object.freeze(new globalThis.Map()); tmp10 = globalThis.Object.freeze([ "call", "x" ]); tmp11 = globalThis.Object.freeze(new globalThis.Set(tmp10)); tmp12 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp8, tmp9, tmp11)); Function$2.class$cache$Function$ = tmp12; tmp = globalThis.Object.freeze([ "call", Function$2.call_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); Function$2.class$generatorMap$Function$ = tmp2; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(Function$2.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("Function$", Function$2.class$cache$Function$, source, path, tmp)); } static preCtor$_instr() { runtime.checkArgs("preCtor$_instr", 0, true, arguments.length); let tmp, sym, sym1; runtime.checkCall(Block.Symbol("preCtor$")); tmp = option.None; sym = runtime.checkCall(Block.Symbol("x")); runtime.checkCall(Block.Param(tmp, sym)); sym1 = runtime.checkCall(Block.NoSymbol()); runtime.checkCall(Block.ValueSimpleRef(sym1)); } static class$ctor$_instr() { runtime.checkArgs("class$ctor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, end, assign; sym = runtime.checkCall(Block.Symbol("class$ctor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); sym2 = runtime.checkCall(Block.Symbol("x")); runtime.checkCall(Block.ValueSimpleRef(sym2)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, var1, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn, gen_call; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); gen_call = runtime.checkCall(Function$2.call_gen(tmp_dyn)); runtime.checkCall(gen_call(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("Function$", Function$2.class$cache$Function$, tmp)) } static call_instr() { runtime.checkArgs("call_instr", 0, true, arguments.length); let tmp, sym, sym1; runtime.checkCall(Block.Symbol("call")); tmp = option.None; sym = runtime.checkCall(Block.Symbol("y")); runtime.checkCall(Block.Param(tmp, sym)); sym1 = runtime.checkCall(Block.Symbol("lambda$")); runtime.checkCall(Block.ValueMemberRef(sym1)); } static call_gen(cls) { runtime.checkArgs("call_gen", 1, true, arguments.length); return (y) => { let tmp, tmp1, tmp2; tmp = globalThis.Object.freeze([ cls ]); tmp1 = globalThis.Object.freeze([ y ]); tmp2 = globalThis.Object.freeze([ tmp, tmp1 ]); return runtime.checkCall(SpecializeHelpers.specialize(Function$2.class$cache$Function$, "call", Function$2.call_instr, tmp2)) } } get call$__checkNotMethod() { runtime.deboundMethod("call", "Function$"); } call(y) { runtime.checkArgs("call", 1, true, arguments.length); let x1; x1 = this.#x; return x1 + y } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Function$"]; }); globalThis.Object.freeze(class LiftedMultParams { static { LiftedMultParams1 = this } static { let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5, tmp6, tmp7; sym = runtime.checkCall(Block.ModuleSymbol("LiftedMultParams", LiftedMultParams, false)); tmp3 = runtime.checkCall(runtime.SymbolMap.checkModuleMap(LiftedMultParams, sym)); tmp4 = globalThis.Object.freeze(new globalThis.Map()); tmp5 = globalThis.Object.freeze([ "foo" ]); tmp6 = globalThis.Object.freeze(new globalThis.Set(tmp5)); tmp7 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp3, tmp4, tmp6)); LiftedMultParams.cache$LiftedMultParams = tmp7; tmp = globalThis.Object.freeze([ "foo", LiftedMultParams.foo_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); LiftedMultParams.generatorMap$LiftedMultParams = tmp2; LiftedMultParams.Function$$LiftedMultParams = Function$3; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(LiftedMultParams.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("LiftedMultParams", LiftedMultParams.cache$LiftedMultParams, source, path, tmp)); } static ctor$_instr() { runtime.checkArgs("ctor$_instr", 0, true, arguments.length); let sym, tmp, tmp1, end; sym = runtime.checkCall(Block.Symbol("ctor$")); tmp = globalThis.Object.freeze([]); tmp1 = globalThis.Object.freeze([ tmp ]); end = runtime.checkCall(Block.End()); return runtime.checkCall(Block.FunDefn(sym, tmp1, end)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); runtime.checkCall(LiftedMultParams.foo_gen(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("LiftedMultParams", LiftedMultParams.cache$LiftedMultParams, tmp)) } static foo_instr() { runtime.checkArgs("foo_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4, tmp5, var1, tmp6, tmp7, tmp8, sym3, tmp9, tmp10, tmp11, sym4, tmp12, var2, tmp13, inst, return1, assign, tmp14; sym = runtime.checkCall(Block.Symbol("foo")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("tmp")); tmp4 = globalThis.Object.freeze([ sym2 ]); tmp5 = runtime.checkCall(Block.ValueSimpleRef(sym2)); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp6 = runtime.checkCall(Block.Arg(var1)); tmp7 = option.None; tmp8 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp9 = runtime.checkCall(Block.Param(tmp8, sym3)); tmp10 = globalThis.Object.freeze([ tmp9 ]); tmp11 = globalThis.Object.freeze([ tmp10 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$3, tmp7, tmp11, true)); tmp12 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym4)); var2 = runtime.checkCall(Block.ValueMemberRef(tmp12)); tmp13 = globalThis.Object.freeze([ tmp6 ]); inst = runtime.checkCall(Block.Instantiate(var2, tmp13)); return1 = runtime.checkCall(Block.Return(tmp5)); assign = runtime.checkCall(Block.Assign(sym2, inst, return1)); tmp14 = runtime.checkCall(Block.Scoped(tmp4, assign)); return runtime.checkCall(Block.FunDefn(sym, tmp3, tmp14)) } static foo_gen(x) { runtime.checkArgs("foo_gen", 1, true, arguments.length); let tmp, tmp1; tmp = globalThis.Object.freeze([ x ]); tmp1 = globalThis.Object.freeze([ tmp ]); return runtime.checkCall(SpecializeHelpers.specialize(LiftedMultParams.cache$LiftedMultParams, "foo", LiftedMultParams.foo_instr, tmp1)) } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "LiftedMultParams"]; });; undefined } catch (e) { console.log('\u200B' + e + '\u200B'); } +//│ > let LiftedMultParams1, Function$3;try { globalThis.Object.freeze(class Function$2 extends globalThis.Function { static { Function$3 = this } constructor(x) { super(); this.#x = x; } static { let tmp, tmp1, tmp2, tmp3, tmp4, sym, tmp5, tmp6, tmp7, sym1, tmp8, tmp9, tmp10, tmp11, tmp12; tmp3 = option.None; tmp4 = option.None; sym = runtime.checkCall(Block.Symbol("x")); tmp5 = runtime.checkCall(Block.Param(tmp4, sym)); tmp6 = globalThis.Object.freeze([ tmp5 ]); tmp7 = globalThis.Object.freeze([ tmp6 ]); sym1 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$3, tmp3, tmp7, true)); tmp8 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym1)); tmp9 = globalThis.Object.freeze(new globalThis.Map()); tmp10 = globalThis.Object.freeze([ "call", "x" ]); tmp11 = globalThis.Object.freeze(new globalThis.Set(tmp10)); tmp12 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp8, tmp9, tmp11)); Function$2.class$cache$Function$ = tmp12; tmp = globalThis.Object.freeze([ "call", Function$2.call_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); Function$2.class$generatorMap$Function$ = tmp2; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(Function$2.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("Function$", Function$2.class$cache$Function$, source, path, tmp)); } static preCtor$_instr() { runtime.checkArgs("preCtor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, sym3, tmp4, tmp5, tmp6, sym4, tmp7, sel, tmp8, app, end, assign; sym = runtime.checkCall(Block.Symbol("preCtor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.NoSymbol()); runtime.checkCall(Block.ValueSimpleRef(sym2)); sym3 = runtime.checkCall(Block.Symbol("globalThis")); tmp4 = runtime.checkCall(Block.ValueThis(sym3)); tmp5 = option.None; tmp6 = globalThis.Object.freeze([]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function", globalThis.Function, tmp5, tmp6, false)); tmp7 = runtime.checkCall(runtime.SymbolMap.checkClassMap(globalThis.Function, sym4)); sel = runtime.checkCall(Block.Select(tmp4, tmp7)); tmp8 = globalThis.Object.freeze([]); app = runtime.checkCall(Block.Call(sel, tmp8)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, app, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static class$ctor$_instr() { runtime.checkArgs("class$ctor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, end, assign; sym = runtime.checkCall(Block.Symbol("class$ctor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); sym2 = runtime.checkCall(Block.Symbol("x")); runtime.checkCall(Block.ValueSimpleRef(sym2)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, var1, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn, gen_call; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); gen_call = runtime.checkCall(Function$2.call_gen(tmp_dyn)); runtime.checkCall(gen_call(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("Function$", Function$2.class$cache$Function$, tmp)) } static call_instr() { runtime.checkArgs("call_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, sym5, sel, tmp11, var2, tmp12, tmp13, app, return1; sym = runtime.checkCall(Block.Symbol("call")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("y")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("lambda$")); var1 = runtime.checkCall(Block.ValueMemberRef(sym2)); tmp4 = option.None; tmp5 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp6 = runtime.checkCall(Block.Param(tmp5, sym3)); tmp7 = globalThis.Object.freeze([ tmp6 ]); tmp8 = globalThis.Object.freeze([ tmp7 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$3, tmp4, tmp8, true)); tmp9 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym4)); tmp10 = runtime.checkCall(Block.ValueThis(tmp9)); sym5 = runtime.checkCall(Block.Symbol("x")); sel = runtime.checkCall(Block.Select(tmp10, sym5)); tmp11 = runtime.checkCall(Block.Arg(sel)); var2 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp12 = runtime.checkCall(Block.Arg(var2)); tmp13 = globalThis.Object.freeze([ tmp11, tmp12 ]); app = runtime.checkCall(Block.Call(var1, tmp13)); return1 = runtime.checkCall(Block.Return(app)); return runtime.checkCall(Block.FunDefn(sym, tmp3, return1)) } static call_gen(cls) { runtime.checkArgs("call_gen", 1, true, arguments.length); return (y) => { let tmp, tmp1, tmp2; tmp = globalThis.Object.freeze([ cls ]); tmp1 = globalThis.Object.freeze([ y ]); tmp2 = globalThis.Object.freeze([ tmp, tmp1 ]); return runtime.checkCall(SpecializeHelpers.specialize(Function$2.class$cache$Function$, "call", Function$2.call_instr, tmp2)) } } get call$__checkNotMethod() { runtime.deboundMethod("call", "Function$"); } call(y) { runtime.checkArgs("call", 1, true, arguments.length); let x1; x1 = this.#x; return x1 + y } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Function$"]; }); globalThis.Object.freeze(class LiftedMultParams { static { LiftedMultParams1 = this } static { let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5, tmp6, tmp7; sym = runtime.checkCall(Block.ModuleSymbol("LiftedMultParams", LiftedMultParams, false)); tmp3 = runtime.checkCall(runtime.SymbolMap.checkModuleMap(LiftedMultParams, sym)); tmp4 = globalThis.Object.freeze(new globalThis.Map()); tmp5 = globalThis.Object.freeze([ "foo" ]); tmp6 = globalThis.Object.freeze(new globalThis.Set(tmp5)); tmp7 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp3, tmp4, tmp6)); LiftedMultParams.cache$LiftedMultParams = tmp7; tmp = globalThis.Object.freeze([ "foo", LiftedMultParams.foo_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); LiftedMultParams.generatorMap$LiftedMultParams = tmp2; LiftedMultParams.Function$LiftedMultParams = Function; LiftedMultParams.Function$$LiftedMultParams = Function$3; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(LiftedMultParams.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("LiftedMultParams", LiftedMultParams.cache$LiftedMultParams, source, path, tmp)); } static ctor$_instr() { runtime.checkArgs("ctor$_instr", 0, true, arguments.length); let sym, tmp, tmp1, end; sym = runtime.checkCall(Block.Symbol("ctor$")); tmp = globalThis.Object.freeze([]); tmp1 = globalThis.Object.freeze([ tmp ]); end = runtime.checkCall(Block.End()); return runtime.checkCall(Block.FunDefn(sym, tmp1, end)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); runtime.checkCall(LiftedMultParams.foo_gen(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("LiftedMultParams", LiftedMultParams.cache$LiftedMultParams, tmp)) } static foo_instr() { runtime.checkArgs("foo_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4, tmp5, var1, tmp6, tmp7, tmp8, sym3, tmp9, tmp10, tmp11, sym4, tmp12, var2, tmp13, inst, return1, assign, tmp14; sym = runtime.checkCall(Block.Symbol("foo")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("tmp")); tmp4 = globalThis.Object.freeze([ sym2 ]); tmp5 = runtime.checkCall(Block.ValueSimpleRef(sym2)); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp6 = runtime.checkCall(Block.Arg(var1)); tmp7 = option.None; tmp8 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp9 = runtime.checkCall(Block.Param(tmp8, sym3)); tmp10 = globalThis.Object.freeze([ tmp9 ]); tmp11 = globalThis.Object.freeze([ tmp10 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$3, tmp7, tmp11, true)); tmp12 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym4)); var2 = runtime.checkCall(Block.ValueMemberRef(tmp12)); tmp13 = globalThis.Object.freeze([ tmp6 ]); inst = runtime.checkCall(Block.Instantiate(var2, tmp13)); return1 = runtime.checkCall(Block.Return(tmp5)); assign = runtime.checkCall(Block.Assign(sym2, inst, return1)); tmp14 = runtime.checkCall(Block.Scoped(tmp4, assign)); return runtime.checkCall(Block.FunDefn(sym, tmp3, tmp14)) } static foo_gen(x) { runtime.checkArgs("foo_gen", 1, true, arguments.length); let tmp, tmp1; tmp = globalThis.Object.freeze([ x ]); tmp1 = globalThis.Object.freeze([ tmp ]); return runtime.checkCall(SpecializeHelpers.specialize(LiftedMultParams.cache$LiftedMultParams, "foo", LiftedMultParams.foo_instr, tmp1)) } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "LiftedMultParams"]; });; undefined } catch (e) { console.log('\u200B' + e + '\u200B'); } //│ > ^ //│ ═══[COMPILATION ERROR] [Uncaught SyntaxError] Private field '#x' must be declared in an enclosing class diff --git a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls index 59ebc364af..d12936bb2f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/PrintCode.mls @@ -121,5 +121,5 @@ printCode(Scoped([Symbol("y")], Match( //│ > y = 3 //│ > y -Printer(Some(dSym)).printCode(Select(ValueMemberRef(dSym), Symbol("x"))) -//│ > x +Printer(Some(dSym)).printCode(Select(ValueSimpleRef(dSym), Symbol("x"))) +//│ > D.x diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls index 44c4c93669..05872a845a 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StageSymbols.mls @@ -2,12 +2,10 @@ :staging :noModuleCheck -:fixme staged module M with class C with fun f() = 1 fun g() = f() -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. staged module A with fun f() = 1 @@ -23,7 +21,6 @@ staged module D with 1 is Int 1 is C -:fixme module A with module B with class C(a) @@ -34,26 +31,25 @@ staged module M with x = A.B.C A.B.C(2) E -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. :e staged module M with fun g()() = 1 //│ ╔══[COMPILATION ERROR] :ftc must be enabled to desugar functions with multiple parameter lists. -//│ ║ l.41: fun g()() = 1 +//│ ║ l.37: fun g()() = 1 //│ ╙── ^^^^^^^^^^^^^ :ftc -:fixme staged module M with fun f() = x => x fun g()() = 1 -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. +:noModuleCheck :silent let x = M."f_instr"().body.rest.rhs.cls.l let y = M."g_instr"().body.rest.rhs.cls.l +assert x.value != y.value +// check that the two functions will be printed differently assert x.name != y.name staged module Shadowing with @@ -81,4 +77,15 @@ assert x === y :fixme Array should be skipped for redirection staged module M with val a = Math.cos(1) is Array // doesn't handle Array -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Array' +//│ ╟── which references the symbol introduced here +//│ ║ l.105: declare class Array[T] +//│ ╙── ^^^^^^^^ +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Array' +//│ ╟── which references the symbol introduced here +//│ ║ l.105: declare class Array[T] +//│ ╙── ^^^^^^^^ +//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Array' +//│ ╟── which references the symbol introduced here +//│ ║ l.105: declare class Array[T] +//│ ╙── ^^^^^^^^ diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls index 0cbc78ec20..720531ee6f 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SymbolRenaming.mls @@ -17,8 +17,6 @@ staged module Selection with x.call() C(1).x is Bool -:fixme staged module DupeClass with class C(val y) fun f() = C(1).y -//│ ═══[COMPILATION ERROR] Value.This not supported in staged module. diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls index f6fa4a2650..995f8829ba 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Syntax.mls @@ -25,15 +25,15 @@ staged module A //│ staged module A² { //│ constructor { //│ let tmp, tmp1, sym, tmp2, tmp3, tmp4, tmp5, tmp6; -//│ set sym = Block⁰.ModuleSymbol﹖("A", A², false); -//│ set tmp2 = runtime⁰.SymbolMap﹖.checkModuleMap﹖(A², sym); -//│ set tmp3 = new globalThis⁰.this.Map﹖(); +//│ set sym = Block⁰.ModuleSymbol﹖("A", A².this, false); +//│ set tmp2 = runtime⁰.SymbolMap﹖.checkModuleMap﹖(A².this, sym); +//│ set tmp3 = new globalThis⁰.Map﹖(); //│ set tmp4 = []; -//│ set tmp5 = new globalThis⁰.this.Set﹖(tmp4); +//│ set tmp5 = new globalThis⁰.Set﹖(tmp4); //│ set tmp6 = new SpecializeHelpers⁰.FunCache﹖(tmp2, tmp3, tmp5); //│ define cache$A⁰ as val cache$A¹ = tmp6; //│ set tmp = []; -//│ set tmp1 = new globalThis⁰.this.Map﹖(tmp); +//│ set tmp1 = new globalThis⁰.Map﹖(tmp); //│ define generatorMap$A⁰ as val generatorMap$A¹ = tmp1; //│ end //│ } From 10bbc0e412186504a1dba22356bb9fa53042c6f6 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Mon, 1 Jun 2026 18:46:06 +0800 Subject: [PATCH 644/654] Fix missing cases and wrong rewrite --- .../codegen/ReflectionInstrumenter.scala | 6 - .../mlscript-compile/SpecializeHelpers.mls | 47 +++++- .../staging/out/StagedClass.mls | 10 +- .../staging/out/Transform3D.mls | 24 +-- .../test/mlscript/block-staging/Nested.mls | 138 ++++++++++-------- .../test/mlscript/block-staging/ShapeProp.mls | 2 +- .../block-staging/ShapeSetHelpers.mls | 92 ++++++------ 7 files changed, 179 insertions(+), 140 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index 34acc28834..e10bd16713 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -473,12 +473,6 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S // refresh symbols after copying parameter list override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l) val paramRewrite = new BlockTransformer(varSymSubst): - override def applyBlock(b: Block) = b match - // process ctor: remove ValDefn of parameters already defined in the class parameters - // remove `val C.x = x` statements from the constructor - case Define(ValDefn(_, _, Value.SimpleRef(sym: VarSymbol)), rest) - if paramSymMap.contains(sym) => applyBlock(rest) - case _ => super.applyBlock(b) override def applyScopedBlock(b: Block) = b match case Scoped(s, bd) => val nb = applySubBlock(bd) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 7a0faf8498..42cc8c5e22 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -203,13 +203,17 @@ fun sov(v): ShapeSet = fun sop(ctx, p): ShapeSet = if ctx.get(p) is Some(s) then s None and p is - Select(ValueMemberRef(clsSymb), Symbol(name)) and clsSymb is ConcreteClassSymbol and // variables defined in valdefn (this is for constructor propagation only) - ctx.getValDefn(name) is Some(s) then s - Select(Select(ValueThis(clsSymb), Symbol(name)), Symbol(name2)) and clsSymb is ConcreteClassSymbol and ctx.thisShape is Some(thisShape) then // this.name.name2 - selSet(selSet(thisShape, mkLit(name)), mkLit(name2)) - Select(qual, Symbol(name)) and // object property - ctx.thisShape is Some(thisShape) then // this.name + Select(ValueMemberRef(clsSymb), Symbol(name)) and clsSymb is ConcreteClassSymbol then + if ctx.thisShape is Some(thisShape) then // this.name selSet(thisShape, mkLit(name)) + else if ctx.getValDefn(name) is Some(s) then s // variables defined in valdefn (this is for constructor propagation only) + else throw Error("member not found: " + name) + Select(ValueThis(clsSymb), Symbol(name)) and clsSymb is ConcreteClassSymbol then + if ctx.thisShape is Some(thisShape) then // this.name + selSet(thisShape, mkLit(name)) + else if ctx.getValDefn(name) is Some(s) then s // variables defined in valdefn (this is for constructor propagation only) + else throw Error("member not found: " + name) + Select(qual, Symbol(name)) and // object property name is "length" and // special handle array .length let qualShape = sop(ctx, qual) let vals = qualShape.values() @@ -222,6 +226,7 @@ fun sop(ctx, p): ShapeSet = if ctx.get(p) is DynSelect(qual, fld, _) then selSet(sop(ctx, qual), sop(ctx, fld)) ValueLit(lit) then mkLit(lit) + ValueThis(clsSymb) and clsSymb is ConcreteClassSymbol and ctx.thisShape is Some(thisShape) then thisShape ValueSimpleRef | ValueMemberRef then mkDyn() // This sub p.(n) to p.1 if n -> 1 @@ -298,6 +303,8 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is Select(Select(ValueMemberRef(Symbol("runtime")), Symbol("Tuple")), Symbol("slice")) then throw Error("runtime.Tuple.slice not handled in shape propagation") Select(ValueMemberRef(ModuleSymbol(name, value, _)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within module + [End(), r, mkClass(clsSymb, argShapes)] + Select(ValueThis(ModuleSymbol(name, value, _)), clsSymb) and clsSymb is ConcreteClassSymbol then // class within current module [End(), r, mkClass(clsSymb, argShapes)] // FIXME ValueMemberRef(clsSymb) and clsSymb is ConcreteClassSymbol and // top-level class isStagedClass(clsSymb.value) and @@ -308,6 +315,28 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is else throw Error("class is staged but cache not found") else [End(), r, mkClass(clsSymb, argShapes)] ValueSimpleRef(symb) | ValueMemberRef(symb) then sorBuiltinOp(ctx, r, f, symb.name, args) // built-in or top-level + Select(ValueThis(ModuleSymbol(name, value, redir)), Symbol(fld)) and + let mapPropName = getGenMapName(name, false) + let cachePropName = getCacheName(name, false) + let genMap = value.(mapPropName) + not (genMap is undefined) and + let f_gen = genMap.get(fld) + not (f_gen is Runtime.Unit) and // staged function + let res = f_gen(...argShapes) + staticSet(res.1) then + let v2p = shapeset2path(res.1, ctx.allocs) + [v2p.0, v2p.1, res.1] + else + [End(), Call(Select(ValueThis(ModuleSymbol(name, value, redir)), Symbol(res.0)), args), res.1] + else + throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") + argShapes.every(staticSet) and // non staged function and params known + let fimp = value.(fld) + let evaluated = fimp(...argShapes.map(valOfSet)) + let inferredShape = sov(evaluated) + staticSet(inferredShape) then // shape can be inferred from runtime value + let evaluatedPath = shapeset2path(inferredShape, ctx.allocs) + [evaluatedPath.0, evaluatedPath.1, inferredShape] Select(ValueMemberRef(ModuleSymbol(name, value, redir)), Symbol(fld)) and let mapPropName = getGenMapName(name, false) let cachePropName = getCacheName(name, false) @@ -424,6 +453,8 @@ fun prop(ctx, b) = if b is Return(Call(Select(p, Symbol(f)), args)) and not (f is "concat") and p is // TODO[later]: Ref -> Path, remove special checks ValueSimpleRef(symb) | ValueMemberRef(symb) and not symb is ModuleSymbol then [...dispatchMethodCall(ctx, None, p, f, args), false] + Select(ValueThis(ConcreteClassSymbol), _) then + [...dispatchMethodCall(ctx, None, p, f, args), false] Select(ValueMemberRef(ConcreteClassSymbol), _) then [...dispatchMethodCall(ctx, None, p, f, args), false] Return(res) and sor(ctx, res) is [blk, r1, s1] then @@ -439,6 +470,10 @@ fun prop(ctx, b) = if b is let res = dispatchMethodCall(ctx, Some(x), p, f, args) let b2 = prop(ctx.add(ValueSimpleRef(x), res.1), restBlock) [concat(res.0, b2.0), b2.1, b2.2] + Select(ValueThis(ConcreteClassSymbol), _) then + let res = dispatchMethodCall(ctx, Some(x), p, f, args) + let b2 = prop(ctx.add(ValueSimpleRef(x), res.1), restBlock) + [concat(res.0, b2.0), b2.1, b2.2] Select(ValueMemberRef(ConcreteClassSymbol), _) then let res = dispatchMethodCall(ctx, Some(x), p, f, args) let b2 = prop(ctx.add(ValueSimpleRef(x), res.1), restBlock) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index baf183b742..400813e27c 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -5,7 +5,7 @@ module StagedClass with class Bar(val x) with fun f(y, z) = let {tmp} - tmp = this.x + y + tmp = x + y tmp + z class Baz(val x) with () @@ -27,8 +27,8 @@ module StagedClass with let {scrut} scrut = <(x, y) if scrut is - true then new StagedClass.Bar(x) - else new StagedClass.Bar(y) + true then new Bar(x) + else new Bar(y) fun g(y) = let {tmp1} tmp1 = x + y @@ -36,7 +36,7 @@ module StagedClass with fun h(y) = let {tmp2} tmp2 = x + y - StagedClass.helpFoo(tmp2) + helpFoo(tmp2) private fun f_X_sp_0(y) = let {obj_11} obj_11 = new Bar(0) @@ -48,7 +48,7 @@ module StagedClass with fun baz(b) = if b is true then Baz(1) - else new Baz(2) + else new Baz.class(2) fun f(x) = let {x__, y4, arg_Baz_0_, arg_Bar_0_} if x is diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 58107ef3e8..e7fa1c5927 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -104,8 +104,8 @@ module Transform3D with iterRow(res, x, y, rowX1, colX3, colY2, rowX1) fun rotateX(angle) = let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_196, tup_197, tup_198, tup_199, tup_200} - s = globalThis.Math.sin(angle) - c2 = globalThis.Math.cos(angle) + s = Math.sin(angle) + c2 = Math.cos(angle) tup_196 = [1, 0, 0, 0] tup_197 = [0, 1, 0, 0] tup_198 = [0, 0, 1, 0] @@ -119,8 +119,8 @@ module Transform3D with update_Transform3D_sp_5(tmp32, 2, 2, c2) fun rotateY(angle) = let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_206, tup_207, tup_208, tup_209, tup_210} - s1 = globalThis.Math.sin(angle) - c3 = globalThis.Math.cos(angle) + s1 = Math.sin(angle) + c3 = Math.cos(angle) tup_206 = [1, 0, 0, 0] tup_207 = [0, 1, 0, 0] tup_208 = [0, 0, 1, 0] @@ -134,8 +134,8 @@ module Transform3D with update_Transform3D_sp_5(tmp37, 2, 2, c3) fun rotateZ(angle) = let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_211, tup_212, tup_213, tup_214, tup_215} - s2 = globalThis.Math.sin(angle) - c4 = globalThis.Math.cos(angle) + s2 = Math.sin(angle) + c4 = Math.cos(angle) tup_211 = [1, 0, 0, 0] tup_212 = [0, 1, 0, 0] tup_213 = [0, 0, 1, 0] @@ -1104,8 +1104,8 @@ module Transform3D with iterRow_Transform3D_sp_7(res, x, y, rowX1, colX3, colY2, rowX1) private fun rotateX_Transform3D_sp_0(angle) = let {s, c2, tmp28, tmp29, tmp30, tmp31, tmp32, tup_277, tup_278, tup_279, tup_280, tup_281} - s = globalThis.Math.sin(2.51327412) - c2 = globalThis.Math.cos(2.51327412) + s = Math.sin(2.51327412) + c2 = Math.cos(2.51327412) tup_277 = [1, 0, 0, 0] tup_278 = [0, 1, 0, 0] tup_279 = [0, 0, 1, 0] @@ -1119,8 +1119,8 @@ module Transform3D with update_Transform3D_sp_5(tmp32, 2, 2, c2) private fun rotateY_Transform3D_sp_0(angle) = let {s1, c3, tmp33, tmp34, tmp35, tmp36, tmp37, tup_272, tup_273, tup_274, tup_275, tup_276} - s1 = globalThis.Math.sin(3.1415926535) - c3 = globalThis.Math.cos(3.1415926535) + s1 = Math.sin(3.1415926535) + c3 = Math.cos(3.1415926535) tup_272 = [1, 0, 0, 0] tup_273 = [0, 1, 0, 0] tup_274 = [0, 0, 1, 0] @@ -1134,8 +1134,8 @@ module Transform3D with update_Transform3D_sp_5(tmp37, 2, 2, c3) private fun rotateZ_Transform3D_sp_0(angle) = let {s2, c4, tmp38, tmp39, tmp40, tmp41, tmp42, tup_267, tup_268, tup_269, tup_270, tup_271} - s2 = globalThis.Math.sin(0) - c4 = globalThis.Math.cos(0) + s2 = Math.sin(0) + c4 = Math.cos(0) tup_267 = [1, 0, 0, 0] tup_268 = [0, 1, 0, 0] tup_269 = [0, 0, 1, 0] diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls index 0f0e6e43ee..be490e7517 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Nested.mls @@ -91,7 +91,6 @@ staged module LiftedNested with //│ end //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -:fixme staged module LiftedLambda with fun foo(x) = y => x + y //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— @@ -105,11 +104,13 @@ staged module LiftedLambda with //│ constructor(x) { //│ do super⁰(); //│ end; -//│ set Function$¹.this.x = x; +//│ let tmp; +//│ set tmp = x; +//│ define x⁰ as val x¹ = tmp; //│ end //│ } //│ method call⁰ = fun call¹(y) { -//│ return lambda¹(Function$¹.this.x¹, y) +//│ return lambda¹(Function$¹.this.x﹖, y) //│ } //│ } //│ module Function$² { @@ -166,20 +167,34 @@ staged module LiftedLambda with //│ return tmp10 //│ } //│ method class$ctor$_instr⁰ = fun class$ctor$_instr¹() { -//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, tmp4, end, assign, tmp5; +//│ let tmp, sym, tmp1, sym1, tmp2, tmp3, tmp4, sym2, tmp5, tmp6, var1, tmp7, tmp8, sym3, tmp9, tmp10, tmp11, sym4, tmp12, tmp13, sym5, end, tmp14, tmp15, assign, tmp16, tmp17; //│ set sym = Block⁰.Symbol﹖("class$ctor$"); -//│ set tmp = option⁰.None﹖; +//│ set tmp1 = option⁰.None﹖; //│ set sym1 = Block⁰.Symbol﹖("x"); -//│ set tmp1 = Block⁰.Param﹖(tmp, sym1); -//│ set tmp2 = [tmp1]; +//│ set tmp2 = Block⁰.Param﹖(tmp1, sym1); //│ set tmp3 = [tmp2]; +//│ set tmp4 = [tmp3]; +//│ set sym2 = Block⁰.Symbol﹖("tmp"); +//│ set tmp5 = [sym2]; +//│ set tmp6 = Block⁰.ValueSimpleRef﹖(sym2); //│ set var1 = Block⁰.ValueSimpleRef﹖(sym1); -//│ set sym2 = Block⁰.Symbol﹖("x"); -//│ set tmp4 = Block⁰.ValueSimpleRef﹖(sym2); +//│ set tmp7 = option⁰.None﹖; +//│ set tmp8 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp9 = Block⁰.Param﹖(tmp8, sym3); +//│ set tmp10 = [tmp9]; +//│ set tmp11 = [tmp10]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$¹, tmp7, tmp11, true); +//│ set tmp12 = runtime⁰.SymbolMap﹖.checkClassMap﹖(Function$¹, sym4); +//│ set tmp13 = option⁰.Some﹖(tmp12); +//│ set sym5 = Block⁰.Symbol﹖("x"); //│ set end = Block⁰.End﹖(); -//│ set assign = Block⁰.Assign﹖(sym2, var1, end); -//│ set tmp5 = Block⁰.FunDefn﹖(sym, tmp3, assign); -//│ return tmp5 +//│ set tmp14 = Block⁰.ValDefn﹖(tmp13, sym5, tmp6); +//│ set tmp15 = Block⁰.Define﹖(tmp14, end); +//│ set assign = Block⁰.Assign﹖(sym2, var1, tmp15); +//│ set tmp16 = Block⁰.Scoped﹖(tmp5, assign); +//│ set tmp17 = Block⁰.FunDefn﹖(sym, tmp4, tmp16); +//│ return tmp17 //│ } //│ method propagate² = fun propagate³() { //│ let tmp_dyn, gen_call, gen_call1; @@ -195,7 +210,7 @@ staged module LiftedLambda with //│ return tmp1 //│ } //│ method call_instr⁰ = fun call_instr¹() { -//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, sym5, sel, tmp11, var2, tmp12, tmp13, app, return1, tmp14; +//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, tmp11, sel, tmp12, var2, tmp13, tmp14, app, return1, tmp15; //│ set sym = Block⁰.Symbol﹖("call"); //│ set tmp = option⁰.None﹖; //│ set sym1 = Block⁰.Symbol﹖("y"); @@ -213,16 +228,16 @@ staged module LiftedLambda with //│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$¹, tmp4, tmp8, true); //│ set tmp9 = runtime⁰.SymbolMap﹖.checkClassMap﹖(Function$¹, sym4); //│ set tmp10 = Block⁰.ValueThis﹖(tmp9); -//│ set sym5 = Block⁰.Symbol﹖("x"); -//│ set sel = Block⁰.Select﹖(tmp10, sym5); -//│ set tmp11 = Block⁰.Arg﹖(sel); +//│ set tmp11 = Block⁰.Symbol﹖("x"); +//│ set sel = Block⁰.Select﹖(tmp10, tmp11); +//│ set tmp12 = Block⁰.Arg﹖(sel); //│ set var2 = Block⁰.ValueSimpleRef﹖(sym1); -//│ set tmp12 = Block⁰.Arg﹖(var2); -//│ set tmp13 = [tmp11, tmp12]; -//│ set app = Block⁰.Call﹖(var1, tmp13); +//│ set tmp13 = Block⁰.Arg﹖(var2); +//│ set tmp14 = [tmp12, tmp13]; +//│ set app = Block⁰.Call﹖(var1, tmp14); //│ set return1 = Block⁰.Return﹖(app); -//│ set tmp14 = Block⁰.FunDefn﹖(sym, tmp3, return1); -//│ return tmp14 +//│ set tmp15 = Block⁰.FunDefn﹖(sym, tmp3, return1); +//│ return tmp15 //│ } //│ method call_gen⁰ = fun call_gen¹(cls)(y) { //│ let tmp, tmp1, tmp2, tmp3; @@ -249,7 +264,6 @@ staged module LiftedLambda with //│ set tmp2 = new globalThis⁰.Map﹖(tmp1); //│ define generatorMap$LiftedLambda⁰ as val generatorMap$LiftedLambda¹ = tmp2; //│ define Function$$LiftedLambda⁰ as val Function$$LiftedLambda¹ = Function$¹; -//│ define Function$LiftedLambda⁰ as val Function$LiftedLambda¹ = Function⁰; //│ end //│ } //│ method generate⁴ = fun generate⁵(source, path) { @@ -288,7 +302,7 @@ staged module LiftedLambda with //│ set tmp2 = Block⁰.Param﹖(tmp1, sym1); //│ set tmp3 = [tmp2]; //│ set tmp4 = [tmp3]; -//│ set sym2 = Block⁰.Symbol﹖("tmp"); +//│ set sym2 = Block⁰.Symbol﹖("tmp1"); //│ set tmp5 = [sym2]; //│ set tmp6 = Block⁰.ValueSimpleRef﹖(sym2); //│ set var1 = Block⁰.ValueSimpleRef﹖(sym1); @@ -319,18 +333,8 @@ staged module LiftedLambda with //│ } //│ }; //│ end -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Function' -//│ ╟── which references the symbol introduced here -//│ ║ l.34: declare class Function -//│ ╙── ^^^^^^^^ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > let LiftedLambda1, Function$1;try { globalThis.Object.freeze(class Function$ extends globalThis.Function { static { Function$1 = this } constructor(x) { super(); this.#x = x; } static { let tmp, tmp1, tmp2, tmp3, tmp4, sym, tmp5, tmp6, tmp7, sym1, tmp8, tmp9, tmp10, tmp11, tmp12; tmp3 = option.None; tmp4 = option.None; sym = runtime.checkCall(Block.Symbol("x")); tmp5 = runtime.checkCall(Block.Param(tmp4, sym)); tmp6 = globalThis.Object.freeze([ tmp5 ]); tmp7 = globalThis.Object.freeze([ tmp6 ]); sym1 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$1, tmp3, tmp7, true)); tmp8 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$1, sym1)); tmp9 = globalThis.Object.freeze(new globalThis.Map()); tmp10 = globalThis.Object.freeze([ "call", "x" ]); tmp11 = globalThis.Object.freeze(new globalThis.Set(tmp10)); tmp12 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp8, tmp9, tmp11)); Function$.class$cache$Function$ = tmp12; tmp = globalThis.Object.freeze([ "call", Function$.call_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); Function$.class$generatorMap$Function$ = tmp2; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(Function$.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("Function$", Function$.class$cache$Function$, source, path, tmp)); } static preCtor$_instr() { runtime.checkArgs("preCtor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, sym3, tmp4, tmp5, tmp6, sym4, tmp7, sel, tmp8, app, end, assign; sym = runtime.checkCall(Block.Symbol("preCtor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.NoSymbol()); runtime.checkCall(Block.ValueSimpleRef(sym2)); sym3 = runtime.checkCall(Block.Symbol("globalThis")); tmp4 = runtime.checkCall(Block.ValueThis(sym3)); tmp5 = option.None; tmp6 = globalThis.Object.freeze([]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function", globalThis.Function, tmp5, tmp6, false)); tmp7 = runtime.checkCall(runtime.SymbolMap.checkClassMap(globalThis.Function, sym4)); sel = runtime.checkCall(Block.Select(tmp4, tmp7)); tmp8 = globalThis.Object.freeze([]); app = runtime.checkCall(Block.Call(sel, tmp8)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, app, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static class$ctor$_instr() { runtime.checkArgs("class$ctor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, end, assign; sym = runtime.checkCall(Block.Symbol("class$ctor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); sym2 = runtime.checkCall(Block.Symbol("x")); runtime.checkCall(Block.ValueSimpleRef(sym2)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, var1, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn, gen_call; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); gen_call = runtime.checkCall(Function$.call_gen(tmp_dyn)); runtime.checkCall(gen_call(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("Function$", Function$.class$cache$Function$, tmp)) } static call_instr() { runtime.checkArgs("call_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, sym5, sel, tmp11, var2, tmp12, tmp13, app, return1; sym = runtime.checkCall(Block.Symbol("call")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("y")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("lambda")); var1 = runtime.checkCall(Block.ValueMemberRef(sym2)); tmp4 = option.None; tmp5 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp6 = runtime.checkCall(Block.Param(tmp5, sym3)); tmp7 = globalThis.Object.freeze([ tmp6 ]); tmp8 = globalThis.Object.freeze([ tmp7 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$1, tmp4, tmp8, true)); tmp9 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$1, sym4)); tmp10 = runtime.checkCall(Block.ValueThis(tmp9)); sym5 = runtime.checkCall(Block.Symbol("x")); sel = runtime.checkCall(Block.Select(tmp10, sym5)); tmp11 = runtime.checkCall(Block.Arg(sel)); var2 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp12 = runtime.checkCall(Block.Arg(var2)); tmp13 = globalThis.Object.freeze([ tmp11, tmp12 ]); app = runtime.checkCall(Block.Call(var1, tmp13)); return1 = runtime.checkCall(Block.Return(app)); return runtime.checkCall(Block.FunDefn(sym, tmp3, return1)) } static call_gen(cls) { runtime.checkArgs("call_gen", 1, true, arguments.length); return (y) => { let tmp, tmp1, tmp2; tmp = globalThis.Object.freeze([ cls ]); tmp1 = globalThis.Object.freeze([ y ]); tmp2 = globalThis.Object.freeze([ tmp, tmp1 ]); return runtime.checkCall(SpecializeHelpers.specialize(Function$.class$cache$Function$, "call", Function$.call_instr, tmp2)) } } get call$__checkNotMethod() { runtime.deboundMethod("call", "Function$"); } call(y) { runtime.checkArgs("call", 1, true, arguments.length); let x1; x1 = this.#x; return x1 + y } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Function$"]; }); globalThis.Object.freeze(class LiftedLambda { static { LiftedLambda1 = this } static { let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5, tmp6, tmp7; sym = runtime.checkCall(Block.ModuleSymbol("LiftedLambda", LiftedLambda, false)); tmp3 = runtime.checkCall(runtime.SymbolMap.checkModuleMap(LiftedLambda, sym)); tmp4 = globalThis.Object.freeze(new globalThis.Map()); tmp5 = globalThis.Object.freeze([ "foo" ]); tmp6 = globalThis.Object.freeze(new globalThis.Set(tmp5)); tmp7 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp3, tmp4, tmp6)); LiftedLambda.cache$LiftedLambda = tmp7; tmp = globalThis.Object.freeze([ "foo", LiftedLambda.foo_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); LiftedLambda.generatorMap$LiftedLambda = tmp2; LiftedLambda.Function$$LiftedLambda = Function$1; LiftedLambda.Function$LiftedLambda = Function; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(LiftedLambda.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("LiftedLambda", LiftedLambda.cache$LiftedLambda, source, path, tmp)); } static ctor$_instr() { runtime.checkArgs("ctor$_instr", 0, true, arguments.length); let sym, tmp, tmp1, end; sym = runtime.checkCall(Block.Symbol("ctor$")); tmp = globalThis.Object.freeze([]); tmp1 = globalThis.Object.freeze([ tmp ]); end = runtime.checkCall(Block.End()); return runtime.checkCall(Block.FunDefn(sym, tmp1, end)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); runtime.checkCall(LiftedLambda.foo_gen(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("LiftedLambda", LiftedLambda.cache$LiftedLambda, tmp)) } static foo_instr() { runtime.checkArgs("foo_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4, tmp5, var1, tmp6, tmp7, tmp8, sym3, tmp9, tmp10, tmp11, sym4, tmp12, var2, tmp13, inst, return1, assign, tmp14; sym = runtime.checkCall(Block.Symbol("foo")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("tmp")); tmp4 = globalThis.Object.freeze([ sym2 ]); tmp5 = runtime.checkCall(Block.ValueSimpleRef(sym2)); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp6 = runtime.checkCall(Block.Arg(var1)); tmp7 = option.None; tmp8 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp9 = runtime.checkCall(Block.Param(tmp8, sym3)); tmp10 = globalThis.Object.freeze([ tmp9 ]); tmp11 = globalThis.Object.freeze([ tmp10 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$1, tmp7, tmp11, true)); tmp12 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$1, sym4)); var2 = runtime.checkCall(Block.ValueMemberRef(tmp12)); tmp13 = globalThis.Object.freeze([ tmp6 ]); inst = runtime.checkCall(Block.Instantiate(var2, tmp13)); return1 = runtime.checkCall(Block.Return(tmp5)); assign = runtime.checkCall(Block.Assign(sym2, inst, return1)); tmp14 = runtime.checkCall(Block.Scoped(tmp4, assign)); return runtime.checkCall(Block.FunDefn(sym, tmp3, tmp14)) } static foo_gen(x) { runtime.checkArgs("foo_gen", 1, true, arguments.length); let tmp, tmp1; tmp = globalThis.Object.freeze([ x ]); tmp1 = globalThis.Object.freeze([ tmp ]); return runtime.checkCall(SpecializeHelpers.specialize(LiftedLambda.cache$LiftedLambda, "foo", LiftedLambda.foo_instr, tmp1)) } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "LiftedLambda"]; });; undefined } catch (e) { console.log('\u200B' + e + '\u200B'); } -//│ > ^ -//│ ═══[COMPILATION ERROR] [Uncaught SyntaxError] Private field '#x' must be declared in an enclosing class -:fixme staged module LiftedMultParams with fun foo(x)(y) = x + y //│ ———————————————| Lowered IR |——————————————————————————————————————————————————————————————————————— @@ -344,11 +348,13 @@ staged module LiftedMultParams with //│ constructor(x) { //│ do super⁰(); //│ end; -//│ set Function$⁴.this.x = x; +//│ let tmp; +//│ set tmp = x; +//│ define x² as val x³ = tmp; //│ end //│ } //│ method call² = fun call³(y) { -//│ return lambda$¹(Function$⁴.this.x³, y) +//│ return lambda$¹(Function$⁴.this.x﹖, y) //│ } //│ } //│ module Function$⁵ { @@ -405,20 +411,34 @@ staged module LiftedMultParams with //│ return tmp10 //│ } //│ method class$ctor$_instr² = fun class$ctor$_instr³() { -//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, tmp4, end, assign, tmp5; +//│ let tmp, sym, tmp1, sym1, tmp2, tmp3, tmp4, sym2, tmp5, tmp6, var1, tmp7, tmp8, sym3, tmp9, tmp10, tmp11, sym4, tmp12, tmp13, sym5, end, tmp14, tmp15, assign, tmp16, tmp17; //│ set sym = Block⁰.Symbol﹖("class$ctor$"); -//│ set tmp = option⁰.None﹖; +//│ set tmp1 = option⁰.None﹖; //│ set sym1 = Block⁰.Symbol﹖("x"); -//│ set tmp1 = Block⁰.Param﹖(tmp, sym1); -//│ set tmp2 = [tmp1]; +//│ set tmp2 = Block⁰.Param﹖(tmp1, sym1); //│ set tmp3 = [tmp2]; +//│ set tmp4 = [tmp3]; +//│ set sym2 = Block⁰.Symbol﹖("tmp"); +//│ set tmp5 = [sym2]; +//│ set tmp6 = Block⁰.ValueSimpleRef﹖(sym2); //│ set var1 = Block⁰.ValueSimpleRef﹖(sym1); -//│ set sym2 = Block⁰.Symbol﹖("x"); -//│ set tmp4 = Block⁰.ValueSimpleRef﹖(sym2); +//│ set tmp7 = option⁰.None﹖; +//│ set tmp8 = option⁰.None﹖; +//│ set sym3 = Block⁰.Symbol﹖("x"); +//│ set tmp9 = Block⁰.Param﹖(tmp8, sym3); +//│ set tmp10 = [tmp9]; +//│ set tmp11 = [tmp10]; +//│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$⁴, tmp7, tmp11, true); +//│ set tmp12 = runtime⁰.SymbolMap﹖.checkClassMap﹖(Function$⁴, sym4); +//│ set tmp13 = option⁰.Some﹖(tmp12); +//│ set sym5 = Block⁰.Symbol﹖("x"); //│ set end = Block⁰.End﹖(); -//│ set assign = Block⁰.Assign﹖(sym2, var1, end); -//│ set tmp5 = Block⁰.FunDefn﹖(sym, tmp3, assign); -//│ return tmp5 +//│ set tmp14 = Block⁰.ValDefn﹖(tmp13, sym5, tmp6); +//│ set tmp15 = Block⁰.Define﹖(tmp14, end); +//│ set assign = Block⁰.Assign﹖(sym2, var1, tmp15); +//│ set tmp16 = Block⁰.Scoped﹖(tmp5, assign); +//│ set tmp17 = Block⁰.FunDefn﹖(sym, tmp4, tmp16); +//│ return tmp17 //│ } //│ method propagate⁶ = fun propagate⁷() { //│ let tmp_dyn, gen_call, gen_call1; @@ -434,7 +454,7 @@ staged module LiftedMultParams with //│ return tmp1 //│ } //│ method call_instr² = fun call_instr³() { -//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, sym5, sel, tmp11, var2, tmp12, tmp13, app, return1, tmp14; +//│ let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, tmp11, sel, tmp12, var2, tmp13, tmp14, app, return1, tmp15; //│ set sym = Block⁰.Symbol﹖("call"); //│ set tmp = option⁰.None﹖; //│ set sym1 = Block⁰.Symbol﹖("y"); @@ -452,16 +472,16 @@ staged module LiftedMultParams with //│ set sym4 = Block⁰.ConcreteClassSymbol﹖("Function$", Function$⁴, tmp4, tmp8, true); //│ set tmp9 = runtime⁰.SymbolMap﹖.checkClassMap﹖(Function$⁴, sym4); //│ set tmp10 = Block⁰.ValueThis﹖(tmp9); -//│ set sym5 = Block⁰.Symbol﹖("x"); -//│ set sel = Block⁰.Select﹖(tmp10, sym5); -//│ set tmp11 = Block⁰.Arg﹖(sel); +//│ set tmp11 = Block⁰.Symbol﹖("x"); +//│ set sel = Block⁰.Select﹖(tmp10, tmp11); +//│ set tmp12 = Block⁰.Arg﹖(sel); //│ set var2 = Block⁰.ValueSimpleRef﹖(sym1); -//│ set tmp12 = Block⁰.Arg﹖(var2); -//│ set tmp13 = [tmp11, tmp12]; -//│ set app = Block⁰.Call﹖(var1, tmp13); +//│ set tmp13 = Block⁰.Arg﹖(var2); +//│ set tmp14 = [tmp12, tmp13]; +//│ set app = Block⁰.Call﹖(var1, tmp14); //│ set return1 = Block⁰.Return﹖(app); -//│ set tmp14 = Block⁰.FunDefn﹖(sym, tmp3, return1); -//│ return tmp14 +//│ set tmp15 = Block⁰.FunDefn﹖(sym, tmp3, return1); +//│ return tmp15 //│ } //│ method call_gen² = fun call_gen³(cls)(y) { //│ let tmp, tmp1, tmp2, tmp3; @@ -487,7 +507,6 @@ staged module LiftedMultParams with //│ set tmp1 = [tmp]; //│ set tmp2 = new globalThis⁰.Map﹖(tmp1); //│ define generatorMap$LiftedMultParams⁰ as val generatorMap$LiftedMultParams¹ = tmp2; -//│ define Function$LiftedMultParams⁰ as val Function$LiftedMultParams¹ = Function⁰; //│ define Function$$LiftedMultParams⁰ as val Function$$LiftedMultParams¹ = Function$⁴; //│ end //│ } @@ -527,7 +546,7 @@ staged module LiftedMultParams with //│ set tmp2 = Block⁰.Param﹖(tmp1, sym1); //│ set tmp3 = [tmp2]; //│ set tmp4 = [tmp3]; -//│ set sym2 = Block⁰.Symbol﹖("tmp"); +//│ set sym2 = Block⁰.Symbol﹖("tmp1"); //│ set tmp5 = [sym2]; //│ set tmp6 = Block⁰.ValueSimpleRef﹖(sym2); //│ set var1 = Block⁰.ValueSimpleRef﹖(sym1); @@ -558,13 +577,4 @@ staged module LiftedMultParams with //│ } //│ }; //│ end -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ═══[COMPILATION ERROR] No definition found in scope for member 'x' -//│ ╔══[COMPILATION ERROR] No definition found in scope for member 'Function' -//│ ╟── which references the symbol introduced here -//│ ║ l.34: declare class Function -//│ ╙── ^^^^^^^^ //│ —————————————————| Output |————————————————————————————————————————————————————————————————————————— -//│ > let LiftedMultParams1, Function$3;try { globalThis.Object.freeze(class Function$2 extends globalThis.Function { static { Function$3 = this } constructor(x) { super(); this.#x = x; } static { let tmp, tmp1, tmp2, tmp3, tmp4, sym, tmp5, tmp6, tmp7, sym1, tmp8, tmp9, tmp10, tmp11, tmp12; tmp3 = option.None; tmp4 = option.None; sym = runtime.checkCall(Block.Symbol("x")); tmp5 = runtime.checkCall(Block.Param(tmp4, sym)); tmp6 = globalThis.Object.freeze([ tmp5 ]); tmp7 = globalThis.Object.freeze([ tmp6 ]); sym1 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$3, tmp3, tmp7, true)); tmp8 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym1)); tmp9 = globalThis.Object.freeze(new globalThis.Map()); tmp10 = globalThis.Object.freeze([ "call", "x" ]); tmp11 = globalThis.Object.freeze(new globalThis.Set(tmp10)); tmp12 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp8, tmp9, tmp11)); Function$2.class$cache$Function$ = tmp12; tmp = globalThis.Object.freeze([ "call", Function$2.call_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); Function$2.class$generatorMap$Function$ = tmp2; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(Function$2.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("Function$", Function$2.class$cache$Function$, source, path, tmp)); } static preCtor$_instr() { runtime.checkArgs("preCtor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, sym3, tmp4, tmp5, tmp6, sym4, tmp7, sel, tmp8, app, end, assign; sym = runtime.checkCall(Block.Symbol("preCtor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.NoSymbol()); runtime.checkCall(Block.ValueSimpleRef(sym2)); sym3 = runtime.checkCall(Block.Symbol("globalThis")); tmp4 = runtime.checkCall(Block.ValueThis(sym3)); tmp5 = option.None; tmp6 = globalThis.Object.freeze([]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function", globalThis.Function, tmp5, tmp6, false)); tmp7 = runtime.checkCall(runtime.SymbolMap.checkClassMap(globalThis.Function, sym4)); sel = runtime.checkCall(Block.Select(tmp4, tmp7)); tmp8 = globalThis.Object.freeze([]); app = runtime.checkCall(Block.Call(sel, tmp8)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, app, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static class$ctor$_instr() { runtime.checkArgs("class$ctor$_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, var1, sym2, end, assign; sym = runtime.checkCall(Block.Symbol("class$ctor$")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); sym2 = runtime.checkCall(Block.Symbol("x")); runtime.checkCall(Block.ValueSimpleRef(sym2)); end = runtime.checkCall(Block.End()); assign = runtime.checkCall(Block.Assign(sym2, var1, end)); return runtime.checkCall(Block.FunDefn(sym, tmp3, assign)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn, gen_call; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); gen_call = runtime.checkCall(Function$2.call_gen(tmp_dyn)); runtime.checkCall(gen_call(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("Function$", Function$2.class$cache$Function$, tmp)) } static call_instr() { runtime.checkArgs("call_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, var1, tmp4, tmp5, sym3, tmp6, tmp7, tmp8, sym4, tmp9, tmp10, sym5, sel, tmp11, var2, tmp12, tmp13, app, return1; sym = runtime.checkCall(Block.Symbol("call")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("y")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("lambda$")); var1 = runtime.checkCall(Block.ValueMemberRef(sym2)); tmp4 = option.None; tmp5 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp6 = runtime.checkCall(Block.Param(tmp5, sym3)); tmp7 = globalThis.Object.freeze([ tmp6 ]); tmp8 = globalThis.Object.freeze([ tmp7 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$3, tmp4, tmp8, true)); tmp9 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym4)); tmp10 = runtime.checkCall(Block.ValueThis(tmp9)); sym5 = runtime.checkCall(Block.Symbol("x")); sel = runtime.checkCall(Block.Select(tmp10, sym5)); tmp11 = runtime.checkCall(Block.Arg(sel)); var2 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp12 = runtime.checkCall(Block.Arg(var2)); tmp13 = globalThis.Object.freeze([ tmp11, tmp12 ]); app = runtime.checkCall(Block.Call(var1, tmp13)); return1 = runtime.checkCall(Block.Return(app)); return runtime.checkCall(Block.FunDefn(sym, tmp3, return1)) } static call_gen(cls) { runtime.checkArgs("call_gen", 1, true, arguments.length); return (y) => { let tmp, tmp1, tmp2; tmp = globalThis.Object.freeze([ cls ]); tmp1 = globalThis.Object.freeze([ y ]); tmp2 = globalThis.Object.freeze([ tmp, tmp1 ]); return runtime.checkCall(SpecializeHelpers.specialize(Function$2.class$cache$Function$, "call", Function$2.call_instr, tmp2)) } } get call$__checkNotMethod() { runtime.deboundMethod("call", "Function$"); } call(y) { runtime.checkArgs("call", 1, true, arguments.length); let x1; x1 = this.#x; return x1 + y } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "Function$"]; }); globalThis.Object.freeze(class LiftedMultParams { static { LiftedMultParams1 = this } static { let tmp, tmp1, tmp2, sym, tmp3, tmp4, tmp5, tmp6, tmp7; sym = runtime.checkCall(Block.ModuleSymbol("LiftedMultParams", LiftedMultParams, false)); tmp3 = runtime.checkCall(runtime.SymbolMap.checkModuleMap(LiftedMultParams, sym)); tmp4 = globalThis.Object.freeze(new globalThis.Map()); tmp5 = globalThis.Object.freeze([ "foo" ]); tmp6 = globalThis.Object.freeze(new globalThis.Set(tmp5)); tmp7 = globalThis.Object.freeze(new SpecializeHelpers.FunCache(tmp3, tmp4, tmp6)); LiftedMultParams.cache$LiftedMultParams = tmp7; tmp = globalThis.Object.freeze([ "foo", LiftedMultParams.foo_gen ]); tmp1 = globalThis.Object.freeze([ tmp ]); tmp2 = globalThis.Object.freeze(new globalThis.Map(tmp1)); LiftedMultParams.generatorMap$LiftedMultParams = tmp2; LiftedMultParams.Function$LiftedMultParams = Function; LiftedMultParams.Function$$LiftedMultParams = Function$3; } static generate(source, path) { runtime.checkArgs("generate", 2, true, arguments.length); let tmp; runtime.checkCall(LiftedMultParams.propagate()); tmp = globalThis.Object.freeze([]); runtime.checkCall(Block.codegen("LiftedMultParams", LiftedMultParams.cache$LiftedMultParams, source, path, tmp)); } static ctor$_instr() { runtime.checkArgs("ctor$_instr", 0, true, arguments.length); let sym, tmp, tmp1, end; sym = runtime.checkCall(Block.Symbol("ctor$")); tmp = globalThis.Object.freeze([]); tmp1 = globalThis.Object.freeze([ tmp ]); end = runtime.checkCall(Block.End()); return runtime.checkCall(Block.FunDefn(sym, tmp1, end)) } static propagate() { runtime.checkArgs("propagate", 0, true, arguments.length); let tmp_dyn; tmp_dyn = runtime.checkCall(ShapeSet.mkDyn()); runtime.checkCall(LiftedMultParams.foo_gen(tmp_dyn)); } static toCode() { runtime.checkArgs("toCode", 0, true, arguments.length); let tmp; tmp = globalThis.Object.freeze([]); return runtime.checkCall(Block.toCode("LiftedMultParams", LiftedMultParams.cache$LiftedMultParams, tmp)) } static foo_instr() { runtime.checkArgs("foo_instr", 0, true, arguments.length); let sym, tmp, sym1, tmp1, tmp2, tmp3, sym2, tmp4, tmp5, var1, tmp6, tmp7, tmp8, sym3, tmp9, tmp10, tmp11, sym4, tmp12, var2, tmp13, inst, return1, assign, tmp14; sym = runtime.checkCall(Block.Symbol("foo")); tmp = option.None; sym1 = runtime.checkCall(Block.Symbol("x")); tmp1 = runtime.checkCall(Block.Param(tmp, sym1)); tmp2 = globalThis.Object.freeze([ tmp1 ]); tmp3 = globalThis.Object.freeze([ tmp2 ]); sym2 = runtime.checkCall(Block.Symbol("tmp")); tmp4 = globalThis.Object.freeze([ sym2 ]); tmp5 = runtime.checkCall(Block.ValueSimpleRef(sym2)); var1 = runtime.checkCall(Block.ValueSimpleRef(sym1)); tmp6 = runtime.checkCall(Block.Arg(var1)); tmp7 = option.None; tmp8 = option.None; sym3 = runtime.checkCall(Block.Symbol("x")); tmp9 = runtime.checkCall(Block.Param(tmp8, sym3)); tmp10 = globalThis.Object.freeze([ tmp9 ]); tmp11 = globalThis.Object.freeze([ tmp10 ]); sym4 = runtime.checkCall(Block.ConcreteClassSymbol("Function$", Function$3, tmp7, tmp11, true)); tmp12 = runtime.checkCall(runtime.SymbolMap.checkClassMap(Function$3, sym4)); var2 = runtime.checkCall(Block.ValueMemberRef(tmp12)); tmp13 = globalThis.Object.freeze([ tmp6 ]); inst = runtime.checkCall(Block.Instantiate(var2, tmp13)); return1 = runtime.checkCall(Block.Return(tmp5)); assign = runtime.checkCall(Block.Assign(sym2, inst, return1)); tmp14 = runtime.checkCall(Block.Scoped(tmp4, assign)); return runtime.checkCall(Block.FunDefn(sym, tmp3, tmp14)) } static foo_gen(x) { runtime.checkArgs("foo_gen", 1, true, arguments.length); let tmp, tmp1; tmp = globalThis.Object.freeze([ x ]); tmp1 = globalThis.Object.freeze([ tmp ]); return runtime.checkCall(SpecializeHelpers.specialize(LiftedMultParams.cache$LiftedMultParams, "foo", LiftedMultParams.foo_instr, tmp1)) } toString() { return runtime.render(this); } static [definitionMetadata] = ["class", "LiftedMultParams"]; });; undefined } catch (e) { console.log('\u200B' + e + '\u200B'); } -//│ > ^ -//│ ═══[COMPILATION ERROR] [Uncaught SyntaxError] Private field '#x' must be declared in an enclosing class diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 62b9a69a15..563f6a7cd5 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -137,7 +137,7 @@ print(If2."cache$If2") //│ > private fun f_If2_sp_1(x) = //│ > let {y, tmp} //│ > y = x.n -//│ > tmp = () +//│ > tmp = runtime.Unit //│ > y + 1 //│ > private fun f_If2_sp_2(x) = 1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls index 63d666b368..40413dd748 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeSetHelpers.mls @@ -135,9 +135,9 @@ open SpecializeHelpers { Ctx, sop, sor, prop } // Ctx let ctx = Ctx.empty() -let x = ValueRef(Symbol("x")) +let x = ValueSimpleRef(Symbol("x")) //│ ctx = Ctx(Map(0) {}, Map(0) {}, [], None) -//│ x = ValueRef(Symbol("x")) +//│ x = ValueSimpleRef(Symbol("x")) ctx.add(x, mkLit(1)) ctx.get(x) @@ -147,11 +147,11 @@ ctx.add(x, mkLit(2)) ctx.get(x) //│ = Some({Lit(1),Lit(2)}) -let y = ValueRef(Symbol("y")) +let y = ValueSimpleRef(Symbol("y")) ctx.add(y, mkLit("a")) ctx.get(y) //│ = Some({Lit("a")}) -//│ y = ValueRef(Symbol("y")) +//│ y = ValueSimpleRef(Symbol("y")) let ctx2 = ctx.clone ctx2.add(y, mkLit("b")) @@ -182,15 +182,15 @@ sop(Ctx.empty(), ValueLit(42)) sop(Ctx.empty(), ValueLit(false)) //│ = {Lit(false)} -sop(Ctx.empty().add(ValueRef(Symbol("x")), mkBot()), ValueRef(Symbol("x"))) +sop(Ctx.empty().add(ValueSimpleRef(Symbol("x")), mkBot()), ValueSimpleRef(Symbol("x"))) //│ = {} val x = Symbol("x") val C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), [], false) -val selPath = DynSelect(ValueRef(x), ValueLit("a"), false) +val selPath = DynSelect(ValueSimpleRef(x), ValueLit("a"), false) let ctx = Ctx.empty() -ctx.add(ValueRef(x), mkClass(C, [mkLit("pass")])) +ctx.add(ValueSimpleRef(x), mkClass(C, [mkLit("pass")])) sop(ctx, selPath) //│ = {} //│ C = ConcreteClassSymbol("C", undefined, Some([Param(None, "a")]), [], false) @@ -202,7 +202,7 @@ sop(ctx, selPath) //│ [], //│ None //│ ) -//│ selPath = DynSelect(ValueRef(Symbol("x")), ValueLit("a"), false) +//│ selPath = DynSelect(ValueSimpleRef(Symbol("x")), ValueLit("a"), false) //│ x = Symbol("x") // sor @@ -218,12 +218,12 @@ sor(Ctx.empty(), tup) class C(val p) let c = ConcreteClassSymbol("C", C, Some([Symbol("p")]), [], false) -let inst = Instantiate(ValueRef(c), [Arg(ValueLit(123))]) +let inst = Instantiate(ValueMemberRef(c), [Arg(ValueLit(123))]) sor(Ctx.empty(), inst) //│ = [ //│ End(), //│ Instantiate( -//│ ValueRef( +//│ ValueMemberRef( //│ ConcreteClassSymbol( //│ "C", //│ fun C { class: class C }, @@ -244,7 +244,7 @@ sor(Ctx.empty(), inst) //│ false //│ ) //│ inst = Instantiate( -//│ ValueRef( +//│ ValueMemberRef( //│ ConcreteClassSymbol( //│ "C", //│ fun C { class: class C }, @@ -258,7 +258,7 @@ sor(Ctx.empty(), inst) fun testBinOp(op, v1, v2) = let args = [Arg(ValueLit(v1)), Arg(ValueLit(v2))] - let c = Call(ValueRef(Symbol(op)), args) + let c = Call(ValueSimpleRef(Symbol(op)), args) sor(Ctx.empty(), c).1.lit :expect 12 @@ -279,7 +279,7 @@ testBinOp("&&", true, false) fun testUnaryOp(op, v) = let args = [Arg(ValueLit(v))] - let c = Call(ValueRef(Symbol(op)), args) + let c = Call(ValueSimpleRef(Symbol(op)), args) sor(Ctx.empty(), c).1.lit :expect -10 @@ -299,8 +299,8 @@ testUnaryOp("~", 10) let x = Symbol("x") let y = Symbol("y") let z = Symbol("z") -let plus = ValueRef(Symbol("+")) -//│ plus = ValueRef(Symbol("+")) +let plus = ValueSimpleRef(Symbol("+")) +//│ plus = ValueSimpleRef(Symbol("+")) //│ x = Symbol("x") //│ y = Symbol("y") //│ z = Symbol("z") @@ -308,7 +308,7 @@ let plus = ValueRef(Symbol("+")) // let x // x = 1 + 1 // x + 1 -let c = Scoped([x], Assign(x, Call(plus, [Arg(ValueLit(1)), Arg(ValueLit(1))]), Return(Call(plus, [Arg(ValueRef(x)), Arg(ValueLit(1))])))) +let c = Scoped([x], Assign(x, Call(plus, [Arg(ValueLit(1)), Arg(ValueLit(1))]), Return(Call(plus, [Arg(ValueSimpleRef(x)), Arg(ValueLit(1))])))) prop(Ctx.empty(), c) //│ = [ //│ Scoped( @@ -322,17 +322,17 @@ prop(Ctx.empty(), c) //│ [Symbol("x")], //│ Assign( //│ Symbol("x"), -//│ Call(ValueRef(Symbol("+")), [Arg(ValueLit(1)), Arg(ValueLit(1))]), +//│ Call(ValueSimpleRef(Symbol("+")), [Arg(ValueLit(1)), Arg(ValueLit(1))]), //│ Return( //│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(ValueRef(Symbol("x"))), Arg(ValueLit(1))] +//│ ValueSimpleRef(Symbol("+")), +//│ [Arg(ValueSimpleRef(Symbol("x"))), Arg(ValueLit(1))] //│ ) //│ ) //│ ) //│ ) -let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueRef(x), [Arm(Cls(VirtualClassSymbol("Bool"), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1))), Arm(Lit(8), Return(ValueLit(2))), Arm(Cls(VirtualClassSymbol("Int"), Select(ValueRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3)))], Some(Return(ValueLit(0))), End()))) +let c = Scoped([x], Assign(x, ValueLit(9), Match(ValueSimpleRef(x), [Arm(Cls(VirtualClassSymbol("Bool"), Select(ValueMemberRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(1))), Arm(Lit(8), Return(ValueLit(2))), Arm(Cls(VirtualClassSymbol("Int"), Select(ValueMemberRef(Symbol("runtime")), Symbol("unreachable"))), Return(ValueLit(3)))], Some(Return(ValueLit(0))), End()))) prop(Ctx.empty(), c) //│ = [ //│ Scoped( @@ -348,12 +348,12 @@ prop(Ctx.empty(), c) //│ Symbol("x"), //│ ValueLit(9), //│ Match( -//│ ValueRef(Symbol("x")), +//│ ValueSimpleRef(Symbol("x")), //│ [ //│ Arm( //│ Cls( //│ VirtualClassSymbol("Bool"), -//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) +//│ Select(ValueMemberRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(1)) //│ ), @@ -361,7 +361,7 @@ prop(Ctx.empty(), c) //│ Arm( //│ Cls( //│ VirtualClassSymbol("Int"), -//│ Select(ValueRef(Symbol("runtime")), Symbol("unreachable")) +//│ Select(ValueMemberRef(Symbol("runtime")), Symbol("unreachable")) //│ ), //│ Return(ValueLit(3)) //│ ) @@ -379,29 +379,29 @@ module M with fun f(args) = 24 :ignore -val MSym = ValueRef(ModuleSymbol("M", M, false)) +val MSym = ValueMemberRef(ModuleSymbol("M", M, false)) //│ ╔══[COMPILATION ERROR] Unexpected moduleful reference of type M. -//│ ║ l.382: val MSym = ValueRef(ModuleSymbol("M", M, false)) -//│ ║ ^ +//│ ║ l.382: val MSym = ValueMemberRef(ModuleSymbol("M", M, false)) +//│ ║ ^ //│ ╙── Module argument passed to a non-module parameter. -//│ MSym = ValueRef(ModuleSymbol("M", class M, false)) +//│ MSym = ValueMemberRef(ModuleSymbol("M", class M, false)) val fSym = Symbol("f") val fPath = Select(MSym, fSym) -//│ fPath = Select(ValueRef(ModuleSymbol("M", class M, false)), Symbol("f")) +//│ fPath = Select(ValueMemberRef(ModuleSymbol("M", class M, false)), Symbol("f")) //│ fSym = Symbol("f") val callF = Call(fPath, [Arg(ValueLit(12))]) sor(Ctx.empty(), callF) //│ = [End(), ValueLit(24), {Lit(24)}] //│ callF = Call( -//│ Select(ValueRef(ModuleSymbol("M", class M, false)), Symbol("f")), +//│ Select(ValueMemberRef(ModuleSymbol("M", class M, false)), Symbol("f")), //│ [Arg(ValueLit(12))] //│ ) val ctxXY = Ctx.empty() - .add(ValueRef(x), mkLit(10)) - .add(ValueRef(y), mkLit(32)) + .add(ValueSimpleRef(x), mkLit(10)) + .add(ValueSimpleRef(y), mkLit(32)) //│ ctxXY = Ctx( //│ Map(2) {"Symbol(x)" => {Lit(10)}, "Symbol(y)" => {Lit(32)}}, //│ Map(0) {}, @@ -410,19 +410,19 @@ val ctxXY = Ctx.empty() //│ ) // x + y -val blockAdd = Return(Call(plus, [Arg(ValueRef(x)), Arg(ValueRef(y))])) +val blockAdd = Return(Call(plus, [Arg(ValueSimpleRef(x)), Arg(ValueSimpleRef(y))])) printCode(blockAdd) prop(ctxXY, blockAdd) //│ > x + y //│ = [Return(ValueLit(42)), {Lit(42)}, false] //│ blockAdd = Return( //│ Call( -//│ ValueRef(Symbol("+")), -//│ [Arg(ValueRef(Symbol("x"))), Arg(ValueRef(Symbol("y")))] +//│ ValueSimpleRef(Symbol("+")), +//│ [Arg(ValueSimpleRef(Symbol("x"))), Arg(ValueSimpleRef(Symbol("y")))] //│ ) //│ ) -val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit(1), End())), Arm(Lit(2), Assign(z, ValueLit(2), End()))], Some(Assign(z, ValueLit(3), End())), Return(ValueRef(z)))) +val blockBranch = Scoped([z], Match(ValueLit(1), [Arm(Lit(1), Assign(z, ValueLit(1), End())), Arm(Lit(2), Assign(z, ValueLit(2), End()))], Some(Assign(z, ValueLit(3), End())), Return(ValueSimpleRef(z)))) printCode(blockBranch) prop(Ctx.empty(), blockBranch) //│ > let {z} @@ -451,11 +451,11 @@ prop(Ctx.empty(), blockBranch) //│ Arm(Lit(2), Assign(Symbol("z"), ValueLit(2), End())) //│ ], //│ Some(Assign(Symbol("z"), ValueLit(3), End())), -//│ Return(ValueRef(Symbol("z"))) +//│ Return(ValueSimpleRef(Symbol("z"))) //│ ) //│ ) -val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Return(ValueLit(10))), Arm(Lit(false), Assign(y, ValueLit(20), End()))], End(), Return(ValueRef(y))))) +val earlyRetBlock = Scoped([x, y], Assign(x, ValueLit(false), Match(ValueSimpleRef(x), [Arm(Lit(true), Return(ValueLit(10))), Arm(Lit(false), Assign(y, ValueLit(20), End()))], End(), Return(ValueSimpleRef(y))))) printCode(earlyRetBlock) prop(Ctx.empty(), earlyRetBlock) //│ > let {x, y} @@ -483,19 +483,19 @@ prop(Ctx.empty(), earlyRetBlock) //│ Symbol("x"), //│ ValueLit(false), //│ Match( -//│ ValueRef(Symbol("x")), +//│ ValueSimpleRef(Symbol("x")), //│ [ //│ Arm(Lit(true), Return(ValueLit(10))), //│ Arm(Lit(false), Assign(Symbol("y"), ValueLit(20), End())) //│ ], //│ End(), -//│ Return(ValueRef(Symbol("y"))) +//│ Return(ValueSimpleRef(Symbol("y"))) //│ ) //│ ) //│ ) :silent -val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueRef(x), [Arm(Lit(true), Match(ValueRef(y), [Arm(Lit(true), Return(ValueLit(1)))], Some(Return(ValueLit(2))), End()))], Some(Return(ValueLit(3))), Return(ValueLit(4)))))) +val nestedBlock = Scoped([x, y], Assign(x, ValueLit(true), Assign(y, ValueLit(false), Match(ValueSimpleRef(x), [Arm(Lit(true), Match(ValueSimpleRef(y), [Arm(Lit(true), Return(ValueLit(1)))], Some(Return(ValueLit(2))), End()))], Some(Return(ValueLit(3))), Return(ValueLit(4)))))) val res = prop(Ctx.empty(), nestedBlock) printCode(nestedBlock) printCode(res.0) @@ -542,7 +542,7 @@ shapeset2path(sov([1, 2, 3]), mut []) //│ Tuple([Arg(ValueLit(1)), Arg(ValueLit(2)), Arg(ValueLit(3))]), //│ End() //│ ), -//│ ValueRef(Symbol("tup_1")) +//│ ValueSimpleRef(Symbol("tup_1")) //│ ] class TestClass(val a, val b) @@ -571,7 +571,7 @@ shapeset2path(sov(TestClass(1, 2)), mut []) //│ Assign( //│ Symbol("obj_2"), //│ Instantiate( -//│ ValueRef( +//│ ValueMemberRef( //│ ConcreteClassSymbol( //│ "TestClass", //│ fun TestClass { class: class TestClass }, @@ -584,7 +584,7 @@ shapeset2path(sov(TestClass(1, 2)), mut []) //│ ), //│ End() //│ ), -//│ ValueRef(Symbol("obj_2")) +//│ ValueSimpleRef(Symbol("obj_2")) //│ ] shapeset2path(sov(TestClass(1, [1,2])), mut []) @@ -595,7 +595,7 @@ shapeset2path(sov(TestClass(1, [1,2])), mut []) //│ Assign( //│ Symbol("obj_4"), //│ Instantiate( -//│ ValueRef( +//│ ValueMemberRef( //│ ConcreteClassSymbol( //│ "TestClass", //│ fun TestClass { class: class TestClass }, @@ -604,10 +604,10 @@ shapeset2path(sov(TestClass(1, [1,2])), mut []) //│ false //│ ) //│ ), -//│ [Arg(ValueLit(1)), Arg(ValueRef(Symbol("tup_3")))] +//│ [Arg(ValueLit(1)), Arg(ValueSimpleRef(Symbol("tup_3")))] //│ ), //│ End() //│ ) //│ ), -//│ ValueRef(Symbol("obj_4")) +//│ ValueSimpleRef(Symbol("obj_4")) //│ ] From 231f6b1288bcfda10791e4dabe5a1d803d742110 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Tue, 2 Jun 2026 15:20:19 +0800 Subject: [PATCH 645/654] Update CI stack size --- .github/workflows/nix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 355a94072e..cd979fdc77 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -20,7 +20,7 @@ jobs: - name: Run test id: run_test # Not running all tests because those outside of hkmc2 are obsolete (will be removed) - run: sbt -J-Xmx4096M -J-Xss8M hkmc2AllTests/test + run: sbt -J-Xmx4096M -J-Xss1G hkmc2AllTests/test # It's useful to see how the tests fail by seeing the diff through the next step continue-on-error: true - name: Check no changes From a74772bba6f92b0cad3a6b312284afe126a1bd8c Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Tue, 2 Jun 2026 15:50:58 +0800 Subject: [PATCH 646/654] Minor fix --- .../mlscript-compile/staging/StagedRegExp.mls | 10 +- .../staging/out/StagedRegExp.mls | 2058 +++++++++-------- .../block-staging/StagedRegExpTest.mls | 30 +- 3 files changed, 1056 insertions(+), 1042 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls index a677539036..35d5169a52 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls @@ -38,7 +38,7 @@ staged module StagedRegExp with let s = len(arr) if s - i == s then new DedupSet(push(arr, e)) else - let e' = arr.(i) + let e' = arr.(s - i) if e.eq(e') then this else addImp(e, i - 1) fun add(e) = addImp(e, len(arr)) @@ -95,11 +95,11 @@ staged module StagedRegExp with fun notDigit() = new Not(CharSet.digit()) fun mkUnion(arr, i, s) = - if s - i == s - 1 then arr.(i) + if s - i == s - 1 then arr.(s - i) else - if arr.(i) is + if arr.(s - i) is Nothing() then mkUnion(arr, i - 1, s) - else new Union(arr.(i), mkUnion(arr, i - 1, s)) + else new Union(arr.(s - i), mkUnion(arr, i - 1, s)) staged class Union(val p1, val p2) extends RegExp with fun derive(c) = (new Union(p1.derive(c), p2.derive(c))).normalize() @@ -116,7 +116,7 @@ staged module StagedRegExp with let p2' = p2.normalize() let arr1 = if p1' is Union then p1'.flat() else [p1'] let arr2 = if p2' is Union then p2'.flat() else [p2'] - let s = iter(new DedupSet(arr1), arr2, 0, len(arr2)) + let s = iter(new DedupSet(arr1), arr2, len(arr2), len(arr2)) mkUnion(s.arr, len(s.arr), len(s.arr)) fun eq(other) = let n = other.normalize() diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls index 0a303a43b0..0da7df6fd8 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls @@ -6,11 +6,11 @@ module StagedRegExp with class DedupSet(val arr) with () fun add(e) = - let {tmp3} - tmp3 = len(arr) - addImp(e, tmp3) + let {tmp4} + tmp4 = len(arr) + addImp(e, tmp4) fun addImp(e, i) = - let {s, scrut, e__, scrut1, tmp, tmp1, tmp2} + let {s, scrut, e__, scrut1, tmp, tmp1, tmp2, tmp3} s = len(arr) tmp = s - i scrut = ==(tmp, s) @@ -19,13 +19,14 @@ module StagedRegExp with tmp1 = push(arr, e) new DedupSet.class(tmp1) else - e__ = arr.(i) + tmp2 = s - i + e__ = arr.(tmp2) scrut1 = e.eq(e__) if scrut1 is true then this else - tmp2 = i - 1 - addImp(e, tmp2) + tmp3 = i - 1 + addImp(e, tmp3) class RegExp() with () class Nothing() extends RegExp() with @@ -172,9 +173,9 @@ module StagedRegExp with else false fun normalize() = this fun startsWith(c) = - let {tmp4} - tmp4 = has(chars, c) - not tmp4 + let {tmp5} + tmp5 = has(chars, c) + not tmp5 private fun canBeEmpty_Not_sp_0() = false private fun derive_Not_sp_0(c) = let {scrut3} @@ -185,87 +186,88 @@ module StagedRegExp with private fun normalize_Not_sp_0() = this private fun normalize_Not_sp_1() = this private fun startsWith_Not_sp_0(c) = - let {tmp4} - tmp4 = has_StagedRegExp_sp_2(chars, c) - not tmp4 + let {tmp5} + tmp5 = has_StagedRegExp_sp_2(chars, c) + not tmp5 class Union(val p1, val p2) extends RegExp() with () fun canBeEmpty() = - let {tmp8} - tmp8 = p1.canBeEmpty() - if tmp8 is + let {tmp9} + tmp9 = p1.canBeEmpty() + if tmp9 is false then p2.canBeEmpty() else true fun derive(c) = - let {tmp5, tmp6, tmp7} - tmp5 = p1.derive(c) - tmp6 = p2.derive(c) - tmp7 = new Union.class(tmp5, tmp6) - tmp7.normalize_Union_sp_0() + let {tmp6, tmp7, tmp8} + tmp6 = p1.derive(c) + tmp7 = p2.derive(c) + tmp8 = new Union.class(tmp6, tmp7) + tmp8.normalize_Union_sp_0() fun eq(other) = - let {n, tmp21, tmp22, tmp23} + let {n, tmp23, tmp24, tmp25} n = other.normalize() if n is Union then - tmp21 = normalize() - tmp22 = tmp21.flat() - tmp23 = n.flat_Union_sp_0() - setEq(tmp22, tmp23) + tmp23 = normalize() + tmp24 = tmp23.flat() + tmp25 = n.flat_Union_sp_0() + setEq(tmp24, tmp25) else false fun flat() = - let {p1__, scrut4, p2__, scrut5, tmp9, tmp10} + let {p1__, scrut4, p2__, scrut5, tmp10, tmp11} scrut4 = p1 if scrut4 is Union then - tmp9 = p1.flat() + tmp10 = p1.flat() else - tmp9 = [p1] - p1__ = tmp9 + tmp10 = [p1] + p1__ = tmp10 scrut5 = p2 if scrut5 is Union then - tmp10 = p2.flat() + tmp11 = p2.flat() else - tmp10 = [p2] - p2__ = tmp10 + tmp11 = [p2] + p2__ = tmp11 concat(p1__, p2__) fun iter(st, arr, i, s) = - let {scrut6, tmp11, tmp12, tmp13, tmp14} - tmp11 = s - i - scrut6 = ==(tmp11, s) + let {scrut6, tmp12, tmp13, tmp14, tmp15} + tmp12 = s - i + scrut6 = ==(tmp12, s) if scrut6 is true then st else - tmp12 = s - i - tmp13 = st.add(arr.(tmp12)) - tmp14 = i - 1 - iter(tmp13, arr, tmp14, s) + tmp13 = s - i + tmp14 = st.add(arr.(tmp13)) + tmp15 = i - 1 + iter(tmp14, arr, tmp15, s) fun normalize() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize() p2__1 = p2.normalize() if p1__1 is Union then - tmp15 = p1__1.flat_Union_sp_0() + tmp16 = p1__1.flat_Union_sp_0() else - tmp15 = [p1__1] - arr11 = tmp15 + tmp16 = [p1__1] + arr11 = tmp16 if p2__1 is Union then - tmp16 = p2__1.flat_Union_sp_0() + tmp17 = p2__1.flat_Union_sp_0() else - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) fun startsWith(c) = - let {tmp24} - tmp24 = p1.startsWith(c) - if tmp24 is + let {tmp26} + tmp26 = p1.startsWith(c) + if tmp26 is false then p2.startsWith(c) else true private fun canBeEmpty_Union_sp_0() = false @@ -273,214 +275,223 @@ module StagedRegExp with private fun canBeEmpty_Union_sp_2() = true private fun canBeEmpty_Union_sp_3() = true private fun derive_Union_sp_0(c) = - let {tmp5, tmp6, tmp7} - tmp5 = p1.derive_Concat_sp_17(c) - tmp6 = p2.derive_Union_sp_1(c) - tmp7 = new Union.class(tmp5, tmp6) - tmp7.normalize_Union_sp_12() + let {tmp6, tmp7, tmp8} + tmp6 = p1.derive_Concat_sp_17(c) + tmp7 = p2.derive_Union_sp_1(c) + tmp8 = new Union.class(tmp6, tmp7) + tmp8.normalize_Union_sp_12() private fun derive_Union_sp_1(c) = - let {tmp5, tmp6, tmp7} - tmp5 = p1.derive_Concat_sp_18(c) - tmp6 = p2.derive_Concat_sp_19(c) - tmp7 = new Union.class(tmp5, tmp6) - tmp7.normalize_Union_sp_11() + let {tmp6, tmp7, tmp8} + tmp6 = p1.derive_Concat_sp_18(c) + tmp7 = p2.derive_Concat_sp_19(c) + tmp8 = new Union.class(tmp6, tmp7) + tmp8.normalize_Union_sp_11() private fun derive_Union_sp_2(c) = - let {tmp5, tmp6, tmp7} - tmp5 = p1.derive_Exact_sp_3(c) - tmp6 = p2.derive_Empty_sp_0(c) - tmp7 = new Union.class(tmp5, tmp6) - tmp7.normalize_Union_sp_7() + let {tmp6, tmp7, tmp8} + tmp6 = p1.derive_Exact_sp_3(c) + tmp7 = p2.derive_Empty_sp_0(c) + tmp8 = new Union.class(tmp6, tmp7) + tmp8.normalize_Union_sp_7() private fun derive_Union_sp_3(c) = - let {tmp5, tmp6, tmp7} - tmp5 = p1.derive_In_sp_2(c) - tmp6 = p2.derive_Empty_sp_0(c) - tmp7 = new Union.class(tmp5, tmp6) - tmp7.normalize_Union_sp_7() + let {tmp6, tmp7, tmp8} + tmp6 = p1.derive_In_sp_2(c) + tmp7 = p2.derive_Empty_sp_0(c) + tmp8 = new Union.class(tmp6, tmp7) + tmp8.normalize_Union_sp_7() private fun flat_Union_sp_0() = - let {p1__, scrut4, p2__, scrut5, tmp9, tmp10} + let {p1__, scrut4, p2__, scrut5, tmp10, tmp11} scrut4 = p1 if scrut4 is Union then - tmp9 = p1.flat() + tmp10 = p1.flat() else - tmp9 = [p1] - p1__ = tmp9 + tmp10 = [p1] + p1__ = tmp10 scrut5 = p2 if scrut5 is Union then - tmp10 = p2.flat() + tmp11 = p2.flat() else - tmp10 = [p2] - p2__ = tmp10 + tmp11 = [p2] + p2__ = tmp11 concat(p1__, p2__) private fun normalize_Union_sp_0() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize() p2__1 = p2.normalize() if p1__1 is Union then - tmp15 = p1__1.flat_Union_sp_0() + tmp16 = p1__1.flat_Union_sp_0() else - tmp15 = [p1__1] - arr11 = tmp15 + tmp16 = [p1__1] + arr11 = tmp16 if p2__1 is Union then - tmp16 = p2__1.flat_Union_sp_0() + tmp17 = p2__1.flat_Union_sp_0() else - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_1() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_0() p2__1 = p2.normalize() if p1__1 is Union then - tmp15 = p1__1.flat_Union_sp_0() + tmp16 = p1__1.flat_Union_sp_0() else - tmp15 = [p1__1] - arr11 = tmp15 + tmp16 = [p1__1] + arr11 = tmp16 if p2__1 is Union then - tmp16 = p2__1.flat_Union_sp_0() + tmp17 = p2__1.flat_Union_sp_0() else - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_10() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_In_sp_5() p2__1 = p2.normalize_Empty_sp_0() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = 1 - s2 = iter(tmp17, arr2, 0, 1) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_11() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} if p1 is Concat then p1__1 = p1.normalize_Concat_sp_33() Nothing then p1__1 = p1.normalize_Nothing_sp_0() p2__1 = p2.normalize() - tmp15 = [p1__1] - arr11 = tmp15 + tmp16 = [p1__1] + arr11 = tmp16 if p2__1 is Union then - tmp16 = p2__1.flat_Union_sp_0() + tmp17 = p2__1.flat_Union_sp_0() else - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_12() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} if p1 is Concat then p1__1 = p1.normalize_Concat_sp_31() Nothing then p1__1 = p1.normalize_Nothing_sp_0() p2__1 = p2.normalize() - tmp15 = [p1__1] - arr11 = tmp15 + tmp16 = [p1__1] + arr11 = tmp16 if p2__1 is Union then - tmp16 = p2__1.flat_Union_sp_0() + tmp17 = p2__1.flat_Union_sp_0() else - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_13() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_41() p2__1 = p2.normalize_Union_sp_14() - tmp15 = [p1__1] - arr11 = tmp15 + tmp16 = [p1__1] + arr11 = tmp16 if p2__1 is Union then - tmp16 = p2__1.flat_Union_sp_0() + tmp17 = p2__1.flat_Union_sp_0() else - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_14() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_42() p2__1 = p2.normalize_Concat_sp_43() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len_StagedRegExp_sp_6(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_6(arr2) + tmp20 = len_StagedRegExp_sp_6(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_15() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Exact_sp_8() p2__1 = p2.normalize_Empty_sp_0() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = 1 - s2 = iter(tmp17, arr2, 0, 1) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_16() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_37() if p2 is Empty then p2__1 = p2.normalize_Empty_sp_0() Nothing then p2__1 = p2.normalize_Nothing_sp_0() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len_StagedRegExp_sp_5(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_5(arr2) + tmp20 = len_StagedRegExp_sp_5(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_17() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_47() if p2 is Nothing then @@ -493,174 +504,183 @@ module StagedRegExp with p2__1 = p2.normalize_Concat_sp_37() Concat then p2__1 = p2.normalize_Concat_sp_50() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len_StagedRegExp_sp_7(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_7(arr2) + tmp20 = len_StagedRegExp_sp_7(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_2() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_3() if p2 is Concat then p2__1 = p2.normalize_Concat_sp_5() Nothing then p2__1 = p2.normalize_Nothing_sp_0() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len_StagedRegExp_sp_0(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_0(arr2) + tmp20 = len_StagedRegExp_sp_0(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_3() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_20() p2__1 = p2.normalize_Empty_sp_0() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = 1 - s2 = iter(tmp17, arr2, 0, 1) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_4() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_21() p2__1 = p2.normalize_Empty_sp_0() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = 1 - s2 = iter(tmp17, arr2, 0, 1) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_5() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_10() if p2 is Concat then p2__1 = p2.normalize_Concat_sp_12() Nothing then p2__1 = p2.normalize_Nothing_sp_0() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len_StagedRegExp_sp_2(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_2(arr2) + tmp20 = len_StagedRegExp_sp_2(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_6() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_23() if p2 is Nothing then p2__1 = p2.normalize_Nothing_sp_0() Concat then p2__1 = p2.normalize_Concat_sp_29() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len_StagedRegExp_sp_3(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_3(arr2) + tmp20 = len_StagedRegExp_sp_3(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_7() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} if p1 is Empty then p1__1 = p1.normalize_Empty_sp_0() Nothing then p1__1 = p1.normalize_Nothing_sp_0() p2__1 = p2.normalize_Nothing_sp_0() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = 1 - s2 = iter(tmp17, arr2, 0, 1) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_8() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_34() if p2 is Empty then p2__1 = p2.normalize_Empty_sp_0() Nothing then p2__1 = p2.normalize_Nothing_sp_0() - tmp15 = [p1__1] - arr11 = tmp15 - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len_StagedRegExp_sp_5(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_5(arr2) + tmp20 = len_StagedRegExp_sp_5(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun normalize_Union_sp_9() = - let {p1__1, p2__1, arr11, arr2, s2, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20} + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} p1__1 = p1.normalize_Concat_sp_35() p2__1 = p2.normalize() - tmp15 = [p1__1] - arr11 = tmp15 + tmp16 = [p1__1] + arr11 = tmp16 if p2__1 is Union then - tmp16 = p2__1.flat_Union_sp_0() + tmp17 = p2__1.flat_Union_sp_0() else - tmp16 = [p2__1] - arr2 = tmp16 - tmp17 = new DedupSet(arr11) - tmp18 = len(arr2) - s2 = iter(tmp17, arr2, 0, tmp18) - tmp19 = len(s2.arr) - tmp20 = len(s2.arr) - mkUnion(s2.arr, tmp19, tmp20) + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) private fun startsWith_Union_sp_0(c) = - let {tmp24} - tmp24 = p1.startsWith_Concat_sp_17(c) - if tmp24 is + let {tmp26} + tmp26 = p1.startsWith_Concat_sp_17(c) + if tmp26 is false then p2.startsWith_Union_sp_1(c) else true private fun startsWith_Union_sp_1(c) = - let {tmp24} - tmp24 = p1.startsWith_Concat_sp_18(c) - if tmp24 is + let {tmp26} + tmp26 = p1.startsWith_Concat_sp_18(c) + if tmp26 is false then p2.startsWith_Concat_sp_19(c) else true private fun startsWith_Union_sp_2(c) = - let {tmp24} - tmp24 = p1.startsWith_Exact_sp_3(c) - if tmp24 is + let {tmp26} + tmp26 = p1.startsWith_Exact_sp_3(c) + if tmp26 is false then p2.startsWith_Empty_sp_0(c) else true private fun startsWith_Union_sp_3(c) = - let {tmp24} - tmp24 = p1.startsWith_In_sp_2(c) - if tmp24 is + let {tmp26} + tmp26 = p1.startsWith_In_sp_2(c) + if tmp26 is false then p2.startsWith_Empty_sp_0(c) else true class In(val chars) extends RegExp() with @@ -725,18 +745,18 @@ module StagedRegExp with else false else false fun derive(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive(c) scrut8 = p1.canBeEmpty() if scrut8 is true then - tmp25 = new Concat.class(p1__2, p2) - tmp26 = p2.derive(c) - tmp27 = new Union(tmp25, tmp26) - tmp27.normalize_Union_sp_1() + tmp27 = new Concat.class(p1__2, p2) + tmp28 = p2.derive(c) + tmp29 = new Union(tmp27, tmp28) + tmp29.normalize_Union_sp_1() else - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_0() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_0() fun eq(other) = let {p2__2, p1__4, scrut11, scrut12, arg_Concat_0_, arg_Concat_1_} if other is @@ -755,18 +775,18 @@ module StagedRegExp with else false else false fun normalize() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize() if p1__3 is Empty then p2.normalize() Nothing then p1__3 else - tmp29 = p2.normalize() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize() + new Concat.class(p1__3, tmp31) fun startsWith(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith(c) + if tmp32 is false then scrut13 = p1.canBeEmpty() if scrut13 is @@ -805,110 +825,110 @@ module StagedRegExp with private fun canBeEmpty_Concat_sp_8() = false private fun canBeEmpty_Concat_sp_9() = false private fun derive_Concat_sp_0(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Concat_sp_1(c) scrut8 = p1.canBeEmpty_Concat_sp_1() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_3() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_3() private fun derive_Concat_sp_1(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_In_sp_0(c) scrut8 = p1.canBeEmpty_In_sp_0() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_2() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_2() private fun derive_Concat_sp_10(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Concat_sp_11(c) scrut8 = p1.canBeEmpty_Concat_sp_11() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_27() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_27() private fun derive_Concat_sp_11(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Concat_sp_12(c) scrut8 = p1.canBeEmpty_Concat_sp_12() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_26() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_26() private fun derive_Concat_sp_12(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Not_sp_0(c) scrut8 = p1.canBeEmpty_Not_sp_0() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_25() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_25() private fun derive_Concat_sp_13(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive(c) scrut8 = p1.canBeEmpty() if scrut8 is true then - tmp25 = new Concat.class(p1__2, p2) - tmp26 = p2.derive_Concat_sp_10(c) - tmp27 = new Union(tmp25, tmp26) - tmp27.normalize_Union_sp_6() + tmp27 = new Concat.class(p1__2, p2) + tmp28 = p2.derive_Concat_sp_10(c) + tmp29 = new Union(tmp27, tmp28) + tmp29.normalize_Union_sp_6() else - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_23() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_23() private fun derive_Concat_sp_14(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Concat_sp_15(c) scrut8 = p1.canBeEmpty_Concat_sp_15() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_44() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_44() private fun derive_Concat_sp_15(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Concat_sp_16(c) scrut8 = p1.canBeEmpty_Concat_sp_16() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_38() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_38() private fun derive_Concat_sp_16(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Union_sp_0(c) scrut8 = p1.canBeEmpty_Union_sp_0() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_37() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_37() private fun derive_Concat_sp_17(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Exact_sp_2(c) scrut8 = p1.canBeEmpty_Exact_sp_2() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_30() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_30() private fun derive_Concat_sp_18(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Exact_sp_2(c) scrut8 = p1.canBeEmpty_Exact_sp_2() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_32() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_32() private fun derive_Concat_sp_19(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Union_sp_2(c) scrut8 = p1.canBeEmpty_Union_sp_2() - tmp25 = new Concat.class(p1__2, p2) - tmp26 = p2.derive_Concat_sp_20(c) - tmp27 = new Union(tmp25, tmp26) - tmp27.normalize_Union_sp_9() + tmp27 = new Concat.class(p1__2, p2) + tmp28 = p2.derive_Concat_sp_20(c) + tmp29 = new Union(tmp27, tmp28) + tmp29.normalize_Union_sp_9() private fun derive_Concat_sp_2(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Star_sp_0(c) scrut8 = p1.canBeEmpty_Star_sp_0() - tmp25 = new Concat.class(p1__2, p2) - tmp26 = p2.derive_Concat_sp_3(c) - tmp27 = new Union(tmp25, tmp26) - tmp27.normalize_Union_sp_2() + tmp27 = new Concat.class(p1__2, p2) + tmp28 = p2.derive_Concat_sp_3(c) + tmp29 = new Union(tmp27, tmp28) + tmp29.normalize_Union_sp_2() private fun derive_Concat_sp_20(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Union_sp_3(c) scrut8 = p1.canBeEmpty_Union_sp_3() - tmp25 = new Concat.class(p1__2, p2) - tmp26 = p2.derive_In_sp_2(c) - tmp27 = new Union(tmp25, tmp26) - tmp27.normalize_Union_sp_8() + tmp27 = new Concat.class(p1__2, p2) + tmp28 = p2.derive_In_sp_2(c) + tmp29 = new Union(tmp27, tmp28) + tmp29.normalize_Union_sp_8() private fun derive_Concat_sp_21(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Concat_sp_22(c) scrut8 = p1.canBeEmpty_Concat_sp_22() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_49() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_49() private fun derive_Concat_sp_22(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} if p1 is Exact then p1__2 = p1.derive_Exact_sp_4(c) @@ -919,23 +939,23 @@ module StagedRegExp with scrut8 = p1.canBeEmpty_Exact_sp_4() Concat then scrut8 = p1.canBeEmpty_Concat_sp_23() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_47() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_47() private fun derive_Concat_sp_23(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive(c) scrut8 = p1.canBeEmpty() if scrut8 is true then - tmp25 = new Concat.class(p1__2, p2) - tmp26 = p2.derive_Exact_sp_4(c) - tmp27 = new Union(tmp25, tmp26) - tmp27.normalize_Union_sp_16() + tmp27 = new Concat.class(p1__2, p2) + tmp28 = p2.derive_Exact_sp_4(c) + tmp29 = new Union(tmp27, tmp28) + tmp29.normalize_Union_sp_16() else - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_37() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_37() private fun derive_Concat_sp_24(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} if p1 is Concat then p1__2 = p1.derive_Concat_sp_25(c) @@ -946,10 +966,10 @@ module StagedRegExp with scrut8 = p1.canBeEmpty_Concat_sp_25() Concat then scrut8 = p1.canBeEmpty_Concat_sp_26() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_0() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_0() private fun derive_Concat_sp_25(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} if p1 is Exact then p1__2 = p1.derive_Exact_sp_4(c) @@ -960,91 +980,91 @@ module StagedRegExp with scrut8 = p1.canBeEmpty_Exact_sp_4() Concat then scrut8 = p1.canBeEmpty_Concat_sp_23() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_50() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_50() private fun derive_Concat_sp_26(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive(c) scrut8 = p1.canBeEmpty() if scrut8 is true then - tmp25 = new Concat.class(p1__2, p2) + tmp27 = new Concat.class(p1__2, p2) if p2 is Nothing then - tmp26 = p2.derive_Nothing_sp_0(c) + tmp28 = p2.derive_Nothing_sp_0(c) Nothing then - tmp26 = p2.derive_Nothing_sp_0(c) + tmp28 = p2.derive_Nothing_sp_0(c) Concat then - tmp26 = p2.derive_Concat_sp_25(c) - tmp27 = new Union(tmp25, tmp26) - tmp27.normalize_Union_sp_17() + tmp28 = p2.derive_Concat_sp_25(c) + tmp29 = new Union(tmp27, tmp28) + tmp29.normalize_Union_sp_17() else - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_47() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_47() private fun derive_Concat_sp_3(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Exact_sp_0(c) scrut8 = p1.canBeEmpty_Exact_sp_0() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_8() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_8() private fun derive_Concat_sp_4(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Concat_sp_5(c) scrut8 = p1.canBeEmpty_Concat_sp_5() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_13() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_13() private fun derive_Concat_sp_5(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Concat_sp_6(c) scrut8 = p1.canBeEmpty_Concat_sp_6() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_10() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_10() private fun derive_Concat_sp_6(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_In_sp_1(c) scrut8 = p1.canBeEmpty_In_sp_1() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_9() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_9() private fun derive_Concat_sp_7(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Concat_sp_8(c) scrut8 = p1.canBeEmpty_Concat_sp_8() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_23() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_23() private fun derive_Concat_sp_8(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Star_sp_1(c) scrut8 = p1.canBeEmpty_Star_sp_1() - tmp25 = new Concat.class(p1__2, p2) - tmp26 = p2.derive_Concat_sp_9(c) - tmp27 = new Union(tmp25, tmp26) - tmp27.normalize_Union_sp_5() + tmp27 = new Concat.class(p1__2, p2) + tmp28 = p2.derive_Concat_sp_9(c) + tmp29 = new Union(tmp27, tmp28) + tmp29.normalize_Union_sp_5() private fun derive_Concat_sp_9(c) = - let {p1__2, scrut8, tmp25, tmp26, tmp27, tmp28} + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = p1.derive_Exact_sp_1(c) scrut8 = p1.canBeEmpty_Exact_sp_1() - tmp28 = new Concat.class(p1__2, p2) - tmp28.normalize_Concat_sp_22() + tmp30 = new Concat.class(p1__2, p2) + tmp30.normalize_Concat_sp_22() private fun normalize_Concat_sp_0() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize() if p1__3 is Empty then p2.normalize() Nothing then p1__3 else - tmp29 = p2.normalize() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_1() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize() if p1__3 is Empty then p2.normalize_Star_sp_0() Nothing then p1__3 else - tmp29 = p2.normalize_Star_sp_0() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Star_sp_0() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_10() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Star then p1__3 = p1.normalize_Star_sp_2() @@ -1053,20 +1073,20 @@ module StagedRegExp with if p1__3 is Nothing then p1__3 else - tmp29 = p2.normalize_Concat_sp_11() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_11() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_11() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Exact_sp_2() - tmp29 = p2.normalize_Concat_sp_12() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_12() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_12() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Exact_sp_3() - tmp29 = p2.normalize_Exact_sp_3() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Exact_sp_3() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_13() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Nothing then p1__3 = p1.normalize_Nothing_sp_0() @@ -1075,44 +1095,44 @@ module StagedRegExp with if p1__3 is Nothing then p1__3 else - tmp29 = p2.normalize_Concat_sp_15() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_15() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_14() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Star_sp_2() - tmp29 = p2.normalize_Concat_sp_11() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_11() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_15() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Concat_sp_16() - tmp29 = p2.normalize_Concat_sp_19() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_19() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_16() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Concat_sp_17() - tmp29 = p2.normalize_Concat_sp_18() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_18() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_17() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Not_sp_0() - tmp29 = p2.normalize_Star_sp_3() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Star_sp_3() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_18() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Not_sp_1() - tmp29 = p2.normalize_Star_sp_4() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Star_sp_4() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_19() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Union_sp_3() if p1__3 is Empty then p2.normalize_Union_sp_4() Nothing then p1__3 else - tmp29 = p2.normalize_Union_sp_4() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Union_sp_4() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_2() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Empty then p1__3 = p1.normalize_Empty_sp_0() @@ -1122,17 +1142,17 @@ module StagedRegExp with Empty then p2.normalize_Star_sp_1() Nothing then p1__3 private fun normalize_Concat_sp_20() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Exact_sp_4() - tmp29 = p2.normalize_Star_sp_5() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Star_sp_5() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_21() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Exact_sp_5() - tmp29 = p2.normalize_Star_sp_5() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Star_sp_5() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_22() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Empty then p1__3 = p1.normalize_Empty_sp_0() @@ -1142,21 +1162,21 @@ module StagedRegExp with Empty then p2.normalize_Concat_sp_12() Nothing then p1__3 private fun normalize_Concat_sp_23() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize() if p1__3 is Empty then p2.normalize_Concat_sp_24() Nothing then p1__3 else - tmp29 = p2.normalize_Concat_sp_24() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_24() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_24() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Concat_sp_16() - tmp29 = p2.normalize() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_25() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Empty then p1__3 = p1.normalize_Empty_sp_0() @@ -1166,7 +1186,7 @@ module StagedRegExp with Empty then p2.normalize_Star_sp_3() Nothing then p1__3 private fun normalize_Concat_sp_26() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Star then p1__3 = p1.normalize_Star_sp_3() @@ -1175,10 +1195,10 @@ module StagedRegExp with if p1__3 is Nothing then p1__3 else - tmp29 = p2.normalize_Concat_sp_18() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_18() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_27() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Nothing then p1__3 = p1.normalize_Nothing_sp_0() @@ -1187,20 +1207,20 @@ module StagedRegExp with if p1__3 is Nothing then p1__3 else - tmp29 = p2.normalize() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_28() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Star_sp_3() - tmp29 = p2.normalize_Concat_sp_18() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_18() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_29() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Concat_sp_28() - tmp29 = p2.normalize() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_3() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Star then p1__3 = p1.normalize_Star_sp_1() @@ -1209,10 +1229,10 @@ module StagedRegExp with if p1__3 is Nothing then p1__3 else - tmp29 = p2.normalize_Concat_sp_4() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_4() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_30() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Empty then p1__3 = p1.normalize_Empty_sp_0() @@ -1222,12 +1242,12 @@ module StagedRegExp with Empty then p2.normalize_Concat_sp_31() Nothing then p1__3 private fun normalize_Concat_sp_31() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Exact_sp_6() - tmp29 = p2.normalize_In_sp_3() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_In_sp_3() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_32() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Empty then p1__3 = p1.normalize_Empty_sp_0() @@ -1237,48 +1257,48 @@ module StagedRegExp with Empty then p2.normalize_Concat_sp_33() Nothing then p1__3 private fun normalize_Concat_sp_33() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_In_sp_4() - tmp29 = p2.normalize_In_sp_5() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_In_sp_5() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_34() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize() if p1__3 is Empty then p2.normalize_In_sp_5() Nothing then p1__3 else - tmp29 = p2.normalize_In_sp_5() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_In_sp_5() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_35() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize() if p1__3 is Empty then p2.normalize_Concat_sp_36() Nothing then p1__3 else - tmp29 = p2.normalize_Concat_sp_36() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_36() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_36() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Union_sp_10() if p1__3 is Empty then p2.normalize_In_sp_5() Nothing then p1__3 else - tmp29 = p2.normalize_In_sp_5() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_In_sp_5() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_37() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize() if p1__3 is Empty then p2.normalize_Exact_sp_1() Nothing then p1__3 else - tmp29 = p2.normalize_Exact_sp_1() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Exact_sp_1() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_38() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Exact then p1__3 = p1.normalize_Exact_sp_1() @@ -1289,51 +1309,51 @@ module StagedRegExp with if p1__3 is Nothing then p1__3 else - tmp29 = p2.normalize_Concat_sp_39() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_39() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_39() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Concat_sp_40() if p1__3 is Nothing then p1__3 else - tmp29 = p2.normalize_Concat_sp_40() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_40() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_4() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Exact_sp_0() - tmp29 = p2.normalize_Concat_sp_5() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_5() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_40() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Union_sp_13() if p1__3 is Empty then p2.normalize_Exact_sp_1() Nothing then p1__3 else - tmp29 = p2.normalize_Exact_sp_1() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Exact_sp_1() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_41() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Exact_sp_7() - tmp29 = p2.normalize_Concat_sp_31() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_31() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_42() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Exact_sp_7() - tmp29 = p2.normalize_Concat_sp_33() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_33() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_43() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Union_sp_15() if p1__3 is Empty then p2.normalize_Concat_sp_36() Nothing then p1__3 else - tmp29 = p2.normalize_Concat_sp_36() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_36() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_44() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Nothing then p1__3 = p1.normalize_Nothing_sp_0() @@ -1344,10 +1364,10 @@ module StagedRegExp with if p1__3 is Nothing then p1__3 else - tmp29 = p2.normalize_Union_sp_13() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Union_sp_13() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_45() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Exact then p1__3 = p1.normalize_Exact_sp_1() @@ -1358,12 +1378,12 @@ module StagedRegExp with else if p2 is Nothing then - tmp29 = p2.normalize_Nothing_sp_0() + tmp31 = p2.normalize_Nothing_sp_0() Concat then - tmp29 = p2.normalize_Concat_sp_46() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_46() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_46() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Exact then p1__3 = p1.normalize_Exact_sp_1() @@ -1374,14 +1394,14 @@ module StagedRegExp with else if p2 is Exact then - tmp29 = p2.normalize_Exact_sp_1() + tmp31 = p2.normalize_Exact_sp_1() Nothing then - tmp29 = p2.normalize_Nothing_sp_0() + tmp31 = p2.normalize_Nothing_sp_0() Concat then - tmp29 = p2.normalize_Concat_sp_37() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_37() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_47() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize() if p1__3 is Empty then @@ -1393,14 +1413,14 @@ module StagedRegExp with else if p2 is Nothing then - tmp29 = p2.normalize_Nothing_sp_0() + tmp31 = p2.normalize_Nothing_sp_0() Nothing then - tmp29 = p2.normalize_Nothing_sp_0() + tmp31 = p2.normalize_Nothing_sp_0() Concat then - tmp29 = p2.normalize_Concat_sp_48() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_48() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_48() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Exact then p1__3 = p1.normalize_Exact_sp_1() @@ -1411,16 +1431,16 @@ module StagedRegExp with else if p2 is Exact then - tmp29 = p2.normalize_Exact_sp_1() + tmp31 = p2.normalize_Exact_sp_1() Nothing then - tmp29 = p2.normalize_Nothing_sp_0() + tmp31 = p2.normalize_Nothing_sp_0() Nothing then - tmp29 = p2.normalize_Nothing_sp_0() + tmp31 = p2.normalize_Nothing_sp_0() Concat then - tmp29 = p2.normalize_Concat_sp_37() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_37() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_49() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Nothing then p1__3 = p1.normalize_Nothing_sp_0() @@ -1433,15 +1453,15 @@ module StagedRegExp with if p1__3 is Nothing then p1__3 else - tmp29 = p2.normalize() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_5() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Concat_sp_6() - tmp29 = p2.normalize_Concat_sp_7() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_7() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_50() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize() if p1__3 is Empty then @@ -1454,26 +1474,26 @@ module StagedRegExp with else if p2 is Exact then - tmp29 = p2.normalize_Exact_sp_1() + tmp31 = p2.normalize_Exact_sp_1() Nothing then - tmp29 = p2.normalize_Nothing_sp_0() + tmp31 = p2.normalize_Nothing_sp_0() Nothing then - tmp29 = p2.normalize_Nothing_sp_0() + tmp31 = p2.normalize_Nothing_sp_0() Concat then - tmp29 = p2.normalize_Concat_sp_37() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_37() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_6() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_In_sp_0() - tmp29 = p2.normalize_Star_sp_1() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Star_sp_1() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_7() = - let {p1__3, tmp29} + let {p1__3, tmp31} p1__3 = p1.normalize_Exact_sp_1() - tmp29 = p2.normalize_Concat_sp_6() - new Concat.class(p1__3, tmp29) + tmp31 = p2.normalize_Concat_sp_6() + new Concat.class(p1__3, tmp31) private fun normalize_Concat_sp_8() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Empty then p1__3 = p1.normalize_Empty_sp_0() @@ -1483,7 +1503,7 @@ module StagedRegExp with Empty then p2.normalize_Concat_sp_5() Nothing then p1__3 private fun normalize_Concat_sp_9() = - let {p1__3, tmp29} + let {p1__3, tmp31} if p1 is Empty then p1__3 = p1.normalize_Empty_sp_0() @@ -1493,49 +1513,49 @@ module StagedRegExp with Empty then p2.normalize_Star_sp_2() Nothing then p1__3 private fun startsWith_Concat_sp_0(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Concat_sp_1(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Concat_sp_1(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Concat_sp_1() false else true private fun startsWith_Concat_sp_1(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_In_sp_0(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_In_sp_0(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_In_sp_0() false else true private fun startsWith_Concat_sp_10(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Concat_sp_11(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Concat_sp_11(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Concat_sp_11() false else true private fun startsWith_Concat_sp_11(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Concat_sp_12(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Concat_sp_12(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Concat_sp_12() false else true private fun startsWith_Concat_sp_12(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Not_sp_0(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Not_sp_0(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Not_sp_0() false else true private fun startsWith_Concat_sp_13(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith(c) + if tmp32 is false then scrut13 = p1.canBeEmpty() if scrut13 is @@ -1547,49 +1567,49 @@ module StagedRegExp with else false else true private fun startsWith_Concat_sp_14(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Concat_sp_15(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Concat_sp_15(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Concat_sp_15() false else true private fun startsWith_Concat_sp_15(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Concat_sp_16(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Concat_sp_16(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Concat_sp_16() false else true private fun startsWith_Concat_sp_16(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Union_sp_0(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Union_sp_0(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Union_sp_0() false else true private fun startsWith_Concat_sp_17(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Exact_sp_2(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Exact_sp_2(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Exact_sp_2() false else true private fun startsWith_Concat_sp_18(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Exact_sp_2(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Exact_sp_2(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Exact_sp_2() false else true private fun startsWith_Concat_sp_19(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Union_sp_2(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Union_sp_2(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Union_sp_2() scrut14 = p2.startsWith_Concat_sp_20(c) @@ -1598,9 +1618,9 @@ module StagedRegExp with else false else true private fun startsWith_Concat_sp_2(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Star_sp_0(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Star_sp_0(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Star_sp_0() scrut14 = p2.startsWith_Concat_sp_3(c) @@ -1609,9 +1629,9 @@ module StagedRegExp with else false else true private fun startsWith_Concat_sp_20(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Union_sp_3(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Union_sp_3(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Union_sp_3() scrut14 = p2.startsWith_In_sp_2(c) @@ -1620,21 +1640,21 @@ module StagedRegExp with else false else true private fun startsWith_Concat_sp_21(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Concat_sp_22(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Concat_sp_22(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Concat_sp_22() false else true private fun startsWith_Concat_sp_22(c) = - let {scrut13, scrut14, tmp30} + let {scrut13, scrut14, tmp32} if p1 is Exact then - tmp30 = p1.startsWith_Exact_sp_4(c) + tmp32 = p1.startsWith_Exact_sp_4(c) Concat then - tmp30 = p1.startsWith_Concat_sp_23(c) - if tmp30 is + tmp32 = p1.startsWith_Concat_sp_23(c) + if tmp32 is false then if p1 is Exact then @@ -1644,9 +1664,9 @@ module StagedRegExp with false else true private fun startsWith_Concat_sp_23(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith(c) + if tmp32 is false then scrut13 = p1.canBeEmpty() if scrut13 is @@ -1658,13 +1678,13 @@ module StagedRegExp with else false else true private fun startsWith_Concat_sp_24(c) = - let {scrut13, scrut14, tmp30} + let {scrut13, scrut14, tmp32} if p1 is Concat then - tmp30 = p1.startsWith_Concat_sp_25(c) + tmp32 = p1.startsWith_Concat_sp_25(c) Concat then - tmp30 = p1.startsWith_Concat_sp_26(c) - if tmp30 is + tmp32 = p1.startsWith_Concat_sp_26(c) + if tmp32 is false then if p1 is Concat then @@ -1674,13 +1694,13 @@ module StagedRegExp with false else true private fun startsWith_Concat_sp_25(c) = - let {scrut13, scrut14, tmp30} + let {scrut13, scrut14, tmp32} if p1 is Exact then - tmp30 = p1.startsWith_Exact_sp_4(c) + tmp32 = p1.startsWith_Exact_sp_4(c) Concat then - tmp30 = p1.startsWith_Concat_sp_23(c) - if tmp30 is + tmp32 = p1.startsWith_Concat_sp_23(c) + if tmp32 is false then if p1 is Exact then @@ -1690,9 +1710,9 @@ module StagedRegExp with false else true private fun startsWith_Concat_sp_26(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith(c) + if tmp32 is false then scrut13 = p1.canBeEmpty() if scrut13 is @@ -1710,49 +1730,49 @@ module StagedRegExp with else false else true private fun startsWith_Concat_sp_3(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Exact_sp_0(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Exact_sp_0(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Exact_sp_0() false else true private fun startsWith_Concat_sp_4(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Concat_sp_5(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Concat_sp_5(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Concat_sp_5() false else true private fun startsWith_Concat_sp_5(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Concat_sp_6(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Concat_sp_6(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Concat_sp_6() false else true private fun startsWith_Concat_sp_6(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_In_sp_1(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_In_sp_1(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_In_sp_1() false else true private fun startsWith_Concat_sp_7(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Concat_sp_8(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Concat_sp_8(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Concat_sp_8() false else true private fun startsWith_Concat_sp_8(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Star_sp_1(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Star_sp_1(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Star_sp_1() scrut14 = p2.startsWith_Concat_sp_9(c) @@ -1761,9 +1781,9 @@ module StagedRegExp with else false else true private fun startsWith_Concat_sp_9(c) = - let {scrut13, scrut14, tmp30} - tmp30 = p1.startsWith_Exact_sp_1(c) - if tmp30 is + let {scrut13, scrut14, tmp32} + tmp32 = p1.startsWith_Exact_sp_1(c) + if tmp32 is false then scrut13 = p1.canBeEmpty_Exact_sp_1() false @@ -1772,11 +1792,11 @@ module StagedRegExp with () fun canBeEmpty() = true fun derive(c) = - let {tmp31, tmp32, tmp33} - tmp31 = p.derive(c) - tmp32 = new Star.class(p) - tmp33 = new Concat(tmp31, tmp32) - tmp33.normalize_Concat_sp_1() + let {tmp33, tmp34, tmp35} + tmp33 = p.derive(c) + tmp34 = new Star.class(p) + tmp35 = new Concat(tmp33, tmp34) + tmp35.normalize_Concat_sp_1() fun eq(other) = let {p__, arg_Star_0_} if other is @@ -1786,72 +1806,72 @@ module StagedRegExp with p.eq(p__) else false fun normalize() = - let {tmp34} - tmp34 = p.normalize() - new Star.class(tmp34) + let {tmp36} + tmp36 = p.normalize() + new Star.class(tmp36) fun startsWith(c) = p.startsWith(c) private fun canBeEmpty_Star_sp_0() = true private fun canBeEmpty_Star_sp_1() = true private fun derive_Star_sp_0(c) = - let {tmp31, tmp32, tmp33} - tmp31 = p.derive_In_sp_0(c) - tmp32 = new Star.class(p) - tmp33 = new Concat(tmp31, tmp32) - tmp33.normalize_Concat_sp_2() + let {tmp33, tmp34, tmp35} + tmp33 = p.derive_In_sp_0(c) + tmp34 = new Star.class(p) + tmp35 = new Concat(tmp33, tmp34) + tmp35.normalize_Concat_sp_2() private fun derive_Star_sp_1(c) = - let {tmp31, tmp32, tmp33} - tmp31 = p.derive_In_sp_1(c) - tmp32 = new Star.class(p) - tmp33 = new Concat(tmp31, tmp32) - tmp33.normalize_Concat_sp_9() + let {tmp33, tmp34, tmp35} + tmp33 = p.derive_In_sp_1(c) + tmp34 = new Star.class(p) + tmp35 = new Concat(tmp33, tmp34) + tmp35.normalize_Concat_sp_9() private fun normalize_Star_sp_0() = - let {tmp34} - tmp34 = p.normalize() - new Star.class(tmp34) + let {tmp36} + tmp36 = p.normalize() + new Star.class(tmp36) private fun normalize_Star_sp_1() = - let {tmp34} - tmp34 = p.normalize_In_sp_0() - new Star.class(tmp34) + let {tmp36} + tmp36 = p.normalize_In_sp_0() + new Star.class(tmp36) private fun normalize_Star_sp_2() = - let {tmp34} - tmp34 = p.normalize_In_sp_1() - new Star.class(tmp34) + let {tmp36} + tmp36 = p.normalize_In_sp_1() + new Star.class(tmp36) private fun normalize_Star_sp_3() = - let {tmp34} - tmp34 = p.normalize_Not_sp_0() - new Star.class(tmp34) + let {tmp36} + tmp36 = p.normalize_Not_sp_0() + new Star.class(tmp36) private fun normalize_Star_sp_4() = - let {tmp34} - tmp34 = p.normalize_Not_sp_1() - new Star.class(tmp34) + let {tmp36} + tmp36 = p.normalize_Not_sp_1() + new Star.class(tmp36) private fun normalize_Star_sp_5() = - let {tmp34} - tmp34 = p.normalize_In_sp_2() - new Star.class(tmp34) + let {tmp36} + tmp36 = p.normalize_In_sp_2() + new Star.class(tmp36) private fun startsWith_Star_sp_0(c) = p.startsWith_In_sp_0(c) private fun startsWith_Star_sp_1(c) = p.startsWith_In_sp_1(c) fun arrEq(arr1, arr2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".eq(arr1, arr2) fun concat(lhs, rhs) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".concat(lhs, rhs) fun digits() = - let {tmp46, tup_8} + let {tmp51, tup_8} tup_8 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - tmp46 = tup_8 - new In(tmp46) + tmp51 = tup_8 + new In(tmp51) fun has(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) fun len(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) fun match(p, s) = matchImpl_StagedRegExp_sp_0(p, s, "") fun matchAll(p, s) = - let {tmp61} - tmp61 = [] - matchAllImpl_StagedRegExp_sp_0(p, s, tmp61) + let {tmp66} + tmp66 = [] + matchAllImpl_StagedRegExp_sp_0(p, s, tmp66) fun matchAllEmail(s) = - let {p7, email, tmp62, tmp63, tmp64, tmp65, tmp66, tmp67, tmp68, tmp69, tmp70, tup_9, tup_10, tup_11, obj_12, tup_13, obj_14, obj_15, obj_16} + let {p7, email, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tup_9, tup_10, tup_11, obj_12, tup_13, obj_14, obj_15, obj_16} tup_9 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp62 = tup_9 - tmp63 = ["-", "."] + tmp67 = tup_9 + tmp68 = ["-", "."] tup_10 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] - tmp64 = tup_10 - tmp65 = new In(tmp64) + tmp69 = tup_10 + tmp70 = new In(tmp69) tup_11 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] obj_12 = new In(tup_11) tup_13 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] @@ -1859,51 +1879,51 @@ module StagedRegExp with obj_15 = new Star(obj_14) obj_16 = new Concat(obj_12, obj_15) p7 = obj_16 - tmp66 = new Exact("@") - tmp67 = new Exact(".") - tmp68 = new Concat(tmp67, p7) - tmp69 = new Concat(p7, tmp68) - tmp70 = new Concat(tmp66, tmp69) - email = new Concat(p7, tmp70) + tmp71 = new Exact("@") + tmp72 = new Exact(".") + tmp73 = new Concat(tmp72, p7) + tmp74 = new Concat(p7, tmp73) + tmp75 = new Concat(tmp71, tmp74) + email = new Concat(p7, tmp75) matchAll_StagedRegExp_sp_0(email, s) fun matchAllIPv4(s) = - let {fo, fi, segment, ipv4, tmp97, tmp98, tmp99, tmp100, tmp101, tmp102, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112, tmp113, tmp114, tmp115, tmp116, tmp117, tup_59, obj_60, obj_61, obj_62, obj_63, tup_64, obj_65, tup_66, obj_67, obj_68, obj_69, tup_70, obj_71, obj_157, obj_158, tup_159, obj_160, obj_161, obj_162, obj_163, tup_164, obj_165, tup_166, obj_167, obj_168, obj_169, obj_170, obj_171, obj_172, tup_173, obj_174, obj_175, obj_176, tup_177, obj_178, obj_179, obj_180, obj_181, obj_182, obj_183, obj_184, obj_185, obj_186, tup_187, obj_188, obj_189, obj_190, obj_191, tup_192, obj_193, tup_194, obj_195, obj_196, obj_197, obj_198, obj_199, obj_200, tup_201, obj_202, obj_203, obj_204, tup_205, obj_206, obj_207, obj_208, obj_209, obj_210, obj_211, obj_212, obj_213, obj_214, tup_215, obj_216, obj_217, obj_218, obj_219, tup_220, obj_221, tup_222, obj_223, obj_224, obj_225, obj_226, obj_227, obj_228, tup_229, obj_230, obj_231, obj_232, tup_233, obj_234, obj_235, obj_236, obj_237, obj_238, obj_239, obj_240, obj_241, obj_242} - tmp97 = ["0", "1", "2", "3", "4"] - fo = new In(tmp97) - tmp98 = ["0", "1", "2", "3", "4", "5"] - fi = new In(tmp98) - tmp99 = new Exact("2") - tmp100 = new Exact("5") - tmp101 = new Concat(tmp100, fi) - tmp102 = new Concat(tmp99, tmp101) - tmp103 = new Exact("2") + let {fo, fi, segment, ipv4, tmp102, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112, tmp113, tmp114, tmp115, tmp116, tmp117, tmp118, tmp119, tmp120, tmp121, tmp122, tup_59, obj_60, obj_61, obj_62, obj_63, tup_64, obj_65, tup_66, obj_67, obj_68, obj_69, tup_70, obj_71, obj_157, obj_158, tup_159, obj_160, obj_161, obj_162, obj_163, tup_164, obj_165, tup_166, obj_167, obj_168, obj_169, obj_170, obj_171, obj_172, tup_173, obj_174, obj_175, obj_176, tup_177, obj_178, obj_179, obj_180, obj_181, obj_182, obj_183, obj_184, obj_185, obj_186, tup_187, obj_188, obj_189, obj_190, obj_191, tup_192, obj_193, tup_194, obj_195, obj_196, obj_197, obj_198, obj_199, obj_200, tup_201, obj_202, obj_203, obj_204, tup_205, obj_206, obj_207, obj_208, obj_209, obj_210, obj_211, obj_212, obj_213, obj_214, tup_215, obj_216, obj_217, obj_218, obj_219, tup_220, obj_221, tup_222, obj_223, obj_224, obj_225, obj_226, obj_227, obj_228, tup_229, obj_230, obj_231, obj_232, tup_233, obj_234, obj_235, obj_236, obj_237, obj_238, obj_239, obj_240, obj_241, obj_242} + tmp102 = ["0", "1", "2", "3", "4"] + fo = new In(tmp102) + tmp103 = ["0", "1", "2", "3", "4", "5"] + fi = new In(tmp103) + tmp104 = new Exact("2") + tmp105 = new Exact("5") + tmp106 = new Concat(tmp105, fi) + tmp107 = new Concat(tmp104, tmp106) + tmp108 = new Exact("2") tup_59 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] obj_60 = new In(tup_59) - tmp104 = obj_60 - tmp105 = new Concat(fo, tmp104) - tmp106 = new Concat(tmp103, tmp105) - tmp107 = new Exact("1") + tmp109 = obj_60 + tmp110 = new Concat(fo, tmp109) + tmp111 = new Concat(tmp108, tmp110) + tmp112 = new Exact("1") obj_61 = new Exact("1") obj_62 = new Empty() obj_63 = new Union(obj_61, obj_62) - tmp108 = obj_63 + tmp113 = obj_63 tup_64 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] obj_65 = new In(tup_64) - tmp109 = obj_65 + tmp114 = obj_65 tup_66 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] obj_67 = new In(tup_66) obj_68 = new Empty() obj_69 = new Union(obj_67, obj_68) - tmp110 = obj_69 + tmp115 = obj_69 tup_70 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] obj_71 = new In(tup_70) - tmp111 = obj_71 - tmp112 = new Concat(tmp110, tmp111) - tmp113 = new Concat(tmp108, tmp112) - tmp114 = new Union(tmp106, tmp113) - segment = new Union(tmp102, tmp114) - tmp115 = new Exact(".") - tmp116 = new Concat(segment, tmp115) + tmp116 = obj_71 + tmp117 = new Concat(tmp115, tmp116) + tmp118 = new Concat(tmp113, tmp117) + tmp119 = new Union(tmp111, tmp118) + segment = new Union(tmp107, tmp119) + tmp120 = new Exact(".") + tmp121 = new Concat(segment, tmp120) obj_157 = new Exact("2") obj_158 = new Exact("5") tup_159 = ["0", "1", "2", "3", "4", "5"] @@ -1990,13 +2010,13 @@ module StagedRegExp with obj_240 = new Concat(obj_238, obj_239) obj_241 = new Concat(obj_212, obj_240) obj_242 = new Concat(obj_184, obj_241) - tmp117 = obj_242 - ipv4 = new Concat(tmp117, segment) + tmp122 = obj_242 + ipv4 = new Concat(tmp122, segment) matchAll_StagedRegExp_sp_2(ipv4, s) fun matchAllImpl(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} - tmp54 = len(s) - scrut22 = ==(tmp54, 0) + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) if scrut22 is true then res else @@ -2005,28 +2025,28 @@ module StagedRegExp with Some then arg_Some_0_ = scrut23.x ss = arg_Some_0_ - tmp55 = len(ss) - scrut24 = >(tmp55, 0) + tmp60 = len(ss) + scrut24 = >(tmp60, 0) if scrut24 is true then - tmp56 = len(ss) - tmp57 = s.slice(tmp56) - tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl(p, tmp57, tmp58) + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl(p, tmp62, tmp63) else - tmp59 = s.slice(1) - matchAllImpl(p, tmp59, res) + tmp64 = s.slice(1) + matchAllImpl(p, tmp64, res) else - tmp60 = s.slice(1) - matchAllImpl(p, tmp60, res) + tmp65 = s.slice(1) + matchAllImpl(p, tmp65, res) fun matchAllURI(s) = - let {n1, n2, n3, w, d, p8, head, body, params, uri, tmp71, tmp72, tmp73, tmp74, tmp75, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tup_19, obj_20, tup_21, obj_22, tup_23, tup_24, tup_25, tup_26, tup_27, obj_28, tup_29, obj_30, obj_31, obj_32, tup_33, obj_34, tup_35, obj_36, obj_37, obj_38, tup_39, obj_40, tup_41, obj_42, obj_43, obj_44, obj_45, tup_46, obj_47, obj_48, obj_49, obj_50, obj_51, obj_52, tup_53, obj_54, obj_55, obj_56, obj_57, obj_58} - tmp71 = ["/", "?", "#", " ", "\n", "\t", "\r"] - n1 = new Not(tmp71) - tmp72 = ["?", "#", " ", "\n", "\t", "\r"] - n2 = new Not(tmp72) - tmp73 = ["#", " ", "\n", "\t", "\r"] - n3 = new Not(tmp73) + let {n1, n2, n3, w, d, p8, head, body, params, uri, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tmp97, tmp98, tmp99, tmp100, tmp101, tup_19, obj_20, tup_21, obj_22, tup_23, tup_24, tup_25, tup_26, tup_27, obj_28, tup_29, obj_30, obj_31, obj_32, tup_33, obj_34, tup_35, obj_36, obj_37, obj_38, tup_39, obj_40, tup_41, obj_42, obj_43, obj_44, obj_45, tup_46, obj_47, obj_48, obj_49, obj_50, obj_51, obj_52, tup_53, obj_54, obj_55, obj_56, obj_57, obj_58} + tmp76 = ["/", "?", "#", " ", "\n", "\t", "\r"] + n1 = new Not(tmp76) + tmp77 = ["?", "#", " ", "\n", "\t", "\r"] + n2 = new Not(tmp77) + tmp78 = ["#", " ", "\n", "\t", "\r"] + n3 = new Not(tmp78) tup_19 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] obj_20 = new In(tup_19) w = obj_20 @@ -2034,12 +2054,12 @@ module StagedRegExp with obj_22 = new In(tup_21) d = obj_22 tup_23 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp74 = tup_23 + tmp79 = tup_23 tup_24 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - tmp75 = tup_24 - tmp76 = ["-", "_"] + tmp80 = tup_24 + tmp81 = ["-", "_"] tup_25 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] - tmp77 = tup_25 + tmp82 = tup_25 tup_26 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] p8 = tup_26 tup_27 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] @@ -2048,32 +2068,32 @@ module StagedRegExp with obj_30 = new In(tup_29) obj_31 = new Star(obj_30) obj_32 = new Concat(obj_28, obj_31) - tmp78 = obj_32 - tmp79 = new Exact(":") - tmp80 = new Exact("/") - tmp81 = new Exact("/") - tmp82 = new Concat(tmp80, tmp81) - tmp83 = new Concat(tmp79, tmp82) - head = new Concat(tmp78, tmp83) + tmp83 = obj_32 + tmp84 = new Exact(":") + tmp85 = new Exact("/") + tmp86 = new Exact("/") + tmp87 = new Concat(tmp85, tmp86) + tmp88 = new Concat(tmp84, tmp87) + head = new Concat(tmp83, tmp88) tup_33 = ["/", "?", "#", " ", "\n", "\t", "\r"] obj_34 = new Not(tup_33) tup_35 = ["/", "?", "#", " ", "\n", "\t", "\r"] obj_36 = new Not(tup_35) obj_37 = new Star(obj_36) obj_38 = new Concat(obj_34, obj_37) - tmp84 = obj_38 + tmp89 = obj_38 tup_39 = ["?", "#", " ", "\n", "\t", "\r"] obj_40 = new Not(tup_39) tup_41 = ["?", "#", " ", "\n", "\t", "\r"] obj_42 = new Not(tup_41) obj_43 = new Star(obj_42) obj_44 = new Concat(obj_40, obj_43) - tmp85 = obj_44 - body = new Concat(tmp84, tmp85) - tmp86 = new Exact("?") - tmp87 = new In(p8) - tmp88 = new Star(tmp87) - tmp89 = new Concat(tmp86, tmp88) + tmp90 = obj_44 + body = new Concat(tmp89, tmp90) + tmp91 = new Exact("?") + tmp92 = new In(p8) + tmp93 = new Star(tmp92) + tmp94 = new Concat(tmp91, tmp93) obj_45 = new Exact("?") tup_46 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] obj_47 = new In(tup_46) @@ -2081,11 +2101,11 @@ module StagedRegExp with obj_49 = new Concat(obj_45, obj_48) obj_50 = new Empty() obj_51 = new Union(obj_49, obj_50) - tmp90 = obj_51 - tmp91 = new Exact("#") - tmp92 = new In(p8) - tmp93 = new Star(tmp92) - tmp94 = new Concat(tmp91, tmp93) + tmp95 = obj_51 + tmp96 = new Exact("#") + tmp97 = new In(p8) + tmp98 = new Star(tmp97) + tmp99 = new Concat(tmp96, tmp98) obj_52 = new Exact("#") tup_53 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] obj_54 = new In(tup_53) @@ -2093,15 +2113,15 @@ module StagedRegExp with obj_56 = new Concat(obj_52, obj_55) obj_57 = new Empty() obj_58 = new Union(obj_56, obj_57) - tmp95 = obj_58 - params = new Concat(tmp90, tmp95) - tmp96 = new Concat(body, params) - uri = new Concat(head, tmp96) + tmp100 = obj_58 + params = new Concat(tmp95, tmp100) + tmp101 = new Concat(body, params) + uri = new Concat(head, tmp101) matchAll_StagedRegExp_sp_1(uri, s) fun matchImpl(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then scrut19 = p.canBeEmpty() @@ -2116,76 +2136,80 @@ module StagedRegExp with scrut20 = p.startsWith(c18) if scrut20 is true then - tmp51 = p.derive(c18) - tmp52 = s.slice(1) - tmp53 = acc + c18 - matchImpl(tmp51, tmp52, tmp53) + tmp56 = p.derive(c18) + tmp57 = s.slice(1) + tmp58 = acc + c18 + matchImpl(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty() if scrut21 is true then new Some(acc) else new None() fun mkUnion(arr, i, s) = - let {scrut15, scrut16, tmp38, tmp39, tmp40, tmp41, tmp42} - tmp38 = s - i - tmp39 = s - 1 - scrut15 = ==(tmp38, tmp39) + let {scrut15, scrut16, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tmp46, tmp47} + tmp40 = s - i + tmp41 = s - 1 + scrut15 = ==(tmp40, tmp41) if scrut15 is - true then arr.(i) + true then + tmp42 = s - i + arr.(tmp42) else - scrut16 = arr.(i) + tmp43 = s - i + scrut16 = arr.(tmp43) if scrut16 is Nothing then - tmp40 = i - 1 - mkUnion(arr, tmp40, s) + tmp44 = i - 1 + mkUnion(arr, tmp44, s) else - tmp41 = i - 1 - tmp42 = mkUnion(arr, tmp41, s) - new Union(arr.(i), tmp42) + tmp45 = s - i + tmp46 = i - 1 + tmp47 = mkUnion(arr, tmp46, s) + new Union(arr.(tmp45), tmp47) fun nTimes(r, i) = - let {scrut17, tmp47, tmp48} + let {scrut17, tmp52, tmp53} scrut17 = ==(i, 1) if scrut17 is true then r else - tmp47 = i - 1 - tmp48 = nTimes(r, tmp47) - new Concat(r, tmp48) + tmp52 = i - 1 + tmp53 = nTimes(r, tmp52) + new Concat(r, tmp53) fun notDigit() = - let {tmp37, tup_5} + let {tmp39, tup_5} tup_5 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - tmp37 = tup_5 - new Not(tmp37) + tmp39 = tup_5 + new Not(tmp39) fun notSpace() = - let {tmp36, tup_4} + let {tmp38, tup_4} tup_4 = [" ", "\n", "\t", "\r"] - tmp36 = tup_4 - new Not(tmp36) + tmp38 = tup_4 + new Not(tmp38) fun notWord() = - let {tmp35, tup_3} + let {tmp37, tup_3} tup_3 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp35 = tup_3 - new Not(tmp35) + tmp37 = tup_3 + new Not(tmp37) fun plus(r) = - let {tmp49} - tmp49 = new Star(r) - new Concat(r, tmp49) + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) fun push(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(arr, ele) fun question(r) = - let {tmp43} - tmp43 = new Empty() - new Union(r, tmp43) + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) fun setEq(s1, s2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".setEq(s1, s2) fun spaces() = - let {tmp45, tup_7} + let {tmp50, tup_7} tup_7 = [" ", "\n", "\t", "\r"] - tmp45 = tup_7 - new In(tmp45) + tmp50 = tup_7 + new In(tmp50) fun words() = - let {tmp44, tup_6} + let {tmp49, tup_6} tup_6 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp44 = tup_6 - new In(tmp44) + tmp49 = tup_6 + new In(tmp49) private fun has_StagedRegExp_sp_0(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) private fun has_StagedRegExp_sp_1(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) private fun has_StagedRegExp_sp_2(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) @@ -2199,9 +2223,9 @@ module StagedRegExp with private fun len_StagedRegExp_sp_6(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) private fun len_StagedRegExp_sp_7(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) private fun matchAllImpl_StagedRegExp_sp_0(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} - tmp54 = len(s) - scrut22 = ==(tmp54, 0) + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) if scrut22 is true then res else @@ -2210,24 +2234,24 @@ module StagedRegExp with Some then arg_Some_0_ = scrut23.x ss = arg_Some_0_ - tmp55 = len(ss) - scrut24 = >(tmp55, 0) + tmp60 = len(ss) + scrut24 = >(tmp60, 0) if scrut24 is true then - tmp56 = len(ss) - tmp57 = s.slice(tmp56) - tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl(p, tmp57, tmp58) + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl(p, tmp62, tmp63) else - tmp59 = s.slice(1) - matchAllImpl_StagedRegExp_sp_0(p, tmp59, res) + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_0(p, tmp64, res) else - tmp60 = s.slice(1) - matchAllImpl_StagedRegExp_sp_0(p, tmp60, res) + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_0(p, tmp65, res) private fun matchAllImpl_StagedRegExp_sp_1(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} - tmp54 = len(s) - scrut22 = ==(tmp54, 0) + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) if scrut22 is true then res else @@ -2236,24 +2260,24 @@ module StagedRegExp with Some then arg_Some_0_ = scrut23.x ss = arg_Some_0_ - tmp55 = len(ss) - scrut24 = >(tmp55, 0) + tmp60 = len(ss) + scrut24 = >(tmp60, 0) if scrut24 is true then - tmp56 = len(ss) - tmp57 = s.slice(tmp56) - tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_2(p, tmp57, tmp58) + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_2(p, tmp62, tmp63) else - tmp59 = s.slice(1) - matchAllImpl_StagedRegExp_sp_1(p, tmp59, res) + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_1(p, tmp64, res) else - tmp60 = s.slice(1) - matchAllImpl_StagedRegExp_sp_1(p, tmp60, res) + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_1(p, tmp65, res) private fun matchAllImpl_StagedRegExp_sp_2(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} - tmp54 = len(s) - scrut22 = ==(tmp54, 0) + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) if scrut22 is true then res else @@ -2262,24 +2286,24 @@ module StagedRegExp with Some then arg_Some_0_ = scrut23.x ss = arg_Some_0_ - tmp55 = len(ss) - scrut24 = >(tmp55, 0) + tmp60 = len(ss) + scrut24 = >(tmp60, 0) if scrut24 is true then - tmp56 = len(ss) - tmp57 = s.slice(tmp56) - tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_2(p, tmp57, tmp58) + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_2(p, tmp62, tmp63) else - tmp59 = s.slice(1) - matchAllImpl_StagedRegExp_sp_2(p, tmp59, res) + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_2(p, tmp64, res) else - tmp60 = s.slice(1) - matchAllImpl_StagedRegExp_sp_2(p, tmp60, res) + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_2(p, tmp65, res) private fun matchAllImpl_StagedRegExp_sp_3(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} - tmp54 = len(s) - scrut22 = ==(tmp54, 0) + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) if scrut22 is true then res else @@ -2288,24 +2312,24 @@ module StagedRegExp with Some then arg_Some_0_ = scrut23.x ss = arg_Some_0_ - tmp55 = len(ss) - scrut24 = >(tmp55, 0) + tmp60 = len(ss) + scrut24 = >(tmp60, 0) if scrut24 is true then - tmp56 = len(ss) - tmp57 = s.slice(tmp56) - tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_4(p, tmp57, tmp58) + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_4(p, tmp62, tmp63) else - tmp59 = s.slice(1) - matchAllImpl_StagedRegExp_sp_3(p, tmp59, res) + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_3(p, tmp64, res) else - tmp60 = s.slice(1) - matchAllImpl_StagedRegExp_sp_3(p, tmp60, res) + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_3(p, tmp65, res) private fun matchAllImpl_StagedRegExp_sp_4(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} - tmp54 = len(s) - scrut22 = ==(tmp54, 0) + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) if scrut22 is true then res else @@ -2314,24 +2338,24 @@ module StagedRegExp with Some then arg_Some_0_ = scrut23.x ss = arg_Some_0_ - tmp55 = len(ss) - scrut24 = >(tmp55, 0) + tmp60 = len(ss) + scrut24 = >(tmp60, 0) if scrut24 is true then - tmp56 = len(ss) - tmp57 = s.slice(tmp56) - tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_4(p, tmp57, tmp58) + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_4(p, tmp62, tmp63) else - tmp59 = s.slice(1) - matchAllImpl_StagedRegExp_sp_4(p, tmp59, res) + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_4(p, tmp64, res) else - tmp60 = s.slice(1) - matchAllImpl_StagedRegExp_sp_4(p, tmp60, res) + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_4(p, tmp65, res) private fun matchAllImpl_StagedRegExp_sp_5(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} - tmp54 = len(s) - scrut22 = ==(tmp54, 0) + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) if scrut22 is true then res else @@ -2340,24 +2364,24 @@ module StagedRegExp with Some then arg_Some_0_ = scrut23.x ss = arg_Some_0_ - tmp55 = len(ss) - scrut24 = >(tmp55, 0) + tmp60 = len(ss) + scrut24 = >(tmp60, 0) if scrut24 is true then - tmp56 = len(ss) - tmp57 = s.slice(tmp56) - tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_6(p, tmp57, tmp58) + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_6(p, tmp62, tmp63) else - tmp59 = s.slice(1) - matchAllImpl_StagedRegExp_sp_5(p, tmp59, res) + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_5(p, tmp64, res) else - tmp60 = s.slice(1) - matchAllImpl_StagedRegExp_sp_5(p, tmp60, res) + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_5(p, tmp65, res) private fun matchAllImpl_StagedRegExp_sp_6(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp54, arg_Some_0_, tmp55, tmp56, tmp57, tmp58, tmp59, tmp60} - tmp54 = len(s) - scrut22 = ==(tmp54, 0) + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) if scrut22 is true then res else @@ -2366,36 +2390,36 @@ module StagedRegExp with Some then arg_Some_0_ = scrut23.x ss = arg_Some_0_ - tmp55 = len(ss) - scrut24 = >(tmp55, 0) + tmp60 = len(ss) + scrut24 = >(tmp60, 0) if scrut24 is true then - tmp56 = len(ss) - tmp57 = s.slice(tmp56) - tmp58 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_6(p, tmp57, tmp58) + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_6(p, tmp62, tmp63) else - tmp59 = s.slice(1) - matchAllImpl_StagedRegExp_sp_6(p, tmp59, res) + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_6(p, tmp64, res) else - tmp60 = s.slice(1) - matchAllImpl_StagedRegExp_sp_6(p, tmp60, res) + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_6(p, tmp65, res) private fun matchAll_StagedRegExp_sp_0(p, s) = - let {tmp61} - tmp61 = [] - matchAllImpl_StagedRegExp_sp_1(p, s, tmp61) + let {tmp66} + tmp66 = [] + matchAllImpl_StagedRegExp_sp_1(p, s, tmp66) private fun matchAll_StagedRegExp_sp_1(p, s) = - let {tmp61} - tmp61 = [] - matchAllImpl_StagedRegExp_sp_3(p, s, tmp61) + let {tmp66} + tmp66 = [] + matchAllImpl_StagedRegExp_sp_3(p, s, tmp66) private fun matchAll_StagedRegExp_sp_2(p, s) = - let {tmp61} - tmp61 = [] - matchAllImpl_StagedRegExp_sp_5(p, s, tmp61) + let {tmp66} + tmp66 = [] + matchAllImpl_StagedRegExp_sp_5(p, s, tmp66) private fun matchImpl_StagedRegExp_sp_0(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then scrut19 = p.canBeEmpty() @@ -2410,19 +2434,19 @@ module StagedRegExp with scrut20 = p.startsWith(c18) if scrut20 is true then - tmp51 = p.derive(c18) - tmp52 = s.slice(1) - tmp53 = "" + c18 - matchImpl(tmp51, tmp52, tmp53) + tmp56 = p.derive(c18) + tmp57 = s.slice(1) + tmp58 = "" + c18 + matchImpl(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty() if scrut21 is true then new Some(acc) else new None() private fun matchImpl_StagedRegExp_sp_1(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then scrut19 = p.canBeEmpty_Concat_sp_0() @@ -2432,17 +2456,17 @@ module StagedRegExp with scrut20 = p.startsWith_Concat_sp_0(c18) if scrut20 is true then - tmp51 = p.derive_Concat_sp_0(c18) - tmp52 = s.slice(1) - tmp53 = "" + c18 - matchImpl_StagedRegExp_sp_2(tmp51, tmp52, tmp53) + tmp56 = p.derive_Concat_sp_0(c18) + tmp57 = s.slice(1) + tmp58 = "" + c18 + matchImpl_StagedRegExp_sp_2(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty_Concat_sp_0() new None() private fun matchImpl_StagedRegExp_sp_2(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then if p is @@ -2459,17 +2483,17 @@ module StagedRegExp with scrut20 = p.startsWith_Concat_sp_2(c18) if scrut20 is true then - tmp51 = p.derive_Concat_sp_2(c18) - tmp52 = s.slice(1) - tmp53 = acc + c18 - matchImpl(tmp51, tmp52, tmp53) + tmp56 = p.derive_Concat_sp_2(c18) + tmp57 = s.slice(1) + tmp58 = acc + c18 + matchImpl(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty_Concat_sp_2() new None() private fun matchImpl_StagedRegExp_sp_3(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then scrut19 = p.canBeEmpty_Concat_sp_4() @@ -2479,17 +2503,17 @@ module StagedRegExp with scrut20 = p.startsWith_Concat_sp_4(c18) if scrut20 is true then - tmp51 = p.derive_Concat_sp_4(c18) - tmp52 = s.slice(1) - tmp53 = "" + c18 - matchImpl_StagedRegExp_sp_4(tmp51, tmp52, tmp53) + tmp56 = p.derive_Concat_sp_4(c18) + tmp57 = s.slice(1) + tmp58 = "" + c18 + matchImpl_StagedRegExp_sp_4(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty_Concat_sp_4() new None() private fun matchImpl_StagedRegExp_sp_4(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then if p is @@ -2506,17 +2530,17 @@ module StagedRegExp with scrut20 = p.startsWith_Concat_sp_7(c18) if scrut20 is true then - tmp51 = p.derive_Concat_sp_7(c18) - tmp52 = s.slice(1) - tmp53 = acc + c18 - matchImpl_StagedRegExp_sp_5(tmp51, tmp52, tmp53) + tmp56 = p.derive_Concat_sp_7(c18) + tmp57 = s.slice(1) + tmp58 = acc + c18 + matchImpl_StagedRegExp_sp_5(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty_Concat_sp_7() new None() private fun matchImpl_StagedRegExp_sp_5(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then if p is @@ -2541,12 +2565,12 @@ module StagedRegExp with true then if p is Concat then - tmp51 = p.derive_Concat_sp_10(c18) + tmp56 = p.derive_Concat_sp_10(c18) Concat then - tmp51 = p.derive_Concat_sp_13(c18) - tmp52 = s.slice(1) - tmp53 = acc + c18 - matchImpl(tmp51, tmp52, tmp53) + tmp56 = p.derive_Concat_sp_13(c18) + tmp57 = s.slice(1) + tmp58 = acc + c18 + matchImpl(tmp56, tmp57, tmp58) else if p is Concat then @@ -2555,9 +2579,9 @@ module StagedRegExp with scrut21 = p.canBeEmpty_Concat_sp_13() new None() private fun matchImpl_StagedRegExp_sp_6(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then scrut19 = p.canBeEmpty_Concat_sp_14() @@ -2567,17 +2591,17 @@ module StagedRegExp with scrut20 = p.startsWith_Concat_sp_14(c18) if scrut20 is true then - tmp51 = p.derive_Concat_sp_14(c18) - tmp52 = s.slice(1) - tmp53 = "" + c18 - matchImpl_StagedRegExp_sp_7(tmp51, tmp52, tmp53) + tmp56 = p.derive_Concat_sp_14(c18) + tmp57 = s.slice(1) + tmp58 = "" + c18 + matchImpl_StagedRegExp_sp_7(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty_Concat_sp_14() new None() private fun matchImpl_StagedRegExp_sp_7(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then if p is @@ -2596,17 +2620,17 @@ module StagedRegExp with scrut20 = p.startsWith_Concat_sp_21(c18) if scrut20 is true then - tmp51 = p.derive_Concat_sp_21(c18) - tmp52 = s.slice(1) - tmp53 = acc + c18 - matchImpl_StagedRegExp_sp_8(tmp51, tmp52, tmp53) + tmp56 = p.derive_Concat_sp_21(c18) + tmp57 = s.slice(1) + tmp58 = acc + c18 + matchImpl_StagedRegExp_sp_8(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty_Concat_sp_21() new None() private fun matchImpl_StagedRegExp_sp_8(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp50, tmp51, tmp52, tmp53} - tmp50 = len(s) - scrut18 = ==(tmp50, 0) + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) if scrut18 is true then if p is @@ -2625,10 +2649,10 @@ module StagedRegExp with scrut20 = p.startsWith_Concat_sp_24(c18) if scrut20 is true then - tmp51 = p.derive_Concat_sp_24(c18) - tmp52 = s.slice(1) - tmp53 = acc + c18 - matchImpl(tmp51, tmp52, tmp53) + tmp56 = p.derive_Concat_sp_24(c18) + tmp57 = s.slice(1) + tmp58 = acc + c18 + matchImpl(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty_Concat_sp_24() new None() @@ -2636,9 +2660,9 @@ module StagedRegExp with private fun match_StagedRegExp_sp_1(p, s) = matchImpl_StagedRegExp_sp_3(p, s, "") private fun match_StagedRegExp_sp_2(p, s) = matchImpl_StagedRegExp_sp_6(p, s, "") private fun nTimes_StagedRegExp_sp_0(r, i) = - let {scrut17, tmp47, tmp48, obj_100, obj_101, tup_102, obj_103, obj_104, obj_105, obj_106, tup_107, obj_108, tup_109, obj_110, obj_111, obj_112, obj_113, obj_114, obj_115, tup_116, obj_117, obj_118, obj_119, tup_120, obj_121, obj_122, obj_123, obj_124, obj_125, obj_126, obj_127, obj_128, obj_129, tup_130, obj_131, obj_132, obj_133, obj_134, tup_135, obj_136, tup_137, obj_138, obj_139, obj_140, obj_141, obj_142, obj_143, tup_144, obj_145, obj_146, obj_147, tup_148, obj_149, obj_150, obj_151, obj_152, obj_153, obj_154, obj_155, obj_156} + let {scrut17, tmp52, tmp53, obj_100, obj_101, tup_102, obj_103, obj_104, obj_105, obj_106, tup_107, obj_108, tup_109, obj_110, obj_111, obj_112, obj_113, obj_114, obj_115, tup_116, obj_117, obj_118, obj_119, tup_120, obj_121, obj_122, obj_123, obj_124, obj_125, obj_126, obj_127, obj_128, obj_129, tup_130, obj_131, obj_132, obj_133, obj_134, tup_135, obj_136, tup_137, obj_138, obj_139, obj_140, obj_141, obj_142, obj_143, tup_144, obj_145, obj_146, obj_147, tup_148, obj_149, obj_150, obj_151, obj_152, obj_153, obj_154, obj_155, obj_156} scrut17 = false - tmp47 = 2 + tmp52 = 2 obj_100 = new Exact("2") obj_101 = new Exact("5") tup_102 = ["0", "1", "2", "3", "4", "5"] @@ -2696,12 +2720,12 @@ module StagedRegExp with obj_154 = new Exact(".") obj_155 = new Concat(obj_153, obj_154) obj_156 = new Concat(obj_127, obj_155) - tmp48 = obj_156 - new Concat(r, tmp48) + tmp53 = obj_156 + new Concat(r, tmp53) private fun nTimes_StagedRegExp_sp_1(r, i) = - let {scrut17, tmp47, tmp48, obj_72, obj_73, tup_74, obj_75, obj_76, obj_77, obj_78, tup_79, obj_80, tup_81, obj_82, obj_83, obj_84, obj_85, obj_86, obj_87, tup_88, obj_89, obj_90, obj_91, tup_92, obj_93, obj_94, obj_95, obj_96, obj_97, obj_98, obj_99} + let {scrut17, tmp52, tmp53, obj_72, obj_73, tup_74, obj_75, obj_76, obj_77, obj_78, tup_79, obj_80, tup_81, obj_82, obj_83, obj_84, obj_85, obj_86, obj_87, tup_88, obj_89, obj_90, obj_91, tup_92, obj_93, obj_94, obj_95, obj_96, obj_97, obj_98, obj_99} scrut17 = false - tmp47 = 1 + tmp52 = 1 obj_72 = new Exact("2") obj_73 = new Exact("5") tup_74 = ["0", "1", "2", "3", "4", "5"] @@ -2730,41 +2754,41 @@ module StagedRegExp with obj_97 = new Union(obj_77, obj_96) obj_98 = new Exact(".") obj_99 = new Concat(obj_97, obj_98) - tmp48 = obj_99 - new Concat(r, tmp48) + tmp53 = obj_99 + new Concat(r, tmp53) private fun nTimes_StagedRegExp_sp_2(r, i) = - let {scrut17, tmp47, tmp48} + let {scrut17, tmp52, tmp53} scrut17 = true r private fun plus_StagedRegExp_sp_0(r) = - let {tmp49} - tmp49 = new Star(r) - new Concat(r, tmp49) + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) private fun plus_StagedRegExp_sp_1(r) = - let {tmp49} - tmp49 = new Star(r) - new Concat(r, tmp49) + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) private fun plus_StagedRegExp_sp_2(r) = - let {tmp49} - tmp49 = new Star(r) - new Concat(r, tmp49) + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) private fun plus_StagedRegExp_sp_3(r) = - let {tmp49} - tmp49 = new Star(r) - new Concat(r, tmp49) + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) private fun question_StagedRegExp_sp_0(r) = - let {tmp43} - tmp43 = new Empty() - new Union(r, tmp43) + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) private fun question_StagedRegExp_sp_1(r) = - let {tmp43} - tmp43 = new Empty() - new Union(r, tmp43) + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) private fun question_StagedRegExp_sp_2(r) = - let {tmp43} - tmp43 = new Empty() - new Union(r, tmp43) + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) private fun question_StagedRegExp_sp_3(r) = - let {tmp43} - tmp43 = new Empty() - new Union(r, tmp43) \ No newline at end of file + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls index 4989f67c50..67b8cbf637 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/StagedRegExpTest.mls @@ -45,47 +45,38 @@ match(Not(["x", "y", "z"]), "xyz") match(Not(["x", "y", "z"]), "w") //│ = Some("w") -:fixme this generation should be fixed in another branch match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "z") -//│ ═══[RUNTIME ERROR] TypeError: this.p1.normalize is not a function +//│ = Some("z") -:fixme this generation should be fixed in another branch match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "y") -//│ ═══[RUNTIME ERROR] TypeError: this.p1.normalize is not a function +//│ = Some("y") match(Union(Union(Exact("x"), Exact("y")), Exact("z")), "w") //│ = None -:fixme this generation should be fixed in another branch match(question(Exact("x")), "x") -//│ ═══[RUNTIME ERROR] TypeError: p.canBeEmpty is not a function +//│ = Some("x") match(question(Exact("x")), "y") //│ = Some("") -:fixme this generation should be fixed in another branch match(question(Exact("x")), "xx") -//│ ═══[RUNTIME ERROR] TypeError: p.startsWith is not a function +//│ = Some("x") -:fixme this generation should be fixed in another branch match(question(Any()), "y") -//│ ═══[RUNTIME ERROR] TypeError: p.canBeEmpty is not a function +//│ = Some("y") -:fixme this generation should be fixed in another branch match(Concat(Star(Exact("x")), Exact("y")), "x") -//│ ═══[RUNTIME ERROR] TypeError: p.canBeEmpty is not a function +//│ = None -:fixme this generation should be fixed in another branch match(Concat(Star(Exact("x")), Exact("y")), "y") -//│ ═══[RUNTIME ERROR] TypeError: p.canBeEmpty is not a function +//│ = Some("y") -:fixme this generation should be fixed in another branch match(Concat(Star(Exact("x")), Exact("y")), "xxxxxy") -//│ ═══[RUNTIME ERROR] TypeError: p.startsWith is not a function +//│ = Some("xxxxxy") -:fixme this generation should be fixed in another branch match(Concat(Star(Exact("x")), Exact("y")), "xyyyy") -//│ ═══[RUNTIME ERROR] TypeError: p.startsWith is not a function +//│ = Some("xy") match(plus(Exact("x")), "") @@ -118,7 +109,6 @@ match(nTimes(Exact("x"), 3), "xx") :silent let p = Concat(In(["T", "t"]), Concat(Star(words()), notWord())) -:fixme this generation should be fixed in another branch matchAll(p, "To be or not to be, that is the question.") -//│ ═══[RUNTIME ERROR] TypeError: p.startsWith is not a function +//│ = ["To ", "t ", "to ", "that ", "the ", "tion."] From f73109bfb02691324ff38fefa32d1dfd38f46889 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 3 Jun 2026 19:36:44 +0800 Subject: [PATCH 647/654] clean up tests --- .../test/mlscript/block-staging/Generate.mls | 28 ++++--------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls index 6936f8d6d7..ad279faaba 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Generate.mls @@ -95,23 +95,11 @@ StagedClass.f(baz) //│ = 3 -:expect 1 -if StagedClass.D() is - StagedClass.B then 1 - else 0 -//│ = 1 - -:expect 1 -if StagedClass.g() is - StagedClass.D then 1 - else 0 -//│ = 1 - -:expect 1 -if StagedClass.C().h() is - StagedClass.D then 1 - else 0 -//│ = 1 +assert StagedClass.D() is StagedClass.B + +assert StagedClass.g() is StagedClass.D + +assert StagedClass.C().h() is StagedClass.D :expect 3 StagedClass.xx().f(1, 2) @@ -122,11 +110,7 @@ StagedClass.X(1).f(0) //│ = Bar(0) -:expect 1 -if StagedClass.X(1).f(0) is - StagedClass.Bar then 1 - else 0 -//│ = 1 +assert StagedClass.X(1).f(0) is StagedClass.Bar :fixme we need to support redirection in classes From adfaba3fbfedefc4d545739d47c966c0ecfa98da Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Wed, 3 Jun 2026 21:20:45 +0800 Subject: [PATCH 648/654] remove useless applyScopedBlock --- .../codegen/ReflectionInstrumenter.scala | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index a4cf24f1e0..f4a71e6554 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -124,6 +124,10 @@ class DataClassTransformer(using State) extends BlockTransformer(SymbolSubst.Id) k(newDefn) +// replaces VarSymbols using map +class VarSymSubst(map: Map[VarSymbol, VarSymbol]) extends SymbolSubst: + override def mapVarSym(l: VarSymbol): VarSymbol = map.getOrElse(l, l) + // transform Block to Block IR so that it can be instrumented in mlscript class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(SymbolSubst.Id): import Helpers._ @@ -473,19 +477,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S def stageCtor(ctorFun: FunDefn): FunDefn = // refresh VarSymbols for ctor val paramSymMap = ctorFun.params.map(_.params.map(x => x.sym -> VarSymbol(x.sym.id))).flatten.toMap - val varSymSubst = new SymbolSubst(): - // refresh symbols after copying parameter list - override def mapVarSym(l: VarSymbol): VarSymbol = paramSymMap.getOrElse(l, l) - val paramRewrite = new BlockTransformer(varSymSubst) //: - // override def applyScopedBlock(b: Block) = b match - // case Scoped(s, bd) => - // val nb = applySubBlock(bd) - // val ns = s.map({ - // case sym: LocalVarSymbol => applySimpleSymbol(sym) - // case sym: BlockMemberSymbol => applyImportSymbol(sym) - // }) - // if (nb is bd) && (s is ns) then b else Scoped(ns, nb) - // case _ => applySubBlock(b) + // refresh symbols after copying parameter list + val paramRewrite = new BlockTransformer(VarSymSubst(paramSymMap)) stageMethod(paramRewrite.applyFunDefn(ctorFun), Context(true)) case class StagingCfg(ownerSym: DefinitionSymbol[? <: ClassLikeDef] & InnerSymbol, modSym: InnerSymbol, nestedPropagates: Ls[Path], codegenClasses: Ls[BlockMemberSymbol]): @@ -699,10 +692,8 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val symMap = entryFun.params.flatMap(_.params.map(_.sym)) .zip(companionFun.params.flatMap(_.params.map(_.sym))) .toMap - val transformer = new BlockTransformer(new SymbolSubst(): - override def mapVarSym(l: VarSymbol): VarSymbol = symMap.getOrElse(l, l) - ) - val combinedBody = Begin(companionFun.body, transformer.applyBlock(entryFun.body)) + val paramRewrite = new BlockTransformer(VarSymSubst(symMap)) + val combinedBody = Begin(companionFun.body, paramRewrite.applyBlock(entryFun.body)) companionFun.copy(body = combinedBody)(companionFun.configOverride, companionFun.annotations) case _ => raise(ErrorReport(msg"There shouldn't be more than one entry function generated in a module." -> N :: Nil)) From 03d2c2cfb069fc8001033b544f8e0dc19b901ec8 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 4 Jun 2026 14:59:14 +0800 Subject: [PATCH 649/654] Re-implement codegen at top level --- .../src/test/mlscript-compile/Block.mls | 158 +- .../mlscript-compile/SpecializeHelpers.mls | 14 +- .../staging/out/CombinedModule.mls | 34 +- .../staging/out/LinkingGeneratedClasses.mls | 7 +- .../staging/out/SimpleStagedExample.mls | 27 +- .../staging/out/StagedClass.mls | 11 +- .../staging/out/StagedRegExp.mls | 4995 +++++------ .../staging/out/Transform3D.mls | 7665 +++++++++-------- .../test/mlscript/block-staging/Hygiene.mls | 2 +- .../test/mlscript/block-staging/ShapeProp.mls | 182 +- .../mlscript/block-staging/SpecializeTest.mls | 2 +- 11 files changed, 6624 insertions(+), 6473 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Block.mls b/hkmc2/shared/src/test/mlscript-compile/Block.mls index 7d72c1c7d0..23d7d46294 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Block.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Block.mls @@ -162,6 +162,9 @@ class Printer(val owner: Opt[Symbol]) with ConcreteClassSymbol(_, value, _, _, _) then isStagedClass(value) else false + fun showGeneratedStagedClassCache(cache): Str = + cache.printDefinitions() + fun showSymbol(s: Symbol) = if s.redirect and owner is Some(owner) and owner is @@ -250,6 +253,61 @@ class Printer(val owner: Opt[Symbol]) with fun showParamList(ps: Array[ParamList]) = ps.map(showParams(_)).join("") + fun collectSymbolName(names: Set[String], sym: Symbol) = + if not sym is NoSymbol do names.add(showSymbol(sym)) + + fun collectParamNames(names: Set[String], ps: Array[ParamList]) = + let printer = this + ps.forEach(pl => pl.forEach(p => printer.collectSymbolName(names, p.sym))) + + fun collectDefnSymbolNames(names: Set[String], d: Defn) = + let printer = this + if d is + FunDefn(_, ps, body) then + printer.collectParamNames(names, ps) + printer.collectBlockSymbolNames(names, body) + ClsLikeDefn(sym, methods, _) then + printer.collectSymbolName(names, sym) + methods.forEach(m => printer.collectDefnSymbolNames(names, m)) + ValDefn(_, sym, _) then printer.collectSymbolName(names, sym) + + fun collectBlockSymbolNames(names: Set[String], b: Block) = + let printer = this + if b is + Assign(lhs, _, rest) then + printer.collectSymbolName(names, lhs) + printer.collectBlockSymbolNames(names, rest) + Define(d, rest) then + printer.collectDefnSymbolNames(names, d) + printer.collectBlockSymbolNames(names, rest) + Match(_, arms, dflt, rest) then + arms.forEach(a => printer.collectBlockSymbolNames(names, a.body)) + if dflt is Some(db) do printer.collectBlockSymbolNames(names, db) + printer.collectBlockSymbolNames(names, rest) + Scoped(symbols, rest) then + symbols.forEach(s => printer.collectSymbolName(names, s)) + printer.collectBlockSymbolNames(names, rest) + Return | End then () + + fun freshSelfSymbol(ps: Array[ParamList], body: Block) = + let names = new Set() + collectParamNames(names, ps) + collectBlockSymbolNames(names, body) + let + base = "self" + idx = 0 + name = base + while names.has(name) do + set + idx += 1 + name = base + idx + Symbol(name) + + fun prependParam(ps: Array[ParamList], p: Param) = + if ps is + [] then [[p]] + [first, ...rest] then [[p, ...first], ...rest] + fun showFunDefn(prefix: Str, sym: Symbol, ps: Array[ParamList], body: Block): Str = prefix + "fun " + showDefnSymbol(sym) + showParamList(ps) + " =" + (if body is Return | End then " " else "\n ") + indent(showBlock(body)) @@ -259,7 +317,7 @@ class Printer(val owner: Opt[Symbol]) with FunDefn(sym, ps, body) then showFunDefn("", sym, ps, body) ClsLikeDefn(sym, methods, _) and sym is ConcreteClassSymbol(_, v, _, _, _) and - isGeneratedStagedClass(sym) then getClassCache(v) + isGeneratedStagedClass(sym) then getClassCache(v).printDefinitions() else "class " + showDefnSymbol(sym) + showParamsOpt(sym.paramsOpt) + sym.auxParams.map(showParams(_)).join("") + indent((if methods is [] then "" else " with\n") + methods.map(showDefn(_)).join("\n")) @@ -270,9 +328,35 @@ class Printer(val owner: Opt[Symbol]) with fun showPrivateDefn(d: Defn): Str = if d is - FunDefn(sym, ps, body) then showFunDefn("private ", sym, ps, body) + FunDefn(sym, ps, body) then showFunDefn("", sym, ps, body) else showDefn(d) + fun showPrivateMethodDefn(d: Defn): Str = + if d is + FunDefn(sym, ps, body) then + let selfSym = freshSelfSymbol(ps, body) + let psWithSelf = prependParam(ps, Param(None, selfSym)) + // substitute `this` with `self` + class SelfPrinter(val selfSym: Symbol) extends Printer(owner) with + fun showPath(p: Path): Str = + if p is + Select(qual, name) and + qual is + // avoids needing to import the runtime module + ValueMemberRef(Symbol("runtime")) and name is ModuleSymbol("Unit", Runtime.Unit, _) then "()" + ValueThis(ConcreteClassSymbol) then this.showSymbol(selfSym) + "." + this.showSymbol(name) + ValueThis then this.showSymbol(name) + ValueMemberRef(sym) and owner is Some(owner) and sym === owner and owner is ConcreteClassSymbol then this.showSymbol(selfSym) + "." + this.showSymbol(name) + ValueMemberRef(sym) and owner is Some(owner) and sym === owner then this.showSymbol(name) + else showPath(qual) + "." + this.showSymbol(name) + DynSelect(qual, fld, false) then showPath(qual) + ".(" + showPath(fld) + ")" + DynSelect(qual, fld, true) then showPath(qual) + ".[" + showPath(fld) + "]" + ValueSimpleRef(l) | ValueMemberRef(l) then this.showSymbol(l) + ValueLit(lit) then this.showLiteral(lit) + ValueThis(ConcreteClassSymbol) then this.showSymbol(selfSym) + SelfPrinter(selfSym).showFunDefn("", sym, psWithSelf, body) + else showPrivateDefn(d) + fun showBlock(b) = if b is Assign(lhs, rhs, rest) then @@ -326,9 +410,45 @@ let configs = fun mkImport(source, name) = "import \"" + source + "\" as " + legacyName(name) +fun printPrivateMember(cache) = + let printer = Printer(Some(cache.owner)) + cache.cache.values().map(e => + if e.isPrivate then + if cache.owner is ConcreteClassSymbol then printer.showPrivateMethodDefn(e.defn) + else printer.showPrivateDefn(e.defn) + else "" + ).toArray().filter(_ != "").sort().join("\n") + +fun collectClassInModule(block) = + if block is + Define(ClsLikeDefn(sym, _, _), rest) and sym is ConcreteClassSymbol(_, value, _, _, _) and isStagedClass(value) then + [printCachedPrivateCode(getClassCache(value)), collectClassInModule(rest)].filter(_ != "").join("\n") + Define(_, rest) then collectClassInModule(rest) + else "" + +fun checkCtor(cache) = + if cache.owner is ModuleSymbol then + let runtimeClass = cache.owner.value + let ctor = runtimeClass."ctor$_instr"() + assert ctor is FunDefn + collectClassInModule(ctor.body) + else "" + +// collect and print private functions & methods in the given cache +fun printCachedPrivateCode(cache) = + [printPrivateMember(cache), checkCtor(cache)].filter(_ != "").join("\n") + +fun printPrivateCodeIn(name, cache, usedStagedClasses) = + let usedCaches = usedStagedClasses.map(getClassCache(_)) + let privateText = [...usedCaches.map(printCachedPrivateCode), printCachedPrivateCode(cache)].filter(_ != "").join("\n") + if privateText == "" then "" else "open " + name + "\n" + privateText + fun toCode(name, cache, usedStagedClasses) = - let prefix = usedStagedClasses.map(getClassCache(_).toString() + "\n") - prefix + indent(cache.toString()) + let usedCaches = usedStagedClasses.map(getClassCache(_)) + let prefix = usedCaches.map(_.printDefinitions() + "\n").join("") + let publicText = prefix + indent(cache.printDefinitions()) + let privateText = printPrivateCodeIn(name, cache, usedStagedClasses) + publicText + if privateText == "" then "" else "\n" + privateText fun codegen(name, cache, source, file, usedStagedClasses) = let fullpath = path.join of process.cwd(), file @@ -346,12 +466,34 @@ fun generateAll(name, file, ...modules) = if not fs.existsSync(fullpath) do fs.mkdirSync(path.dirname(fullpath), recursive: true) fs.writeFileSync(fullpath, "", "utf8") + fun splitCodeText(text) = + if text.split("\nopen ") is + [publicText] then [publicText, "", ""] + [publicText, ...privatePieces] then + let privateText = "open " + privatePieces.join("\nopen ") + let privateLines = privateText.split("\n") + [ + publicText, + privateLines.filter(_.startsWith("open ")).join("\n"), + privateLines.filter(l => not l.startsWith("open ")).join("\n"), + ] let code = fold((res, p) => if p is - [mod, name, source] then + [mod, modName, source] then mod.propagate() - [res.0 + mkImport(source, name) + "\n", res.1 + mod.toCode() + "\n"] - )(["", ""], ...modules) + let parts = splitCodeText(mod.toCode()) + [ + res.0 + mkImport(source, modName) + "\n", + res.1 + parts.0 + "\n", + res.2 + parts.1 + "\n", + res.3 + parts.2 + "\n", + ] + )(["", "", "", ""], ...modules) let originData = fs.readFileSync(fullpath, "utf8") - let newData = configs + code.0 + "\n" + "module " + name + " with" + indent("\n" + code.1) + let publicText = code.1.trim() + let openText = code.2.trim() + let privateText = code.3.trim() + let opens = ["open " + name, openText].filter(_ != "").join("\n") + let privateSuffix = if privateText == "" then "" else "\n" + opens + "\n" + privateText + let newData = configs + code.0 + "\n" + "module " + name + " with" + indent("\n" + publicText) + privateSuffix if newData != originData do fs.writeFileSync(fullpath, newData, "utf8") diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index 6914b0227a..f57f5e291b 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -116,8 +116,7 @@ class FunCache( idx += 1 name = prefix + idx reserveName(name) - fun toString() = - let p = printer // FIXME: figure out why we need this p + fun printDefinitions() = let decl = if owner is ConcreteClassSymbol then "class " ModuleSymbol then "module " @@ -125,6 +124,7 @@ class FunCache( ConcreteClassSymbol(_, _, Some, _, _) then owner.value.class else owner.value + let p = printer let paramText = if owner is ConcreteClassSymbol and owner.paramsOpt is Some(ps) then printer.showCtorParams(ps) + owner.auxParams.map(pl => p.showParams(pl)).join("") @@ -180,14 +180,16 @@ class FunCache( let params = new Set(ctor.params.flat().map(_.sym)) let ctorBody = removeExtraValDefn(params, ctor.body) let methodDefns = cache.values().map(e => - if e.isPrivate then printer.showPrivateDefn(e.defn) else printer.showDefn(e.defn) - ).toArray().sort().join("\n") + if not e.isPrivate then printer.showDefn(e.defn) else "" + ).toArray().filter(_ != "").sort().join("\n") decl + owner.name + paramText + if extendsClause == "" then "" else (" extends " + extendsClause) + if cache.length == 0 then "" else " with" + indent("\n" + printer.showBlock(ctorBody)) // TODO: we can skip printing ctor that are just End() + (if methodDefns == "" then "" else indent("\n" + methodDefns)) + fun toString() = + [printDefinitions(), printCachedPrivateCode(this)].filter(_ != "").join("\n") module FunCache with fun empty(owner) = FunCache(owner, new Map(), new Set()) @@ -432,7 +434,7 @@ fun dispatchMethodCall(ctx, xOpt, p, f, args) = let ret = f_gen(ss_i)(...argShapes) let retSym = ret.0 let retShape = ret.1 - let callRes = Call(Select(p, Symbol(retSym)), args) + let callRes = Call(ValueSimpleRef(Symbol(retSym)), [Arg(p), ...args]) isRet then [Return(callRes), retShape] else @@ -447,7 +449,7 @@ fun dispatchMethodCall(ctx, xOpt, p, f, args) = let retData = f_gen(ss_i)(...argShapes) let retSym = retData.0 let retShape = retData.1 - let callRes = Call(Select(p, Symbol(retSym)), args) + let callRes = Call(ValueSimpleRef(Symbol(retSym)), [Arg(p), ...args]) if isRet then [Arm(Cls(C_i, p), Return(callRes)), retShape] else diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index 1794fd89ea..a60020a6f5 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -7,7 +7,6 @@ module CombinedModule with class Bar(val x) with () fun bar() = x - private fun bar_Bar_sp_0() = 1 class Foo(val x) with () fun foo(b) = @@ -20,7 +19,6 @@ module CombinedModule with tmp1 = x.bar() tmp1 + 2 else x.bar() - private fun foo_Foo_sp_0(b) = 2 fun baz() = 2 fun bazbaz(x) = not x fun f(x, y) = x + y @@ -49,20 +47,8 @@ module CombinedModule with z = 0 y1 + 0 fun spaces() = ["\t", "\n", "\r"] - private fun f_SimpleStagedExample_sp_0(x, y) = 5 - private fun fib_SimpleStagedExample_sp_0(n) = 55 - private fun fib_SimpleStagedExample_sp_1(n) = 34 - private fun fib_SimpleStagedExample_sp_2(n) = 21 - private fun fib_SimpleStagedExample_sp_3(n) = 13 - private fun fib_SimpleStagedExample_sp_4(n) = 8 - private fun fib_SimpleStagedExample_sp_5(n) = 5 - private fun fib_SimpleStagedExample_sp_6(n) = 3 - private fun fib_SimpleStagedExample_sp_7(n) = 2 - private fun fib_SimpleStagedExample_sp_8(n) = 1 - private fun fib_SimpleStagedExample_sp_9(n) = 1 class S with () - private fun f_S_sp_0(x) = 1 module LinkingGeneratedClasses with class D fun f() = @@ -82,10 +68,26 @@ module CombinedModule with if x is true then tmp = new S() - tmp.f_S_sp_0(1) + f_S_sp_0(tmp, 1) else new S() fun test3 = let {obj_2} obj_2 = new D() obj_2 - \ No newline at end of file +open CombinedModule +open SimpleStagedExample +open LinkingGeneratedClasses +fun f_SimpleStagedExample_sp_0(x, y) = 5 +fun fib_SimpleStagedExample_sp_0(n) = 55 +fun fib_SimpleStagedExample_sp_1(n) = 34 +fun fib_SimpleStagedExample_sp_2(n) = 21 +fun fib_SimpleStagedExample_sp_3(n) = 13 +fun fib_SimpleStagedExample_sp_4(n) = 8 +fun fib_SimpleStagedExample_sp_5(n) = 5 +fun fib_SimpleStagedExample_sp_6(n) = 3 +fun fib_SimpleStagedExample_sp_7(n) = 2 +fun fib_SimpleStagedExample_sp_8(n) = 1 +fun fib_SimpleStagedExample_sp_9(n) = 1 +fun bar_Bar_sp_0(self) = 1 +fun foo_Foo_sp_0(self, b) = 2 +fun f_S_sp_0(self, x) = 1 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index 686b3204cf..c318975d60 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -2,7 +2,6 @@ import "../LinkingGeneratedClasses.mls" as LinkingGeneratedClasses__Legacy class S with () - private fun f_S_sp_0(x) = 1 module LinkingGeneratedClasses with class D fun f() = @@ -22,9 +21,11 @@ module LinkingGeneratedClasses with if x is true then tmp = new S() - tmp.f_S_sp_0(1) + f_S_sp_0(tmp, 1) else new S() fun test3 = let {obj_2} obj_2 = new D() - obj_2 \ No newline at end of file + obj_2 +open LinkingGeneratedClasses +fun f_S_sp_0(self, x) = 1 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls index a3e45544ce..4bfce5b631 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/SimpleStagedExample.mls @@ -4,7 +4,6 @@ module SimpleStagedExample with class Bar(val x) with () fun bar() = x - private fun bar_Bar_sp_0() = 1 class Foo(val x) with () fun foo(b) = @@ -17,7 +16,6 @@ module SimpleStagedExample with tmp1 = x.bar() tmp1 + 2 else x.bar() - private fun foo_Foo_sp_0(b) = 2 fun baz() = 2 fun bazbaz(x) = not x fun f(x, y) = x + y @@ -46,14 +44,17 @@ module SimpleStagedExample with z = 0 y1 + 0 fun spaces() = ["\t", "\n", "\r"] - private fun f_SimpleStagedExample_sp_0(x, y) = 5 - private fun fib_SimpleStagedExample_sp_0(n) = 55 - private fun fib_SimpleStagedExample_sp_1(n) = 34 - private fun fib_SimpleStagedExample_sp_2(n) = 21 - private fun fib_SimpleStagedExample_sp_3(n) = 13 - private fun fib_SimpleStagedExample_sp_4(n) = 8 - private fun fib_SimpleStagedExample_sp_5(n) = 5 - private fun fib_SimpleStagedExample_sp_6(n) = 3 - private fun fib_SimpleStagedExample_sp_7(n) = 2 - private fun fib_SimpleStagedExample_sp_8(n) = 1 - private fun fib_SimpleStagedExample_sp_9(n) = 1 \ No newline at end of file +open SimpleStagedExample +fun f_SimpleStagedExample_sp_0(x, y) = 5 +fun fib_SimpleStagedExample_sp_0(n) = 55 +fun fib_SimpleStagedExample_sp_1(n) = 34 +fun fib_SimpleStagedExample_sp_2(n) = 21 +fun fib_SimpleStagedExample_sp_3(n) = 13 +fun fib_SimpleStagedExample_sp_4(n) = 8 +fun fib_SimpleStagedExample_sp_5(n) = 5 +fun fib_SimpleStagedExample_sp_6(n) = 3 +fun fib_SimpleStagedExample_sp_7(n) = 2 +fun fib_SimpleStagedExample_sp_8(n) = 1 +fun fib_SimpleStagedExample_sp_9(n) = 1 +fun bar_Bar_sp_0(self) = 1 +fun foo_Foo_sp_0(self, b) = 2 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index 58e20dd89d..23c2eaf498 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -37,10 +37,6 @@ module StagedClass with let {tmp2} tmp2 = x + y helpFoo(tmp2) - private fun f_X_sp_0(y) = - let {scrut} - scrut = true - new Bar(x) fun bar(b) = if b is true then Bar(0) @@ -74,4 +70,9 @@ module StagedClass with fun xx() = let {tmp3} tmp3 = new X(0) - tmp3.f_X_sp_0(1) \ No newline at end of file + f_X_sp_0(tmp3, 1) +open StagedClass +fun f_X_sp_0(self, y) = + let {scrut} + scrut = true + new Bar(self.x) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls index 0da7df6fd8..bf0495b2ea 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls @@ -39,17 +39,6 @@ module StagedRegExp with else false fun normalize() = this fun startsWith(c) = false - private fun canBeEmpty_Nothing_sp_0() = false - private fun derive_Nothing_sp_0(c) = - let {obj_244} - obj_244 = new Nothing() - obj_244 - private fun normalize_Nothing_sp_0() = - let {obj_18} - obj_18 = new Nothing() - obj_18 - private fun normalize_Nothing_sp_1() = this - private fun startsWith_Nothing_sp_0(c) = false class Empty() extends RegExp() with () fun canBeEmpty() = true @@ -63,16 +52,6 @@ module StagedRegExp with else false fun normalize() = this fun startsWith(c) = false - private fun canBeEmpty_Empty_sp_0() = true - private fun derive_Empty_sp_0(c) = - let {obj_243} - obj_243 = new Nothing() - obj_243 - private fun normalize_Empty_sp_0() = - let {obj_17} - obj_17 = new Empty() - obj_17 - private fun startsWith_Empty_sp_0(c) = false class Exact(val ch) extends RegExp() with () fun canBeEmpty() = false @@ -92,55 +71,6 @@ module StagedRegExp with else false fun normalize() = this fun startsWith(c) = ==(ch, c) - private fun canBeEmpty_Exact_sp_0() = false - private fun canBeEmpty_Exact_sp_1() = false - private fun canBeEmpty_Exact_sp_2() = false - private fun canBeEmpty_Exact_sp_3() = false - private fun canBeEmpty_Exact_sp_4() = false - private fun derive_Exact_sp_0(c) = - let {scrut2} - scrut2 = startsWith(c) - if scrut2 is - true then new Empty() - else new Nothing() - private fun derive_Exact_sp_1(c) = - let {scrut2} - scrut2 = startsWith(c) - if scrut2 is - true then new Empty() - else new Nothing() - private fun derive_Exact_sp_2(c) = - let {scrut2} - scrut2 = startsWith(c) - if scrut2 is - true then new Empty() - else new Nothing() - private fun derive_Exact_sp_3(c) = - let {scrut2} - scrut2 = startsWith(c) - if scrut2 is - true then new Empty() - else new Nothing() - private fun derive_Exact_sp_4(c) = - let {scrut2} - scrut2 = startsWith(c) - if scrut2 is - true then new Empty() - else new Nothing() - private fun normalize_Exact_sp_0() = this - private fun normalize_Exact_sp_1() = this - private fun normalize_Exact_sp_2() = this - private fun normalize_Exact_sp_3() = this - private fun normalize_Exact_sp_4() = this - private fun normalize_Exact_sp_5() = this - private fun normalize_Exact_sp_6() = this - private fun normalize_Exact_sp_7() = this - private fun normalize_Exact_sp_8() = this - private fun startsWith_Exact_sp_0(c) = ==("@", c) - private fun startsWith_Exact_sp_1(c) = ==(":", c) - private fun startsWith_Exact_sp_2(c) = ==("2", c) - private fun startsWith_Exact_sp_3(c) = ==("1", c) - private fun startsWith_Exact_sp_4(c) = ==(".", c) class Any() extends RegExp() with () fun canBeEmpty() = false @@ -176,19 +106,6 @@ module StagedRegExp with let {tmp5} tmp5 = has(chars, c) not tmp5 - private fun canBeEmpty_Not_sp_0() = false - private fun derive_Not_sp_0(c) = - let {scrut3} - scrut3 = startsWith(c) - if scrut3 is - true then new Empty() - else new Nothing() - private fun normalize_Not_sp_0() = this - private fun normalize_Not_sp_1() = this - private fun startsWith_Not_sp_0(c) = - let {tmp5} - tmp5 = has_StagedRegExp_sp_2(chars, c) - not tmp5 class Union(val p1, val p2) extends RegExp() with () fun canBeEmpty() = @@ -202,7 +119,7 @@ module StagedRegExp with tmp6 = p1.derive(c) tmp7 = p2.derive(c) tmp8 = new Union.class(tmp6, tmp7) - tmp8.normalize_Union_sp_0() + normalize_Union_sp_0(tmp8) fun eq(other) = let {n, tmp23, tmp24, tmp25} n = other.normalize() @@ -210,7 +127,7 @@ module StagedRegExp with Union then tmp23 = normalize() tmp24 = tmp23.flat() - tmp25 = n.flat_Union_sp_0() + tmp25 = flat_Union_sp_0(n) setEq(tmp24, tmp25) else false fun flat() = @@ -247,13 +164,13 @@ module StagedRegExp with p2__1 = p2.normalize() if p1__1 is Union then - tmp16 = p1__1.flat_Union_sp_0() + tmp16 = flat_Union_sp_0(p1__1) else tmp16 = [p1__1] arr11 = tmp16 if p2__1 is Union then - tmp17 = p2__1.flat_Union_sp_0() + tmp17 = flat_Union_sp_0(p2__1) else tmp17 = [p2__1] arr2 = tmp17 @@ -270,516 +187,73 @@ module StagedRegExp with if tmp26 is false then p2.startsWith(c) else true - private fun canBeEmpty_Union_sp_0() = false - private fun canBeEmpty_Union_sp_1() = false - private fun canBeEmpty_Union_sp_2() = true - private fun canBeEmpty_Union_sp_3() = true - private fun derive_Union_sp_0(c) = - let {tmp6, tmp7, tmp8} - tmp6 = p1.derive_Concat_sp_17(c) - tmp7 = p2.derive_Union_sp_1(c) - tmp8 = new Union.class(tmp6, tmp7) - tmp8.normalize_Union_sp_12() - private fun derive_Union_sp_1(c) = - let {tmp6, tmp7, tmp8} - tmp6 = p1.derive_Concat_sp_18(c) - tmp7 = p2.derive_Concat_sp_19(c) - tmp8 = new Union.class(tmp6, tmp7) - tmp8.normalize_Union_sp_11() - private fun derive_Union_sp_2(c) = - let {tmp6, tmp7, tmp8} - tmp6 = p1.derive_Exact_sp_3(c) - tmp7 = p2.derive_Empty_sp_0(c) - tmp8 = new Union.class(tmp6, tmp7) - tmp8.normalize_Union_sp_7() - private fun derive_Union_sp_3(c) = - let {tmp6, tmp7, tmp8} - tmp6 = p1.derive_In_sp_2(c) - tmp7 = p2.derive_Empty_sp_0(c) - tmp8 = new Union.class(tmp6, tmp7) - tmp8.normalize_Union_sp_7() - private fun flat_Union_sp_0() = - let {p1__, scrut4, p2__, scrut5, tmp10, tmp11} - scrut4 = p1 - if scrut4 is - Union then - tmp10 = p1.flat() - else - tmp10 = [p1] - p1__ = tmp10 - scrut5 = p2 - if scrut5 is - Union then - tmp11 = p2.flat() - else - tmp11 = [p2] - p2__ = tmp11 - concat(p1__, p2__) - private fun normalize_Union_sp_0() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize() - p2__1 = p2.normalize() - if p1__1 is - Union then - tmp16 = p1__1.flat_Union_sp_0() - else - tmp16 = [p1__1] - arr11 = tmp16 - if p2__1 is - Union then - tmp17 = p2__1.flat_Union_sp_0() - else - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len(arr2) - tmp20 = len(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_1() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_0() - p2__1 = p2.normalize() - if p1__1 is - Union then - tmp16 = p1__1.flat_Union_sp_0() - else - tmp16 = [p1__1] - arr11 = tmp16 - if p2__1 is - Union then - tmp17 = p2__1.flat_Union_sp_0() - else - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len(arr2) - tmp20 = len(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_10() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_In_sp_5() - p2__1 = p2.normalize_Empty_sp_0() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 - s2 = iter(tmp18, arr2, 1, 1) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_11() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - if p1 is - Concat then - p1__1 = p1.normalize_Concat_sp_33() - Nothing then - p1__1 = p1.normalize_Nothing_sp_0() - p2__1 = p2.normalize() - tmp16 = [p1__1] - arr11 = tmp16 - if p2__1 is - Union then - tmp17 = p2__1.flat_Union_sp_0() + class In(val chars) extends RegExp() with + () + fun canBeEmpty() = false + fun derive(c) = + let {scrut7} + scrut7 = startsWith(c) + if scrut7 is + true then new Empty() + else new Nothing() + fun eq(other) = + let {chars__1, arg_In_0_} + if other is + In then + arg_In_0_ = other.chars + chars__1 = arg_In_0_ + arrEq(chars, chars__1) + else false + fun normalize() = this + fun startsWith(c) = has(chars, c) + class Concat(val p1, val p2) extends RegExp() with + () + fun canBeEmpty() = + let {scrut9, scrut10} + scrut9 = p1.canBeEmpty() + if scrut9 is + true then + scrut10 = p2.canBeEmpty() + if scrut10 is + true then true + else false + else false + fun derive(c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = p1.derive(c) + scrut8 = p1.canBeEmpty() + if scrut8 is + true then + tmp27 = new Concat.class(p1__2, p2) + tmp28 = p2.derive(c) + tmp29 = new Union(tmp27, tmp28) + normalize_Union_sp_1(tmp29) else - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len(arr2) - tmp20 = len(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_12() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - if p1 is + tmp30 = new Concat.class(p1__2, p2) + normalize_Concat_sp_0(tmp30) + fun eq(other) = + let {p2__2, p1__4, scrut11, scrut12, arg_Concat_0_, arg_Concat_1_} + if other is Concat then - p1__1 = p1.normalize_Concat_sp_31() - Nothing then - p1__1 = p1.normalize_Nothing_sp_0() - p2__1 = p2.normalize() - tmp16 = [p1__1] - arr11 = tmp16 - if p2__1 is - Union then - tmp17 = p2__1.flat_Union_sp_0() - else - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len(arr2) - tmp20 = len(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_13() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_41() - p2__1 = p2.normalize_Union_sp_14() - tmp16 = [p1__1] - arr11 = tmp16 - if p2__1 is - Union then - tmp17 = p2__1.flat_Union_sp_0() - else - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len(arr2) - tmp20 = len(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_14() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_42() - p2__1 = p2.normalize_Concat_sp_43() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len_StagedRegExp_sp_6(arr2) - tmp20 = len_StagedRegExp_sp_6(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_15() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Exact_sp_8() - p2__1 = p2.normalize_Empty_sp_0() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 - s2 = iter(tmp18, arr2, 1, 1) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_16() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_37() - if p2 is - Empty then - p2__1 = p2.normalize_Empty_sp_0() - Nothing then - p2__1 = p2.normalize_Nothing_sp_0() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len_StagedRegExp_sp_5(arr2) - tmp20 = len_StagedRegExp_sp_5(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_17() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_47() - if p2 is - Nothing then - p2__1 = p2.normalize_Nothing_sp_0() - Exact then - p2__1 = p2.normalize_Exact_sp_1() - Nothing then - p2__1 = p2.normalize_Nothing_sp_1() - Concat then - p2__1 = p2.normalize_Concat_sp_37() - Concat then - p2__1 = p2.normalize_Concat_sp_50() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len_StagedRegExp_sp_7(arr2) - tmp20 = len_StagedRegExp_sp_7(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_2() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_3() - if p2 is - Concat then - p2__1 = p2.normalize_Concat_sp_5() - Nothing then - p2__1 = p2.normalize_Nothing_sp_0() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len_StagedRegExp_sp_0(arr2) - tmp20 = len_StagedRegExp_sp_0(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_3() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_20() - p2__1 = p2.normalize_Empty_sp_0() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 - s2 = iter(tmp18, arr2, 1, 1) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_4() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_21() - p2__1 = p2.normalize_Empty_sp_0() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 - s2 = iter(tmp18, arr2, 1, 1) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_5() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_10() - if p2 is - Concat then - p2__1 = p2.normalize_Concat_sp_12() - Nothing then - p2__1 = p2.normalize_Nothing_sp_0() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len_StagedRegExp_sp_2(arr2) - tmp20 = len_StagedRegExp_sp_2(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_6() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_23() - if p2 is - Nothing then - p2__1 = p2.normalize_Nothing_sp_0() - Concat then - p2__1 = p2.normalize_Concat_sp_29() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len_StagedRegExp_sp_3(arr2) - tmp20 = len_StagedRegExp_sp_3(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_7() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - if p1 is - Empty then - p1__1 = p1.normalize_Empty_sp_0() - Nothing then - p1__1 = p1.normalize_Nothing_sp_0() - p2__1 = p2.normalize_Nothing_sp_0() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 - s2 = iter(tmp18, arr2, 1, 1) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_8() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_34() - if p2 is - Empty then - p2__1 = p2.normalize_Empty_sp_0() - Nothing then - p2__1 = p2.normalize_Nothing_sp_0() - tmp16 = [p1__1] - arr11 = tmp16 - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len_StagedRegExp_sp_5(arr2) - tmp20 = len_StagedRegExp_sp_5(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun normalize_Union_sp_9() = - let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = p1.normalize_Concat_sp_35() - p2__1 = p2.normalize() - tmp16 = [p1__1] - arr11 = tmp16 - if p2__1 is - Union then - tmp17 = p2__1.flat_Union_sp_0() - else - tmp17 = [p2__1] - arr2 = tmp17 - tmp18 = new DedupSet(arr11) - tmp19 = len(arr2) - tmp20 = len(arr2) - s2 = iter(tmp18, arr2, tmp19, tmp20) - tmp21 = len(s2.arr) - tmp22 = len(s2.arr) - mkUnion(s2.arr, tmp21, tmp22) - private fun startsWith_Union_sp_0(c) = - let {tmp26} - tmp26 = p1.startsWith_Concat_sp_17(c) - if tmp26 is - false then p2.startsWith_Union_sp_1(c) - else true - private fun startsWith_Union_sp_1(c) = - let {tmp26} - tmp26 = p1.startsWith_Concat_sp_18(c) - if tmp26 is - false then p2.startsWith_Concat_sp_19(c) - else true - private fun startsWith_Union_sp_2(c) = - let {tmp26} - tmp26 = p1.startsWith_Exact_sp_3(c) - if tmp26 is - false then p2.startsWith_Empty_sp_0(c) - else true - private fun startsWith_Union_sp_3(c) = - let {tmp26} - tmp26 = p1.startsWith_In_sp_2(c) - if tmp26 is - false then p2.startsWith_Empty_sp_0(c) - else true - class In(val chars) extends RegExp() with - () - fun canBeEmpty() = false - fun derive(c) = - let {scrut7} - scrut7 = startsWith(c) - if scrut7 is - true then new Empty() - else new Nothing() - fun eq(other) = - let {chars__1, arg_In_0_} - if other is - In then - arg_In_0_ = other.chars - chars__1 = arg_In_0_ - arrEq(chars, chars__1) - else false - fun normalize() = this - fun startsWith(c) = has(chars, c) - private fun canBeEmpty_In_sp_0() = false - private fun canBeEmpty_In_sp_1() = false - private fun canBeEmpty_In_sp_2() = false - private fun derive_In_sp_0(c) = - let {scrut7} - scrut7 = startsWith(c) - if scrut7 is - true then new Empty() - else new Nothing() - private fun derive_In_sp_1(c) = - let {scrut7} - scrut7 = startsWith(c) - if scrut7 is - true then new Empty() - else new Nothing() - private fun derive_In_sp_2(c) = - let {scrut7} - scrut7 = startsWith(c) - if scrut7 is - true then new Empty() - else new Nothing() - private fun normalize_In_sp_0() = this - private fun normalize_In_sp_1() = this - private fun normalize_In_sp_2() = this - private fun normalize_In_sp_3() = this - private fun normalize_In_sp_4() = this - private fun normalize_In_sp_5() = this - private fun startsWith_In_sp_0(c) = has_StagedRegExp_sp_0(chars, c) - private fun startsWith_In_sp_1(c) = has_StagedRegExp_sp_1(chars, c) - private fun startsWith_In_sp_2(c) = has_StagedRegExp_sp_3(chars, c) - class Concat(val p1, val p2) extends RegExp() with - () - fun canBeEmpty() = - let {scrut9, scrut10} - scrut9 = p1.canBeEmpty() - if scrut9 is - true then - scrut10 = p2.canBeEmpty() - if scrut10 is - true then true - else false - else false - fun derive(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive(c) - scrut8 = p1.canBeEmpty() - if scrut8 is - true then - tmp27 = new Concat.class(p1__2, p2) - tmp28 = p2.derive(c) - tmp29 = new Union(tmp27, tmp28) - tmp29.normalize_Union_sp_1() - else - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_0() - fun eq(other) = - let {p2__2, p1__4, scrut11, scrut12, arg_Concat_0_, arg_Concat_1_} - if other is - Concat then - arg_Concat_0_ = other.p1 - arg_Concat_1_ = other.p2 - p2__2 = arg_Concat_1_ - p1__4 = arg_Concat_0_ - scrut11 = p1.eq(p1__4) - if scrut11 is - true then - scrut12 = p2.eq(p2__2) - if scrut12 is - true then true - else false - else false - else false - fun normalize() = - let {p1__3, tmp31} - p1__3 = p1.normalize() - if p1__3 is - Empty then p2.normalize() - Nothing then p1__3 + arg_Concat_0_ = other.p1 + arg_Concat_1_ = other.p2 + p2__2 = arg_Concat_1_ + p1__4 = arg_Concat_0_ + scrut11 = p1.eq(p1__4) + if scrut11 is + true then + scrut12 = p2.eq(p2__2) + if scrut12 is + true then true + else false + else false + else false + fun normalize() = + let {p1__3, tmp31} + p1__3 = p1.normalize() + if p1__3 is + Empty then p2.normalize() + Nothing then p1__3 else tmp31 = p2.normalize() new Concat.class(p1__3, tmp31) @@ -797,1432 +271,192 @@ module StagedRegExp with else false else false else true - private fun canBeEmpty_Concat_sp_0() = false - private fun canBeEmpty_Concat_sp_1() = false - private fun canBeEmpty_Concat_sp_10() = false - private fun canBeEmpty_Concat_sp_11() = false - private fun canBeEmpty_Concat_sp_12() = false - private fun canBeEmpty_Concat_sp_13() = false - private fun canBeEmpty_Concat_sp_14() = false - private fun canBeEmpty_Concat_sp_15() = false - private fun canBeEmpty_Concat_sp_16() = false - private fun canBeEmpty_Concat_sp_17() = false - private fun canBeEmpty_Concat_sp_18() = false - private fun canBeEmpty_Concat_sp_19() = false - private fun canBeEmpty_Concat_sp_2() = false - private fun canBeEmpty_Concat_sp_20() = false - private fun canBeEmpty_Concat_sp_21() = false - private fun canBeEmpty_Concat_sp_22() = false - private fun canBeEmpty_Concat_sp_23() = false - private fun canBeEmpty_Concat_sp_24() = false - private fun canBeEmpty_Concat_sp_25() = false - private fun canBeEmpty_Concat_sp_26() = false - private fun canBeEmpty_Concat_sp_3() = false - private fun canBeEmpty_Concat_sp_4() = false - private fun canBeEmpty_Concat_sp_5() = false - private fun canBeEmpty_Concat_sp_6() = false - private fun canBeEmpty_Concat_sp_7() = false - private fun canBeEmpty_Concat_sp_8() = false - private fun canBeEmpty_Concat_sp_9() = false - private fun derive_Concat_sp_0(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Concat_sp_1(c) - scrut8 = p1.canBeEmpty_Concat_sp_1() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_3() - private fun derive_Concat_sp_1(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_In_sp_0(c) - scrut8 = p1.canBeEmpty_In_sp_0() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_2() - private fun derive_Concat_sp_10(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Concat_sp_11(c) - scrut8 = p1.canBeEmpty_Concat_sp_11() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_27() - private fun derive_Concat_sp_11(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Concat_sp_12(c) - scrut8 = p1.canBeEmpty_Concat_sp_12() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_26() - private fun derive_Concat_sp_12(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Not_sp_0(c) - scrut8 = p1.canBeEmpty_Not_sp_0() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_25() - private fun derive_Concat_sp_13(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive(c) - scrut8 = p1.canBeEmpty() - if scrut8 is - true then - tmp27 = new Concat.class(p1__2, p2) - tmp28 = p2.derive_Concat_sp_10(c) - tmp29 = new Union(tmp27, tmp28) - tmp29.normalize_Union_sp_6() - else - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_23() - private fun derive_Concat_sp_14(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Concat_sp_15(c) - scrut8 = p1.canBeEmpty_Concat_sp_15() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_44() - private fun derive_Concat_sp_15(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Concat_sp_16(c) - scrut8 = p1.canBeEmpty_Concat_sp_16() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_38() - private fun derive_Concat_sp_16(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Union_sp_0(c) - scrut8 = p1.canBeEmpty_Union_sp_0() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_37() - private fun derive_Concat_sp_17(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Exact_sp_2(c) - scrut8 = p1.canBeEmpty_Exact_sp_2() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_30() - private fun derive_Concat_sp_18(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Exact_sp_2(c) - scrut8 = p1.canBeEmpty_Exact_sp_2() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_32() - private fun derive_Concat_sp_19(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Union_sp_2(c) - scrut8 = p1.canBeEmpty_Union_sp_2() - tmp27 = new Concat.class(p1__2, p2) - tmp28 = p2.derive_Concat_sp_20(c) - tmp29 = new Union(tmp27, tmp28) - tmp29.normalize_Union_sp_9() - private fun derive_Concat_sp_2(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Star_sp_0(c) - scrut8 = p1.canBeEmpty_Star_sp_0() - tmp27 = new Concat.class(p1__2, p2) - tmp28 = p2.derive_Concat_sp_3(c) - tmp29 = new Union(tmp27, tmp28) - tmp29.normalize_Union_sp_2() - private fun derive_Concat_sp_20(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Union_sp_3(c) - scrut8 = p1.canBeEmpty_Union_sp_3() - tmp27 = new Concat.class(p1__2, p2) - tmp28 = p2.derive_In_sp_2(c) - tmp29 = new Union(tmp27, tmp28) - tmp29.normalize_Union_sp_8() - private fun derive_Concat_sp_21(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Concat_sp_22(c) - scrut8 = p1.canBeEmpty_Concat_sp_22() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_49() - private fun derive_Concat_sp_22(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - if p1 is - Exact then - p1__2 = p1.derive_Exact_sp_4(c) - Concat then - p1__2 = p1.derive_Concat_sp_23(c) - if p1 is - Exact then - scrut8 = p1.canBeEmpty_Exact_sp_4() - Concat then - scrut8 = p1.canBeEmpty_Concat_sp_23() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_47() - private fun derive_Concat_sp_23(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive(c) - scrut8 = p1.canBeEmpty() - if scrut8 is - true then - tmp27 = new Concat.class(p1__2, p2) - tmp28 = p2.derive_Exact_sp_4(c) - tmp29 = new Union(tmp27, tmp28) - tmp29.normalize_Union_sp_16() - else - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_37() - private fun derive_Concat_sp_24(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - if p1 is - Concat then - p1__2 = p1.derive_Concat_sp_25(c) - Concat then - p1__2 = p1.derive_Concat_sp_26(c) - if p1 is - Concat then - scrut8 = p1.canBeEmpty_Concat_sp_25() - Concat then - scrut8 = p1.canBeEmpty_Concat_sp_26() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_0() - private fun derive_Concat_sp_25(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - if p1 is - Exact then - p1__2 = p1.derive_Exact_sp_4(c) - Concat then - p1__2 = p1.derive_Concat_sp_23(c) - if p1 is - Exact then - scrut8 = p1.canBeEmpty_Exact_sp_4() - Concat then - scrut8 = p1.canBeEmpty_Concat_sp_23() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_50() - private fun derive_Concat_sp_26(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive(c) - scrut8 = p1.canBeEmpty() - if scrut8 is - true then - tmp27 = new Concat.class(p1__2, p2) - if p2 is - Nothing then - tmp28 = p2.derive_Nothing_sp_0(c) - Nothing then - tmp28 = p2.derive_Nothing_sp_0(c) - Concat then - tmp28 = p2.derive_Concat_sp_25(c) - tmp29 = new Union(tmp27, tmp28) - tmp29.normalize_Union_sp_17() - else - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_47() - private fun derive_Concat_sp_3(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Exact_sp_0(c) - scrut8 = p1.canBeEmpty_Exact_sp_0() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_8() - private fun derive_Concat_sp_4(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Concat_sp_5(c) - scrut8 = p1.canBeEmpty_Concat_sp_5() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_13() - private fun derive_Concat_sp_5(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Concat_sp_6(c) - scrut8 = p1.canBeEmpty_Concat_sp_6() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_10() - private fun derive_Concat_sp_6(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_In_sp_1(c) - scrut8 = p1.canBeEmpty_In_sp_1() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_9() - private fun derive_Concat_sp_7(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Concat_sp_8(c) - scrut8 = p1.canBeEmpty_Concat_sp_8() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_23() - private fun derive_Concat_sp_8(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Star_sp_1(c) - scrut8 = p1.canBeEmpty_Star_sp_1() - tmp27 = new Concat.class(p1__2, p2) - tmp28 = p2.derive_Concat_sp_9(c) - tmp29 = new Union(tmp27, tmp28) - tmp29.normalize_Union_sp_5() - private fun derive_Concat_sp_9(c) = - let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = p1.derive_Exact_sp_1(c) - scrut8 = p1.canBeEmpty_Exact_sp_1() - tmp30 = new Concat.class(p1__2, p2) - tmp30.normalize_Concat_sp_22() - private fun normalize_Concat_sp_0() = - let {p1__3, tmp31} - p1__3 = p1.normalize() - if p1__3 is - Empty then p2.normalize() - Nothing then p1__3 - else - tmp31 = p2.normalize() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_1() = - let {p1__3, tmp31} - p1__3 = p1.normalize() - if p1__3 is - Empty then p2.normalize_Star_sp_0() - Nothing then p1__3 - else - tmp31 = p2.normalize_Star_sp_0() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_10() = - let {p1__3, tmp31} - if p1 is + class Star(val p) extends RegExp() with + () + fun canBeEmpty() = true + fun derive(c) = + let {tmp33, tmp34, tmp35} + tmp33 = p.derive(c) + tmp34 = new Star.class(p) + tmp35 = new Concat(tmp33, tmp34) + normalize_Concat_sp_1(tmp35) + fun eq(other) = + let {p__, arg_Star_0_} + if other is Star then - p1__3 = p1.normalize_Star_sp_2() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Nothing then p1__3 - else - tmp31 = p2.normalize_Concat_sp_11() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_11() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Exact_sp_2() - tmp31 = p2.normalize_Concat_sp_12() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_12() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Exact_sp_3() - tmp31 = p2.normalize_Exact_sp_3() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_13() = - let {p1__3, tmp31} - if p1 is - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - Concat then - p1__3 = p1.normalize_Concat_sp_14() - if p1__3 is - Nothing then p1__3 - else - tmp31 = p2.normalize_Concat_sp_15() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_14() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Star_sp_2() - tmp31 = p2.normalize_Concat_sp_11() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_15() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Concat_sp_16() - tmp31 = p2.normalize_Concat_sp_19() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_16() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Concat_sp_17() - tmp31 = p2.normalize_Concat_sp_18() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_17() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Not_sp_0() - tmp31 = p2.normalize_Star_sp_3() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_18() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Not_sp_1() - tmp31 = p2.normalize_Star_sp_4() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_19() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Union_sp_3() - if p1__3 is - Empty then p2.normalize_Union_sp_4() - Nothing then p1__3 - else - tmp31 = p2.normalize_Union_sp_4() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_2() = - let {p1__3, tmp31} - if p1 is - Empty then - p1__3 = p1.normalize_Empty_sp_0() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Empty then p2.normalize_Star_sp_1() - Nothing then p1__3 - private fun normalize_Concat_sp_20() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Exact_sp_4() - tmp31 = p2.normalize_Star_sp_5() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_21() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Exact_sp_5() - tmp31 = p2.normalize_Star_sp_5() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_22() = - let {p1__3, tmp31} - if p1 is - Empty then - p1__3 = p1.normalize_Empty_sp_0() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Empty then p2.normalize_Concat_sp_12() - Nothing then p1__3 - private fun normalize_Concat_sp_23() = - let {p1__3, tmp31} - p1__3 = p1.normalize() - if p1__3 is - Empty then p2.normalize_Concat_sp_24() - Nothing then p1__3 - else - tmp31 = p2.normalize_Concat_sp_24() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_24() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Concat_sp_16() - tmp31 = p2.normalize() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_25() = - let {p1__3, tmp31} - if p1 is - Empty then - p1__3 = p1.normalize_Empty_sp_0() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Empty then p2.normalize_Star_sp_3() - Nothing then p1__3 - private fun normalize_Concat_sp_26() = - let {p1__3, tmp31} - if p1 is - Star then - p1__3 = p1.normalize_Star_sp_3() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Nothing then p1__3 - else - tmp31 = p2.normalize_Concat_sp_18() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_27() = - let {p1__3, tmp31} - if p1 is - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - Concat then - p1__3 = p1.normalize_Concat_sp_28() - if p1__3 is - Nothing then p1__3 - else - tmp31 = p2.normalize() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_28() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Star_sp_3() - tmp31 = p2.normalize_Concat_sp_18() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_29() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Concat_sp_28() - tmp31 = p2.normalize() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_3() = - let {p1__3, tmp31} - if p1 is - Star then - p1__3 = p1.normalize_Star_sp_1() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Nothing then p1__3 - else - tmp31 = p2.normalize_Concat_sp_4() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_30() = - let {p1__3, tmp31} - if p1 is - Empty then - p1__3 = p1.normalize_Empty_sp_0() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Empty then p2.normalize_Concat_sp_31() - Nothing then p1__3 - private fun normalize_Concat_sp_31() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Exact_sp_6() - tmp31 = p2.normalize_In_sp_3() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_32() = - let {p1__3, tmp31} - if p1 is - Empty then - p1__3 = p1.normalize_Empty_sp_0() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Empty then p2.normalize_Concat_sp_33() - Nothing then p1__3 - private fun normalize_Concat_sp_33() = - let {p1__3, tmp31} - p1__3 = p1.normalize_In_sp_4() - tmp31 = p2.normalize_In_sp_5() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_34() = - let {p1__3, tmp31} - p1__3 = p1.normalize() - if p1__3 is - Empty then p2.normalize_In_sp_5() - Nothing then p1__3 - else - tmp31 = p2.normalize_In_sp_5() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_35() = - let {p1__3, tmp31} - p1__3 = p1.normalize() - if p1__3 is - Empty then p2.normalize_Concat_sp_36() - Nothing then p1__3 - else - tmp31 = p2.normalize_Concat_sp_36() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_36() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Union_sp_10() - if p1__3 is - Empty then p2.normalize_In_sp_5() - Nothing then p1__3 - else - tmp31 = p2.normalize_In_sp_5() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_37() = - let {p1__3, tmp31} - p1__3 = p1.normalize() - if p1__3 is - Empty then p2.normalize_Exact_sp_1() - Nothing then p1__3 - else - tmp31 = p2.normalize_Exact_sp_1() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_38() = - let {p1__3, tmp31} - if p1 is - Exact then - p1__3 = p1.normalize_Exact_sp_1() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - Concat then - p1__3 = p1.normalize_Concat_sp_37() - if p1__3 is - Nothing then p1__3 - else - tmp31 = p2.normalize_Concat_sp_39() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_39() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Concat_sp_40() - if p1__3 is - Nothing then p1__3 - else - tmp31 = p2.normalize_Concat_sp_40() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_4() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Exact_sp_0() - tmp31 = p2.normalize_Concat_sp_5() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_40() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Union_sp_13() - if p1__3 is - Empty then p2.normalize_Exact_sp_1() - Nothing then p1__3 - else - tmp31 = p2.normalize_Exact_sp_1() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_41() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Exact_sp_7() - tmp31 = p2.normalize_Concat_sp_31() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_42() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Exact_sp_7() - tmp31 = p2.normalize_Concat_sp_33() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_43() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Union_sp_15() - if p1__3 is - Empty then p2.normalize_Concat_sp_36() - Nothing then p1__3 - else - tmp31 = p2.normalize_Concat_sp_36() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_44() = - let {p1__3, tmp31} - if p1 is - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - Concat then - p1__3 = p1.normalize_Concat_sp_45() - if p1__3 is - Nothing then p1__3 - else - tmp31 = p2.normalize_Union_sp_13() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_45() = - let {p1__3, tmp31} - if p1 is - Exact then - p1__3 = p1.normalize_Exact_sp_1() - Concat then - p1__3 = p1.normalize_Concat_sp_37() - if p1__3 is - Nothing then p1__3 - else - if p2 is - Nothing then - tmp31 = p2.normalize_Nothing_sp_0() - Concat then - tmp31 = p2.normalize_Concat_sp_46() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_46() = - let {p1__3, tmp31} - if p1 is - Exact then - p1__3 = p1.normalize_Exact_sp_1() - Concat then - p1__3 = p1.normalize_Concat_sp_37() - if p1__3 is - Nothing then p1__3 - else - if p2 is - Exact then - tmp31 = p2.normalize_Exact_sp_1() - Nothing then - tmp31 = p2.normalize_Nothing_sp_0() - Concat then - tmp31 = p2.normalize_Concat_sp_37() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_47() = - let {p1__3, tmp31} - p1__3 = p1.normalize() - if p1__3 is - Empty then - if p2 is - Nothing then p2.normalize_Nothing_sp_0() - Nothing then p2.normalize_Nothing_sp_0() - Concat then p2.normalize_Concat_sp_48() - Nothing then p1__3 - else - if p2 is - Nothing then - tmp31 = p2.normalize_Nothing_sp_0() - Nothing then - tmp31 = p2.normalize_Nothing_sp_0() - Concat then - tmp31 = p2.normalize_Concat_sp_48() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_48() = - let {p1__3, tmp31} - if p1 is - Exact then - p1__3 = p1.normalize_Exact_sp_1() - Concat then - p1__3 = p1.normalize_Concat_sp_37() - if p1__3 is - Nothing then p1__3 - else - if p2 is - Exact then - tmp31 = p2.normalize_Exact_sp_1() - Nothing then - tmp31 = p2.normalize_Nothing_sp_0() - Nothing then - tmp31 = p2.normalize_Nothing_sp_0() - Concat then - tmp31 = p2.normalize_Concat_sp_37() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_49() = - let {p1__3, tmp31} - if p1 is - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - Concat then - p1__3 = p1.normalize_Concat_sp_48() - Concat then - p1__3 = p1.normalize_Concat_sp_47() - if p1__3 is - Nothing then p1__3 - else - tmp31 = p2.normalize() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_5() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Concat_sp_6() - tmp31 = p2.normalize_Concat_sp_7() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_50() = - let {p1__3, tmp31} - p1__3 = p1.normalize() - if p1__3 is - Empty then - if p2 is - Exact then p2.normalize_Exact_sp_1() - Nothing then p2.normalize_Nothing_sp_0() - Nothing then p2.normalize_Nothing_sp_0() - Concat then p2.normalize_Concat_sp_37() - Nothing then p1__3 - else - if p2 is - Exact then - tmp31 = p2.normalize_Exact_sp_1() - Nothing then - tmp31 = p2.normalize_Nothing_sp_0() - Nothing then - tmp31 = p2.normalize_Nothing_sp_0() - Concat then - tmp31 = p2.normalize_Concat_sp_37() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_6() = - let {p1__3, tmp31} - p1__3 = p1.normalize_In_sp_0() - tmp31 = p2.normalize_Star_sp_1() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_7() = - let {p1__3, tmp31} - p1__3 = p1.normalize_Exact_sp_1() - tmp31 = p2.normalize_Concat_sp_6() - new Concat.class(p1__3, tmp31) - private fun normalize_Concat_sp_8() = - let {p1__3, tmp31} - if p1 is - Empty then - p1__3 = p1.normalize_Empty_sp_0() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Empty then p2.normalize_Concat_sp_5() - Nothing then p1__3 - private fun normalize_Concat_sp_9() = - let {p1__3, tmp31} - if p1 is - Empty then - p1__3 = p1.normalize_Empty_sp_0() - Nothing then - p1__3 = p1.normalize_Nothing_sp_0() - if p1__3 is - Empty then p2.normalize_Star_sp_2() - Nothing then p1__3 - private fun startsWith_Concat_sp_0(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Concat_sp_1(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Concat_sp_1() - false - else true - private fun startsWith_Concat_sp_1(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_In_sp_0(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_In_sp_0() - false - else true - private fun startsWith_Concat_sp_10(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Concat_sp_11(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Concat_sp_11() - false - else true - private fun startsWith_Concat_sp_11(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Concat_sp_12(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Concat_sp_12() - false - else true - private fun startsWith_Concat_sp_12(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Not_sp_0(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Not_sp_0() - false - else true - private fun startsWith_Concat_sp_13(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty() - if scrut13 is - true then - scrut14 = p2.startsWith_Concat_sp_10(c) - if scrut14 is - true then true - else false - else false - else true - private fun startsWith_Concat_sp_14(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Concat_sp_15(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Concat_sp_15() - false - else true - private fun startsWith_Concat_sp_15(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Concat_sp_16(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Concat_sp_16() - false - else true - private fun startsWith_Concat_sp_16(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Union_sp_0(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Union_sp_0() - false - else true - private fun startsWith_Concat_sp_17(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Exact_sp_2(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Exact_sp_2() - false - else true - private fun startsWith_Concat_sp_18(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Exact_sp_2(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Exact_sp_2() - false - else true - private fun startsWith_Concat_sp_19(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Union_sp_2(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Union_sp_2() - scrut14 = p2.startsWith_Concat_sp_20(c) - if scrut14 is - true then true - else false - else true - private fun startsWith_Concat_sp_2(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Star_sp_0(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Star_sp_0() - scrut14 = p2.startsWith_Concat_sp_3(c) - if scrut14 is - true then true - else false - else true - private fun startsWith_Concat_sp_20(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Union_sp_3(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Union_sp_3() - scrut14 = p2.startsWith_In_sp_2(c) - if scrut14 is - true then true - else false - else true - private fun startsWith_Concat_sp_21(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Concat_sp_22(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Concat_sp_22() - false - else true - private fun startsWith_Concat_sp_22(c) = - let {scrut13, scrut14, tmp32} - if p1 is - Exact then - tmp32 = p1.startsWith_Exact_sp_4(c) - Concat then - tmp32 = p1.startsWith_Concat_sp_23(c) - if tmp32 is - false then - if p1 is - Exact then - scrut13 = p1.canBeEmpty_Exact_sp_4() - Concat then - scrut13 = p1.canBeEmpty_Concat_sp_23() - false - else true - private fun startsWith_Concat_sp_23(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty() - if scrut13 is - true then - scrut14 = p2.startsWith_Exact_sp_4(c) - if scrut14 is - true then true - else false - else false - else true - private fun startsWith_Concat_sp_24(c) = - let {scrut13, scrut14, tmp32} - if p1 is - Concat then - tmp32 = p1.startsWith_Concat_sp_25(c) - Concat then - tmp32 = p1.startsWith_Concat_sp_26(c) - if tmp32 is - false then - if p1 is - Concat then - scrut13 = p1.canBeEmpty_Concat_sp_25() - Concat then - scrut13 = p1.canBeEmpty_Concat_sp_26() - false - else true - private fun startsWith_Concat_sp_25(c) = - let {scrut13, scrut14, tmp32} - if p1 is - Exact then - tmp32 = p1.startsWith_Exact_sp_4(c) - Concat then - tmp32 = p1.startsWith_Concat_sp_23(c) - if tmp32 is - false then - if p1 is - Exact then - scrut13 = p1.canBeEmpty_Exact_sp_4() - Concat then - scrut13 = p1.canBeEmpty_Concat_sp_23() - false - else true - private fun startsWith_Concat_sp_26(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty() - if scrut13 is - true then - if p2 is - Nothing then - scrut14 = p2.startsWith_Nothing_sp_0(c) - Nothing then - scrut14 = p2.startsWith_Nothing_sp_0(c) - Concat then - scrut14 = p2.startsWith_Concat_sp_25(c) - if scrut14 is - true then true - else false - else false - else true - private fun startsWith_Concat_sp_3(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Exact_sp_0(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Exact_sp_0() - false - else true - private fun startsWith_Concat_sp_4(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Concat_sp_5(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Concat_sp_5() - false - else true - private fun startsWith_Concat_sp_5(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Concat_sp_6(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Concat_sp_6() - false - else true - private fun startsWith_Concat_sp_6(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_In_sp_1(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_In_sp_1() - false - else true - private fun startsWith_Concat_sp_7(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Concat_sp_8(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Concat_sp_8() - false - else true - private fun startsWith_Concat_sp_8(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Star_sp_1(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Star_sp_1() - scrut14 = p2.startsWith_Concat_sp_9(c) - if scrut14 is - true then true - else false - else true - private fun startsWith_Concat_sp_9(c) = - let {scrut13, scrut14, tmp32} - tmp32 = p1.startsWith_Exact_sp_1(c) - if tmp32 is - false then - scrut13 = p1.canBeEmpty_Exact_sp_1() - false - else true - class Star(val p) extends RegExp() with - () - fun canBeEmpty() = true - fun derive(c) = - let {tmp33, tmp34, tmp35} - tmp33 = p.derive(c) - tmp34 = new Star.class(p) - tmp35 = new Concat(tmp33, tmp34) - tmp35.normalize_Concat_sp_1() - fun eq(other) = - let {p__, arg_Star_0_} - if other is - Star then - arg_Star_0_ = other.p - p__ = arg_Star_0_ - p.eq(p__) - else false - fun normalize() = - let {tmp36} - tmp36 = p.normalize() - new Star.class(tmp36) - fun startsWith(c) = p.startsWith(c) - private fun canBeEmpty_Star_sp_0() = true - private fun canBeEmpty_Star_sp_1() = true - private fun derive_Star_sp_0(c) = - let {tmp33, tmp34, tmp35} - tmp33 = p.derive_In_sp_0(c) - tmp34 = new Star.class(p) - tmp35 = new Concat(tmp33, tmp34) - tmp35.normalize_Concat_sp_2() - private fun derive_Star_sp_1(c) = - let {tmp33, tmp34, tmp35} - tmp33 = p.derive_In_sp_1(c) - tmp34 = new Star.class(p) - tmp35 = new Concat(tmp33, tmp34) - tmp35.normalize_Concat_sp_9() - private fun normalize_Star_sp_0() = - let {tmp36} - tmp36 = p.normalize() - new Star.class(tmp36) - private fun normalize_Star_sp_1() = - let {tmp36} - tmp36 = p.normalize_In_sp_0() - new Star.class(tmp36) - private fun normalize_Star_sp_2() = - let {tmp36} - tmp36 = p.normalize_In_sp_1() - new Star.class(tmp36) - private fun normalize_Star_sp_3() = - let {tmp36} - tmp36 = p.normalize_Not_sp_0() - new Star.class(tmp36) - private fun normalize_Star_sp_4() = - let {tmp36} - tmp36 = p.normalize_Not_sp_1() - new Star.class(tmp36) - private fun normalize_Star_sp_5() = - let {tmp36} - tmp36 = p.normalize_In_sp_2() - new Star.class(tmp36) - private fun startsWith_Star_sp_0(c) = p.startsWith_In_sp_0(c) - private fun startsWith_Star_sp_1(c) = p.startsWith_In_sp_1(c) - fun arrEq(arr1, arr2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".eq(arr1, arr2) - fun concat(lhs, rhs) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".concat(lhs, rhs) - fun digits() = - let {tmp51, tup_8} - tup_8 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - tmp51 = tup_8 - new In(tmp51) - fun has(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) - fun len(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) - fun match(p, s) = matchImpl_StagedRegExp_sp_0(p, s, "") - fun matchAll(p, s) = - let {tmp66} - tmp66 = [] - matchAllImpl_StagedRegExp_sp_0(p, s, tmp66) - fun matchAllEmail(s) = - let {p7, email, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tup_9, tup_10, tup_11, obj_12, tup_13, obj_14, obj_15, obj_16} - tup_9 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp67 = tup_9 - tmp68 = ["-", "."] - tup_10 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] - tmp69 = tup_10 - tmp70 = new In(tmp69) - tup_11 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] - obj_12 = new In(tup_11) - tup_13 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] - obj_14 = new In(tup_13) - obj_15 = new Star(obj_14) - obj_16 = new Concat(obj_12, obj_15) - p7 = obj_16 - tmp71 = new Exact("@") - tmp72 = new Exact(".") - tmp73 = new Concat(tmp72, p7) - tmp74 = new Concat(p7, tmp73) - tmp75 = new Concat(tmp71, tmp74) - email = new Concat(p7, tmp75) - matchAll_StagedRegExp_sp_0(email, s) - fun matchAllIPv4(s) = - let {fo, fi, segment, ipv4, tmp102, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112, tmp113, tmp114, tmp115, tmp116, tmp117, tmp118, tmp119, tmp120, tmp121, tmp122, tup_59, obj_60, obj_61, obj_62, obj_63, tup_64, obj_65, tup_66, obj_67, obj_68, obj_69, tup_70, obj_71, obj_157, obj_158, tup_159, obj_160, obj_161, obj_162, obj_163, tup_164, obj_165, tup_166, obj_167, obj_168, obj_169, obj_170, obj_171, obj_172, tup_173, obj_174, obj_175, obj_176, tup_177, obj_178, obj_179, obj_180, obj_181, obj_182, obj_183, obj_184, obj_185, obj_186, tup_187, obj_188, obj_189, obj_190, obj_191, tup_192, obj_193, tup_194, obj_195, obj_196, obj_197, obj_198, obj_199, obj_200, tup_201, obj_202, obj_203, obj_204, tup_205, obj_206, obj_207, obj_208, obj_209, obj_210, obj_211, obj_212, obj_213, obj_214, tup_215, obj_216, obj_217, obj_218, obj_219, tup_220, obj_221, tup_222, obj_223, obj_224, obj_225, obj_226, obj_227, obj_228, tup_229, obj_230, obj_231, obj_232, tup_233, obj_234, obj_235, obj_236, obj_237, obj_238, obj_239, obj_240, obj_241, obj_242} - tmp102 = ["0", "1", "2", "3", "4"] - fo = new In(tmp102) - tmp103 = ["0", "1", "2", "3", "4", "5"] - fi = new In(tmp103) - tmp104 = new Exact("2") - tmp105 = new Exact("5") - tmp106 = new Concat(tmp105, fi) - tmp107 = new Concat(tmp104, tmp106) - tmp108 = new Exact("2") - tup_59 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_60 = new In(tup_59) - tmp109 = obj_60 - tmp110 = new Concat(fo, tmp109) - tmp111 = new Concat(tmp108, tmp110) - tmp112 = new Exact("1") - obj_61 = new Exact("1") - obj_62 = new Empty() - obj_63 = new Union(obj_61, obj_62) - tmp113 = obj_63 - tup_64 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_65 = new In(tup_64) - tmp114 = obj_65 - tup_66 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_67 = new In(tup_66) - obj_68 = new Empty() - obj_69 = new Union(obj_67, obj_68) - tmp115 = obj_69 - tup_70 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_71 = new In(tup_70) - tmp116 = obj_71 - tmp117 = new Concat(tmp115, tmp116) - tmp118 = new Concat(tmp113, tmp117) - tmp119 = new Union(tmp111, tmp118) - segment = new Union(tmp107, tmp119) - tmp120 = new Exact(".") - tmp121 = new Concat(segment, tmp120) - obj_157 = new Exact("2") - obj_158 = new Exact("5") - tup_159 = ["0", "1", "2", "3", "4", "5"] - obj_160 = new In(tup_159) - obj_161 = new Concat(obj_158, obj_160) - obj_162 = new Concat(obj_157, obj_161) - obj_163 = new Exact("2") - tup_164 = ["0", "1", "2", "3", "4"] - obj_165 = new In(tup_164) - tup_166 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_167 = new In(tup_166) - obj_168 = new Concat(obj_165, obj_167) - obj_169 = new Concat(obj_163, obj_168) - obj_170 = new Exact("1") - obj_171 = new Empty() - obj_172 = new Union(obj_170, obj_171) - tup_173 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_174 = new In(tup_173) - obj_175 = new Empty() - obj_176 = new Union(obj_174, obj_175) - tup_177 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_178 = new In(tup_177) - obj_179 = new Concat(obj_176, obj_178) - obj_180 = new Concat(obj_172, obj_179) - obj_181 = new Union(obj_169, obj_180) - obj_182 = new Union(obj_162, obj_181) - obj_183 = new Exact(".") - obj_184 = new Concat(obj_182, obj_183) - obj_185 = new Exact("2") - obj_186 = new Exact("5") - tup_187 = ["0", "1", "2", "3", "4", "5"] - obj_188 = new In(tup_187) - obj_189 = new Concat(obj_186, obj_188) - obj_190 = new Concat(obj_185, obj_189) - obj_191 = new Exact("2") - tup_192 = ["0", "1", "2", "3", "4"] - obj_193 = new In(tup_192) - tup_194 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_195 = new In(tup_194) - obj_196 = new Concat(obj_193, obj_195) - obj_197 = new Concat(obj_191, obj_196) - obj_198 = new Exact("1") - obj_199 = new Empty() - obj_200 = new Union(obj_198, obj_199) - tup_201 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_202 = new In(tup_201) - obj_203 = new Empty() - obj_204 = new Union(obj_202, obj_203) - tup_205 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_206 = new In(tup_205) - obj_207 = new Concat(obj_204, obj_206) - obj_208 = new Concat(obj_200, obj_207) - obj_209 = new Union(obj_197, obj_208) - obj_210 = new Union(obj_190, obj_209) - obj_211 = new Exact(".") - obj_212 = new Concat(obj_210, obj_211) - obj_213 = new Exact("2") - obj_214 = new Exact("5") - tup_215 = ["0", "1", "2", "3", "4", "5"] - obj_216 = new In(tup_215) - obj_217 = new Concat(obj_214, obj_216) - obj_218 = new Concat(obj_213, obj_217) - obj_219 = new Exact("2") - tup_220 = ["0", "1", "2", "3", "4"] - obj_221 = new In(tup_220) - tup_222 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_223 = new In(tup_222) - obj_224 = new Concat(obj_221, obj_223) - obj_225 = new Concat(obj_219, obj_224) - obj_226 = new Exact("1") - obj_227 = new Empty() - obj_228 = new Union(obj_226, obj_227) - tup_229 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_230 = new In(tup_229) - obj_231 = new Empty() - obj_232 = new Union(obj_230, obj_231) - tup_233 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_234 = new In(tup_233) - obj_235 = new Concat(obj_232, obj_234) - obj_236 = new Concat(obj_228, obj_235) - obj_237 = new Union(obj_225, obj_236) - obj_238 = new Union(obj_218, obj_237) - obj_239 = new Exact(".") - obj_240 = new Concat(obj_238, obj_239) - obj_241 = new Concat(obj_212, obj_240) - obj_242 = new Concat(obj_184, obj_241) - tmp122 = obj_242 - ipv4 = new Concat(tmp122, segment) - matchAll_StagedRegExp_sp_2(ipv4, s) - fun matchAllImpl(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} - tmp59 = len(s) - scrut22 = ==(tmp59, 0) - if scrut22 is - true then res - else - scrut23 = match(p, s) - if scrut23 is - Some then - arg_Some_0_ = scrut23.x - ss = arg_Some_0_ - tmp60 = len(ss) - scrut24 = >(tmp60, 0) - if scrut24 is - true then - tmp61 = len(ss) - tmp62 = s.slice(tmp61) - tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl(p, tmp62, tmp63) - else - tmp64 = s.slice(1) - matchAllImpl(p, tmp64, res) - else - tmp65 = s.slice(1) - matchAllImpl(p, tmp65, res) - fun matchAllURI(s) = - let {n1, n2, n3, w, d, p8, head, body, params, uri, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tmp97, tmp98, tmp99, tmp100, tmp101, tup_19, obj_20, tup_21, obj_22, tup_23, tup_24, tup_25, tup_26, tup_27, obj_28, tup_29, obj_30, obj_31, obj_32, tup_33, obj_34, tup_35, obj_36, obj_37, obj_38, tup_39, obj_40, tup_41, obj_42, obj_43, obj_44, obj_45, tup_46, obj_47, obj_48, obj_49, obj_50, obj_51, obj_52, tup_53, obj_54, obj_55, obj_56, obj_57, obj_58} - tmp76 = ["/", "?", "#", " ", "\n", "\t", "\r"] - n1 = new Not(tmp76) - tmp77 = ["?", "#", " ", "\n", "\t", "\r"] - n2 = new Not(tmp77) - tmp78 = ["#", " ", "\n", "\t", "\r"] - n3 = new Not(tmp78) - tup_19 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - obj_20 = new In(tup_19) - w = obj_20 - tup_21 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_22 = new In(tup_21) - d = obj_22 - tup_23 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp79 = tup_23 - tup_24 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - tmp80 = tup_24 - tmp81 = ["-", "_"] - tup_25 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] - tmp82 = tup_25 - tup_26 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] - p8 = tup_26 - tup_27 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - obj_28 = new In(tup_27) - tup_29 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - obj_30 = new In(tup_29) - obj_31 = new Star(obj_30) - obj_32 = new Concat(obj_28, obj_31) - tmp83 = obj_32 - tmp84 = new Exact(":") - tmp85 = new Exact("/") - tmp86 = new Exact("/") - tmp87 = new Concat(tmp85, tmp86) - tmp88 = new Concat(tmp84, tmp87) - head = new Concat(tmp83, tmp88) - tup_33 = ["/", "?", "#", " ", "\n", "\t", "\r"] - obj_34 = new Not(tup_33) - tup_35 = ["/", "?", "#", " ", "\n", "\t", "\r"] - obj_36 = new Not(tup_35) - obj_37 = new Star(obj_36) - obj_38 = new Concat(obj_34, obj_37) - tmp89 = obj_38 - tup_39 = ["?", "#", " ", "\n", "\t", "\r"] - obj_40 = new Not(tup_39) - tup_41 = ["?", "#", " ", "\n", "\t", "\r"] - obj_42 = new Not(tup_41) - obj_43 = new Star(obj_42) - obj_44 = new Concat(obj_40, obj_43) - tmp90 = obj_44 - body = new Concat(tmp89, tmp90) - tmp91 = new Exact("?") - tmp92 = new In(p8) - tmp93 = new Star(tmp92) - tmp94 = new Concat(tmp91, tmp93) - obj_45 = new Exact("?") - tup_46 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] - obj_47 = new In(tup_46) - obj_48 = new Star(obj_47) - obj_49 = new Concat(obj_45, obj_48) - obj_50 = new Empty() - obj_51 = new Union(obj_49, obj_50) - tmp95 = obj_51 - tmp96 = new Exact("#") - tmp97 = new In(p8) - tmp98 = new Star(tmp97) - tmp99 = new Concat(tmp96, tmp98) - obj_52 = new Exact("#") - tup_53 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] - obj_54 = new In(tup_53) - obj_55 = new Star(obj_54) - obj_56 = new Concat(obj_52, obj_55) - obj_57 = new Empty() - obj_58 = new Union(obj_56, obj_57) - tmp100 = obj_58 - params = new Concat(tmp95, tmp100) - tmp101 = new Concat(body, params) - uri = new Concat(head, tmp101) - matchAll_StagedRegExp_sp_1(uri, s) - fun matchImpl(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} - tmp55 = len(s) - scrut18 = ==(tmp55, 0) - if scrut18 is - true then - scrut19 = p.canBeEmpty() - if scrut19 is - true then new Some(acc) - else new None() - else - if p is - Nothing then new None() - else - c18 = s.0 - scrut20 = p.startsWith(c18) - if scrut20 is - true then - tmp56 = p.derive(c18) - tmp57 = s.slice(1) - tmp58 = acc + c18 - matchImpl(tmp56, tmp57, tmp58) - else - scrut21 = p.canBeEmpty() - if scrut21 is - true then new Some(acc) - else new None() - fun mkUnion(arr, i, s) = - let {scrut15, scrut16, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tmp46, tmp47} - tmp40 = s - i - tmp41 = s - 1 - scrut15 = ==(tmp40, tmp41) - if scrut15 is - true then - tmp42 = s - i - arr.(tmp42) - else - tmp43 = s - i - scrut16 = arr.(tmp43) - if scrut16 is - Nothing then - tmp44 = i - 1 - mkUnion(arr, tmp44, s) - else - tmp45 = s - i - tmp46 = i - 1 - tmp47 = mkUnion(arr, tmp46, s) - new Union(arr.(tmp45), tmp47) - fun nTimes(r, i) = - let {scrut17, tmp52, tmp53} - scrut17 = ==(i, 1) - if scrut17 is - true then r - else - tmp52 = i - 1 - tmp53 = nTimes(r, tmp52) - new Concat(r, tmp53) - fun notDigit() = - let {tmp39, tup_5} - tup_5 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - tmp39 = tup_5 - new Not(tmp39) - fun notSpace() = - let {tmp38, tup_4} - tup_4 = [" ", "\n", "\t", "\r"] - tmp38 = tup_4 - new Not(tmp38) - fun notWord() = - let {tmp37, tup_3} - tup_3 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp37 = tup_3 - new Not(tmp37) - fun plus(r) = - let {tmp54} - tmp54 = new Star(r) - new Concat(r, tmp54) - fun push(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(arr, ele) - fun question(r) = - let {tmp48} - tmp48 = new Empty() - new Union(r, tmp48) - fun setEq(s1, s2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".setEq(s1, s2) - fun spaces() = - let {tmp50, tup_7} - tup_7 = [" ", "\n", "\t", "\r"] - tmp50 = tup_7 - new In(tmp50) - fun words() = - let {tmp49, tup_6} - tup_6 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp49 = tup_6 - new In(tmp49) - private fun has_StagedRegExp_sp_0(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) - private fun has_StagedRegExp_sp_1(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) - private fun has_StagedRegExp_sp_2(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) - private fun has_StagedRegExp_sp_3(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) - private fun len_StagedRegExp_sp_0(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) - private fun len_StagedRegExp_sp_1(s) = 1 - private fun len_StagedRegExp_sp_2(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) - private fun len_StagedRegExp_sp_3(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) - private fun len_StagedRegExp_sp_4(s) = 1 - private fun len_StagedRegExp_sp_5(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) - private fun len_StagedRegExp_sp_6(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) - private fun len_StagedRegExp_sp_7(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) - private fun matchAllImpl_StagedRegExp_sp_0(p, s, res) = + arg_Star_0_ = other.p + p__ = arg_Star_0_ + p.eq(p__) + else false + fun normalize() = + let {tmp36} + tmp36 = p.normalize() + new Star.class(tmp36) + fun startsWith(c) = p.startsWith(c) + fun arrEq(arr1, arr2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".eq(arr1, arr2) + fun concat(lhs, rhs) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".concat(lhs, rhs) + fun digits() = + let {tmp51, tup_8} + tup_8 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + tmp51 = tup_8 + new In(tmp51) + fun has(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) + fun len(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) + fun match(p, s) = matchImpl_StagedRegExp_sp_0(p, s, "") + fun matchAll(p, s) = + let {tmp66} + tmp66 = [] + matchAllImpl_StagedRegExp_sp_0(p, s, tmp66) + fun matchAllEmail(s) = + let {p7, email, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tup_9, tup_10, tup_11, obj_12, tup_13, obj_14, obj_15, obj_16} + tup_9 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp67 = tup_9 + tmp68 = ["-", "."] + tup_10 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] + tmp69 = tup_10 + tmp70 = new In(tmp69) + tup_11 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] + obj_12 = new In(tup_11) + tup_13 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] + obj_14 = new In(tup_13) + obj_15 = new Star(obj_14) + obj_16 = new Concat(obj_12, obj_15) + p7 = obj_16 + tmp71 = new Exact("@") + tmp72 = new Exact(".") + tmp73 = new Concat(tmp72, p7) + tmp74 = new Concat(p7, tmp73) + tmp75 = new Concat(tmp71, tmp74) + email = new Concat(p7, tmp75) + matchAll_StagedRegExp_sp_0(email, s) + fun matchAllIPv4(s) = + let {fo, fi, segment, ipv4, tmp102, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112, tmp113, tmp114, tmp115, tmp116, tmp117, tmp118, tmp119, tmp120, tmp121, tmp122, tup_59, obj_60, obj_61, obj_62, obj_63, tup_64, obj_65, tup_66, obj_67, obj_68, obj_69, tup_70, obj_71, obj_157, obj_158, tup_159, obj_160, obj_161, obj_162, obj_163, tup_164, obj_165, tup_166, obj_167, obj_168, obj_169, obj_170, obj_171, obj_172, tup_173, obj_174, obj_175, obj_176, tup_177, obj_178, obj_179, obj_180, obj_181, obj_182, obj_183, obj_184, obj_185, obj_186, tup_187, obj_188, obj_189, obj_190, obj_191, tup_192, obj_193, tup_194, obj_195, obj_196, obj_197, obj_198, obj_199, obj_200, tup_201, obj_202, obj_203, obj_204, tup_205, obj_206, obj_207, obj_208, obj_209, obj_210, obj_211, obj_212, obj_213, obj_214, tup_215, obj_216, obj_217, obj_218, obj_219, tup_220, obj_221, tup_222, obj_223, obj_224, obj_225, obj_226, obj_227, obj_228, tup_229, obj_230, obj_231, obj_232, tup_233, obj_234, obj_235, obj_236, obj_237, obj_238, obj_239, obj_240, obj_241, obj_242} + tmp102 = ["0", "1", "2", "3", "4"] + fo = new In(tmp102) + tmp103 = ["0", "1", "2", "3", "4", "5"] + fi = new In(tmp103) + tmp104 = new Exact("2") + tmp105 = new Exact("5") + tmp106 = new Concat(tmp105, fi) + tmp107 = new Concat(tmp104, tmp106) + tmp108 = new Exact("2") + tup_59 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_60 = new In(tup_59) + tmp109 = obj_60 + tmp110 = new Concat(fo, tmp109) + tmp111 = new Concat(tmp108, tmp110) + tmp112 = new Exact("1") + obj_61 = new Exact("1") + obj_62 = new Empty() + obj_63 = new Union(obj_61, obj_62) + tmp113 = obj_63 + tup_64 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_65 = new In(tup_64) + tmp114 = obj_65 + tup_66 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_67 = new In(tup_66) + obj_68 = new Empty() + obj_69 = new Union(obj_67, obj_68) + tmp115 = obj_69 + tup_70 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_71 = new In(tup_70) + tmp116 = obj_71 + tmp117 = new Concat(tmp115, tmp116) + tmp118 = new Concat(tmp113, tmp117) + tmp119 = new Union(tmp111, tmp118) + segment = new Union(tmp107, tmp119) + tmp120 = new Exact(".") + tmp121 = new Concat(segment, tmp120) + obj_157 = new Exact("2") + obj_158 = new Exact("5") + tup_159 = ["0", "1", "2", "3", "4", "5"] + obj_160 = new In(tup_159) + obj_161 = new Concat(obj_158, obj_160) + obj_162 = new Concat(obj_157, obj_161) + obj_163 = new Exact("2") + tup_164 = ["0", "1", "2", "3", "4"] + obj_165 = new In(tup_164) + tup_166 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_167 = new In(tup_166) + obj_168 = new Concat(obj_165, obj_167) + obj_169 = new Concat(obj_163, obj_168) + obj_170 = new Exact("1") + obj_171 = new Empty() + obj_172 = new Union(obj_170, obj_171) + tup_173 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_174 = new In(tup_173) + obj_175 = new Empty() + obj_176 = new Union(obj_174, obj_175) + tup_177 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_178 = new In(tup_177) + obj_179 = new Concat(obj_176, obj_178) + obj_180 = new Concat(obj_172, obj_179) + obj_181 = new Union(obj_169, obj_180) + obj_182 = new Union(obj_162, obj_181) + obj_183 = new Exact(".") + obj_184 = new Concat(obj_182, obj_183) + obj_185 = new Exact("2") + obj_186 = new Exact("5") + tup_187 = ["0", "1", "2", "3", "4", "5"] + obj_188 = new In(tup_187) + obj_189 = new Concat(obj_186, obj_188) + obj_190 = new Concat(obj_185, obj_189) + obj_191 = new Exact("2") + tup_192 = ["0", "1", "2", "3", "4"] + obj_193 = new In(tup_192) + tup_194 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_195 = new In(tup_194) + obj_196 = new Concat(obj_193, obj_195) + obj_197 = new Concat(obj_191, obj_196) + obj_198 = new Exact("1") + obj_199 = new Empty() + obj_200 = new Union(obj_198, obj_199) + tup_201 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_202 = new In(tup_201) + obj_203 = new Empty() + obj_204 = new Union(obj_202, obj_203) + tup_205 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_206 = new In(tup_205) + obj_207 = new Concat(obj_204, obj_206) + obj_208 = new Concat(obj_200, obj_207) + obj_209 = new Union(obj_197, obj_208) + obj_210 = new Union(obj_190, obj_209) + obj_211 = new Exact(".") + obj_212 = new Concat(obj_210, obj_211) + obj_213 = new Exact("2") + obj_214 = new Exact("5") + tup_215 = ["0", "1", "2", "3", "4", "5"] + obj_216 = new In(tup_215) + obj_217 = new Concat(obj_214, obj_216) + obj_218 = new Concat(obj_213, obj_217) + obj_219 = new Exact("2") + tup_220 = ["0", "1", "2", "3", "4"] + obj_221 = new In(tup_220) + tup_222 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_223 = new In(tup_222) + obj_224 = new Concat(obj_221, obj_223) + obj_225 = new Concat(obj_219, obj_224) + obj_226 = new Exact("1") + obj_227 = new Empty() + obj_228 = new Union(obj_226, obj_227) + tup_229 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_230 = new In(tup_229) + obj_231 = new Empty() + obj_232 = new Union(obj_230, obj_231) + tup_233 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_234 = new In(tup_233) + obj_235 = new Concat(obj_232, obj_234) + obj_236 = new Concat(obj_228, obj_235) + obj_237 = new Union(obj_225, obj_236) + obj_238 = new Union(obj_218, obj_237) + obj_239 = new Exact(".") + obj_240 = new Concat(obj_238, obj_239) + obj_241 = new Concat(obj_212, obj_240) + obj_242 = new Concat(obj_184, obj_241) + tmp122 = obj_242 + ipv4 = new Concat(tmp122, segment) + matchAll_StagedRegExp_sp_2(ipv4, s) + fun matchAllImpl(p, s, res) = let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} tmp59 = len(s) scrut22 = ==(tmp59, 0) @@ -2244,179 +478,90 @@ module StagedRegExp with matchAllImpl(p, tmp62, tmp63) else tmp64 = s.slice(1) - matchAllImpl_StagedRegExp_sp_0(p, tmp64, res) - else - tmp65 = s.slice(1) - matchAllImpl_StagedRegExp_sp_0(p, tmp65, res) - private fun matchAllImpl_StagedRegExp_sp_1(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} - tmp59 = len(s) - scrut22 = ==(tmp59, 0) - if scrut22 is - true then res - else - scrut23 = match_StagedRegExp_sp_0(p, s) - if scrut23 is - Some then - arg_Some_0_ = scrut23.x - ss = arg_Some_0_ - tmp60 = len(ss) - scrut24 = >(tmp60, 0) - if scrut24 is - true then - tmp61 = len(ss) - tmp62 = s.slice(tmp61) - tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_2(p, tmp62, tmp63) - else - tmp64 = s.slice(1) - matchAllImpl_StagedRegExp_sp_1(p, tmp64, res) - else - tmp65 = s.slice(1) - matchAllImpl_StagedRegExp_sp_1(p, tmp65, res) - private fun matchAllImpl_StagedRegExp_sp_2(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} - tmp59 = len(s) - scrut22 = ==(tmp59, 0) - if scrut22 is - true then res - else - scrut23 = match_StagedRegExp_sp_0(p, s) - if scrut23 is - Some then - arg_Some_0_ = scrut23.x - ss = arg_Some_0_ - tmp60 = len(ss) - scrut24 = >(tmp60, 0) - if scrut24 is - true then - tmp61 = len(ss) - tmp62 = s.slice(tmp61) - tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_2(p, tmp62, tmp63) - else - tmp64 = s.slice(1) - matchAllImpl_StagedRegExp_sp_2(p, tmp64, res) - else - tmp65 = s.slice(1) - matchAllImpl_StagedRegExp_sp_2(p, tmp65, res) - private fun matchAllImpl_StagedRegExp_sp_3(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} - tmp59 = len(s) - scrut22 = ==(tmp59, 0) - if scrut22 is - true then res - else - scrut23 = match_StagedRegExp_sp_1(p, s) - if scrut23 is - Some then - arg_Some_0_ = scrut23.x - ss = arg_Some_0_ - tmp60 = len(ss) - scrut24 = >(tmp60, 0) - if scrut24 is - true then - tmp61 = len(ss) - tmp62 = s.slice(tmp61) - tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_4(p, tmp62, tmp63) - else - tmp64 = s.slice(1) - matchAllImpl_StagedRegExp_sp_3(p, tmp64, res) - else - tmp65 = s.slice(1) - matchAllImpl_StagedRegExp_sp_3(p, tmp65, res) - private fun matchAllImpl_StagedRegExp_sp_4(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} - tmp59 = len(s) - scrut22 = ==(tmp59, 0) - if scrut22 is - true then res - else - scrut23 = match_StagedRegExp_sp_1(p, s) - if scrut23 is - Some then - arg_Some_0_ = scrut23.x - ss = arg_Some_0_ - tmp60 = len(ss) - scrut24 = >(tmp60, 0) - if scrut24 is - true then - tmp61 = len(ss) - tmp62 = s.slice(tmp61) - tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_4(p, tmp62, tmp63) - else - tmp64 = s.slice(1) - matchAllImpl_StagedRegExp_sp_4(p, tmp64, res) - else - tmp65 = s.slice(1) - matchAllImpl_StagedRegExp_sp_4(p, tmp65, res) - private fun matchAllImpl_StagedRegExp_sp_5(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} - tmp59 = len(s) - scrut22 = ==(tmp59, 0) - if scrut22 is - true then res - else - scrut23 = match_StagedRegExp_sp_2(p, s) - if scrut23 is - Some then - arg_Some_0_ = scrut23.x - ss = arg_Some_0_ - tmp60 = len(ss) - scrut24 = >(tmp60, 0) - if scrut24 is - true then - tmp61 = len(ss) - tmp62 = s.slice(tmp61) - tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_6(p, tmp62, tmp63) - else - tmp64 = s.slice(1) - matchAllImpl_StagedRegExp_sp_5(p, tmp64, res) - else - tmp65 = s.slice(1) - matchAllImpl_StagedRegExp_sp_5(p, tmp65, res) - private fun matchAllImpl_StagedRegExp_sp_6(p, s, res) = - let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} - tmp59 = len(s) - scrut22 = ==(tmp59, 0) - if scrut22 is - true then res - else - scrut23 = match_StagedRegExp_sp_2(p, s) - if scrut23 is - Some then - arg_Some_0_ = scrut23.x - ss = arg_Some_0_ - tmp60 = len(ss) - scrut24 = >(tmp60, 0) - if scrut24 is - true then - tmp61 = len(ss) - tmp62 = s.slice(tmp61) - tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) - matchAllImpl_StagedRegExp_sp_6(p, tmp62, tmp63) - else - tmp64 = s.slice(1) - matchAllImpl_StagedRegExp_sp_6(p, tmp64, res) + matchAllImpl(p, tmp64, res) else tmp65 = s.slice(1) - matchAllImpl_StagedRegExp_sp_6(p, tmp65, res) - private fun matchAll_StagedRegExp_sp_0(p, s) = - let {tmp66} - tmp66 = [] - matchAllImpl_StagedRegExp_sp_1(p, s, tmp66) - private fun matchAll_StagedRegExp_sp_1(p, s) = - let {tmp66} - tmp66 = [] - matchAllImpl_StagedRegExp_sp_3(p, s, tmp66) - private fun matchAll_StagedRegExp_sp_2(p, s) = - let {tmp66} - tmp66 = [] - matchAllImpl_StagedRegExp_sp_5(p, s, tmp66) - private fun matchImpl_StagedRegExp_sp_0(p, s, acc) = + matchAllImpl(p, tmp65, res) + fun matchAllURI(s) = + let {n1, n2, n3, w, d, p8, head, body, params, uri, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tmp97, tmp98, tmp99, tmp100, tmp101, tup_19, obj_20, tup_21, obj_22, tup_23, tup_24, tup_25, tup_26, tup_27, obj_28, tup_29, obj_30, obj_31, obj_32, tup_33, obj_34, tup_35, obj_36, obj_37, obj_38, tup_39, obj_40, tup_41, obj_42, obj_43, obj_44, obj_45, tup_46, obj_47, obj_48, obj_49, obj_50, obj_51, obj_52, tup_53, obj_54, obj_55, obj_56, obj_57, obj_58} + tmp76 = ["/", "?", "#", " ", "\n", "\t", "\r"] + n1 = new Not(tmp76) + tmp77 = ["?", "#", " ", "\n", "\t", "\r"] + n2 = new Not(tmp77) + tmp78 = ["#", " ", "\n", "\t", "\r"] + n3 = new Not(tmp78) + tup_19 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + obj_20 = new In(tup_19) + w = obj_20 + tup_21 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_22 = new In(tup_21) + d = obj_22 + tup_23 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp79 = tup_23 + tup_24 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + tmp80 = tup_24 + tmp81 = ["-", "_"] + tup_25 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] + tmp82 = tup_25 + tup_26 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] + p8 = tup_26 + tup_27 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + obj_28 = new In(tup_27) + tup_29 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + obj_30 = new In(tup_29) + obj_31 = new Star(obj_30) + obj_32 = new Concat(obj_28, obj_31) + tmp83 = obj_32 + tmp84 = new Exact(":") + tmp85 = new Exact("/") + tmp86 = new Exact("/") + tmp87 = new Concat(tmp85, tmp86) + tmp88 = new Concat(tmp84, tmp87) + head = new Concat(tmp83, tmp88) + tup_33 = ["/", "?", "#", " ", "\n", "\t", "\r"] + obj_34 = new Not(tup_33) + tup_35 = ["/", "?", "#", " ", "\n", "\t", "\r"] + obj_36 = new Not(tup_35) + obj_37 = new Star(obj_36) + obj_38 = new Concat(obj_34, obj_37) + tmp89 = obj_38 + tup_39 = ["?", "#", " ", "\n", "\t", "\r"] + obj_40 = new Not(tup_39) + tup_41 = ["?", "#", " ", "\n", "\t", "\r"] + obj_42 = new Not(tup_41) + obj_43 = new Star(obj_42) + obj_44 = new Concat(obj_40, obj_43) + tmp90 = obj_44 + body = new Concat(tmp89, tmp90) + tmp91 = new Exact("?") + tmp92 = new In(p8) + tmp93 = new Star(tmp92) + tmp94 = new Concat(tmp91, tmp93) + obj_45 = new Exact("?") + tup_46 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] + obj_47 = new In(tup_46) + obj_48 = new Star(obj_47) + obj_49 = new Concat(obj_45, obj_48) + obj_50 = new Empty() + obj_51 = new Union(obj_49, obj_50) + tmp95 = obj_51 + tmp96 = new Exact("#") + tmp97 = new In(p8) + tmp98 = new Star(tmp97) + tmp99 = new Concat(tmp96, tmp98) + obj_52 = new Exact("#") + tup_53 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] + obj_54 = new In(tup_53) + obj_55 = new Star(obj_54) + obj_56 = new Concat(obj_52, obj_55) + obj_57 = new Empty() + obj_58 = new Union(obj_56, obj_57) + tmp100 = obj_58 + params = new Concat(tmp95, tmp100) + tmp101 = new Concat(body, params) + uri = new Concat(head, tmp101) + matchAll_StagedRegExp_sp_1(uri, s) + fun matchImpl(p, s, acc) = let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} tmp55 = len(s) scrut18 = ==(tmp55, 0) @@ -2436,359 +581,2215 @@ module StagedRegExp with true then tmp56 = p.derive(c18) tmp57 = s.slice(1) - tmp58 = "" + c18 + tmp58 = acc + c18 matchImpl(tmp56, tmp57, tmp58) else scrut21 = p.canBeEmpty() if scrut21 is true then new Some(acc) else new None() - private fun matchImpl_StagedRegExp_sp_1(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} - tmp55 = len(s) - scrut18 = ==(tmp55, 0) - if scrut18 is + fun mkUnion(arr, i, s) = + let {scrut15, scrut16, tmp40, tmp41, tmp42, tmp43, tmp44, tmp45, tmp46, tmp47} + tmp40 = s - i + tmp41 = s - 1 + scrut15 = ==(tmp40, tmp41) + if scrut15 is true then - scrut19 = p.canBeEmpty_Concat_sp_0() - new None() + tmp42 = s - i + arr.(tmp42) + else + tmp43 = s - i + scrut16 = arr.(tmp43) + if scrut16 is + Nothing then + tmp44 = i - 1 + mkUnion(arr, tmp44, s) + else + tmp45 = s - i + tmp46 = i - 1 + tmp47 = mkUnion(arr, tmp46, s) + new Union(arr.(tmp45), tmp47) + fun nTimes(r, i) = + let {scrut17, tmp52, tmp53} + scrut17 = ==(i, 1) + if scrut17 is + true then r + else + tmp52 = i - 1 + tmp53 = nTimes(r, tmp52) + new Concat(r, tmp53) + fun notDigit() = + let {tmp39, tup_5} + tup_5 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + tmp39 = tup_5 + new Not(tmp39) + fun notSpace() = + let {tmp38, tup_4} + tup_4 = [" ", "\n", "\t", "\r"] + tmp38 = tup_4 + new Not(tmp38) + fun notWord() = + let {tmp37, tup_3} + tup_3 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp37 = tup_3 + new Not(tmp37) + fun plus(r) = + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) + fun push(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(arr, ele) + fun question(r) = + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) + fun setEq(s1, s2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".setEq(s1, s2) + fun spaces() = + let {tmp50, tup_7} + tup_7 = [" ", "\n", "\t", "\r"] + tmp50 = tup_7 + new In(tmp50) + fun words() = + let {tmp49, tup_6} + tup_6 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp49 = tup_6 + new In(tmp49) +open StagedRegExp +fun has_StagedRegExp_sp_0(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) +fun has_StagedRegExp_sp_1(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) +fun has_StagedRegExp_sp_2(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) +fun has_StagedRegExp_sp_3(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) +fun len_StagedRegExp_sp_0(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) +fun len_StagedRegExp_sp_1(s) = 1 +fun len_StagedRegExp_sp_2(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) +fun len_StagedRegExp_sp_3(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) +fun len_StagedRegExp_sp_4(s) = 1 +fun len_StagedRegExp_sp_5(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) +fun len_StagedRegExp_sp_6(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) +fun len_StagedRegExp_sp_7(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) +fun matchAllImpl_StagedRegExp_sp_0(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) + if scrut22 is + true then res + else + scrut23 = match(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp60 = len(ss) + scrut24 = >(tmp60, 0) + if scrut24 is + true then + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl(p, tmp62, tmp63) + else + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_0(p, tmp64, res) + else + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_0(p, tmp65, res) +fun matchAllImpl_StagedRegExp_sp_1(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_0(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp60 = len(ss) + scrut24 = >(tmp60, 0) + if scrut24 is + true then + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_2(p, tmp62, tmp63) + else + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_1(p, tmp64, res) + else + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_1(p, tmp65, res) +fun matchAllImpl_StagedRegExp_sp_2(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_0(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp60 = len(ss) + scrut24 = >(tmp60, 0) + if scrut24 is + true then + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_2(p, tmp62, tmp63) + else + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_2(p, tmp64, res) + else + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_2(p, tmp65, res) +fun matchAllImpl_StagedRegExp_sp_3(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_1(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp60 = len(ss) + scrut24 = >(tmp60, 0) + if scrut24 is + true then + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_4(p, tmp62, tmp63) + else + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_3(p, tmp64, res) + else + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_3(p, tmp65, res) +fun matchAllImpl_StagedRegExp_sp_4(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_1(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp60 = len(ss) + scrut24 = >(tmp60, 0) + if scrut24 is + true then + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_4(p, tmp62, tmp63) + else + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_4(p, tmp64, res) + else + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_4(p, tmp65, res) +fun matchAllImpl_StagedRegExp_sp_5(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_2(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp60 = len(ss) + scrut24 = >(tmp60, 0) + if scrut24 is + true then + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_6(p, tmp62, tmp63) + else + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_5(p, tmp64, res) + else + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_5(p, tmp65, res) +fun matchAllImpl_StagedRegExp_sp_6(p, s, res) = + let {scrut22, scrut23, ss, scrut24, tmp59, arg_Some_0_, tmp60, tmp61, tmp62, tmp63, tmp64, tmp65} + tmp59 = len(s) + scrut22 = ==(tmp59, 0) + if scrut22 is + true then res + else + scrut23 = match_StagedRegExp_sp_2(p, s) + if scrut23 is + Some then + arg_Some_0_ = scrut23.x + ss = arg_Some_0_ + tmp60 = len(ss) + scrut24 = >(tmp60, 0) + if scrut24 is + true then + tmp61 = len(ss) + tmp62 = s.slice(tmp61) + tmp63 = StagedRegExp__Legacy."SeqHelper$StagedRegExp".push(res, ss) + matchAllImpl_StagedRegExp_sp_6(p, tmp62, tmp63) + else + tmp64 = s.slice(1) + matchAllImpl_StagedRegExp_sp_6(p, tmp64, res) + else + tmp65 = s.slice(1) + matchAllImpl_StagedRegExp_sp_6(p, tmp65, res) +fun matchAll_StagedRegExp_sp_0(p, s) = + let {tmp66} + tmp66 = [] + matchAllImpl_StagedRegExp_sp_1(p, s, tmp66) +fun matchAll_StagedRegExp_sp_1(p, s) = + let {tmp66} + tmp66 = [] + matchAllImpl_StagedRegExp_sp_3(p, s, tmp66) +fun matchAll_StagedRegExp_sp_2(p, s) = + let {tmp66} + tmp66 = [] + matchAllImpl_StagedRegExp_sp_5(p, s, tmp66) +fun matchImpl_StagedRegExp_sp_0(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) + if scrut18 is + true then + scrut19 = p.canBeEmpty() + if scrut19 is + true then new Some(acc) + else new None() + else + if p is + Nothing then new None() else c18 = s.0 - scrut20 = p.startsWith_Concat_sp_0(c18) + scrut20 = p.startsWith(c18) if scrut20 is true then - tmp56 = p.derive_Concat_sp_0(c18) + tmp56 = p.derive(c18) tmp57 = s.slice(1) tmp58 = "" + c18 - matchImpl_StagedRegExp_sp_2(tmp56, tmp57, tmp58) + matchImpl(tmp56, tmp57, tmp58) else - scrut21 = p.canBeEmpty_Concat_sp_0() - new None() - private fun matchImpl_StagedRegExp_sp_2(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} - tmp55 = len(s) - scrut18 = ==(tmp55, 0) - if scrut18 is + scrut21 = p.canBeEmpty() + if scrut21 is + true then new Some(acc) + else new None() +fun matchImpl_StagedRegExp_sp_1(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) + if scrut18 is + true then + scrut19 = canBeEmpty_Concat_sp_0(p) + new None() + else + c18 = s.0 + scrut20 = startsWith_Concat_sp_0(p, c18) + if scrut20 is true then - if p is - Nothing then - scrut19 = p.canBeEmpty_Nothing_sp_0() - Concat then - scrut19 = p.canBeEmpty_Concat_sp_2() - new None() + tmp56 = derive_Concat_sp_0(p, c18) + tmp57 = s.slice(1) + tmp58 = "" + c18 + matchImpl_StagedRegExp_sp_2(tmp56, tmp57, tmp58) else - if p is - Nothing then new None() - else - c18 = s.0 - scrut20 = p.startsWith_Concat_sp_2(c18) - if scrut20 is - true then - tmp56 = p.derive_Concat_sp_2(c18) - tmp57 = s.slice(1) - tmp58 = acc + c18 - matchImpl(tmp56, tmp57, tmp58) - else - scrut21 = p.canBeEmpty_Concat_sp_2() - new None() - private fun matchImpl_StagedRegExp_sp_3(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} - tmp55 = len(s) - scrut18 = ==(tmp55, 0) - if scrut18 is - true then - scrut19 = p.canBeEmpty_Concat_sp_4() + scrut21 = canBeEmpty_Concat_sp_0(p) new None() +fun matchImpl_StagedRegExp_sp_2(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) + if scrut18 is + true then + if p is + Nothing then + scrut19 = canBeEmpty_Nothing_sp_0(p) + Concat then + scrut19 = canBeEmpty_Concat_sp_2(p) + new None() + else + if p is + Nothing then new None() else c18 = s.0 - scrut20 = p.startsWith_Concat_sp_4(c18) + scrut20 = startsWith_Concat_sp_2(p, c18) if scrut20 is true then - tmp56 = p.derive_Concat_sp_4(c18) + tmp56 = derive_Concat_sp_2(p, c18) tmp57 = s.slice(1) - tmp58 = "" + c18 - matchImpl_StagedRegExp_sp_4(tmp56, tmp57, tmp58) + tmp58 = acc + c18 + matchImpl(tmp56, tmp57, tmp58) else - scrut21 = p.canBeEmpty_Concat_sp_4() + scrut21 = canBeEmpty_Concat_sp_2(p) new None() - private fun matchImpl_StagedRegExp_sp_4(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} - tmp55 = len(s) - scrut18 = ==(tmp55, 0) - if scrut18 is +fun matchImpl_StagedRegExp_sp_3(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) + if scrut18 is + true then + scrut19 = canBeEmpty_Concat_sp_4(p) + new None() + else + c18 = s.0 + scrut20 = startsWith_Concat_sp_4(p, c18) + if scrut20 is true then - if p is - Nothing then - scrut19 = p.canBeEmpty_Nothing_sp_0() - Concat then - scrut19 = p.canBeEmpty_Concat_sp_7() + tmp56 = derive_Concat_sp_4(p, c18) + tmp57 = s.slice(1) + tmp58 = "" + c18 + matchImpl_StagedRegExp_sp_4(tmp56, tmp57, tmp58) + else + scrut21 = canBeEmpty_Concat_sp_4(p) new None() +fun matchImpl_StagedRegExp_sp_4(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) + if scrut18 is + true then + if p is + Nothing then + scrut19 = canBeEmpty_Nothing_sp_0(p) + Concat then + scrut19 = canBeEmpty_Concat_sp_7(p) + new None() + else + if p is + Nothing then new None() else - if p is - Nothing then new None() + c18 = s.0 + scrut20 = startsWith_Concat_sp_7(p, c18) + if scrut20 is + true then + tmp56 = derive_Concat_sp_7(p, c18) + tmp57 = s.slice(1) + tmp58 = acc + c18 + matchImpl_StagedRegExp_sp_5(tmp56, tmp57, tmp58) else - c18 = s.0 - scrut20 = p.startsWith_Concat_sp_7(c18) - if scrut20 is - true then - tmp56 = p.derive_Concat_sp_7(c18) - tmp57 = s.slice(1) - tmp58 = acc + c18 - matchImpl_StagedRegExp_sp_5(tmp56, tmp57, tmp58) - else - scrut21 = p.canBeEmpty_Concat_sp_7() - new None() - private fun matchImpl_StagedRegExp_sp_5(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} - tmp55 = len(s) - scrut18 = ==(tmp55, 0) - if scrut18 is - true then + scrut21 = canBeEmpty_Concat_sp_7(p) + new None() +fun matchImpl_StagedRegExp_sp_5(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) + if scrut18 is + true then + if p is + Concat then + scrut19 = canBeEmpty_Concat_sp_10(p) + Nothing then + scrut19 = canBeEmpty_Nothing_sp_0(p) + Concat then + scrut19 = canBeEmpty_Concat_sp_13(p) + new None() + else + if p is + Nothing then new None() + else + c18 = s.0 if p is Concat then - scrut19 = p.canBeEmpty_Concat_sp_10() - Nothing then - scrut19 = p.canBeEmpty_Nothing_sp_0() + scrut20 = startsWith_Concat_sp_10(p, c18) Concat then - scrut19 = p.canBeEmpty_Concat_sp_13() - new None() - else - if p is - Nothing then new None() + scrut20 = startsWith_Concat_sp_13(p, c18) + if scrut20 is + true then + if p is + Concat then + tmp56 = derive_Concat_sp_10(p, c18) + Concat then + tmp56 = derive_Concat_sp_13(p, c18) + tmp57 = s.slice(1) + tmp58 = acc + c18 + matchImpl(tmp56, tmp57, tmp58) else - c18 = s.0 if p is Concat then - scrut20 = p.startsWith_Concat_sp_10(c18) + scrut21 = canBeEmpty_Concat_sp_10(p) Concat then - scrut20 = p.startsWith_Concat_sp_13(c18) - if scrut20 is - true then - if p is - Concat then - tmp56 = p.derive_Concat_sp_10(c18) - Concat then - tmp56 = p.derive_Concat_sp_13(c18) - tmp57 = s.slice(1) - tmp58 = acc + c18 - matchImpl(tmp56, tmp57, tmp58) - else - if p is - Concat then - scrut21 = p.canBeEmpty_Concat_sp_10() - Concat then - scrut21 = p.canBeEmpty_Concat_sp_13() - new None() - private fun matchImpl_StagedRegExp_sp_6(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} - tmp55 = len(s) - scrut18 = ==(tmp55, 0) - if scrut18 is + scrut21 = canBeEmpty_Concat_sp_13(p) + new None() +fun matchImpl_StagedRegExp_sp_6(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) + if scrut18 is + true then + scrut19 = canBeEmpty_Concat_sp_14(p) + new None() + else + c18 = s.0 + scrut20 = startsWith_Concat_sp_14(p, c18) + if scrut20 is true then - scrut19 = p.canBeEmpty_Concat_sp_14() + tmp56 = derive_Concat_sp_14(p, c18) + tmp57 = s.slice(1) + tmp58 = "" + c18 + matchImpl_StagedRegExp_sp_7(tmp56, tmp57, tmp58) + else + scrut21 = canBeEmpty_Concat_sp_14(p) new None() +fun matchImpl_StagedRegExp_sp_7(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) + if scrut18 is + true then + if p is + Nothing then + scrut19 = canBeEmpty_Nothing_sp_0(p) + Nothing then + scrut19 = canBeEmpty_Nothing_sp_0(p) + Concat then + scrut19 = canBeEmpty_Concat_sp_21(p) + new None() + else + if p is + Nothing then new None() else c18 = s.0 - scrut20 = p.startsWith_Concat_sp_14(c18) + scrut20 = startsWith_Concat_sp_21(p, c18) if scrut20 is true then - tmp56 = p.derive_Concat_sp_14(c18) + tmp56 = derive_Concat_sp_21(p, c18) tmp57 = s.slice(1) - tmp58 = "" + c18 - matchImpl_StagedRegExp_sp_7(tmp56, tmp57, tmp58) + tmp58 = acc + c18 + matchImpl_StagedRegExp_sp_8(tmp56, tmp57, tmp58) else - scrut21 = p.canBeEmpty_Concat_sp_14() + scrut21 = canBeEmpty_Concat_sp_21(p) new None() - private fun matchImpl_StagedRegExp_sp_7(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} - tmp55 = len(s) - scrut18 = ==(tmp55, 0) - if scrut18 is - true then - if p is - Nothing then - scrut19 = p.canBeEmpty_Nothing_sp_0() - Nothing then - scrut19 = p.canBeEmpty_Nothing_sp_0() - Concat then - scrut19 = p.canBeEmpty_Concat_sp_21() - new None() +fun matchImpl_StagedRegExp_sp_8(p, s, acc) = + let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} + tmp55 = len(s) + scrut18 = ==(tmp55, 0) + if scrut18 is + true then + if p is + Nothing then + scrut19 = canBeEmpty_Nothing_sp_0(p) + Nothing then + scrut19 = canBeEmpty_Nothing_sp_0(p) + Concat then + scrut19 = canBeEmpty_Concat_sp_24(p) + new None() + else + if p is + Nothing then new None() else - if p is - Nothing then new None() + c18 = s.0 + scrut20 = startsWith_Concat_sp_24(p, c18) + if scrut20 is + true then + tmp56 = derive_Concat_sp_24(p, c18) + tmp57 = s.slice(1) + tmp58 = acc + c18 + matchImpl(tmp56, tmp57, tmp58) else - c18 = s.0 - scrut20 = p.startsWith_Concat_sp_21(c18) - if scrut20 is - true then - tmp56 = p.derive_Concat_sp_21(c18) - tmp57 = s.slice(1) - tmp58 = acc + c18 - matchImpl_StagedRegExp_sp_8(tmp56, tmp57, tmp58) - else - scrut21 = p.canBeEmpty_Concat_sp_21() - new None() - private fun matchImpl_StagedRegExp_sp_8(p, s, acc) = - let {scrut18, scrut19, c18, scrut20, scrut21, tmp55, tmp56, tmp57, tmp58} - tmp55 = len(s) - scrut18 = ==(tmp55, 0) - if scrut18 is + scrut21 = canBeEmpty_Concat_sp_24(p) + new None() +fun match_StagedRegExp_sp_0(p, s) = matchImpl_StagedRegExp_sp_1(p, s, "") +fun match_StagedRegExp_sp_1(p, s) = matchImpl_StagedRegExp_sp_3(p, s, "") +fun match_StagedRegExp_sp_2(p, s) = matchImpl_StagedRegExp_sp_6(p, s, "") +fun nTimes_StagedRegExp_sp_0(r, i) = + let {scrut17, tmp52, tmp53, obj_100, obj_101, tup_102, obj_103, obj_104, obj_105, obj_106, tup_107, obj_108, tup_109, obj_110, obj_111, obj_112, obj_113, obj_114, obj_115, tup_116, obj_117, obj_118, obj_119, tup_120, obj_121, obj_122, obj_123, obj_124, obj_125, obj_126, obj_127, obj_128, obj_129, tup_130, obj_131, obj_132, obj_133, obj_134, tup_135, obj_136, tup_137, obj_138, obj_139, obj_140, obj_141, obj_142, obj_143, tup_144, obj_145, obj_146, obj_147, tup_148, obj_149, obj_150, obj_151, obj_152, obj_153, obj_154, obj_155, obj_156} + scrut17 = false + tmp52 = 2 + obj_100 = new Exact("2") + obj_101 = new Exact("5") + tup_102 = ["0", "1", "2", "3", "4", "5"] + obj_103 = new In(tup_102) + obj_104 = new Concat(obj_101, obj_103) + obj_105 = new Concat(obj_100, obj_104) + obj_106 = new Exact("2") + tup_107 = ["0", "1", "2", "3", "4"] + obj_108 = new In(tup_107) + tup_109 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_110 = new In(tup_109) + obj_111 = new Concat(obj_108, obj_110) + obj_112 = new Concat(obj_106, obj_111) + obj_113 = new Exact("1") + obj_114 = new Empty() + obj_115 = new Union(obj_113, obj_114) + tup_116 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_117 = new In(tup_116) + obj_118 = new Empty() + obj_119 = new Union(obj_117, obj_118) + tup_120 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_121 = new In(tup_120) + obj_122 = new Concat(obj_119, obj_121) + obj_123 = new Concat(obj_115, obj_122) + obj_124 = new Union(obj_112, obj_123) + obj_125 = new Union(obj_105, obj_124) + obj_126 = new Exact(".") + obj_127 = new Concat(obj_125, obj_126) + obj_128 = new Exact("2") + obj_129 = new Exact("5") + tup_130 = ["0", "1", "2", "3", "4", "5"] + obj_131 = new In(tup_130) + obj_132 = new Concat(obj_129, obj_131) + obj_133 = new Concat(obj_128, obj_132) + obj_134 = new Exact("2") + tup_135 = ["0", "1", "2", "3", "4"] + obj_136 = new In(tup_135) + tup_137 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_138 = new In(tup_137) + obj_139 = new Concat(obj_136, obj_138) + obj_140 = new Concat(obj_134, obj_139) + obj_141 = new Exact("1") + obj_142 = new Empty() + obj_143 = new Union(obj_141, obj_142) + tup_144 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_145 = new In(tup_144) + obj_146 = new Empty() + obj_147 = new Union(obj_145, obj_146) + tup_148 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_149 = new In(tup_148) + obj_150 = new Concat(obj_147, obj_149) + obj_151 = new Concat(obj_143, obj_150) + obj_152 = new Union(obj_140, obj_151) + obj_153 = new Union(obj_133, obj_152) + obj_154 = new Exact(".") + obj_155 = new Concat(obj_153, obj_154) + obj_156 = new Concat(obj_127, obj_155) + tmp53 = obj_156 + new Concat(r, tmp53) +fun nTimes_StagedRegExp_sp_1(r, i) = + let {scrut17, tmp52, tmp53, obj_72, obj_73, tup_74, obj_75, obj_76, obj_77, obj_78, tup_79, obj_80, tup_81, obj_82, obj_83, obj_84, obj_85, obj_86, obj_87, tup_88, obj_89, obj_90, obj_91, tup_92, obj_93, obj_94, obj_95, obj_96, obj_97, obj_98, obj_99} + scrut17 = false + tmp52 = 1 + obj_72 = new Exact("2") + obj_73 = new Exact("5") + tup_74 = ["0", "1", "2", "3", "4", "5"] + obj_75 = new In(tup_74) + obj_76 = new Concat(obj_73, obj_75) + obj_77 = new Concat(obj_72, obj_76) + obj_78 = new Exact("2") + tup_79 = ["0", "1", "2", "3", "4"] + obj_80 = new In(tup_79) + tup_81 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_82 = new In(tup_81) + obj_83 = new Concat(obj_80, obj_82) + obj_84 = new Concat(obj_78, obj_83) + obj_85 = new Exact("1") + obj_86 = new Empty() + obj_87 = new Union(obj_85, obj_86) + tup_88 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_89 = new In(tup_88) + obj_90 = new Empty() + obj_91 = new Union(obj_89, obj_90) + tup_92 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + obj_93 = new In(tup_92) + obj_94 = new Concat(obj_91, obj_93) + obj_95 = new Concat(obj_87, obj_94) + obj_96 = new Union(obj_84, obj_95) + obj_97 = new Union(obj_77, obj_96) + obj_98 = new Exact(".") + obj_99 = new Concat(obj_97, obj_98) + tmp53 = obj_99 + new Concat(r, tmp53) +fun nTimes_StagedRegExp_sp_2(r, i) = + let {scrut17, tmp52, tmp53} + scrut17 = true + r +fun plus_StagedRegExp_sp_0(r) = + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) +fun plus_StagedRegExp_sp_1(r) = + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) +fun plus_StagedRegExp_sp_2(r) = + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) +fun plus_StagedRegExp_sp_3(r) = + let {tmp54} + tmp54 = new Star(r) + new Concat(r, tmp54) +fun question_StagedRegExp_sp_0(r) = + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) +fun question_StagedRegExp_sp_1(r) = + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) +fun question_StagedRegExp_sp_2(r) = + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) +fun question_StagedRegExp_sp_3(r) = + let {tmp48} + tmp48 = new Empty() + new Union(r, tmp48) +fun canBeEmpty_Nothing_sp_0(self) = false +fun derive_Nothing_sp_0(self, c) = + let {obj_244} + obj_244 = new Nothing() + obj_244 +fun normalize_Nothing_sp_0(self) = + let {obj_18} + obj_18 = new Nothing() + obj_18 +fun normalize_Nothing_sp_1(self) = self +fun startsWith_Nothing_sp_0(self, c) = false +fun canBeEmpty_Empty_sp_0(self) = true +fun derive_Empty_sp_0(self, c) = + let {obj_243} + obj_243 = new Nothing() + obj_243 +fun normalize_Empty_sp_0(self) = + let {obj_17} + obj_17 = new Empty() + obj_17 +fun startsWith_Empty_sp_0(self, c) = false +fun canBeEmpty_Exact_sp_0(self) = false +fun canBeEmpty_Exact_sp_1(self) = false +fun canBeEmpty_Exact_sp_2(self) = false +fun canBeEmpty_Exact_sp_3(self) = false +fun canBeEmpty_Exact_sp_4(self) = false +fun derive_Exact_sp_0(self, c) = + let {scrut2} + scrut2 = self.startsWith(c) + if scrut2 is + true then new Empty() + else new Nothing() +fun derive_Exact_sp_1(self, c) = + let {scrut2} + scrut2 = self.startsWith(c) + if scrut2 is + true then new Empty() + else new Nothing() +fun derive_Exact_sp_2(self, c) = + let {scrut2} + scrut2 = self.startsWith(c) + if scrut2 is + true then new Empty() + else new Nothing() +fun derive_Exact_sp_3(self, c) = + let {scrut2} + scrut2 = self.startsWith(c) + if scrut2 is + true then new Empty() + else new Nothing() +fun derive_Exact_sp_4(self, c) = + let {scrut2} + scrut2 = self.startsWith(c) + if scrut2 is + true then new Empty() + else new Nothing() +fun normalize_Exact_sp_0(self) = self +fun normalize_Exact_sp_1(self) = self +fun normalize_Exact_sp_2(self) = self +fun normalize_Exact_sp_3(self) = self +fun normalize_Exact_sp_4(self) = self +fun normalize_Exact_sp_5(self) = self +fun normalize_Exact_sp_6(self) = self +fun normalize_Exact_sp_7(self) = self +fun normalize_Exact_sp_8(self) = self +fun startsWith_Exact_sp_0(self, c) = ==("@", c) +fun startsWith_Exact_sp_1(self, c) = ==(":", c) +fun startsWith_Exact_sp_2(self, c) = ==("2", c) +fun startsWith_Exact_sp_3(self, c) = ==("1", c) +fun startsWith_Exact_sp_4(self, c) = ==(".", c) +fun canBeEmpty_Not_sp_0(self) = false +fun derive_Not_sp_0(self, c) = + let {scrut3} + scrut3 = self.startsWith(c) + if scrut3 is + true then new Empty() + else new Nothing() +fun normalize_Not_sp_0(self) = self +fun normalize_Not_sp_1(self) = self +fun startsWith_Not_sp_0(self, c) = + let {tmp5} + tmp5 = has_StagedRegExp_sp_2(self.chars, c) + not tmp5 +fun canBeEmpty_Union_sp_0(self) = false +fun canBeEmpty_Union_sp_1(self) = false +fun canBeEmpty_Union_sp_2(self) = true +fun canBeEmpty_Union_sp_3(self) = true +fun derive_Union_sp_0(self, c) = + let {tmp6, tmp7, tmp8} + tmp6 = derive_Concat_sp_17(self.p1, c) + tmp7 = derive_Union_sp_1(self.p2, c) + tmp8 = new Union.class(tmp6, tmp7) + normalize_Union_sp_12(tmp8) +fun derive_Union_sp_1(self, c) = + let {tmp6, tmp7, tmp8} + tmp6 = derive_Concat_sp_18(self.p1, c) + tmp7 = derive_Concat_sp_19(self.p2, c) + tmp8 = new Union.class(tmp6, tmp7) + normalize_Union_sp_11(tmp8) +fun derive_Union_sp_2(self, c) = + let {tmp6, tmp7, tmp8} + tmp6 = derive_Exact_sp_3(self.p1, c) + tmp7 = derive_Empty_sp_0(self.p2, c) + tmp8 = new Union.class(tmp6, tmp7) + normalize_Union_sp_7(tmp8) +fun derive_Union_sp_3(self, c) = + let {tmp6, tmp7, tmp8} + tmp6 = derive_In_sp_2(self.p1, c) + tmp7 = derive_Empty_sp_0(self.p2, c) + tmp8 = new Union.class(tmp6, tmp7) + normalize_Union_sp_7(tmp8) +fun flat_Union_sp_0(self) = + let {p1__, scrut4, p2__, scrut5, tmp10, tmp11} + scrut4 = self.p1 + if scrut4 is + Union then + tmp10 = self.p1.flat() + else + tmp10 = [self.p1] + p1__ = tmp10 + scrut5 = self.p2 + if scrut5 is + Union then + tmp11 = self.p2.flat() + else + tmp11 = [self.p2] + p2__ = tmp11 + concat(p1__, p2__) +fun normalize_Union_sp_0(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = self.p1.normalize() + p2__1 = self.p2.normalize() + if p1__1 is + Union then + tmp16 = flat_Union_sp_0(p1__1) + else + tmp16 = [p1__1] + arr11 = tmp16 + if p2__1 is + Union then + tmp17 = flat_Union_sp_0(p2__1) + else + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_1(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_0(self.p1) + p2__1 = self.p2.normalize() + if p1__1 is + Union then + tmp16 = flat_Union_sp_0(p1__1) + else + tmp16 = [p1__1] + arr11 = tmp16 + if p2__1 is + Union then + tmp17 = flat_Union_sp_0(p2__1) + else + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_10(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_In_sp_5(self.p1) + p2__1 = normalize_Empty_sp_0(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = self.iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_11(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + if self.p1 is + Concat then + p1__1 = normalize_Concat_sp_33(self.p1) + Nothing then + p1__1 = normalize_Nothing_sp_0(self.p1) + p2__1 = self.p2.normalize() + tmp16 = [p1__1] + arr11 = tmp16 + if p2__1 is + Union then + tmp17 = flat_Union_sp_0(p2__1) + else + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_12(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + if self.p1 is + Concat then + p1__1 = normalize_Concat_sp_31(self.p1) + Nothing then + p1__1 = normalize_Nothing_sp_0(self.p1) + p2__1 = self.p2.normalize() + tmp16 = [p1__1] + arr11 = tmp16 + if p2__1 is + Union then + tmp17 = flat_Union_sp_0(p2__1) + else + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_13(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_41(self.p1) + p2__1 = normalize_Union_sp_14(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + if p2__1 is + Union then + tmp17 = flat_Union_sp_0(p2__1) + else + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_14(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_42(self.p1) + p2__1 = normalize_Concat_sp_43(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_6(arr2) + tmp20 = len_StagedRegExp_sp_6(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_15(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Exact_sp_8(self.p1) + p2__1 = normalize_Empty_sp_0(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = self.iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_16(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_37(self.p1) + if self.p2 is + Empty then + p2__1 = normalize_Empty_sp_0(self.p2) + Nothing then + p2__1 = normalize_Nothing_sp_0(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_5(arr2) + tmp20 = len_StagedRegExp_sp_5(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_17(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_47(self.p1) + if self.p2 is + Nothing then + p2__1 = normalize_Nothing_sp_0(self.p2) + Exact then + p2__1 = normalize_Exact_sp_1(self.p2) + Nothing then + p2__1 = normalize_Nothing_sp_1(self.p2) + Concat then + p2__1 = normalize_Concat_sp_37(self.p2) + Concat then + p2__1 = normalize_Concat_sp_50(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_7(arr2) + tmp20 = len_StagedRegExp_sp_7(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_2(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_3(self.p1) + if self.p2 is + Concat then + p2__1 = normalize_Concat_sp_5(self.p2) + Nothing then + p2__1 = normalize_Nothing_sp_0(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_0(arr2) + tmp20 = len_StagedRegExp_sp_0(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_3(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_20(self.p1) + p2__1 = normalize_Empty_sp_0(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = self.iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_4(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_21(self.p1) + p2__1 = normalize_Empty_sp_0(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = self.iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_5(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_10(self.p1) + if self.p2 is + Concat then + p2__1 = normalize_Concat_sp_12(self.p2) + Nothing then + p2__1 = normalize_Nothing_sp_0(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_2(arr2) + tmp20 = len_StagedRegExp_sp_2(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_6(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_23(self.p1) + if self.p2 is + Nothing then + p2__1 = normalize_Nothing_sp_0(self.p2) + Concat then + p2__1 = normalize_Concat_sp_29(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_3(arr2) + tmp20 = len_StagedRegExp_sp_3(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_7(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + if self.p1 is + Empty then + p1__1 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__1 = normalize_Nothing_sp_0(self.p1) + p2__1 = normalize_Nothing_sp_0(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = 1 + tmp20 = 1 + s2 = self.iter(tmp18, arr2, 1, 1) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_8(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_34(self.p1) + if self.p2 is + Empty then + p2__1 = normalize_Empty_sp_0(self.p2) + Nothing then + p2__1 = normalize_Nothing_sp_0(self.p2) + tmp16 = [p1__1] + arr11 = tmp16 + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len_StagedRegExp_sp_5(arr2) + tmp20 = len_StagedRegExp_sp_5(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun normalize_Union_sp_9(self) = + let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} + p1__1 = normalize_Concat_sp_35(self.p1) + p2__1 = self.p2.normalize() + tmp16 = [p1__1] + arr11 = tmp16 + if p2__1 is + Union then + tmp17 = flat_Union_sp_0(p2__1) + else + tmp17 = [p2__1] + arr2 = tmp17 + tmp18 = new DedupSet(arr11) + tmp19 = len(arr2) + tmp20 = len(arr2) + s2 = self.iter(tmp18, arr2, tmp19, tmp20) + tmp21 = len(s2.arr) + tmp22 = len(s2.arr) + mkUnion(s2.arr, tmp21, tmp22) +fun startsWith_Union_sp_0(self, c) = + let {tmp26} + tmp26 = startsWith_Concat_sp_17(self.p1, c) + if tmp26 is + false then startsWith_Union_sp_1(self.p2, c) + else true +fun startsWith_Union_sp_1(self, c) = + let {tmp26} + tmp26 = startsWith_Concat_sp_18(self.p1, c) + if tmp26 is + false then startsWith_Concat_sp_19(self.p2, c) + else true +fun startsWith_Union_sp_2(self, c) = + let {tmp26} + tmp26 = startsWith_Exact_sp_3(self.p1, c) + if tmp26 is + false then startsWith_Empty_sp_0(self.p2, c) + else true +fun startsWith_Union_sp_3(self, c) = + let {tmp26} + tmp26 = startsWith_In_sp_2(self.p1, c) + if tmp26 is + false then startsWith_Empty_sp_0(self.p2, c) + else true +fun canBeEmpty_In_sp_0(self) = false +fun canBeEmpty_In_sp_1(self) = false +fun canBeEmpty_In_sp_2(self) = false +fun derive_In_sp_0(self, c) = + let {scrut7} + scrut7 = self.startsWith(c) + if scrut7 is + true then new Empty() + else new Nothing() +fun derive_In_sp_1(self, c) = + let {scrut7} + scrut7 = self.startsWith(c) + if scrut7 is + true then new Empty() + else new Nothing() +fun derive_In_sp_2(self, c) = + let {scrut7} + scrut7 = self.startsWith(c) + if scrut7 is + true then new Empty() + else new Nothing() +fun normalize_In_sp_0(self) = self +fun normalize_In_sp_1(self) = self +fun normalize_In_sp_2(self) = self +fun normalize_In_sp_3(self) = self +fun normalize_In_sp_4(self) = self +fun normalize_In_sp_5(self) = self +fun startsWith_In_sp_0(self, c) = has_StagedRegExp_sp_0(self.chars, c) +fun startsWith_In_sp_1(self, c) = has_StagedRegExp_sp_1(self.chars, c) +fun startsWith_In_sp_2(self, c) = has_StagedRegExp_sp_3(self.chars, c) +fun canBeEmpty_Concat_sp_0(self) = false +fun canBeEmpty_Concat_sp_1(self) = false +fun canBeEmpty_Concat_sp_10(self) = false +fun canBeEmpty_Concat_sp_11(self) = false +fun canBeEmpty_Concat_sp_12(self) = false +fun canBeEmpty_Concat_sp_13(self) = false +fun canBeEmpty_Concat_sp_14(self) = false +fun canBeEmpty_Concat_sp_15(self) = false +fun canBeEmpty_Concat_sp_16(self) = false +fun canBeEmpty_Concat_sp_17(self) = false +fun canBeEmpty_Concat_sp_18(self) = false +fun canBeEmpty_Concat_sp_19(self) = false +fun canBeEmpty_Concat_sp_2(self) = false +fun canBeEmpty_Concat_sp_20(self) = false +fun canBeEmpty_Concat_sp_21(self) = false +fun canBeEmpty_Concat_sp_22(self) = false +fun canBeEmpty_Concat_sp_23(self) = false +fun canBeEmpty_Concat_sp_24(self) = false +fun canBeEmpty_Concat_sp_25(self) = false +fun canBeEmpty_Concat_sp_26(self) = false +fun canBeEmpty_Concat_sp_3(self) = false +fun canBeEmpty_Concat_sp_4(self) = false +fun canBeEmpty_Concat_sp_5(self) = false +fun canBeEmpty_Concat_sp_6(self) = false +fun canBeEmpty_Concat_sp_7(self) = false +fun canBeEmpty_Concat_sp_8(self) = false +fun canBeEmpty_Concat_sp_9(self) = false +fun derive_Concat_sp_0(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Concat_sp_1(self.p1, c) + scrut8 = canBeEmpty_Concat_sp_1(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_3(tmp30) +fun derive_Concat_sp_1(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_In_sp_0(self.p1, c) + scrut8 = canBeEmpty_In_sp_0(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_2(tmp30) +fun derive_Concat_sp_10(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Concat_sp_11(self.p1, c) + scrut8 = canBeEmpty_Concat_sp_11(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_27(tmp30) +fun derive_Concat_sp_11(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Concat_sp_12(self.p1, c) + scrut8 = canBeEmpty_Concat_sp_12(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_26(tmp30) +fun derive_Concat_sp_12(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Not_sp_0(self.p1, c) + scrut8 = canBeEmpty_Not_sp_0(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_25(tmp30) +fun derive_Concat_sp_13(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = self.p1.derive(c) + scrut8 = self.p1.canBeEmpty() + if scrut8 is + true then + tmp27 = new Concat.class(p1__2, self.p2) + tmp28 = derive_Concat_sp_10(self.p2, c) + tmp29 = new Union(tmp27, tmp28) + normalize_Union_sp_6(tmp29) + else + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_23(tmp30) +fun derive_Concat_sp_14(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Concat_sp_15(self.p1, c) + scrut8 = canBeEmpty_Concat_sp_15(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_44(tmp30) +fun derive_Concat_sp_15(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Concat_sp_16(self.p1, c) + scrut8 = canBeEmpty_Concat_sp_16(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_38(tmp30) +fun derive_Concat_sp_16(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Union_sp_0(self.p1, c) + scrut8 = canBeEmpty_Union_sp_0(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_37(tmp30) +fun derive_Concat_sp_17(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Exact_sp_2(self.p1, c) + scrut8 = canBeEmpty_Exact_sp_2(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_30(tmp30) +fun derive_Concat_sp_18(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Exact_sp_2(self.p1, c) + scrut8 = canBeEmpty_Exact_sp_2(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_32(tmp30) +fun derive_Concat_sp_19(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Union_sp_2(self.p1, c) + scrut8 = canBeEmpty_Union_sp_2(self.p1) + tmp27 = new Concat.class(p1__2, self.p2) + tmp28 = derive_Concat_sp_20(self.p2, c) + tmp29 = new Union(tmp27, tmp28) + normalize_Union_sp_9(tmp29) +fun derive_Concat_sp_2(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Star_sp_0(self.p1, c) + scrut8 = canBeEmpty_Star_sp_0(self.p1) + tmp27 = new Concat.class(p1__2, self.p2) + tmp28 = derive_Concat_sp_3(self.p2, c) + tmp29 = new Union(tmp27, tmp28) + normalize_Union_sp_2(tmp29) +fun derive_Concat_sp_20(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Union_sp_3(self.p1, c) + scrut8 = canBeEmpty_Union_sp_3(self.p1) + tmp27 = new Concat.class(p1__2, self.p2) + tmp28 = derive_In_sp_2(self.p2, c) + tmp29 = new Union(tmp27, tmp28) + normalize_Union_sp_8(tmp29) +fun derive_Concat_sp_21(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Concat_sp_22(self.p1, c) + scrut8 = canBeEmpty_Concat_sp_22(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_49(tmp30) +fun derive_Concat_sp_22(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + if self.p1 is + Exact then + p1__2 = derive_Exact_sp_4(self.p1, c) + Concat then + p1__2 = derive_Concat_sp_23(self.p1, c) + if self.p1 is + Exact then + scrut8 = canBeEmpty_Exact_sp_4(self.p1) + Concat then + scrut8 = canBeEmpty_Concat_sp_23(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_47(tmp30) +fun derive_Concat_sp_23(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = self.p1.derive(c) + scrut8 = self.p1.canBeEmpty() + if scrut8 is + true then + tmp27 = new Concat.class(p1__2, self.p2) + tmp28 = derive_Exact_sp_4(self.p2, c) + tmp29 = new Union(tmp27, tmp28) + normalize_Union_sp_16(tmp29) + else + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_37(tmp30) +fun derive_Concat_sp_24(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + if self.p1 is + Concat then + p1__2 = derive_Concat_sp_25(self.p1, c) + Concat then + p1__2 = derive_Concat_sp_26(self.p1, c) + if self.p1 is + Concat then + scrut8 = canBeEmpty_Concat_sp_25(self.p1) + Concat then + scrut8 = canBeEmpty_Concat_sp_26(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_0(tmp30) +fun derive_Concat_sp_25(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + if self.p1 is + Exact then + p1__2 = derive_Exact_sp_4(self.p1, c) + Concat then + p1__2 = derive_Concat_sp_23(self.p1, c) + if self.p1 is + Exact then + scrut8 = canBeEmpty_Exact_sp_4(self.p1) + Concat then + scrut8 = canBeEmpty_Concat_sp_23(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_50(tmp30) +fun derive_Concat_sp_26(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = self.p1.derive(c) + scrut8 = self.p1.canBeEmpty() + if scrut8 is + true then + tmp27 = new Concat.class(p1__2, self.p2) + if self.p2 is + Nothing then + tmp28 = derive_Nothing_sp_0(self.p2, c) + Nothing then + tmp28 = derive_Nothing_sp_0(self.p2, c) + Concat then + tmp28 = derive_Concat_sp_25(self.p2, c) + tmp29 = new Union(tmp27, tmp28) + normalize_Union_sp_17(tmp29) + else + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_47(tmp30) +fun derive_Concat_sp_3(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Exact_sp_0(self.p1, c) + scrut8 = canBeEmpty_Exact_sp_0(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_8(tmp30) +fun derive_Concat_sp_4(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Concat_sp_5(self.p1, c) + scrut8 = canBeEmpty_Concat_sp_5(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_13(tmp30) +fun derive_Concat_sp_5(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Concat_sp_6(self.p1, c) + scrut8 = canBeEmpty_Concat_sp_6(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_10(tmp30) +fun derive_Concat_sp_6(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_In_sp_1(self.p1, c) + scrut8 = canBeEmpty_In_sp_1(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_9(tmp30) +fun derive_Concat_sp_7(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Concat_sp_8(self.p1, c) + scrut8 = canBeEmpty_Concat_sp_8(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_23(tmp30) +fun derive_Concat_sp_8(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Star_sp_1(self.p1, c) + scrut8 = canBeEmpty_Star_sp_1(self.p1) + tmp27 = new Concat.class(p1__2, self.p2) + tmp28 = derive_Concat_sp_9(self.p2, c) + tmp29 = new Union(tmp27, tmp28) + normalize_Union_sp_5(tmp29) +fun derive_Concat_sp_9(self, c) = + let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} + p1__2 = derive_Exact_sp_1(self.p1, c) + scrut8 = canBeEmpty_Exact_sp_1(self.p1) + tmp30 = new Concat.class(p1__2, self.p2) + normalize_Concat_sp_22(tmp30) +fun normalize_Concat_sp_0(self) = + let {p1__3, tmp31} + p1__3 = self.p1.normalize() + if p1__3 is + Empty then self.p2.normalize() + Nothing then p1__3 + else + tmp31 = self.p2.normalize() + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_1(self) = + let {p1__3, tmp31} + p1__3 = self.p1.normalize() + if p1__3 is + Empty then normalize_Star_sp_0(self.p2) + Nothing then p1__3 + else + tmp31 = normalize_Star_sp_0(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_10(self) = + let {p1__3, tmp31} + if self.p1 is + Star then + p1__3 = normalize_Star_sp_2(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_11(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_11(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_2(self.p1) + tmp31 = normalize_Concat_sp_12(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_12(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_3(self.p1) + tmp31 = normalize_Exact_sp_3(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_13(self) = + let {p1__3, tmp31} + if self.p1 is + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + Concat then + p1__3 = normalize_Concat_sp_14(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_15(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_14(self) = + let {p1__3, tmp31} + p1__3 = normalize_Star_sp_2(self.p1) + tmp31 = normalize_Concat_sp_11(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_15(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_16(self.p1) + tmp31 = normalize_Concat_sp_19(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_16(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_17(self.p1) + tmp31 = normalize_Concat_sp_18(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_17(self) = + let {p1__3, tmp31} + p1__3 = normalize_Not_sp_0(self.p1) + tmp31 = normalize_Star_sp_3(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_18(self) = + let {p1__3, tmp31} + p1__3 = normalize_Not_sp_1(self.p1) + tmp31 = normalize_Star_sp_4(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_19(self) = + let {p1__3, tmp31} + p1__3 = normalize_Union_sp_3(self.p1) + if p1__3 is + Empty then normalize_Union_sp_4(self.p2) + Nothing then p1__3 + else + tmp31 = normalize_Union_sp_4(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_2(self) = + let {p1__3, tmp31} + if self.p1 is + Empty then + p1__3 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Empty then normalize_Star_sp_1(self.p2) + Nothing then p1__3 +fun normalize_Concat_sp_20(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_4(self.p1) + tmp31 = normalize_Star_sp_5(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_21(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_5(self.p1) + tmp31 = normalize_Star_sp_5(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_22(self) = + let {p1__3, tmp31} + if self.p1 is + Empty then + p1__3 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Empty then normalize_Concat_sp_12(self.p2) + Nothing then p1__3 +fun normalize_Concat_sp_23(self) = + let {p1__3, tmp31} + p1__3 = self.p1.normalize() + if p1__3 is + Empty then normalize_Concat_sp_24(self.p2) + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_24(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_24(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_16(self.p1) + tmp31 = self.p2.normalize() + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_25(self) = + let {p1__3, tmp31} + if self.p1 is + Empty then + p1__3 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Empty then normalize_Star_sp_3(self.p2) + Nothing then p1__3 +fun normalize_Concat_sp_26(self) = + let {p1__3, tmp31} + if self.p1 is + Star then + p1__3 = normalize_Star_sp_3(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_18(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_27(self) = + let {p1__3, tmp31} + if self.p1 is + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + Concat then + p1__3 = normalize_Concat_sp_28(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = self.p2.normalize() + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_28(self) = + let {p1__3, tmp31} + p1__3 = normalize_Star_sp_3(self.p1) + tmp31 = normalize_Concat_sp_18(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_29(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_28(self.p1) + tmp31 = self.p2.normalize() + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_3(self) = + let {p1__3, tmp31} + if self.p1 is + Star then + p1__3 = normalize_Star_sp_1(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_4(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_30(self) = + let {p1__3, tmp31} + if self.p1 is + Empty then + p1__3 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Empty then normalize_Concat_sp_31(self.p2) + Nothing then p1__3 +fun normalize_Concat_sp_31(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_6(self.p1) + tmp31 = normalize_In_sp_3(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_32(self) = + let {p1__3, tmp31} + if self.p1 is + Empty then + p1__3 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Empty then normalize_Concat_sp_33(self.p2) + Nothing then p1__3 +fun normalize_Concat_sp_33(self) = + let {p1__3, tmp31} + p1__3 = normalize_In_sp_4(self.p1) + tmp31 = normalize_In_sp_5(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_34(self) = + let {p1__3, tmp31} + p1__3 = self.p1.normalize() + if p1__3 is + Empty then normalize_In_sp_5(self.p2) + Nothing then p1__3 + else + tmp31 = normalize_In_sp_5(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_35(self) = + let {p1__3, tmp31} + p1__3 = self.p1.normalize() + if p1__3 is + Empty then normalize_Concat_sp_36(self.p2) + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_36(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_36(self) = + let {p1__3, tmp31} + p1__3 = normalize_Union_sp_10(self.p1) + if p1__3 is + Empty then normalize_In_sp_5(self.p2) + Nothing then p1__3 + else + tmp31 = normalize_In_sp_5(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_37(self) = + let {p1__3, tmp31} + p1__3 = self.p1.normalize() + if p1__3 is + Empty then normalize_Exact_sp_1(self.p2) + Nothing then p1__3 + else + tmp31 = normalize_Exact_sp_1(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_38(self) = + let {p1__3, tmp31} + if self.p1 is + Exact then + p1__3 = normalize_Exact_sp_1(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + Concat then + p1__3 = normalize_Concat_sp_37(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_39(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_39(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_40(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_40(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_4(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_0(self.p1) + tmp31 = normalize_Concat_sp_5(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_40(self) = + let {p1__3, tmp31} + p1__3 = normalize_Union_sp_13(self.p1) + if p1__3 is + Empty then normalize_Exact_sp_1(self.p2) + Nothing then p1__3 + else + tmp31 = normalize_Exact_sp_1(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_41(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_7(self.p1) + tmp31 = normalize_Concat_sp_31(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_42(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_7(self.p1) + tmp31 = normalize_Concat_sp_33(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_43(self) = + let {p1__3, tmp31} + p1__3 = normalize_Union_sp_15(self.p1) + if p1__3 is + Empty then normalize_Concat_sp_36(self.p2) + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_36(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_44(self) = + let {p1__3, tmp31} + if self.p1 is + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + Concat then + p1__3 = normalize_Concat_sp_45(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Union_sp_13(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_45(self) = + let {p1__3, tmp31} + if self.p1 is + Exact then + p1__3 = normalize_Exact_sp_1(self.p1) + Concat then + p1__3 = normalize_Concat_sp_37(self.p1) + if p1__3 is + Nothing then p1__3 + else + if self.p2 is + Nothing then + tmp31 = normalize_Nothing_sp_0(self.p2) + Concat then + tmp31 = normalize_Concat_sp_46(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_46(self) = + let {p1__3, tmp31} + if self.p1 is + Exact then + p1__3 = normalize_Exact_sp_1(self.p1) + Concat then + p1__3 = normalize_Concat_sp_37(self.p1) + if p1__3 is + Nothing then p1__3 + else + if self.p2 is + Exact then + tmp31 = normalize_Exact_sp_1(self.p2) + Nothing then + tmp31 = normalize_Nothing_sp_0(self.p2) + Concat then + tmp31 = normalize_Concat_sp_37(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_47(self) = + let {p1__3, tmp31} + p1__3 = self.p1.normalize() + if p1__3 is + Empty then + if self.p2 is + Nothing then normalize_Nothing_sp_0(self.p2) + Nothing then normalize_Nothing_sp_0(self.p2) + Concat then normalize_Concat_sp_48(self.p2) + Nothing then p1__3 + else + if self.p2 is + Nothing then + tmp31 = normalize_Nothing_sp_0(self.p2) + Nothing then + tmp31 = normalize_Nothing_sp_0(self.p2) + Concat then + tmp31 = normalize_Concat_sp_48(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_48(self) = + let {p1__3, tmp31} + if self.p1 is + Exact then + p1__3 = normalize_Exact_sp_1(self.p1) + Concat then + p1__3 = normalize_Concat_sp_37(self.p1) + if p1__3 is + Nothing then p1__3 + else + if self.p2 is + Exact then + tmp31 = normalize_Exact_sp_1(self.p2) + Nothing then + tmp31 = normalize_Nothing_sp_0(self.p2) + Nothing then + tmp31 = normalize_Nothing_sp_0(self.p2) + Concat then + tmp31 = normalize_Concat_sp_37(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_49(self) = + let {p1__3, tmp31} + if self.p1 is + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + Concat then + p1__3 = normalize_Concat_sp_48(self.p1) + Concat then + p1__3 = normalize_Concat_sp_47(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = self.p2.normalize() + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_5(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_6(self.p1) + tmp31 = normalize_Concat_sp_7(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_50(self) = + let {p1__3, tmp31} + p1__3 = self.p1.normalize() + if p1__3 is + Empty then + if self.p2 is + Exact then normalize_Exact_sp_1(self.p2) + Nothing then normalize_Nothing_sp_0(self.p2) + Nothing then normalize_Nothing_sp_0(self.p2) + Concat then normalize_Concat_sp_37(self.p2) + Nothing then p1__3 + else + if self.p2 is + Exact then + tmp31 = normalize_Exact_sp_1(self.p2) + Nothing then + tmp31 = normalize_Nothing_sp_0(self.p2) + Nothing then + tmp31 = normalize_Nothing_sp_0(self.p2) + Concat then + tmp31 = normalize_Concat_sp_37(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_6(self) = + let {p1__3, tmp31} + p1__3 = normalize_In_sp_0(self.p1) + tmp31 = normalize_Star_sp_1(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_7(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_1(self.p1) + tmp31 = normalize_Concat_sp_6(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_8(self) = + let {p1__3, tmp31} + if self.p1 is + Empty then + p1__3 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Empty then normalize_Concat_sp_5(self.p2) + Nothing then p1__3 +fun normalize_Concat_sp_9(self) = + let {p1__3, tmp31} + if self.p1 is + Empty then + p1__3 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Empty then normalize_Star_sp_2(self.p2) + Nothing then p1__3 +fun startsWith_Concat_sp_0(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Concat_sp_1(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Concat_sp_1(self.p1) + false + else true +fun startsWith_Concat_sp_1(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_In_sp_0(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_In_sp_0(self.p1) + false + else true +fun startsWith_Concat_sp_10(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Concat_sp_11(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Concat_sp_11(self.p1) + false + else true +fun startsWith_Concat_sp_11(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Concat_sp_12(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Concat_sp_12(self.p1) + false + else true +fun startsWith_Concat_sp_12(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Not_sp_0(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Not_sp_0(self.p1) + false + else true +fun startsWith_Concat_sp_13(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = self.p1.startsWith(c) + if tmp32 is + false then + scrut13 = self.p1.canBeEmpty() + if scrut13 is true then - if p is + scrut14 = startsWith_Concat_sp_10(self.p2, c) + if scrut14 is + true then true + else false + else false + else true +fun startsWith_Concat_sp_14(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Concat_sp_15(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Concat_sp_15(self.p1) + false + else true +fun startsWith_Concat_sp_15(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Concat_sp_16(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Concat_sp_16(self.p1) + false + else true +fun startsWith_Concat_sp_16(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Union_sp_0(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Union_sp_0(self.p1) + false + else true +fun startsWith_Concat_sp_17(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Exact_sp_2(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Exact_sp_2(self.p1) + false + else true +fun startsWith_Concat_sp_18(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Exact_sp_2(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Exact_sp_2(self.p1) + false + else true +fun startsWith_Concat_sp_19(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Union_sp_2(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Union_sp_2(self.p1) + scrut14 = startsWith_Concat_sp_20(self.p2, c) + if scrut14 is + true then true + else false + else true +fun startsWith_Concat_sp_2(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Star_sp_0(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Star_sp_0(self.p1) + scrut14 = startsWith_Concat_sp_3(self.p2, c) + if scrut14 is + true then true + else false + else true +fun startsWith_Concat_sp_20(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Union_sp_3(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Union_sp_3(self.p1) + scrut14 = startsWith_In_sp_2(self.p2, c) + if scrut14 is + true then true + else false + else true +fun startsWith_Concat_sp_21(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Concat_sp_22(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Concat_sp_22(self.p1) + false + else true +fun startsWith_Concat_sp_22(self, c) = + let {scrut13, scrut14, tmp32} + if self.p1 is + Exact then + tmp32 = startsWith_Exact_sp_4(self.p1, c) + Concat then + tmp32 = startsWith_Concat_sp_23(self.p1, c) + if tmp32 is + false then + if self.p1 is + Exact then + scrut13 = canBeEmpty_Exact_sp_4(self.p1) + Concat then + scrut13 = canBeEmpty_Concat_sp_23(self.p1) + false + else true +fun startsWith_Concat_sp_23(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = self.p1.startsWith(c) + if tmp32 is + false then + scrut13 = self.p1.canBeEmpty() + if scrut13 is + true then + scrut14 = startsWith_Exact_sp_4(self.p2, c) + if scrut14 is + true then true + else false + else false + else true +fun startsWith_Concat_sp_24(self, c) = + let {scrut13, scrut14, tmp32} + if self.p1 is + Concat then + tmp32 = startsWith_Concat_sp_25(self.p1, c) + Concat then + tmp32 = startsWith_Concat_sp_26(self.p1, c) + if tmp32 is + false then + if self.p1 is + Concat then + scrut13 = canBeEmpty_Concat_sp_25(self.p1) + Concat then + scrut13 = canBeEmpty_Concat_sp_26(self.p1) + false + else true +fun startsWith_Concat_sp_25(self, c) = + let {scrut13, scrut14, tmp32} + if self.p1 is + Exact then + tmp32 = startsWith_Exact_sp_4(self.p1, c) + Concat then + tmp32 = startsWith_Concat_sp_23(self.p1, c) + if tmp32 is + false then + if self.p1 is + Exact then + scrut13 = canBeEmpty_Exact_sp_4(self.p1) + Concat then + scrut13 = canBeEmpty_Concat_sp_23(self.p1) + false + else true +fun startsWith_Concat_sp_26(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = self.p1.startsWith(c) + if tmp32 is + false then + scrut13 = self.p1.canBeEmpty() + if scrut13 is + true then + if self.p2 is Nothing then - scrut19 = p.canBeEmpty_Nothing_sp_0() + scrut14 = startsWith_Nothing_sp_0(self.p2, c) Nothing then - scrut19 = p.canBeEmpty_Nothing_sp_0() + scrut14 = startsWith_Nothing_sp_0(self.p2, c) Concat then - scrut19 = p.canBeEmpty_Concat_sp_24() - new None() - else - if p is - Nothing then new None() - else - c18 = s.0 - scrut20 = p.startsWith_Concat_sp_24(c18) - if scrut20 is - true then - tmp56 = p.derive_Concat_sp_24(c18) - tmp57 = s.slice(1) - tmp58 = acc + c18 - matchImpl(tmp56, tmp57, tmp58) - else - scrut21 = p.canBeEmpty_Concat_sp_24() - new None() - private fun match_StagedRegExp_sp_0(p, s) = matchImpl_StagedRegExp_sp_1(p, s, "") - private fun match_StagedRegExp_sp_1(p, s) = matchImpl_StagedRegExp_sp_3(p, s, "") - private fun match_StagedRegExp_sp_2(p, s) = matchImpl_StagedRegExp_sp_6(p, s, "") - private fun nTimes_StagedRegExp_sp_0(r, i) = - let {scrut17, tmp52, tmp53, obj_100, obj_101, tup_102, obj_103, obj_104, obj_105, obj_106, tup_107, obj_108, tup_109, obj_110, obj_111, obj_112, obj_113, obj_114, obj_115, tup_116, obj_117, obj_118, obj_119, tup_120, obj_121, obj_122, obj_123, obj_124, obj_125, obj_126, obj_127, obj_128, obj_129, tup_130, obj_131, obj_132, obj_133, obj_134, tup_135, obj_136, tup_137, obj_138, obj_139, obj_140, obj_141, obj_142, obj_143, tup_144, obj_145, obj_146, obj_147, tup_148, obj_149, obj_150, obj_151, obj_152, obj_153, obj_154, obj_155, obj_156} - scrut17 = false - tmp52 = 2 - obj_100 = new Exact("2") - obj_101 = new Exact("5") - tup_102 = ["0", "1", "2", "3", "4", "5"] - obj_103 = new In(tup_102) - obj_104 = new Concat(obj_101, obj_103) - obj_105 = new Concat(obj_100, obj_104) - obj_106 = new Exact("2") - tup_107 = ["0", "1", "2", "3", "4"] - obj_108 = new In(tup_107) - tup_109 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_110 = new In(tup_109) - obj_111 = new Concat(obj_108, obj_110) - obj_112 = new Concat(obj_106, obj_111) - obj_113 = new Exact("1") - obj_114 = new Empty() - obj_115 = new Union(obj_113, obj_114) - tup_116 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_117 = new In(tup_116) - obj_118 = new Empty() - obj_119 = new Union(obj_117, obj_118) - tup_120 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_121 = new In(tup_120) - obj_122 = new Concat(obj_119, obj_121) - obj_123 = new Concat(obj_115, obj_122) - obj_124 = new Union(obj_112, obj_123) - obj_125 = new Union(obj_105, obj_124) - obj_126 = new Exact(".") - obj_127 = new Concat(obj_125, obj_126) - obj_128 = new Exact("2") - obj_129 = new Exact("5") - tup_130 = ["0", "1", "2", "3", "4", "5"] - obj_131 = new In(tup_130) - obj_132 = new Concat(obj_129, obj_131) - obj_133 = new Concat(obj_128, obj_132) - obj_134 = new Exact("2") - tup_135 = ["0", "1", "2", "3", "4"] - obj_136 = new In(tup_135) - tup_137 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_138 = new In(tup_137) - obj_139 = new Concat(obj_136, obj_138) - obj_140 = new Concat(obj_134, obj_139) - obj_141 = new Exact("1") - obj_142 = new Empty() - obj_143 = new Union(obj_141, obj_142) - tup_144 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_145 = new In(tup_144) - obj_146 = new Empty() - obj_147 = new Union(obj_145, obj_146) - tup_148 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_149 = new In(tup_148) - obj_150 = new Concat(obj_147, obj_149) - obj_151 = new Concat(obj_143, obj_150) - obj_152 = new Union(obj_140, obj_151) - obj_153 = new Union(obj_133, obj_152) - obj_154 = new Exact(".") - obj_155 = new Concat(obj_153, obj_154) - obj_156 = new Concat(obj_127, obj_155) - tmp53 = obj_156 - new Concat(r, tmp53) - private fun nTimes_StagedRegExp_sp_1(r, i) = - let {scrut17, tmp52, tmp53, obj_72, obj_73, tup_74, obj_75, obj_76, obj_77, obj_78, tup_79, obj_80, tup_81, obj_82, obj_83, obj_84, obj_85, obj_86, obj_87, tup_88, obj_89, obj_90, obj_91, tup_92, obj_93, obj_94, obj_95, obj_96, obj_97, obj_98, obj_99} - scrut17 = false - tmp52 = 1 - obj_72 = new Exact("2") - obj_73 = new Exact("5") - tup_74 = ["0", "1", "2", "3", "4", "5"] - obj_75 = new In(tup_74) - obj_76 = new Concat(obj_73, obj_75) - obj_77 = new Concat(obj_72, obj_76) - obj_78 = new Exact("2") - tup_79 = ["0", "1", "2", "3", "4"] - obj_80 = new In(tup_79) - tup_81 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_82 = new In(tup_81) - obj_83 = new Concat(obj_80, obj_82) - obj_84 = new Concat(obj_78, obj_83) - obj_85 = new Exact("1") - obj_86 = new Empty() - obj_87 = new Union(obj_85, obj_86) - tup_88 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_89 = new In(tup_88) - obj_90 = new Empty() - obj_91 = new Union(obj_89, obj_90) - tup_92 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_93 = new In(tup_92) - obj_94 = new Concat(obj_91, obj_93) - obj_95 = new Concat(obj_87, obj_94) - obj_96 = new Union(obj_84, obj_95) - obj_97 = new Union(obj_77, obj_96) - obj_98 = new Exact(".") - obj_99 = new Concat(obj_97, obj_98) - tmp53 = obj_99 - new Concat(r, tmp53) - private fun nTimes_StagedRegExp_sp_2(r, i) = - let {scrut17, tmp52, tmp53} - scrut17 = true - r - private fun plus_StagedRegExp_sp_0(r) = - let {tmp54} - tmp54 = new Star(r) - new Concat(r, tmp54) - private fun plus_StagedRegExp_sp_1(r) = - let {tmp54} - tmp54 = new Star(r) - new Concat(r, tmp54) - private fun plus_StagedRegExp_sp_2(r) = - let {tmp54} - tmp54 = new Star(r) - new Concat(r, tmp54) - private fun plus_StagedRegExp_sp_3(r) = - let {tmp54} - tmp54 = new Star(r) - new Concat(r, tmp54) - private fun question_StagedRegExp_sp_0(r) = - let {tmp48} - tmp48 = new Empty() - new Union(r, tmp48) - private fun question_StagedRegExp_sp_1(r) = - let {tmp48} - tmp48 = new Empty() - new Union(r, tmp48) - private fun question_StagedRegExp_sp_2(r) = - let {tmp48} - tmp48 = new Empty() - new Union(r, tmp48) - private fun question_StagedRegExp_sp_3(r) = - let {tmp48} - tmp48 = new Empty() - new Union(r, tmp48) \ No newline at end of file + scrut14 = startsWith_Concat_sp_25(self.p2, c) + if scrut14 is + true then true + else false + else false + else true +fun startsWith_Concat_sp_3(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Exact_sp_0(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Exact_sp_0(self.p1) + false + else true +fun startsWith_Concat_sp_4(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Concat_sp_5(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Concat_sp_5(self.p1) + false + else true +fun startsWith_Concat_sp_5(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Concat_sp_6(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Concat_sp_6(self.p1) + false + else true +fun startsWith_Concat_sp_6(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_In_sp_1(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_In_sp_1(self.p1) + false + else true +fun startsWith_Concat_sp_7(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Concat_sp_8(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Concat_sp_8(self.p1) + false + else true +fun startsWith_Concat_sp_8(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Star_sp_1(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Star_sp_1(self.p1) + scrut14 = startsWith_Concat_sp_9(self.p2, c) + if scrut14 is + true then true + else false + else true +fun startsWith_Concat_sp_9(self, c) = + let {scrut13, scrut14, tmp32} + tmp32 = startsWith_Exact_sp_1(self.p1, c) + if tmp32 is + false then + scrut13 = canBeEmpty_Exact_sp_1(self.p1) + false + else true +fun canBeEmpty_Star_sp_0(self) = true +fun canBeEmpty_Star_sp_1(self) = true +fun derive_Star_sp_0(self, c) = + let {tmp33, tmp34, tmp35} + tmp33 = derive_In_sp_0(self.p, c) + tmp34 = new Star.class(self.p) + tmp35 = new Concat(tmp33, tmp34) + normalize_Concat_sp_2(tmp35) +fun derive_Star_sp_1(self, c) = + let {tmp33, tmp34, tmp35} + tmp33 = derive_In_sp_1(self.p, c) + tmp34 = new Star.class(self.p) + tmp35 = new Concat(tmp33, tmp34) + normalize_Concat_sp_9(tmp35) +fun normalize_Star_sp_0(self) = + let {tmp36} + tmp36 = self.p.normalize() + new Star.class(tmp36) +fun normalize_Star_sp_1(self) = + let {tmp36} + tmp36 = normalize_In_sp_0(self.p) + new Star.class(tmp36) +fun normalize_Star_sp_2(self) = + let {tmp36} + tmp36 = normalize_In_sp_1(self.p) + new Star.class(tmp36) +fun normalize_Star_sp_3(self) = + let {tmp36} + tmp36 = normalize_Not_sp_0(self.p) + new Star.class(tmp36) +fun normalize_Star_sp_4(self) = + let {tmp36} + tmp36 = normalize_Not_sp_1(self.p) + new Star.class(tmp36) +fun normalize_Star_sp_5(self) = + let {tmp36} + tmp36 = normalize_In_sp_2(self.p) + new Star.class(tmp36) +fun startsWith_Star_sp_0(self, c) = startsWith_In_sp_0(self.p, c) +fun startsWith_Star_sp_1(self, c) = startsWith_In_sp_1(self.p, c) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index dc0364d210..41ddf4bf73 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -154,3836 +154,3837 @@ module Transform3D with tmp21 = *(r, c) tmp22 = Transform3D__Legacy."Mx$Transform3D".init(tmp21, 0) new Matrix(tmp22, r, c) - private fun ident_Transform3D_sp_0(w) = - let {m3, tup_2, obj_3, tup_24, obj_25} - tup_2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_3 = new Matrix(tup_2, 4, 4) - m3 = obj_3 - tup_24 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_25 = new Matrix(tup_24, 4, 4) - obj_25 - private fun iterCol_Transform3D_sp_0(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = ===(j, 0) - if scrut1 is - true then m - else - tmp9 = colY - j - tmp10 = colY - j - tmp11 = iter_Transform3D_sp_0(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_0(m, i, tmp9, tmp11) - tmp13 = j - 1 - iterCol_Transform3D_sp_0(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_1(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_1(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_20(m, i, tmp9, tmp11) - tmp13 = 3 - iterCol_Transform3D_sp_2(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_10(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_11(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_41(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_17(m, i, tmp9, tmp11) - tmp13 = 3 - iterCol_Transform3D_sp_12(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_12(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 1 - tmp10 = 1 - tmp11 = iter_Transform3D_sp_46(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_15(m, i, tmp9, tmp11) - tmp13 = 2 - iterCol_Transform3D_sp_13(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_13(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 2 - tmp10 = 2 - tmp11 = iter_Transform3D_sp_51(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_12(m, i, tmp9, tmp11) - tmp13 = 1 - iterCol_Transform3D_sp_14(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_14(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 3 - tmp10 = 3 - tmp11 = iter_Transform3D_sp_56(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_9(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_15(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_15(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_16(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_61(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_22(m, i, tmp9, tmp11) - tmp13 = 3 - iterCol_Transform3D_sp_17(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_17(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 1 - tmp10 = 1 - tmp11 = iter_Transform3D_sp_66(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_23(m, i, tmp9, tmp11) - tmp13 = 2 - iterCol_Transform3D_sp_18(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_18(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 2 - tmp10 = 2 - tmp11 = iter_Transform3D_sp_71(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_24(m, i, tmp9, tmp11) - tmp13 = 1 - iterCol_Transform3D_sp_19(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_19(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 3 - tmp10 = 3 - tmp11 = iter_Transform3D_sp_76(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_25(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_20(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_2(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 1 - tmp10 = 1 - tmp11 = iter_Transform3D_sp_6(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_18(m, i, tmp9, tmp11) - tmp13 = 2 - iterCol_Transform3D_sp_3(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_20(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_21(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_81(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_20(m, i, tmp9, tmp11) - tmp13 = 3 - iterCol_Transform3D_sp_22(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_22(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 1 - tmp10 = 1 - tmp11 = iter_Transform3D_sp_86(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_18(m, i, tmp9, tmp11) - tmp13 = 2 - iterCol_Transform3D_sp_23(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_23(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 2 - tmp10 = 2 - tmp11 = iter_Transform3D_sp_91(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_16(m, i, tmp9, tmp11) - tmp13 = 1 - iterCol_Transform3D_sp_24(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_24(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 3 - tmp10 = 3 - tmp11 = iter_Transform3D_sp_96(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_21(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_25(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_25(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_26(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_101(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_19(m, i, tmp9, tmp11) - tmp13 = 3 - iterCol_Transform3D_sp_27(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_27(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 1 - tmp10 = 1 - tmp11 = iter_Transform3D_sp_106(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_11(m, i, tmp9, tmp11) - tmp13 = 2 - iterCol_Transform3D_sp_28(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_28(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 2 - tmp10 = 2 - tmp11 = iter_Transform3D_sp_111(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_14(m, i, tmp9, tmp11) - tmp13 = 1 - iterCol_Transform3D_sp_29(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_29(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 3 - tmp10 = 3 - tmp11 = iter_Transform3D_sp_116(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_8(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_30(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_3(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 2 - tmp10 = 2 - tmp11 = iter_Transform3D_sp_11(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_16(m, i, tmp9, tmp11) - tmp13 = 1 - iterCol_Transform3D_sp_4(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_30(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_31(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_121(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_17(m, i, tmp9, tmp11) - tmp13 = 3 - iterCol_Transform3D_sp_32(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_32(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 1 - tmp10 = 1 - tmp11 = iter_Transform3D_sp_126(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_15(m, i, tmp9, tmp11) - tmp13 = 2 - iterCol_Transform3D_sp_33(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_33(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 2 - tmp10 = 2 - tmp11 = iter_Transform3D_sp_131(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_12(m, i, tmp9, tmp11) - tmp13 = 1 - iterCol_Transform3D_sp_34(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_34(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 3 - tmp10 = 3 - tmp11 = iter_Transform3D_sp_136(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_9(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_35(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_35(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_36(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_141(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_22(m, i, tmp9, tmp11) - tmp13 = 3 - iterCol_Transform3D_sp_37(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_37(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 1 - tmp10 = 1 - tmp11 = iter_Transform3D_sp_146(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_23(m, i, tmp9, tmp11) - tmp13 = 2 - iterCol_Transform3D_sp_38(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_38(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 2 - tmp10 = 2 - tmp11 = iter_Transform3D_sp_151(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_24(m, i, tmp9, tmp11) - tmp13 = 1 - iterCol_Transform3D_sp_39(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_39(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 3 - tmp10 = 3 - tmp11 = iter_Transform3D_sp_156(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_25(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_40(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_4(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 3 - tmp10 = 3 - tmp11 = iter_Transform3D_sp_16(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_21(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_5(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_40(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_41(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_161(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_42(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_42(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_43(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_166(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_44(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_44(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_45(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_171(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_46(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_46(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_47(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_176(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_29(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_48(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_48(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_49(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_181(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_50(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_5(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_50(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_51(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_186(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_52(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_52(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_53(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_191(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_54(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_54(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_55(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_196(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_29(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_56(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_56(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_57(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_201(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_58(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_58(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_59(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_206(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_60(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_6(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_21(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_19(m, i, tmp9, tmp11) - tmp13 = 3 - iterCol_Transform3D_sp_7(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_60(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_61(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_211(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_62(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_62(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_63(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = 1 - tmp12 = update_Transform3D_sp_36(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_64(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_64(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_65(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_221(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_66(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_66(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_67(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_226(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_68(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_68(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_69(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_231(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_70(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_7(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 1 - tmp10 = 1 - tmp11 = iter_Transform3D_sp_26(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_11(m, i, tmp9, tmp11) - tmp13 = 2 - iterCol_Transform3D_sp_8(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_70(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_71(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 0 - tmp10 = 0 - tmp11 = iter_Transform3D_sp_236(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_29(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_72(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_72(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = true - m - private fun iterCol_Transform3D_sp_8(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 2 - tmp10 = 2 - tmp11 = iter_Transform3D_sp_31(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_14(m, i, tmp9, tmp11) - tmp13 = 1 - iterCol_Transform3D_sp_9(tmp12, x, y, colX, colY, i, tmp13) - private fun iterCol_Transform3D_sp_9(m, x, y, colX, colY, i, j) = - let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} - scrut1 = false - tmp9 = 3 - tmp10 = 3 - tmp11 = iter_Transform3D_sp_36(0, x, y, colX, i, tmp10, colX) - tmp12 = update_Transform3D_sp_8(m, i, tmp9, tmp11) - tmp13 = 0 - iterCol_Transform3D_sp_10(tmp12, x, y, colX, colY, i, tmp13) - private fun iterID_Transform3D_sp_0(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20} - scrut3 = ===(i, 0) - if scrut3 is - true then m - else - tmp17 = w - i - tmp18 = w - i - tmp19 = update_Transform3D_sp_2(m, tmp17, tmp18, 1) - tmp20 = i - 1 - iterID_Transform3D_sp_0(tmp19, w, tmp20) - private fun iterID_Transform3D_sp_1(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_5, obj_6, tup_22, obj_23} - scrut3 = false - tmp17 = 0 - tmp18 = 0 - tup_5 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_6 = new Matrix(tup_5, 4, 4) - tmp19 = obj_6 - tmp20 = 3 - tup_22 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_23 = new Matrix(tup_22, 4, 4) - obj_23 - private fun iterID_Transform3D_sp_2(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_8, obj_9, tup_20, obj_21} - scrut3 = false - tmp17 = 1 - tmp18 = 1 - tup_8 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_9 = new Matrix(tup_8, 4, 4) - tmp19 = obj_9 - tmp20 = 2 - tup_20 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_21 = new Matrix(tup_20, 4, 4) - obj_21 - private fun iterID_Transform3D_sp_3(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_11, obj_12, tup_18, obj_19} - scrut3 = false - tmp17 = 2 - tmp18 = 2 - tup_11 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] - obj_12 = new Matrix(tup_11, 4, 4) - tmp19 = obj_12 - tmp20 = 1 - tup_18 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_19 = new Matrix(tup_18, 4, 4) - obj_19 - private fun iterID_Transform3D_sp_4(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_14, obj_15, tup_16, obj_17} - scrut3 = false - tmp17 = 3 - tmp18 = 3 - tup_14 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_15 = new Matrix(tup_14, 4, 4) - tmp19 = obj_15 - tmp20 = 0 - tup_16 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_17 = new Matrix(tup_16, 4, 4) - obj_17 - private fun iterID_Transform3D_sp_5(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20} - scrut3 = true - m - private fun iterRow_Transform3D_sp_0(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = ===(i, 0) - if scrut2 is - true then m - else - tmp14 = rowX - i - tmp15 = iterCol_Transform3D_sp_0(m, x, y, colX, colY, tmp14, colY) - tmp16 = i - 1 - iterRow(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_1(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 0 - tmp15 = iterCol_Transform3D_sp_1(m, x, y, colX, colY, tmp14, colY) - tmp16 = 3 - iterRow_Transform3D_sp_2(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_10(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = true - m - private fun iterRow_Transform3D_sp_11(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 0 - tmp15 = iterCol_Transform3D_sp_41(m, x, y, colX, colY, tmp14, colY) - tmp16 = 3 - iterRow_Transform3D_sp_12(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_12(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 1 - tmp15 = iterCol_Transform3D_sp_43(m, x, y, colX, colY, tmp14, colY) - tmp16 = 2 - iterRow_Transform3D_sp_13(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_13(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 2 - tmp15 = iterCol_Transform3D_sp_45(m, x, y, colX, colY, tmp14, colY) - tmp16 = 1 - iterRow_Transform3D_sp_14(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_14(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 3 - tmp15 = iterCol_Transform3D_sp_47(m, x, y, colX, colY, tmp14, colY) - tmp16 = 0 - iterRow_Transform3D_sp_15(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_15(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = true - m - private fun iterRow_Transform3D_sp_16(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 0 - tmp15 = iterCol_Transform3D_sp_49(m, x, y, colX, colY, tmp14, colY) - tmp16 = 3 - iterRow_Transform3D_sp_17(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_17(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 1 - tmp15 = iterCol_Transform3D_sp_51(m, x, y, colX, colY, tmp14, colY) - tmp16 = 2 - iterRow_Transform3D_sp_18(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_18(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 2 - tmp15 = iterCol_Transform3D_sp_53(m, x, y, colX, colY, tmp14, colY) - tmp16 = 1 - iterRow_Transform3D_sp_19(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_19(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 3 - tmp15 = iterCol_Transform3D_sp_55(m, x, y, colX, colY, tmp14, colY) - tmp16 = 0 - iterRow_Transform3D_sp_20(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_2(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 1 - tmp15 = iterCol_Transform3D_sp_6(m, x, y, colX, colY, tmp14, colY) - tmp16 = 2 - iterRow_Transform3D_sp_3(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_20(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = true - m - private fun iterRow_Transform3D_sp_21(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 0 - tmp15 = iterCol_Transform3D_sp_57(m, x, y, colX, colY, tmp14, colY) - tmp16 = 3 - iterRow_Transform3D_sp_22(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_22(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 1 - tmp15 = iterCol_Transform3D_sp_59(m, x, y, colX, colY, tmp14, colY) - tmp16 = 2 - iterRow_Transform3D_sp_23(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_23(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 2 - tmp15 = iterCol_Transform3D_sp_61(m, x, y, colX, colY, tmp14, colY) - tmp16 = 1 - iterRow_Transform3D_sp_24(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_24(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 3 - tmp15 = iterCol_Transform3D_sp_63(m, x, y, colX, colY, tmp14, colY) - tmp16 = 0 - iterRow_Transform3D_sp_25(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_25(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = true - m - private fun iterRow_Transform3D_sp_26(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 0 - tmp15 = iterCol_Transform3D_sp_65(m, x, y, colX, colY, tmp14, colY) - tmp16 = 3 - iterRow_Transform3D_sp_27(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_27(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 1 - tmp15 = iterCol_Transform3D_sp_67(m, x, y, colX, colY, tmp14, colY) - tmp16 = 2 - iterRow_Transform3D_sp_28(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_28(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 2 - tmp15 = iterCol_Transform3D_sp_69(m, x, y, colX, colY, tmp14, colY) - tmp16 = 1 - iterRow_Transform3D_sp_29(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_29(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 3 - tmp15 = iterCol_Transform3D_sp_71(m, x, y, colX, colY, tmp14, colY) - tmp16 = 0 - iterRow_Transform3D_sp_30(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_3(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 2 - tmp15 = iterCol_Transform3D_sp_11(m, x, y, colX, colY, tmp14, colY) - tmp16 = 1 - iterRow_Transform3D_sp_4(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_30(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = true - m - private fun iterRow_Transform3D_sp_4(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 3 - tmp15 = iterCol_Transform3D_sp_16(m, x, y, colX, colY, tmp14, colY) - tmp16 = 0 - iterRow_Transform3D_sp_5(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_5(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = true - m - private fun iterRow_Transform3D_sp_6(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 0 - tmp15 = iterCol_Transform3D_sp_21(m, x, y, colX, colY, tmp14, colY) - tmp16 = 3 - iterRow_Transform3D_sp_7(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_7(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 1 - tmp15 = iterCol_Transform3D_sp_26(m, x, y, colX, colY, tmp14, colY) - tmp16 = 2 - iterRow_Transform3D_sp_8(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_8(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 2 - tmp15 = iterCol_Transform3D_sp_31(m, x, y, colX, colY, tmp14, colY) - tmp16 = 1 - iterRow_Transform3D_sp_9(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iterRow_Transform3D_sp_9(m, x, y, rowX, colX, colY, i) = - let {scrut2, tmp14, tmp15, tmp16} - scrut2 = false - tmp14 = 3 - tmp15 = iterCol_Transform3D_sp_36(m, x, y, colX, colY, tmp14, colY) - tmp16 = 0 - iterRow_Transform3D_sp_10(tmp15, x, y, rowX, colX, colY, tmp16) - private fun iter_Transform3D_sp_0(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = >(k, 0) - if scrut is - true then - tmp = *(i, x.c) - tmp1 = tmp + colX - tmp2 = tmp1 - k - tmp3 = colX - k - tmp4 = *(tmp3, y.c) - tmp5 = tmp4 + j - tmp6 = *(x.arr.(tmp2), y.arr.(tmp5)) - tmp7 = 0 + tmp6 - tmp8 = k - 1 - iter(tmp7, x, y, colX, i, j, tmp8) - else 0 - private fun iter_Transform3D_sp_1(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(0), 1) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_2(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_10(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_100(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_101(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(4), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_102(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_102(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 4 - tmp5 = 4 - tmp6 = *(x.arr.(5), y.arr.(4)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_103(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_103(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 8 - tmp5 = 8 - tmp6 = *(x.arr.(6), y.arr.(8)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_104(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_104(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 12 - tmp5 = 12 - tmp6 = *(x.arr.(7), y.arr.(12)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_105(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_105(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_106(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 1 - tmp6 = *(x.arr.(4), y.arr.(1)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_107(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_107(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 4 - tmp5 = 5 - tmp6 = *(x.arr.(5), y.arr.(5)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_108(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_108(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 8 - tmp5 = 9 - tmp6 = *(x.arr.(6), y.arr.(9)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_109(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_109(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 12 - tmp5 = 13 - tmp6 = *(x.arr.(7), y.arr.(13)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_110(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_11(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 2 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_12(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_110(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_111(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 2 - tmp6 = *(x.arr.(4), y.arr.(2)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_112(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_112(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 4 - tmp5 = 6 - tmp6 = *(x.arr.(5), y.arr.(6)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_113(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_113(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 8 - tmp5 = 10 - tmp6 = *(x.arr.(6), y.arr.(10)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_114(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_114(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 12 - tmp5 = 14 - tmp6 = *(x.arr.(7), y.arr.(14)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_115(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_115(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_116(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 3 - tmp6 = *(x.arr.(4), y.arr.(3)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_117(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_117(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 4 - tmp5 = 7 - tmp6 = *(x.arr.(5), y.arr.(7)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_118(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_118(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 8 - tmp5 = 11 - tmp6 = *(x.arr.(6), y.arr.(11)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_119(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_119(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 12 - tmp5 = 15 - tmp6 = *(x.arr.(7), y.arr.(15)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_120(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_12(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 4 - tmp5 = 6 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_13(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_120(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_121(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(8), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_122(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_122(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 4 - tmp5 = 4 - tmp6 = *(x.arr.(9), y.arr.(4)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_123(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_123(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 8 - tmp5 = 8 - tmp6 = *(x.arr.(10), y.arr.(8)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_124(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_124(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 12 - tmp5 = 12 - tmp6 = *(x.arr.(11), y.arr.(12)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_125(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_125(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_126(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 1 - tmp6 = *(x.arr.(8), y.arr.(1)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_127(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_127(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 4 - tmp5 = 5 - tmp6 = *(x.arr.(9), y.arr.(5)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_128(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_128(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 8 - tmp5 = 9 - tmp6 = *(x.arr.(10), y.arr.(9)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_129(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_129(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 12 - tmp5 = 13 - tmp6 = *(x.arr.(11), y.arr.(13)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_130(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_13(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 8 - tmp5 = 10 - tmp6 = *(x.arr.(2), 1) - tmp7 = 0 + tmp6 - tmp8 = 1 - iter_Transform3D_sp_14(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_130(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_131(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 2 - tmp6 = *(x.arr.(8), y.arr.(2)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_132(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_132(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 4 - tmp5 = 6 - tmp6 = *(x.arr.(9), y.arr.(6)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_133(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_133(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 8 - tmp5 = 10 - tmp6 = *(x.arr.(10), y.arr.(10)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_134(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_134(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 12 - tmp5 = 14 - tmp6 = *(x.arr.(11), y.arr.(14)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_135(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_135(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_136(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 3 - tmp6 = *(x.arr.(8), y.arr.(3)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_137(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_137(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 4 - tmp5 = 7 - tmp6 = *(x.arr.(9), y.arr.(7)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_138(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_138(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 8 - tmp5 = 11 - tmp6 = *(x.arr.(10), y.arr.(11)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_139(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_139(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 12 - tmp5 = 15 - tmp6 = *(x.arr.(11), y.arr.(15)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_140(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_14(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 12 - tmp5 = 14 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_15(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_140(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_141(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(12), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_142(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_142(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 4 - tmp5 = 4 - tmp6 = *(x.arr.(13), y.arr.(4)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_143(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_143(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 8 - tmp5 = 8 - tmp6 = *(x.arr.(14), y.arr.(8)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_144(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_144(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 12 - tmp5 = 12 - tmp6 = *(x.arr.(15), y.arr.(12)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_145(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_145(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_146(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 1 - tmp6 = *(x.arr.(12), y.arr.(1)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_147(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_147(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 4 - tmp5 = 5 - tmp6 = *(x.arr.(13), y.arr.(5)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_148(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_148(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 8 - tmp5 = 9 - tmp6 = *(x.arr.(14), y.arr.(9)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_149(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_149(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 12 - tmp5 = 13 - tmp6 = *(x.arr.(15), y.arr.(13)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_150(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_15(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_150(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_151(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 2 - tmp6 = *(x.arr.(12), y.arr.(2)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_152(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_152(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 4 - tmp5 = 6 - tmp6 = *(x.arr.(13), y.arr.(6)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_153(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_153(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 8 - tmp5 = 10 - tmp6 = *(x.arr.(14), y.arr.(10)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_154(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_154(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 12 - tmp5 = 14 - tmp6 = *(x.arr.(15), y.arr.(14)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_155(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_155(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_156(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 3 - tmp6 = *(x.arr.(12), y.arr.(3)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_157(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_157(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 4 - tmp5 = 7 - tmp6 = *(x.arr.(13), y.arr.(7)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_158(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_158(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 8 - tmp5 = 11 - tmp6 = *(x.arr.(14), y.arr.(11)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_159(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_159(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 12 - tmp5 = 15 - tmp6 = *(x.arr.(15), y.arr.(15)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_160(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_16(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 3 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_17(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_160(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_161(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(0), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_162(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_162(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(x.arr.(1), y.arr.(1)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_163(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_163(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(x.arr.(2), y.arr.(2)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_164(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_164(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(x.arr.(3), 1) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_165(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_165(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_166(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(4), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_167(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_167(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(x.arr.(5), y.arr.(1)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_168(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_168(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(x.arr.(6), y.arr.(2)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_169(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_169(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(x.arr.(7), 1) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_170(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_17(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 4 - tmp5 = 7 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_18(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_170(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_171(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(8), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_172(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_172(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(x.arr.(9), y.arr.(1)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_173(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_173(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(x.arr.(10), y.arr.(2)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_174(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_174(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(x.arr.(11), 1) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_175(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_175(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_176(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(12), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_177(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_177(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(x.arr.(13), y.arr.(1)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_178(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_178(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(x.arr.(14), y.arr.(2)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_179(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_179(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(x.arr.(15), 1) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_180(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_18(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 8 - tmp5 = 11 - tmp6 = 0 - tmp7 = 0 - tmp8 = 1 - iter_Transform3D_sp_19(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_180(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_181(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(0), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_182(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_182(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(x.arr.(1), y.arr.(1)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_183(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_183(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(x.arr.(2), y.arr.(2)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_184(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_184(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(x.arr.(3), y.arr.(3)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_185(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_185(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_186(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(4), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_187(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_187(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(x.arr.(5), y.arr.(1)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_188(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_188(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(x.arr.(6), y.arr.(2)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_189(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_189(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(x.arr.(7), y.arr.(3)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_190(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_19(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 12 - tmp5 = 15 - tmp6 = *(x.arr.(3), 1) - tmp7 = 0 + tmp6 - tmp8 = 0 - iter_Transform3D_sp_20(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_190(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_191(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(8), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_192(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_192(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(x.arr.(9), y.arr.(1)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_193(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_193(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(x.arr.(10), y.arr.(2)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_194(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_194(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(x.arr.(11), y.arr.(3)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_195(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_195(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_196(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(12), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_197(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_197(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(x.arr.(13), y.arr.(1)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_198(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_198(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(x.arr.(14), y.arr.(2)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_199(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_199(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(x.arr.(15), y.arr.(3)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_200(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_2(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 4 - tmp5 = 4 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 2 - iter_Transform3D_sp_3(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_20(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_200(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_201(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(0.4, y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_202(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_202(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 2 - iter_Transform3D_sp_203(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_203(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_204(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_204(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_205(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_205(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_206(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_207(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_207(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(0.19, y.arr.(1)) - tmp7 = 0 + tmp6 - tmp8 = 2 - iter_Transform3D_sp_208(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_208(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_209(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_209(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_210(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_21(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(4), 1) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_22(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_210(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_211(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_212(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_212(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_213(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_213(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(0.19, y.arr.(2)) - tmp7 = 0 + tmp6 - tmp8 = 1 - iter_Transform3D_sp_214(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_214(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_215(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_215(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_216(sum, x, y, colX, i, j, k) = 1 - private fun iter_Transform3D_sp_217(sum, x, y, colX, i, j, k) = 1 - private fun iter_Transform3D_sp_218(sum, x, y, colX, i, j, k) = 1 - private fun iter_Transform3D_sp_219(sum, x, y, colX, i, j, k) = 1 - private fun iter_Transform3D_sp_22(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 4 - tmp5 = 4 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 2 - iter_Transform3D_sp_23(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_220(sum, x, y, colX, i, j, k) = 1 - private fun iter_Transform3D_sp_221(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(1, y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_222(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_222(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 2 - iter_Transform3D_sp_223(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_223(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_224(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_224(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(11, y.arr.(3)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_225(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_225(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_226(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_227(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_227(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = *(1, y.arr.(1)) - tmp7 = 0 + tmp6 - tmp8 = 2 - iter_Transform3D_sp_228(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_228(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_229(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_229(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(4, y.arr.(3)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_230(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_23(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 8 - tmp5 = 8 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_24(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_230(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_231(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_232(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_232(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_233(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_233(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = *(1, y.arr.(2)) - tmp7 = 0 + tmp6 - tmp8 = 1 - iter_Transform3D_sp_234(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_234(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(51, y.arr.(3)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_235(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_235(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_236(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_237(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_237(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 1 - tmp5 = 1 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_238(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_238(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 2 - tmp5 = 2 - tmp6 = 0 - tmp7 = 0 - tmp8 = 1 - iter_Transform3D_sp_239(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_239(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 3 - tmp5 = 3 - tmp6 = *(1, y.arr.(3)) - tmp7 = 0 + tmp6 - tmp8 = 0 - iter_Transform3D_sp_240(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_24(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 12 - tmp5 = 12 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_25(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_240(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_25(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_26(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 1 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_27(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_27(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 4 - tmp5 = 5 - tmp6 = *(x.arr.(5), 1) - tmp7 = 0 + tmp6 - tmp8 = 2 - iter_Transform3D_sp_28(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_28(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 8 - tmp5 = 9 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_29(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_29(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 12 - tmp5 = 13 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_30(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_3(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 8 - tmp5 = 8 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_4(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_30(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_31(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 2 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_32(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_32(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 4 - tmp5 = 6 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_33(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_33(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 8 - tmp5 = 10 - tmp6 = *(x.arr.(6), 1) - tmp7 = 0 + tmp6 - tmp8 = 1 - iter_Transform3D_sp_34(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_34(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 12 - tmp5 = 14 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_35(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_35(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_36(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 4 - tmp3 = 0 - tmp4 = 0 - tmp5 = 3 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_37(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_37(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 5 - tmp3 = 1 - tmp4 = 4 - tmp5 = 7 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_38(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_38(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 6 - tmp3 = 2 - tmp4 = 8 - tmp5 = 11 - tmp6 = 0 - tmp7 = 0 - tmp8 = 1 - iter_Transform3D_sp_39(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_39(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 4 - tmp1 = 8 - tmp2 = 7 - tmp3 = 3 - tmp4 = 12 - tmp5 = 15 - tmp6 = *(x.arr.(7), 1) - tmp7 = 0 + tmp6 - tmp8 = 0 - iter_Transform3D_sp_40(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_4(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 12 - tmp5 = 12 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_5(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_40(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_41(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(8), 1) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_42(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_42(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 4 - tmp5 = 4 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 2 - iter_Transform3D_sp_43(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_43(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 8 - tmp5 = 8 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_44(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_44(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 12 - tmp5 = 12 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_45(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_45(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_46(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 1 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_47(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_47(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 4 - tmp5 = 5 - tmp6 = *(x.arr.(9), 1) - tmp7 = 0 + tmp6 - tmp8 = 2 - iter_Transform3D_sp_48(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_48(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 8 - tmp5 = 9 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_49(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_49(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 12 - tmp5 = 13 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_50(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_5(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_50(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_51(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 2 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_52(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_52(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 4 - tmp5 = 6 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_53(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_53(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 8 - tmp5 = 10 - tmp6 = *(x.arr.(10), 1) - tmp7 = 0 + tmp6 - tmp8 = 1 - iter_Transform3D_sp_54(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_54(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 12 - tmp5 = 14 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_55(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_55(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_56(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 8 - tmp3 = 0 - tmp4 = 0 - tmp5 = 3 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_57(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_57(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 9 - tmp3 = 1 - tmp4 = 4 - tmp5 = 7 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_58(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_58(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 10 - tmp3 = 2 - tmp4 = 8 - tmp5 = 11 - tmp6 = 0 - tmp7 = 0 - tmp8 = 1 - iter_Transform3D_sp_59(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_59(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 8 - tmp1 = 12 - tmp2 = 11 - tmp3 = 3 - tmp4 = 12 - tmp5 = 15 - tmp6 = *(x.arr.(11), 1) - tmp7 = 0 + tmp6 - tmp8 = 0 - iter_Transform3D_sp_60(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_6(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 1 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_7(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_60(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_61(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(12), 1) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_62(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_62(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 4 - tmp5 = 4 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 2 - iter_Transform3D_sp_63(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_63(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 8 - tmp5 = 8 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_64(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_64(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 12 - tmp5 = 12 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_65(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_65(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_66(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 1 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_67(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_67(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 4 - tmp5 = 5 - tmp6 = *(x.arr.(13), 1) - tmp7 = 0 + tmp6 - tmp8 = 2 - iter_Transform3D_sp_68(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_68(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 8 - tmp5 = 9 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_69(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_69(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 12 - tmp5 = 13 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_70(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_7(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 4 - tmp5 = 5 - tmp6 = *(x.arr.(1), 1) - tmp7 = 0 + tmp6 - tmp8 = 2 - iter_Transform3D_sp_8(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_70(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_71(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 2 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_72(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_72(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 4 - tmp5 = 6 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_73(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_73(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 8 - tmp5 = 10 - tmp6 = *(x.arr.(14), 1) - tmp7 = 0 + tmp6 - tmp8 = 1 - iter_Transform3D_sp_74(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_74(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 12 - tmp5 = 14 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_75(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_75(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_76(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 12 - tmp3 = 0 - tmp4 = 0 - tmp5 = 3 - tmp6 = 0 - tmp7 = 0 - tmp8 = 3 - iter_Transform3D_sp_77(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_77(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 13 - tmp3 = 1 - tmp4 = 4 - tmp5 = 7 - tmp6 = 0 - tmp7 = 0 - tmp8 = 2 - iter_Transform3D_sp_78(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_78(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 14 - tmp3 = 2 - tmp4 = 8 - tmp5 = 11 - tmp6 = 0 - tmp7 = 0 - tmp8 = 1 - iter_Transform3D_sp_79(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_79(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 12 - tmp1 = 16 - tmp2 = 15 - tmp3 = 3 - tmp4 = 12 - tmp5 = 15 - tmp6 = *(x.arr.(15), 1) - tmp7 = 0 + tmp6 - tmp8 = 0 - iter_Transform3D_sp_80(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_8(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 8 - tmp5 = 9 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 1 - iter_Transform3D_sp_9(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_80(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_81(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 0 - tmp6 = *(x.arr.(0), y.arr.(0)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_82(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_82(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 4 - tmp5 = 4 - tmp6 = *(x.arr.(1), y.arr.(4)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_83(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_83(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 8 - tmp5 = 8 - tmp6 = *(x.arr.(2), y.arr.(8)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_84(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_84(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 12 - tmp5 = 12 - tmp6 = *(x.arr.(3), y.arr.(12)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_85(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_85(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_86(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 1 - tmp6 = *(x.arr.(0), y.arr.(1)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_87(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_87(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 4 - tmp5 = 5 - tmp6 = *(x.arr.(1), y.arr.(5)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_88(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_88(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 8 - tmp5 = 9 - tmp6 = *(x.arr.(2), y.arr.(9)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_89(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_89(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 12 - tmp5 = 13 - tmp6 = *(x.arr.(3), y.arr.(13)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_90(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_9(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 12 - tmp5 = 13 - tmp6 = 0 - tmp7 = sum + 0 - tmp8 = 0 - iter_Transform3D_sp_10(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_90(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_91(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 2 - tmp6 = *(x.arr.(0), y.arr.(2)) - tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_92(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_92(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 4 - tmp5 = 6 - tmp6 = *(x.arr.(1), y.arr.(6)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_93(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_93(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 8 - tmp5 = 10 - tmp6 = *(x.arr.(2), y.arr.(10)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_94(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_94(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 12 - tmp5 = 14 - tmp6 = *(x.arr.(3), y.arr.(14)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_95(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_95(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = false - sum - private fun iter_Transform3D_sp_96(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 0 - tmp3 = 0 - tmp4 = 0 - tmp5 = 3 - tmp6 = *(x.arr.(0), y.arr.(3)) +open Transform3D +fun ident_Transform3D_sp_0(w) = + let {m3, tup_2, obj_3, tup_24, obj_25} + tup_2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + obj_3 = new Matrix(tup_2, 4, 4) + m3 = obj_3 + tup_24 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_25 = new Matrix(tup_24, 4, 4) + obj_25 +fun iterCol_Transform3D_sp_0(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = ===(j, 0) + if scrut1 is + true then m + else + tmp9 = colY - j + tmp10 = colY - j + tmp11 = iter_Transform3D_sp_0(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_0(m, i, tmp9, tmp11) + tmp13 = j - 1 + iterCol_Transform3D_sp_0(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_1(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_1(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_20(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_2(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_10(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_11(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_41(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_17(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_12(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_12(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_46(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_15(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_13(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_13(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_51(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_12(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_14(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_14(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_56(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_9(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_15(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_15(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_16(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_61(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_22(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_17(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_17(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_66(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_23(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_18(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_18(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_71(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_24(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_19(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_19(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_76(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_25(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_20(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_2(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_6(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_18(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_3(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_20(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_21(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_81(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_20(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_22(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_22(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_86(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_18(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_23(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_23(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_91(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_16(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_24(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_24(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_96(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_21(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_25(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_25(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_26(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_101(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_19(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_27(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_27(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_106(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_11(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_28(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_28(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_111(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_14(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_29(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_29(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_116(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_8(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_30(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_3(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_11(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_16(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_4(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_30(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_31(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_121(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_17(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_32(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_32(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_126(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_15(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_33(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_33(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_131(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_12(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_34(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_34(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_136(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_9(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_35(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_35(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_36(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_141(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_22(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_37(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_37(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_146(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_23(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_38(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_38(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_151(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_24(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_39(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_39(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_156(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_25(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_40(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_4(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_16(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_21(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_5(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_40(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_41(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_161(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_42(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_42(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_43(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_166(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_44(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_44(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_45(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_171(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_46(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_46(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_47(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_176(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_29(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_48(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_48(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_49(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_181(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_50(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_5(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_50(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_51(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_186(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_52(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_52(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_53(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_191(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_54(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_54(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_55(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_196(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_29(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_56(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_56(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_57(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_201(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_58(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_58(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_59(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_206(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_60(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_6(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_21(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_19(m, i, tmp9, tmp11) + tmp13 = 3 + iterCol_Transform3D_sp_7(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_60(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_61(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_211(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_62(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_62(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_63(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = 1 + tmp12 = update_Transform3D_sp_36(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_64(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_64(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_65(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_221(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_26(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_66(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_66(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_67(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_226(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_27(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_68(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_68(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_69(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_231(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_28(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_70(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_7(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 1 + tmp10 = 1 + tmp11 = iter_Transform3D_sp_26(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_11(m, i, tmp9, tmp11) + tmp13 = 2 + iterCol_Transform3D_sp_8(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_70(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_71(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 0 + tmp10 = 0 + tmp11 = iter_Transform3D_sp_236(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_29(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_72(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_72(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = true + m +fun iterCol_Transform3D_sp_8(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 2 + tmp10 = 2 + tmp11 = iter_Transform3D_sp_31(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_14(m, i, tmp9, tmp11) + tmp13 = 1 + iterCol_Transform3D_sp_9(tmp12, x, y, colX, colY, i, tmp13) +fun iterCol_Transform3D_sp_9(m, x, y, colX, colY, i, j) = + let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} + scrut1 = false + tmp9 = 3 + tmp10 = 3 + tmp11 = iter_Transform3D_sp_36(0, x, y, colX, i, tmp10, colX) + tmp12 = update_Transform3D_sp_8(m, i, tmp9, tmp11) + tmp13 = 0 + iterCol_Transform3D_sp_10(tmp12, x, y, colX, colY, i, tmp13) +fun iterID_Transform3D_sp_0(m, w, i) = + let {scrut3, tmp17, tmp18, tmp19, tmp20} + scrut3 = ===(i, 0) + if scrut3 is + true then m + else + tmp17 = w - i + tmp18 = w - i + tmp19 = update_Transform3D_sp_2(m, tmp17, tmp18, 1) + tmp20 = i - 1 + iterID_Transform3D_sp_0(tmp19, w, tmp20) +fun iterID_Transform3D_sp_1(m, w, i) = + let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_5, obj_6, tup_22, obj_23} + scrut3 = false + tmp17 = 0 + tmp18 = 0 + tup_5 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + obj_6 = new Matrix(tup_5, 4, 4) + tmp19 = obj_6 + tmp20 = 3 + tup_22 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_23 = new Matrix(tup_22, 4, 4) + obj_23 +fun iterID_Transform3D_sp_2(m, w, i) = + let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_8, obj_9, tup_20, obj_21} + scrut3 = false + tmp17 = 1 + tmp18 = 1 + tup_8 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + obj_9 = new Matrix(tup_8, 4, 4) + tmp19 = obj_9 + tmp20 = 2 + tup_20 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_21 = new Matrix(tup_20, 4, 4) + obj_21 +fun iterID_Transform3D_sp_3(m, w, i) = + let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_11, obj_12, tup_18, obj_19} + scrut3 = false + tmp17 = 2 + tmp18 = 2 + tup_11 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] + obj_12 = new Matrix(tup_11, 4, 4) + tmp19 = obj_12 + tmp20 = 1 + tup_18 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_19 = new Matrix(tup_18, 4, 4) + obj_19 +fun iterID_Transform3D_sp_4(m, w, i) = + let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_14, obj_15, tup_16, obj_17} + scrut3 = false + tmp17 = 3 + tmp18 = 3 + tup_14 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_15 = new Matrix(tup_14, 4, 4) + tmp19 = obj_15 + tmp20 = 0 + tup_16 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_17 = new Matrix(tup_16, 4, 4) + obj_17 +fun iterID_Transform3D_sp_5(m, w, i) = + let {scrut3, tmp17, tmp18, tmp19, tmp20} + scrut3 = true + m +fun iterRow_Transform3D_sp_0(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = ===(i, 0) + if scrut2 is + true then m + else + tmp14 = rowX - i + tmp15 = iterCol_Transform3D_sp_0(m, x, y, colX, colY, tmp14, colY) + tmp16 = i - 1 + iterRow(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_1(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_1(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_2(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_10(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m +fun iterRow_Transform3D_sp_11(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_41(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_12(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_12(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_43(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_13(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_13(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_45(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_14(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_14(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_47(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_15(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_15(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m +fun iterRow_Transform3D_sp_16(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_49(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_17(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_17(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_51(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_18(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_18(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_53(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_19(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_19(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_55(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_20(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_2(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_6(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_3(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_20(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m +fun iterRow_Transform3D_sp_21(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_57(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_22(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_22(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_59(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_23(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_23(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_61(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_24(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_24(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_63(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_25(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_25(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m +fun iterRow_Transform3D_sp_26(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_65(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_27(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_27(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_67(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_28(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_28(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_69(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_29(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_29(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_71(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_30(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_3(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_11(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_4(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_30(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m +fun iterRow_Transform3D_sp_4(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_16(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_5(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_5(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = true + m +fun iterRow_Transform3D_sp_6(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 0 + tmp15 = iterCol_Transform3D_sp_21(m, x, y, colX, colY, tmp14, colY) + tmp16 = 3 + iterRow_Transform3D_sp_7(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_7(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 1 + tmp15 = iterCol_Transform3D_sp_26(m, x, y, colX, colY, tmp14, colY) + tmp16 = 2 + iterRow_Transform3D_sp_8(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_8(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 2 + tmp15 = iterCol_Transform3D_sp_31(m, x, y, colX, colY, tmp14, colY) + tmp16 = 1 + iterRow_Transform3D_sp_9(tmp15, x, y, rowX, colX, colY, tmp16) +fun iterRow_Transform3D_sp_9(m, x, y, rowX, colX, colY, i) = + let {scrut2, tmp14, tmp15, tmp16} + scrut2 = false + tmp14 = 3 + tmp15 = iterCol_Transform3D_sp_36(m, x, y, colX, colY, tmp14, colY) + tmp16 = 0 + iterRow_Transform3D_sp_10(tmp15, x, y, rowX, colX, colY, tmp16) +fun iter_Transform3D_sp_0(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = >(k, 0) + if scrut is + true then + tmp = *(i, x.c) + tmp1 = tmp + colX + tmp2 = tmp1 - k + tmp3 = colX - k + tmp4 = *(tmp3, y.c) + tmp5 = tmp4 + j + tmp6 = *(x.arr.(tmp2), y.arr.(tmp5)) tmp7 = 0 + tmp6 - tmp8 = 3 - iter_Transform3D_sp_97(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_97(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 1 - tmp3 = 1 - tmp4 = 4 - tmp5 = 7 - tmp6 = *(x.arr.(1), y.arr.(7)) - tmp7 = sum + tmp6 - tmp8 = 2 - iter_Transform3D_sp_98(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_98(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 2 - tmp3 = 2 - tmp4 = 8 - tmp5 = 11 - tmp6 = *(x.arr.(2), y.arr.(11)) - tmp7 = sum + tmp6 - tmp8 = 1 - iter_Transform3D_sp_99(tmp7, x, y, colX, i, j, tmp8) - private fun iter_Transform3D_sp_99(sum, x, y, colX, i, j, k) = - let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} - scrut = true - tmp = 0 - tmp1 = 4 - tmp2 = 3 - tmp3 = 3 - tmp4 = 12 - tmp5 = 15 - tmp6 = *(x.arr.(3), y.arr.(15)) - tmp7 = sum + tmp6 - tmp8 = 0 - iter_Transform3D_sp_100(tmp7, x, y, colX, i, j, tmp8) - private fun model_Transform3D_sp_0(local, position, scaling, rotation) = - let {rot, res1, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58, tup_53, obj_54, tup_66, obj_67, tup_79, obj_80} - tmp47 = rotateZ_Transform3D_sp_0(rotation.2) - tmp48 = rotateY_Transform3D_sp_0(rotation.1) - tmp49 = rotateX_Transform3D_sp_0(rotation.0) - tup_53 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_54 = new Matrix(tup_53, 4, 4) - tmp50 = obj_54 - tmp51 = multiply_Transform3D_sp_0(tmp49, tmp50) - tmp52 = multiply_Transform3D_sp_1(tmp48, tmp51) - rot = multiply_Transform3D_sp_1(tmp47, tmp52) - tup_66 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] - obj_67 = new Matrix(tup_66, 4, 4) - tmp53 = obj_67 - tup_79 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] - obj_80 = new Matrix(tup_79, 4, 4) - tmp54 = obj_80 - tmp55 = [local.0, local.1, local.2, 1] - tmp56 = new Matrix(tmp55, 4, 1) - tmp57 = multiply_Transform3D_sp_4(tmp54, tmp56) - tmp58 = multiply_Transform3D_sp_3(rot, tmp57) - res1 = multiply_Transform3D_sp_5(tmp53, tmp58) - [res1.arr.0, res1.arr.1, res1.arr.2] - private fun multiply_Transform3D_sp_0(x, y) = - let {res, tup_38, obj_39} - tup_38 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_39 = new Matrix(tup_38, 4, 4) - res = obj_39 - iterRow_Transform3D_sp_1(res, x, y, x.r, x.c, y.c, x.r) - private fun multiply_Transform3D_sp_1(x, y) = - let {res, tup_40, obj_41} - tup_40 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_41 = new Matrix(tup_40, 4, 4) - res = obj_41 - iterRow_Transform3D_sp_6(res, x, y, x.r, x.c, y.c, x.r) - private fun multiply_Transform3D_sp_2(x, y) = - let {res, tup_43, obj_44} - tup_43 = [0, 0, 0, 0] - obj_44 = new Matrix(tup_43, 4, 1) - res = obj_44 - iterRow_Transform3D_sp_11(res, x, y, x.r, x.c, y.c, x.r) - private fun multiply_Transform3D_sp_3(x, y) = - let {res, tup_45, obj_46} - tup_45 = [0, 0, 0, 0] - obj_46 = new Matrix(tup_45, 4, 1) - res = obj_46 - iterRow_Transform3D_sp_16(res, x, y, x.r, x.c, y.c, x.r) - private fun multiply_Transform3D_sp_4(x, y) = - let {res, tup_81, obj_82} - tup_81 = [0, 0, 0, 0] - obj_82 = new Matrix(tup_81, 4, 1) - res = obj_82 - iterRow_Transform3D_sp_21(res, x, y, x.r, x.c, y.c, x.r) - private fun multiply_Transform3D_sp_5(x, y) = - let {res, tup_83, obj_84} - tup_83 = [0, 0, 0, 0] - obj_84 = new Matrix(tup_83, 4, 1) - res = obj_84 - iterRow_Transform3D_sp_26(res, x, y, x.r, x.c, y.c, x.r) - private fun rotateX_Transform3D_sp_0(angle) = - let {s, c2, tmp32, tmp33, tmp34, tmp35, tmp36, tup_51, obj_52} - s = Math.sin(2.51327412) - c2 = Math.cos(2.51327412) - tup_51 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_52 = new Matrix(tup_51, 4, 4) - tmp32 = obj_52 - tmp33 = update_Transform3D_sp_13(tmp32, 1, 1, c2) - tmp34 = -(s) - tmp35 = update_Transform3D_sp_14(tmp33, 1, 2, tmp34) - tmp36 = update_Transform3D_sp_15(tmp35, 2, 1, s) - update_Transform3D_sp_12(tmp36, 2, 2, c2) - private fun rotateY_Transform3D_sp_0(angle) = - let {s1, c3, tmp37, tmp38, tmp39, tmp40, tmp41, tup_49, obj_50} - s1 = Math.sin(3.1415926535) - c3 = Math.cos(3.1415926535) - tup_49 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_50 = new Matrix(tup_49, 4, 4) - tmp37 = obj_50 - tmp38 = update_Transform3D_sp_10(tmp37, 0, 0, c3) - tmp39 = update_Transform3D_sp_16(tmp38, 0, 2, s1) - tmp40 = -(s1) - tmp41 = update_Transform3D_sp_17(tmp39, 2, 0, tmp40) - update_Transform3D_sp_12(tmp41, 2, 2, c3) - private fun rotateZ_Transform3D_sp_0(angle) = - let {s2, c4, tmp42, tmp43, tmp44, tmp45, tmp46, tup_47, obj_48} - s2 = Math.sin(0) - c4 = Math.cos(0) - tup_47 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_48 = new Matrix(tup_47, 4, 4) - tmp42 = obj_48 - tmp43 = update_Transform3D_sp_10(tmp42, 0, 0, c4) - tmp44 = -(s2) - tmp45 = update_Transform3D_sp_18(tmp43, 0, 1, tmp44) - tmp46 = update_Transform3D_sp_19(tmp45, 1, 0, s2) - update_Transform3D_sp_11(tmp46, 1, 1, c4) - private fun scale_Transform3D_sp_0(sx, sy, sz) = - let {tmp29, tmp30, tmp31, tup_68, obj_69, tup_71, obj_72, tup_74, obj_75, tup_77, obj_78} - tup_68 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_69 = new Matrix(tup_68, 4, 4) - tmp29 = obj_69 - tup_71 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_72 = new Matrix(tup_71, 4, 4) - tmp30 = obj_72 - tup_74 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_75 = new Matrix(tup_74, 4, 4) - tmp31 = obj_75 - tup_77 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] - obj_78 = new Matrix(tup_77, 4, 4) - obj_78 - private fun transform_Transform3D_sp_0(dx, dy, dz) = - let {tmp26, tmp27, tmp28, tup_55, obj_56, tup_58, obj_59, tup_61, obj_62, tup_64, obj_65} - tup_55 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_56 = new Matrix(tup_55, 4, 4) - tmp26 = obj_56 - tup_58 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_59 = new Matrix(tup_58, 4, 4) - tmp27 = obj_59 - tup_61 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] - obj_62 = new Matrix(tup_61, 4, 4) - tmp28 = obj_62 - tup_64 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] - obj_65 = new Matrix(tup_64, 4, 4) - obj_65 - private fun update_Transform3D_sp_0(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = *(i, m.c) - tmp24 = tmp23 + j - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_1(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = *(i, m.c) - tmp24 = tmp23 + j - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, 1) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_10(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 0 - tmp24 = 0 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 0, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_11(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 4 - tmp24 = 5 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 5, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_12(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 8 - tmp24 = 10 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 10, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_13(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 4 - tmp24 = 5 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 5, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_14(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 4 - tmp24 = 6 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 6, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_15(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 8 - tmp24 = 9 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 9, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_16(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 0 - tmp24 = 2 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 2, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_17(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 8 - tmp24 = 8 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 8, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_18(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 0 - tmp24 = 1 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 1, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_19(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 4 - tmp24 = 4 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 4, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_2(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = *(i, m.c) - tmp24 = tmp23 + j - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, 1) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_20(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 0 - tmp24 = 0 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 0, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_21(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 0 - tmp24 = 3 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_22(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 12 - tmp24 = 12 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 12, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_23(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 12 - tmp24 = 13 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 13, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_24(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 12 - tmp24 = 14 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 14, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_25(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 12 - tmp24 = 15 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 15, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_26(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 0 - tmp24 = 0 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 0, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_27(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 1 - tmp24 = 1 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 1, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_28(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 2 - tmp24 = 2 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 2, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_29(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 3 - tmp24 = 3 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_3(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_4} - tmp23 = 0 - tmp24 = 0 - tup_4 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - tmp25 = tup_4 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_30(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_57} - tmp23 = 0 - tmp24 = 3 - tup_57 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_57 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_31(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_60} - tmp23 = 4 - tmp24 = 7 - tup_60 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_60 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_32(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_63} - tmp23 = 8 - tmp24 = 11 - tup_63 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] - tmp25 = tup_63 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_33(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_70} - tmp23 = 0 - tmp24 = 0 - tup_70 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_70 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_34(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_73} - tmp23 = 4 - tmp24 = 5 - tup_73 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_73 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_35(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_76} - tmp23 = 8 - tmp24 = 10 - tup_76 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] - tmp25 = tup_76 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_36(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 3 - tmp24 = 3 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, 1) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_4(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_7} - tmp23 = 4 - tmp24 = 5 - tup_7 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - tmp25 = tup_7 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_5(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_10} - tmp23 = 8 - tmp24 = 10 - tup_10 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] - tmp25 = tup_10 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_6(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_13} - tmp23 = 12 - tmp24 = 15 - tup_13 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_13 - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_7(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 0 - tmp24 = 3 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_8(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 4 - tmp24 = 7 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 7, v) - new Matrix(tmp25, m.r, m.c) - private fun update_Transform3D_sp_9(m, i, j, v) = - let {tmp23, tmp24, tmp25} - tmp23 = 8 - tmp24 = 11 - tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 11, v) - new Matrix(tmp25, m.r, m.c) - private fun zeros_Transform3D_sp_0(r, c) = - let {tmp21, tmp22, tup_1} - tmp21 = 16 - tup_1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - tmp22 = tup_1 - new Matrix(tmp22, r, c) - private fun zeros_Transform3D_sp_1(r, c) = - let {tmp21, tmp22, tup_42} - tmp21 = 4 - tup_42 = [0, 0, 0, 0] - tmp22 = tup_42 - new Matrix(tmp22, r, c) \ No newline at end of file + tmp8 = k - 1 + iter(tmp7, x, y, colX, i, j, tmp8) + else 0 +fun iter_Transform3D_sp_1(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(0), 1) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_2(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_10(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_100(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_101(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(4), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_102(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_102(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = *(x.arr.(5), y.arr.(4)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_103(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_103(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = *(x.arr.(6), y.arr.(8)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_104(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_104(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = *(x.arr.(7), y.arr.(12)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_105(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_105(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_106(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = *(x.arr.(4), y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_107(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_107(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(5), y.arr.(5)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_108(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_108(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = *(x.arr.(6), y.arr.(9)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_109(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_109(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = *(x.arr.(7), y.arr.(13)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_110(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_11(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_12(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_110(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_111(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = *(x.arr.(4), y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_112(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_112(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = *(x.arr.(5), y.arr.(6)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_113(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_113(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(6), y.arr.(10)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_114(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_114(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = *(x.arr.(7), y.arr.(14)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_115(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_115(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_116(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = *(x.arr.(4), y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_117(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_117(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = *(x.arr.(5), y.arr.(7)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_118(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_118(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = *(x.arr.(6), y.arr.(11)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_119(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_119(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(7), y.arr.(15)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_120(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_12(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_13(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_120(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_121(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(8), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_122(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_122(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = *(x.arr.(9), y.arr.(4)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_123(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_123(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = *(x.arr.(10), y.arr.(8)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_124(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_124(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = *(x.arr.(11), y.arr.(12)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_125(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_125(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_126(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = *(x.arr.(8), y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_127(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_127(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(9), y.arr.(5)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_128(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_128(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = *(x.arr.(10), y.arr.(9)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_129(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_129(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = *(x.arr.(11), y.arr.(13)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_130(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_13(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(2), 1) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_14(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_130(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_131(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = *(x.arr.(8), y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_132(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_132(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = *(x.arr.(9), y.arr.(6)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_133(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_133(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(10), y.arr.(10)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_134(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_134(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = *(x.arr.(11), y.arr.(14)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_135(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_135(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_136(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = *(x.arr.(8), y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_137(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_137(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = *(x.arr.(9), y.arr.(7)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_138(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_138(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = *(x.arr.(10), y.arr.(11)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_139(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_139(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(11), y.arr.(15)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_140(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_14(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_15(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_140(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_141(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(12), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_142(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_142(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = *(x.arr.(13), y.arr.(4)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_143(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_143(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = *(x.arr.(14), y.arr.(8)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_144(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_144(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = *(x.arr.(15), y.arr.(12)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_145(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_145(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_146(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = *(x.arr.(12), y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_147(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_147(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(13), y.arr.(5)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_148(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_148(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = *(x.arr.(14), y.arr.(9)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_149(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_149(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = *(x.arr.(15), y.arr.(13)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_150(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_15(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_150(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_151(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = *(x.arr.(12), y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_152(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_152(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = *(x.arr.(13), y.arr.(6)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_153(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_153(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(14), y.arr.(10)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_154(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_154(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = *(x.arr.(15), y.arr.(14)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_155(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_155(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_156(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = *(x.arr.(12), y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_157(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_157(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = *(x.arr.(13), y.arr.(7)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_158(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_158(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = *(x.arr.(14), y.arr.(11)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_159(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_159(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(15), y.arr.(15)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_160(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_16(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_17(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_160(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_161(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(0), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_162(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_162(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(1), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_163(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_163(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(2), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_164(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_164(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(3), 1) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_165(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_165(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_166(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(4), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_167(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_167(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(5), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_168(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_168(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(6), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_169(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_169(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(7), 1) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_170(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_17(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_18(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_170(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_171(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(8), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_172(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_172(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(9), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_173(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_173(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(10), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_174(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_174(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(11), 1) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_175(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_175(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_176(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(12), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_177(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_177(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(13), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_178(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_178(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(14), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_179(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_179(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(15), 1) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_180(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_18(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_19(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_180(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_181(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(0), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_182(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_182(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(1), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_183(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_183(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(2), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_184(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_184(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(3), y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_185(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_185(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_186(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(4), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_187(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_187(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(5), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_188(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_188(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(6), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_189(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_189(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(7), y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_190(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_19(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(3), 1) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_20(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_190(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_191(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(8), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_192(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_192(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(9), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_193(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_193(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(10), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_194(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_194(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(11), y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_195(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_195(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_196(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(12), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_197(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_197(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(x.arr.(13), y.arr.(1)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_198(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_198(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(x.arr.(14), y.arr.(2)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_199(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_199(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(x.arr.(15), y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_200(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_2(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_3(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_20(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_200(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_201(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(0.4, y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_202(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_202(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_203(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_203(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_204(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_204(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_205(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_205(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_206(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_207(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_207(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(0.19, y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_208(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_208(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_209(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_209(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_210(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_21(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(4), 1) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_22(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_210(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_211(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_212(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_212(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_213(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_213(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(0.19, y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_214(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_214(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_215(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_215(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_216(sum, x, y, colX, i, j, k) = 1 +fun iter_Transform3D_sp_217(sum, x, y, colX, i, j, k) = 1 +fun iter_Transform3D_sp_218(sum, x, y, colX, i, j, k) = 1 +fun iter_Transform3D_sp_219(sum, x, y, colX, i, j, k) = 1 +fun iter_Transform3D_sp_22(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_23(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_220(sum, x, y, colX, i, j, k) = 1 +fun iter_Transform3D_sp_221(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(1, y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_222(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_222(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_223(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_223(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_224(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_224(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(11, y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_225(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_225(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_226(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_227(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_227(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = *(1, y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_228(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_228(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_229(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_229(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(4, y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_230(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_23(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_24(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_230(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_231(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_232(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_232(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_233(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_233(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = *(1, y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_234(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_234(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(51, y.arr.(3)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_235(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_235(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_236(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_237(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_237(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 1 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_238(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_238(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 2 + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_239(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_239(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 3 + tmp5 = 3 + tmp6 = *(1, y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_240(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_24(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_25(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_240(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_25(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_26(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_27(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_27(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(5), 1) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_28(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_28(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_29(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_29(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_30(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_3(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_4(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_30(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_31(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_32(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_32(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_33(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_33(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(6), 1) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_34(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_34(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_35(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_35(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_36(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 4 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_37(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_37(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 5 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_38(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_38(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 6 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_39(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_39(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 4 + tmp1 = 8 + tmp2 = 7 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(7), 1) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_40(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_4(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_5(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_40(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_41(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(8), 1) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_42(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_42(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_43(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_43(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_44(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_44(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_45(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_45(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_46(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_47(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_47(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(9), 1) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_48(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_48(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_49(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_49(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_50(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_5(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_50(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_51(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_52(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_52(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_53(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_53(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(10), 1) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_54(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_54(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_55(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_55(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_56(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 8 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_57(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_57(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 9 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_58(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_58(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 10 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_59(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_59(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 8 + tmp1 = 12 + tmp2 = 11 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(11), 1) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_60(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_6(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_7(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_60(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_61(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(12), 1) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_62(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_62(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 2 + iter_Transform3D_sp_63(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_63(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_64(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_64(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_65(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_65(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_66(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_67(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_67(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(13), 1) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_68(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_68(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_69(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_69(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_70(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_7(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(1), 1) + tmp7 = 0 + tmp6 + tmp8 = 2 + iter_Transform3D_sp_8(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_70(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_71(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_72(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_72(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_73(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_73(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(14), 1) + tmp7 = 0 + tmp6 + tmp8 = 1 + iter_Transform3D_sp_74(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_74(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_75(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_75(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_76(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 12 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = 0 + tmp7 = 0 + tmp8 = 3 + iter_Transform3D_sp_77(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_77(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 13 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = 0 + tmp7 = 0 + tmp8 = 2 + iter_Transform3D_sp_78(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_78(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 14 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = 0 + tmp7 = 0 + tmp8 = 1 + iter_Transform3D_sp_79(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_79(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 12 + tmp1 = 16 + tmp2 = 15 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(15), 1) + tmp7 = 0 + tmp6 + tmp8 = 0 + iter_Transform3D_sp_80(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_8(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 1 + iter_Transform3D_sp_9(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_80(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_81(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 0 + tmp6 = *(x.arr.(0), y.arr.(0)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_82(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_82(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 4 + tmp6 = *(x.arr.(1), y.arr.(4)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_83(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_83(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 8 + tmp6 = *(x.arr.(2), y.arr.(8)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_84(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_84(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 12 + tmp6 = *(x.arr.(3), y.arr.(12)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_85(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_85(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_86(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 1 + tmp6 = *(x.arr.(0), y.arr.(1)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_87(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_87(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 5 + tmp6 = *(x.arr.(1), y.arr.(5)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_88(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_88(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 9 + tmp6 = *(x.arr.(2), y.arr.(9)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_89(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_89(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = *(x.arr.(3), y.arr.(13)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_90(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_9(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 13 + tmp6 = 0 + tmp7 = sum + 0 + tmp8 = 0 + iter_Transform3D_sp_10(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_90(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_91(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 2 + tmp6 = *(x.arr.(0), y.arr.(2)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_92(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_92(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 6 + tmp6 = *(x.arr.(1), y.arr.(6)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_93(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_93(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 10 + tmp6 = *(x.arr.(2), y.arr.(10)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_94(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_94(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 14 + tmp6 = *(x.arr.(3), y.arr.(14)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_95(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_95(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = false + sum +fun iter_Transform3D_sp_96(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 0 + tmp3 = 0 + tmp4 = 0 + tmp5 = 3 + tmp6 = *(x.arr.(0), y.arr.(3)) + tmp7 = 0 + tmp6 + tmp8 = 3 + iter_Transform3D_sp_97(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_97(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 1 + tmp3 = 1 + tmp4 = 4 + tmp5 = 7 + tmp6 = *(x.arr.(1), y.arr.(7)) + tmp7 = sum + tmp6 + tmp8 = 2 + iter_Transform3D_sp_98(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_98(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 2 + tmp3 = 2 + tmp4 = 8 + tmp5 = 11 + tmp6 = *(x.arr.(2), y.arr.(11)) + tmp7 = sum + tmp6 + tmp8 = 1 + iter_Transform3D_sp_99(tmp7, x, y, colX, i, j, tmp8) +fun iter_Transform3D_sp_99(sum, x, y, colX, i, j, k) = + let {scrut, tmp, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8} + scrut = true + tmp = 0 + tmp1 = 4 + tmp2 = 3 + tmp3 = 3 + tmp4 = 12 + tmp5 = 15 + tmp6 = *(x.arr.(3), y.arr.(15)) + tmp7 = sum + tmp6 + tmp8 = 0 + iter_Transform3D_sp_100(tmp7, x, y, colX, i, j, tmp8) +fun model_Transform3D_sp_0(local, position, scaling, rotation) = + let {rot, res1, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58, tup_53, obj_54, tup_66, obj_67, tup_79, obj_80} + tmp47 = rotateZ_Transform3D_sp_0(rotation.2) + tmp48 = rotateY_Transform3D_sp_0(rotation.1) + tmp49 = rotateX_Transform3D_sp_0(rotation.0) + tup_53 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_54 = new Matrix(tup_53, 4, 4) + tmp50 = obj_54 + tmp51 = multiply_Transform3D_sp_0(tmp49, tmp50) + tmp52 = multiply_Transform3D_sp_1(tmp48, tmp51) + rot = multiply_Transform3D_sp_1(tmp47, tmp52) + tup_66 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] + obj_67 = new Matrix(tup_66, 4, 4) + tmp53 = obj_67 + tup_79 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] + obj_80 = new Matrix(tup_79, 4, 4) + tmp54 = obj_80 + tmp55 = [local.0, local.1, local.2, 1] + tmp56 = new Matrix(tmp55, 4, 1) + tmp57 = multiply_Transform3D_sp_4(tmp54, tmp56) + tmp58 = multiply_Transform3D_sp_3(rot, tmp57) + res1 = multiply_Transform3D_sp_5(tmp53, tmp58) + [res1.arr.0, res1.arr.1, res1.arr.2] +fun multiply_Transform3D_sp_0(x, y) = + let {res, tup_38, obj_39} + tup_38 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + obj_39 = new Matrix(tup_38, 4, 4) + res = obj_39 + iterRow_Transform3D_sp_1(res, x, y, x.r, x.c, y.c, x.r) +fun multiply_Transform3D_sp_1(x, y) = + let {res, tup_40, obj_41} + tup_40 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + obj_41 = new Matrix(tup_40, 4, 4) + res = obj_41 + iterRow_Transform3D_sp_6(res, x, y, x.r, x.c, y.c, x.r) +fun multiply_Transform3D_sp_2(x, y) = + let {res, tup_43, obj_44} + tup_43 = [0, 0, 0, 0] + obj_44 = new Matrix(tup_43, 4, 1) + res = obj_44 + iterRow_Transform3D_sp_11(res, x, y, x.r, x.c, y.c, x.r) +fun multiply_Transform3D_sp_3(x, y) = + let {res, tup_45, obj_46} + tup_45 = [0, 0, 0, 0] + obj_46 = new Matrix(tup_45, 4, 1) + res = obj_46 + iterRow_Transform3D_sp_16(res, x, y, x.r, x.c, y.c, x.r) +fun multiply_Transform3D_sp_4(x, y) = + let {res, tup_81, obj_82} + tup_81 = [0, 0, 0, 0] + obj_82 = new Matrix(tup_81, 4, 1) + res = obj_82 + iterRow_Transform3D_sp_21(res, x, y, x.r, x.c, y.c, x.r) +fun multiply_Transform3D_sp_5(x, y) = + let {res, tup_83, obj_84} + tup_83 = [0, 0, 0, 0] + obj_84 = new Matrix(tup_83, 4, 1) + res = obj_84 + iterRow_Transform3D_sp_26(res, x, y, x.r, x.c, y.c, x.r) +fun rotateX_Transform3D_sp_0(angle) = + let {s, c2, tmp32, tmp33, tmp34, tmp35, tmp36, tup_51, obj_52} + s = Math.sin(2.51327412) + c2 = Math.cos(2.51327412) + tup_51 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_52 = new Matrix(tup_51, 4, 4) + tmp32 = obj_52 + tmp33 = update_Transform3D_sp_13(tmp32, 1, 1, c2) + tmp34 = -(s) + tmp35 = update_Transform3D_sp_14(tmp33, 1, 2, tmp34) + tmp36 = update_Transform3D_sp_15(tmp35, 2, 1, s) + update_Transform3D_sp_12(tmp36, 2, 2, c2) +fun rotateY_Transform3D_sp_0(angle) = + let {s1, c3, tmp37, tmp38, tmp39, tmp40, tmp41, tup_49, obj_50} + s1 = Math.sin(3.1415926535) + c3 = Math.cos(3.1415926535) + tup_49 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_50 = new Matrix(tup_49, 4, 4) + tmp37 = obj_50 + tmp38 = update_Transform3D_sp_10(tmp37, 0, 0, c3) + tmp39 = update_Transform3D_sp_16(tmp38, 0, 2, s1) + tmp40 = -(s1) + tmp41 = update_Transform3D_sp_17(tmp39, 2, 0, tmp40) + update_Transform3D_sp_12(tmp41, 2, 2, c3) +fun rotateZ_Transform3D_sp_0(angle) = + let {s2, c4, tmp42, tmp43, tmp44, tmp45, tmp46, tup_47, obj_48} + s2 = Math.sin(0) + c4 = Math.cos(0) + tup_47 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_48 = new Matrix(tup_47, 4, 4) + tmp42 = obj_48 + tmp43 = update_Transform3D_sp_10(tmp42, 0, 0, c4) + tmp44 = -(s2) + tmp45 = update_Transform3D_sp_18(tmp43, 0, 1, tmp44) + tmp46 = update_Transform3D_sp_19(tmp45, 1, 0, s2) + update_Transform3D_sp_11(tmp46, 1, 1, c4) +fun scale_Transform3D_sp_0(sx, sy, sz) = + let {tmp29, tmp30, tmp31, tup_68, obj_69, tup_71, obj_72, tup_74, obj_75, tup_77, obj_78} + tup_68 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_69 = new Matrix(tup_68, 4, 4) + tmp29 = obj_69 + tup_71 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_72 = new Matrix(tup_71, 4, 4) + tmp30 = obj_72 + tup_74 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_75 = new Matrix(tup_74, 4, 4) + tmp31 = obj_75 + tup_77 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] + obj_78 = new Matrix(tup_77, 4, 4) + obj_78 +fun transform_Transform3D_sp_0(dx, dy, dz) = + let {tmp26, tmp27, tmp28, tup_55, obj_56, tup_58, obj_59, tup_61, obj_62, tup_64, obj_65} + tup_55 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_56 = new Matrix(tup_55, 4, 4) + tmp26 = obj_56 + tup_58 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + obj_59 = new Matrix(tup_58, 4, 4) + tmp27 = obj_59 + tup_61 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] + obj_62 = new Matrix(tup_61, 4, 4) + tmp28 = obj_62 + tup_64 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] + obj_65 = new Matrix(tup_64, 4, 4) + obj_65 +fun update_Transform3D_sp_0(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = *(i, m.c) + tmp24 = tmp23 + j + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_1(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = *(i, m.c) + tmp24 = tmp23 + j + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, 1) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_10(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 0 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 0, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_11(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 5 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 5, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_12(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 8 + tmp24 = 10 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 10, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_13(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 5 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 5, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_14(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 6 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 6, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_15(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 8 + tmp24 = 9 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 9, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_16(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 2 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 2, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_17(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 8 + tmp24 = 8 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 8, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_18(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 1 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 1, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_19(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 4 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 4, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_2(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = *(i, m.c) + tmp24 = tmp23 + j + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, tmp24, 1) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_20(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 0 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 0, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_21(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 3 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_22(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 12 + tmp24 = 12 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 12, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_23(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 12 + tmp24 = 13 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 13, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_24(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 12 + tmp24 = 14 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 14, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_25(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 12 + tmp24 = 15 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 15, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_26(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 0 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 0, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_27(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 1 + tmp24 = 1 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 1, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_28(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 2 + tmp24 = 2 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 2, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_29(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 3 + tmp24 = 3 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_3(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_4} + tmp23 = 0 + tmp24 = 0 + tup_4 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + tmp25 = tup_4 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_30(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_57} + tmp23 = 0 + tmp24 = 3 + tup_57 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_57 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_31(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_60} + tmp23 = 4 + tmp24 = 7 + tup_60 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_60 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_32(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_63} + tmp23 = 8 + tmp24 = 11 + tup_63 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] + tmp25 = tup_63 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_33(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_70} + tmp23 = 0 + tmp24 = 0 + tup_70 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_70 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_34(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_73} + tmp23 = 4 + tmp24 = 5 + tup_73 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_73 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_35(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_76} + tmp23 = 8 + tmp24 = 10 + tup_76 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] + tmp25 = tup_76 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_36(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 3 + tmp24 = 3 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, 1) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_4(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_7} + tmp23 = 4 + tmp24 = 5 + tup_7 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + tmp25 = tup_7 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_5(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_10} + tmp23 = 8 + tmp24 = 10 + tup_10 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] + tmp25 = tup_10 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_6(m, i, j, v) = + let {tmp23, tmp24, tmp25, tup_13} + tmp23 = 12 + tmp24 = 15 + tup_13 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_13 + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_7(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 0 + tmp24 = 3 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_8(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 4 + tmp24 = 7 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 7, v) + new Matrix(tmp25, m.r, m.c) +fun update_Transform3D_sp_9(m, i, j, v) = + let {tmp23, tmp24, tmp25} + tmp23 = 8 + tmp24 = 11 + tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 11, v) + new Matrix(tmp25, m.r, m.c) +fun zeros_Transform3D_sp_0(r, c) = + let {tmp21, tmp22, tup_1} + tmp21 = 16 + tup_1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + tmp22 = tup_1 + new Matrix(tmp22, r, c) +fun zeros_Transform3D_sp_1(r, c) = + let {tmp21, tmp22, tup_42} + tmp21 = 4 + tup_42 = [0, 0, 0, 0] + tmp22 = tup_42 + new Matrix(tmp22, r, c) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls b/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls index dbc8e81958..6913949ef1 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/Hygiene.mls @@ -21,5 +21,5 @@ Foo."foo_gen"(mkLit(0)) print(Foo."cache$Foo") //│ > module Foo with //│ > () -//│ > private fun foo_Foo_sp_2(x) = 1 +//│ > fun foo_Foo_sp_2(x) = 1 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 0c9b51d79d..95f7b9ad94 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -56,17 +56,17 @@ print(Simple."cache$Simple") //│ > dyn = pyth_Simple_sp_1(n, 2) //│ > tmp10 = *(dyn, 2) //│ > fib(tmp10) -//│ > private fun f_Simple_sp_0(x, y) = 4 -//│ > private fun fib_Simple_sp_0(n) = 3 -//│ > private fun fib_Simple_sp_1(n) = 2 -//│ > private fun fib_Simple_sp_2(n) = 1 -//│ > private fun fib_Simple_sp_3(n) = 1 -//│ > private fun pyth_Simple_sp_0(x, y) = 20 -//│ > private fun pyth_Simple_sp_1(x, y) = -//│ > let {tmp6, tmp7} -//│ > tmp6 = Simple__Legacy."NonStaged$Simple".sq(x) -//│ > tmp7 = 4 -//│ > tmp6 + 4 +//│ > fun f_Simple_sp_0(x, y) = 4 +//│ > fun fib_Simple_sp_0(n) = 3 +//│ > fun fib_Simple_sp_1(n) = 2 +//│ > fun fib_Simple_sp_2(n) = 1 +//│ > fun fib_Simple_sp_3(n) = 1 +//│ > fun pyth_Simple_sp_0(x, y) = 20 +//│ > fun pyth_Simple_sp_1(x, y) = +//│ > let {tmp6, tmp7} +//│ > tmp6 = Simple__Legacy."NonStaged$Simple".sq(x) +//│ > tmp7 = 4 +//│ > tmp6 + 4 class C(val x) @@ -97,16 +97,16 @@ print(If."cache$If") //│ > module If with //│ > () //│ > fun test() = "C(2) C else " -//│ > private fun f_If_sp_0(x) = "C(2) " -//│ > private fun f_If_sp_1(x) = "C " -//│ > private fun f_If_sp_2(x) = "else " -//│ > private fun test2_If_sp_0(x, y) = -//│ > let {tmp6} -//│ > if y is -//│ > 1 then 1 -//│ > else -//│ > tmp6 = 2 -//│ > 4 +//│ > fun f_If_sp_0(x) = "C(2) " +//│ > fun f_If_sp_1(x) = "C " +//│ > fun f_If_sp_2(x) = "else " +//│ > fun test2_If_sp_0(x, y) = +//│ > let {tmp6} +//│ > if y is +//│ > 1 then 1 +//│ > else +//│ > tmp6 = 2 +//│ > 4 class C(val n) staged module If2 with @@ -133,13 +133,13 @@ print(If2."cache$If2") //│ > tmp2 = If2__Legacy."C$If2"(dyn) //│ > f_If2_sp_1(tmp2) //│ > fun test3() = 1 -//│ > private fun f_If2_sp_0(x) = 3 -//│ > private fun f_If2_sp_1(x) = -//│ > let {y, tmp} -//│ > y = x.n -//│ > tmp = runtime.Unit -//│ > y + 1 -//│ > private fun f_If2_sp_2(x) = 1 +//│ > fun f_If2_sp_0(x) = 3 +//│ > fun f_If2_sp_1(x) = +//│ > let {y, tmp} +//│ > y = x.n +//│ > tmp = runtime.Unit +//│ > y + 1 +//│ > fun f_If2_sp_2(x) = 1 staged module LinearAlgebra with fun _dot(v1, v2, n, acc) = @@ -158,32 +158,32 @@ print(LinearAlgebra."cache$LinearAlgebra") //│ > tmp3 = [x, 1, 2] //│ > tmp4 = [3, 4, 1] //│ > dot_LinearAlgebra_sp_0(tmp3, tmp4) -//│ > private fun _dot_LinearAlgebra_sp_0(v1, v2, n, acc) = -//│ > let {scrut, tmp, tmp1, tmp2} -//│ > scrut = false -//│ > tmp = 1 -//│ > tmp1 = *(v1.(0), 3) -//│ > tmp2 = tmp1 + 0 -//│ > _dot_LinearAlgebra_sp_1(v1, v2, tmp, tmp2) -//│ > private fun _dot_LinearAlgebra_sp_1(v1, v2, n, acc) = -//│ > let {scrut, tmp, tmp1, tmp2} -//│ > scrut = false -//│ > tmp = 2 -//│ > tmp1 = 4 -//│ > tmp2 = 4 + acc -//│ > _dot_LinearAlgebra_sp_2(v1, v2, tmp, tmp2) -//│ > private fun _dot_LinearAlgebra_sp_2(v1, v2, n, acc) = -//│ > let {scrut, tmp, tmp1, tmp2} -//│ > scrut = false -//│ > tmp = 3 -//│ > tmp1 = 2 -//│ > tmp2 = 2 + acc -//│ > _dot_LinearAlgebra_sp_3(v1, v2, tmp, tmp2) -//│ > private fun _dot_LinearAlgebra_sp_3(v1, v2, n, acc) = -//│ > let {scrut, tmp, tmp1, tmp2} -//│ > scrut = true -//│ > acc -//│ > private fun dot_LinearAlgebra_sp_0(v1, v2) = _dot_LinearAlgebra_sp_0(v1, v2, 0, 0) +//│ > fun _dot_LinearAlgebra_sp_0(v1, v2, n, acc) = +//│ > let {scrut, tmp, tmp1, tmp2} +//│ > scrut = false +//│ > tmp = 1 +//│ > tmp1 = *(v1.(0), 3) +//│ > tmp2 = tmp1 + 0 +//│ > _dot_LinearAlgebra_sp_1(v1, v2, tmp, tmp2) +//│ > fun _dot_LinearAlgebra_sp_1(v1, v2, n, acc) = +//│ > let {scrut, tmp, tmp1, tmp2} +//│ > scrut = false +//│ > tmp = 2 +//│ > tmp1 = 4 +//│ > tmp2 = 4 + acc +//│ > _dot_LinearAlgebra_sp_2(v1, v2, tmp, tmp2) +//│ > fun _dot_LinearAlgebra_sp_2(v1, v2, n, acc) = +//│ > let {scrut, tmp, tmp1, tmp2} +//│ > scrut = false +//│ > tmp = 3 +//│ > tmp1 = 2 +//│ > tmp2 = 2 + acc +//│ > _dot_LinearAlgebra_sp_3(v1, v2, tmp, tmp2) +//│ > fun _dot_LinearAlgebra_sp_3(v1, v2, n, acc) = +//│ > let {scrut, tmp, tmp1, tmp2} +//│ > scrut = true +//│ > acc +//│ > fun dot_LinearAlgebra_sp_0(v1, v2) = _dot_LinearAlgebra_sp_0(v1, v2, 0, 0) staged class L1(val y) with fun call(x) = x + 2 + y @@ -222,48 +222,48 @@ print(Dispatching."cache$Dispatching") //│ > tmp3 = new L3.class(3) //│ > m = pick_Dispatching_sp_2(tmp2, tmp3, b) //│ > twice_Dispatching_sp_3(m, 5) -//│ > private fun pick_Dispatching_sp_0(x, y, b) = x -//│ > private fun pick_Dispatching_sp_1(x, y, b) = y -//│ > private fun pick_Dispatching_sp_2(x, y, b) = -//│ > if b is -//│ > true then x -//│ > else y -//│ > private fun test_Dispatching_sp_0(b) = 9 -//│ > private fun test_Dispatching_sp_1(b) = 29 -//│ > private fun twice_Dispatching_sp_0(f, x) = 11 -//│ > private fun twice_Dispatching_sp_1(f, x) = 9 -//│ > private fun twice_Dispatching_sp_2(f, x) = 29 -//│ > private fun twice_Dispatching_sp_3(f, x) = -//│ > let {tmp} -//│ > if f is -//│ > L2 then -//│ > tmp = f.call_L2_sp_0(x) -//│ > L3 then -//│ > tmp = f.call_L3_sp_0(x) -//│ > if f is -//│ > L2 then f.call_L2_sp_2(tmp) -//│ > L3 then f.call_L3_sp_2(tmp) +//│ > fun pick_Dispatching_sp_0(x, y, b) = x +//│ > fun pick_Dispatching_sp_1(x, y, b) = y +//│ > fun pick_Dispatching_sp_2(x, y, b) = +//│ > if b is +//│ > true then x +//│ > else y +//│ > fun test_Dispatching_sp_0(b) = 9 +//│ > fun test_Dispatching_sp_1(b) = 29 +//│ > fun twice_Dispatching_sp_0(f, x) = 11 +//│ > fun twice_Dispatching_sp_1(f, x) = 9 +//│ > fun twice_Dispatching_sp_2(f, x) = 29 +//│ > fun twice_Dispatching_sp_3(f, x) = +//│ > let {tmp} +//│ > if f is +//│ > L2 then +//│ > tmp = call_L2_sp_0(f, x) +//│ > L3 then +//│ > tmp = call_L3_sp_0(f, x) +//│ > if f is +//│ > L2 then call_L2_sp_2(f, tmp) +//│ > L3 then call_L3_sp_2(f, tmp) print(L1.class."class$cache$L1") print(L2.class."class$cache$L2") print(L3.class."class$cache$L3") //│ > class L1(val y) with //│ > () -//│ > private fun call_L1_sp_0(x) = 8 -//│ > private fun call_L1_sp_1(x) = 11 +//│ > fun call_L1_sp_0(self, x) = 8 +//│ > fun call_L1_sp_1(self, x) = 11 //│ > class L2(val y) with //│ > () -//│ > private fun call_L2_sp_0(x) = 7 -//│ > private fun call_L2_sp_1(x) = 9 -//│ > private fun call_L2_sp_2(x) = x + 2 +//│ > fun call_L2_sp_0(self, x) = 7 +//│ > fun call_L2_sp_1(self, x) = 9 +//│ > fun call_L2_sp_2(self, x) = x + 2 //│ > class L3(val y) with //│ > () -//│ > private fun call_L3_sp_0(x) = 13 -//│ > private fun call_L3_sp_1(x) = 29 -//│ > private fun call_L3_sp_2(x) = -//│ > let {tmp1} -//│ > tmp1 = *(x, 2) -//│ > tmp1 + 3 +//│ > fun call_L3_sp_0(self, x) = 13 +//│ > fun call_L3_sp_1(self, x) = 29 +//│ > fun call_L3_sp_2(self, x) = +//│ > let {tmp1} +//│ > tmp1 = *(x, 2) +//│ > tmp1 + 3 staged class Bar(val x) with fun bar() = x @@ -294,17 +294,17 @@ This."test2_gen"(mkLit(1)) print(This."cache$This") //│ > module This with //│ > () -//│ > private fun test2_This_sp_0(y) = 2 -//│ > private fun test_This_sp_0(x) = 3 +//│ > fun test2_This_sp_0(y) = 2 +//│ > fun test_This_sp_0(x) = 3 print(A.class."class$cache$A") print(B.class."class$cache$B") //│ > class A(val x) with //│ > () -//│ > private fun f_A_sp_0(y) = 2 +//│ > fun f_A_sp_0(self, y) = 2 //│ > class B(val x) with //│ > () -//│ > private fun f_B_sp_0(y) = 3 +//│ > fun f_B_sp_0(self, y) = 3 staged class B(val x, val y) with val z = x + y @@ -365,7 +365,7 @@ M."cache$M" //│ () \ //│ fun f(x, y) = *(x, y) \ //│ fun g(y) = f_M_sp_0(2, y) \ -//│ private fun f_M_sp_0(x, y) = *(2, y) +//│ fun f_M_sp_0(x, y) = *(2, y) staged module M with fun f(x) = x.2 diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls index 57fc53f28b..09175c2221 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SpecializeTest.mls @@ -27,7 +27,7 @@ print(M."cache$M") //│ > let {y} //│ > y = *(x, 2) //│ > y -//│ > private fun f_M_sp_0(x) = 4 +//│ > fun f_M_sp_0(x) = 4 staged module Clash with From d9b8a02e21a01031d547af208bf45a204e1ecdb5 Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Thu, 4 Jun 2026 16:31:00 +0800 Subject: [PATCH 650/654] WIP: Some fix --- .../mlscript-compile/SpecializeHelpers.mls | 17 +- .../staging/out/CombinedModule.mls | 22 +- .../staging/out/LinkingGeneratedClasses.mls | 22 +- .../staging/out/StagedClass.mls | 15 +- .../staging/out/StagedRegExp.mls | 900 ++++++++---------- .../staging/out/Transform3D.mls | 258 ++--- .../test/mlscript/block-staging/ShapeProp.mls | 4 +- 7 files changed, 507 insertions(+), 731 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index f57f5e291b..bd4f81e439 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -61,7 +61,10 @@ class Ctx( staticCallCtx.set(key, entry) this fun clone = Ctx(new Map(ctx), new Map(valDefnCtx), new Map(staticCallCtx), allocs, thisShape) - fun clearCtx = Ctx(new Map(), new Map(), new Map(staticCallCtx), allocs, thisShape) + // For propagation of instantiation of derived class, + // we need to keep track of fields defined in parent class, + // which is stored in valDefnCtx + fun clearCtx = Ctx(new Map(), valDefnCtx, new Map(staticCallCtx), allocs, thisShape) fun sub(other: Ctx) = let res = new Map() fun otherIsBot(ps) = @@ -360,13 +363,9 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is let genMap = value.(mapPropName) not (genMap is undefined) and let f_gen = genMap.get(fld) - not (f_gen is Runtime.Unit) and // staged function + not (f_gen is Runtime.Unit) then // staged function let res = f_gen(...argShapes) - staticSet(res.1) then - let v2p = shapeset2path(res.1, ctx.allocs) - [v2p.0, v2p.1, res.1] - else - [End(), Call(Select(ValueThis(ModuleSymbol(name, value, redir)), Symbol(res.0)), args), res.1] + [End(), Call(Select(ValueThis(ModuleSymbol(name, value, redir)), Symbol(res.0)), args), res.1] else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") argShapes.every(staticSet) and // non staged function and params known @@ -603,8 +602,8 @@ fun specializeName(cache, funName, isMethod, ps, shapes) = fun isStaticShapePath(s: Shape) = if s is Lit(_) then true - Arr(shapes) then shapes.every(x => x is Lit) - Class(_, fields) then fields.every(x => x is Lit) + // Arr(shapes) then shapes.every(x => x is Lit) + // Class(_, fields) then fields.every(x => x is Lit) else false fun isStaticSetPath(ss: ShapeSet) = diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index a60020a6f5..1938f86190 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -52,17 +52,14 @@ module CombinedModule with module LinkingGeneratedClasses with class D fun f() = - let {obj_3} - obj_3 = new LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() - obj_3 + let {tmp1} + tmp1 = new LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() + tmp1 fun g() = - let {obj_4} - obj_4 = new LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() - obj_4 - fun test1 = - let {obj_1} - obj_1 = new LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() - obj_1 + let {tmp2} + tmp2 = new LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + tmp2 + fun test1 = new LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() fun test2(x) = let {tmp} if x is @@ -70,10 +67,7 @@ module CombinedModule with tmp = new S() f_S_sp_0(tmp, 1) else new S() - fun test3 = - let {obj_2} - obj_2 = new D() - obj_2 + fun test3 = new D() open CombinedModule open SimpleStagedExample open LinkingGeneratedClasses diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls index c318975d60..3fb1a5a4e9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/LinkingGeneratedClasses.mls @@ -5,17 +5,14 @@ class S with module LinkingGeneratedClasses with class D fun f() = - let {obj_3} - obj_3 = new LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() - obj_3 + let {tmp1} + tmp1 = new LinkingGeneratedClasses__Legacy."Function$1$LinkingGeneratedClasses"() + tmp1 fun g() = - let {obj_4} - obj_4 = new LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() - obj_4 - fun test1 = - let {obj_1} - obj_1 = new LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() - obj_1 + let {tmp2} + tmp2 = new LinkingGeneratedClasses__Legacy."Function$$LinkingGeneratedClasses"() + tmp2 + fun test1 = new LinkingGeneratedClasses__Legacy."C$LinkingGeneratedClasses"() fun test2(x) = let {tmp} if x is @@ -23,9 +20,6 @@ module LinkingGeneratedClasses with tmp = new S() f_S_sp_0(tmp, 1) else new S() - fun test3 = - let {obj_2} - obj_2 = new D() - obj_2 + fun test3 = new D() open LinkingGeneratedClasses fun f_S_sp_0(self, x) = 1 \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls index 23c2eaf498..94535b5830 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedClass.mls @@ -17,10 +17,7 @@ module StagedClass with () class C() with () - fun h() = - let {obj_5} - obj_5 = new D() - obj_5 + fun h() = new D() class X(val x) with () fun f(y) = @@ -58,14 +55,8 @@ module StagedClass with y4 = arg_Baz_0_ y4 + 1 else -1 - fun foo() = - let {obj_6} - obj_6 = new Foo() - obj_6 - fun g() = - let {obj_7} - obj_7 = new D() - obj_7 + fun foo() = new Foo() + fun g() = new D() fun helpFoo(x) = StagedClass__Legacy."Helper$StagedClass".foo(x) fun xx() = let {tmp3} diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls index bf0495b2ea..8d04965345 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/StagedRegExp.mls @@ -42,10 +42,7 @@ module StagedRegExp with class Empty() extends RegExp() with () fun canBeEmpty() = true - fun derive(c) = - let {obj_1} - obj_1 = new Nothing() - obj_1 + fun derive(c) = new Nothing() fun eq(other) = if other is Empty then true @@ -74,10 +71,7 @@ module StagedRegExp with class Any() extends RegExp() with () fun canBeEmpty() = false - fun derive(c) = - let {obj_2} - obj_2 = new Empty() - obj_2 + fun derive(c) = new Empty() fun eq(other) = if other is Any then true @@ -296,9 +290,9 @@ module StagedRegExp with fun arrEq(arr1, arr2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".eq(arr1, arr2) fun concat(lhs, rhs) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".concat(lhs, rhs) fun digits() = - let {tmp51, tup_8} - tup_8 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - tmp51 = tup_8 + let {tmp51, tup_6} + tup_6 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + tmp51 = tup_6 new In(tmp51) fun has(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) fun len(s) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".len(s) @@ -308,20 +302,14 @@ module StagedRegExp with tmp66 = [] matchAllImpl_StagedRegExp_sp_0(p, s, tmp66) fun matchAllEmail(s) = - let {p7, email, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tup_9, tup_10, tup_11, obj_12, tup_13, obj_14, obj_15, obj_16} - tup_9 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp67 = tup_9 + let {p7, email, tmp67, tmp68, tmp69, tmp70, tmp71, tmp72, tmp73, tmp74, tmp75, tup_7, tup_8} + tup_7 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp67 = tup_7 tmp68 = ["-", "."] - tup_10 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] - tmp69 = tup_10 + tup_8 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] + tmp69 = tup_8 tmp70 = new In(tmp69) - tup_11 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] - obj_12 = new In(tup_11) - tup_13 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", "."] - obj_14 = new In(tup_13) - obj_15 = new Star(obj_14) - obj_16 = new Concat(obj_12, obj_15) - p7 = obj_16 + p7 = plus_StagedRegExp_sp_0(tmp70) tmp71 = new Exact("@") tmp72 = new Exact(".") tmp73 = new Concat(tmp72, p7) @@ -330,7 +318,7 @@ module StagedRegExp with email = new Concat(p7, tmp75) matchAll_StagedRegExp_sp_0(email, s) fun matchAllIPv4(s) = - let {fo, fi, segment, ipv4, tmp102, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112, tmp113, tmp114, tmp115, tmp116, tmp117, tmp118, tmp119, tmp120, tmp121, tmp122, tup_59, obj_60, obj_61, obj_62, obj_63, tup_64, obj_65, tup_66, obj_67, obj_68, obj_69, tup_70, obj_71, obj_157, obj_158, tup_159, obj_160, obj_161, obj_162, obj_163, tup_164, obj_165, tup_166, obj_167, obj_168, obj_169, obj_170, obj_171, obj_172, tup_173, obj_174, obj_175, obj_176, tup_177, obj_178, obj_179, obj_180, obj_181, obj_182, obj_183, obj_184, obj_185, obj_186, tup_187, obj_188, obj_189, obj_190, obj_191, tup_192, obj_193, tup_194, obj_195, obj_196, obj_197, obj_198, obj_199, obj_200, tup_201, obj_202, obj_203, obj_204, tup_205, obj_206, obj_207, obj_208, obj_209, obj_210, obj_211, obj_212, obj_213, obj_214, tup_215, obj_216, obj_217, obj_218, obj_219, tup_220, obj_221, tup_222, obj_223, obj_224, obj_225, obj_226, obj_227, obj_228, tup_229, obj_230, obj_231, obj_232, tup_233, obj_234, obj_235, obj_236, obj_237, obj_238, obj_239, obj_240, obj_241, obj_242} + let {fo, fi, segment, ipv4, tmp102, tmp103, tmp104, tmp105, tmp106, tmp107, tmp108, tmp109, tmp110, tmp111, tmp112, tmp113, tmp114, tmp115, tmp116, tmp117, tmp118, tmp119, tmp120, tmp121, tmp122} tmp102 = ["0", "1", "2", "3", "4"] fo = new In(tmp102) tmp103 = ["0", "1", "2", "3", "4", "5"] @@ -340,120 +328,21 @@ module StagedRegExp with tmp106 = new Concat(tmp105, fi) tmp107 = new Concat(tmp104, tmp106) tmp108 = new Exact("2") - tup_59 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_60 = new In(tup_59) - tmp109 = obj_60 + tmp109 = digits() tmp110 = new Concat(fo, tmp109) tmp111 = new Concat(tmp108, tmp110) tmp112 = new Exact("1") - obj_61 = new Exact("1") - obj_62 = new Empty() - obj_63 = new Union(obj_61, obj_62) - tmp113 = obj_63 - tup_64 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_65 = new In(tup_64) - tmp114 = obj_65 - tup_66 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_67 = new In(tup_66) - obj_68 = new Empty() - obj_69 = new Union(obj_67, obj_68) - tmp115 = obj_69 - tup_70 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_71 = new In(tup_70) - tmp116 = obj_71 + tmp113 = question_StagedRegExp_sp_2(tmp112) + tmp114 = digits() + tmp115 = question_StagedRegExp_sp_3(tmp114) + tmp116 = digits() tmp117 = new Concat(tmp115, tmp116) tmp118 = new Concat(tmp113, tmp117) tmp119 = new Union(tmp111, tmp118) segment = new Union(tmp107, tmp119) tmp120 = new Exact(".") tmp121 = new Concat(segment, tmp120) - obj_157 = new Exact("2") - obj_158 = new Exact("5") - tup_159 = ["0", "1", "2", "3", "4", "5"] - obj_160 = new In(tup_159) - obj_161 = new Concat(obj_158, obj_160) - obj_162 = new Concat(obj_157, obj_161) - obj_163 = new Exact("2") - tup_164 = ["0", "1", "2", "3", "4"] - obj_165 = new In(tup_164) - tup_166 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_167 = new In(tup_166) - obj_168 = new Concat(obj_165, obj_167) - obj_169 = new Concat(obj_163, obj_168) - obj_170 = new Exact("1") - obj_171 = new Empty() - obj_172 = new Union(obj_170, obj_171) - tup_173 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_174 = new In(tup_173) - obj_175 = new Empty() - obj_176 = new Union(obj_174, obj_175) - tup_177 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_178 = new In(tup_177) - obj_179 = new Concat(obj_176, obj_178) - obj_180 = new Concat(obj_172, obj_179) - obj_181 = new Union(obj_169, obj_180) - obj_182 = new Union(obj_162, obj_181) - obj_183 = new Exact(".") - obj_184 = new Concat(obj_182, obj_183) - obj_185 = new Exact("2") - obj_186 = new Exact("5") - tup_187 = ["0", "1", "2", "3", "4", "5"] - obj_188 = new In(tup_187) - obj_189 = new Concat(obj_186, obj_188) - obj_190 = new Concat(obj_185, obj_189) - obj_191 = new Exact("2") - tup_192 = ["0", "1", "2", "3", "4"] - obj_193 = new In(tup_192) - tup_194 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_195 = new In(tup_194) - obj_196 = new Concat(obj_193, obj_195) - obj_197 = new Concat(obj_191, obj_196) - obj_198 = new Exact("1") - obj_199 = new Empty() - obj_200 = new Union(obj_198, obj_199) - tup_201 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_202 = new In(tup_201) - obj_203 = new Empty() - obj_204 = new Union(obj_202, obj_203) - tup_205 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_206 = new In(tup_205) - obj_207 = new Concat(obj_204, obj_206) - obj_208 = new Concat(obj_200, obj_207) - obj_209 = new Union(obj_197, obj_208) - obj_210 = new Union(obj_190, obj_209) - obj_211 = new Exact(".") - obj_212 = new Concat(obj_210, obj_211) - obj_213 = new Exact("2") - obj_214 = new Exact("5") - tup_215 = ["0", "1", "2", "3", "4", "5"] - obj_216 = new In(tup_215) - obj_217 = new Concat(obj_214, obj_216) - obj_218 = new Concat(obj_213, obj_217) - obj_219 = new Exact("2") - tup_220 = ["0", "1", "2", "3", "4"] - obj_221 = new In(tup_220) - tup_222 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_223 = new In(tup_222) - obj_224 = new Concat(obj_221, obj_223) - obj_225 = new Concat(obj_219, obj_224) - obj_226 = new Exact("1") - obj_227 = new Empty() - obj_228 = new Union(obj_226, obj_227) - tup_229 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_230 = new In(tup_229) - obj_231 = new Empty() - obj_232 = new Union(obj_230, obj_231) - tup_233 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_234 = new In(tup_233) - obj_235 = new Concat(obj_232, obj_234) - obj_236 = new Concat(obj_228, obj_235) - obj_237 = new Union(obj_225, obj_236) - obj_238 = new Union(obj_218, obj_237) - obj_239 = new Exact(".") - obj_240 = new Concat(obj_238, obj_239) - obj_241 = new Concat(obj_212, obj_240) - obj_242 = new Concat(obj_184, obj_241) - tmp122 = obj_242 + tmp122 = nTimes_StagedRegExp_sp_0(tmp121, 3) ipv4 = new Concat(tmp122, segment) matchAll_StagedRegExp_sp_2(ipv4, s) fun matchAllImpl(p, s, res) = @@ -483,80 +372,44 @@ module StagedRegExp with tmp65 = s.slice(1) matchAllImpl(p, tmp65, res) fun matchAllURI(s) = - let {n1, n2, n3, w, d, p8, head, body, params, uri, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tmp97, tmp98, tmp99, tmp100, tmp101, tup_19, obj_20, tup_21, obj_22, tup_23, tup_24, tup_25, tup_26, tup_27, obj_28, tup_29, obj_30, obj_31, obj_32, tup_33, obj_34, tup_35, obj_36, obj_37, obj_38, tup_39, obj_40, tup_41, obj_42, obj_43, obj_44, obj_45, tup_46, obj_47, obj_48, obj_49, obj_50, obj_51, obj_52, tup_53, obj_54, obj_55, obj_56, obj_57, obj_58} + let {n1, n2, n3, w, d, p8, head, body, params, uri, tmp76, tmp77, tmp78, tmp79, tmp80, tmp81, tmp82, tmp83, tmp84, tmp85, tmp86, tmp87, tmp88, tmp89, tmp90, tmp91, tmp92, tmp93, tmp94, tmp95, tmp96, tmp97, tmp98, tmp99, tmp100, tmp101, tup_9, tup_10, tup_11, tup_12} tmp76 = ["/", "?", "#", " ", "\n", "\t", "\r"] n1 = new Not(tmp76) tmp77 = ["?", "#", " ", "\n", "\t", "\r"] n2 = new Not(tmp77) tmp78 = ["#", " ", "\n", "\t", "\r"] n3 = new Not(tmp78) - tup_19 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - obj_20 = new In(tup_19) - w = obj_20 - tup_21 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_22 = new In(tup_21) - d = obj_22 - tup_23 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp79 = tup_23 - tup_24 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - tmp80 = tup_24 + w = words() + d = digits() + tup_9 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp79 = tup_9 + tup_10 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + tmp80 = tup_10 tmp81 = ["-", "_"] - tup_25 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] - tmp82 = tup_25 - tup_26 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] - p8 = tup_26 - tup_27 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - obj_28 = new In(tup_27) - tup_29 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - obj_30 = new In(tup_29) - obj_31 = new Star(obj_30) - obj_32 = new Concat(obj_28, obj_31) - tmp83 = obj_32 + tup_11 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] + tmp82 = tup_11 + tup_12 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] + p8 = tup_12 + tmp83 = plus_StagedRegExp_sp_1(w) tmp84 = new Exact(":") tmp85 = new Exact("/") tmp86 = new Exact("/") tmp87 = new Concat(tmp85, tmp86) tmp88 = new Concat(tmp84, tmp87) head = new Concat(tmp83, tmp88) - tup_33 = ["/", "?", "#", " ", "\n", "\t", "\r"] - obj_34 = new Not(tup_33) - tup_35 = ["/", "?", "#", " ", "\n", "\t", "\r"] - obj_36 = new Not(tup_35) - obj_37 = new Star(obj_36) - obj_38 = new Concat(obj_34, obj_37) - tmp89 = obj_38 - tup_39 = ["?", "#", " ", "\n", "\t", "\r"] - obj_40 = new Not(tup_39) - tup_41 = ["?", "#", " ", "\n", "\t", "\r"] - obj_42 = new Not(tup_41) - obj_43 = new Star(obj_42) - obj_44 = new Concat(obj_40, obj_43) - tmp90 = obj_44 + tmp89 = plus_StagedRegExp_sp_2(n1) + tmp90 = plus_StagedRegExp_sp_3(n2) body = new Concat(tmp89, tmp90) tmp91 = new Exact("?") tmp92 = new In(p8) tmp93 = new Star(tmp92) tmp94 = new Concat(tmp91, tmp93) - obj_45 = new Exact("?") - tup_46 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] - obj_47 = new In(tup_46) - obj_48 = new Star(obj_47) - obj_49 = new Concat(obj_45, obj_48) - obj_50 = new Empty() - obj_51 = new Union(obj_49, obj_50) - tmp95 = obj_51 + tmp95 = question_StagedRegExp_sp_0(tmp94) tmp96 = new Exact("#") tmp97 = new In(p8) tmp98 = new Star(tmp97) tmp99 = new Concat(tmp96, tmp98) - obj_52 = new Exact("#") - tup_53 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_"] - obj_54 = new In(tup_53) - obj_55 = new Star(obj_54) - obj_56 = new Concat(obj_52, obj_55) - obj_57 = new Empty() - obj_58 = new Union(obj_56, obj_57) - tmp100 = obj_58 + tmp100 = question_StagedRegExp_sp_1(tmp99) params = new Concat(tmp95, tmp100) tmp101 = new Concat(body, params) uri = new Concat(head, tmp101) @@ -619,19 +472,19 @@ module StagedRegExp with tmp53 = nTimes(r, tmp52) new Concat(r, tmp53) fun notDigit() = - let {tmp39, tup_5} - tup_5 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - tmp39 = tup_5 + let {tmp39, tup_3} + tup_3 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + tmp39 = tup_3 new Not(tmp39) fun notSpace() = - let {tmp38, tup_4} - tup_4 = [" ", "\n", "\t", "\r"] - tmp38 = tup_4 + let {tmp38, tup_2} + tup_2 = [" ", "\n", "\t", "\r"] + tmp38 = tup_2 new Not(tmp38) fun notWord() = - let {tmp37, tup_3} - tup_3 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp37 = tup_3 + let {tmp37, tup_1} + tup_1 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp37 = tup_1 new Not(tmp37) fun plus(r) = let {tmp54} @@ -644,14 +497,14 @@ module StagedRegExp with new Union(r, tmp48) fun setEq(s1, s2) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".setEq(s1, s2) fun spaces() = - let {tmp50, tup_7} - tup_7 = [" ", "\n", "\t", "\r"] - tmp50 = tup_7 + let {tmp50, tup_5} + tup_5 = [" ", "\n", "\t", "\r"] + tmp50 = tup_5 new In(tmp50) fun words() = - let {tmp49, tup_6} - tup_6 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] - tmp49 = tup_6 + let {tmp49, tup_4} + tup_4 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + tmp49 = tup_4 new In(tmp49) open StagedRegExp fun has_StagedRegExp_sp_0(arr, ele) = StagedRegExp__Legacy."SeqHelper$StagedRegExp".has(arr, ele) @@ -1104,101 +957,16 @@ fun match_StagedRegExp_sp_0(p, s) = matchImpl_StagedRegExp_sp_1(p, s, "") fun match_StagedRegExp_sp_1(p, s) = matchImpl_StagedRegExp_sp_3(p, s, "") fun match_StagedRegExp_sp_2(p, s) = matchImpl_StagedRegExp_sp_6(p, s, "") fun nTimes_StagedRegExp_sp_0(r, i) = - let {scrut17, tmp52, tmp53, obj_100, obj_101, tup_102, obj_103, obj_104, obj_105, obj_106, tup_107, obj_108, tup_109, obj_110, obj_111, obj_112, obj_113, obj_114, obj_115, tup_116, obj_117, obj_118, obj_119, tup_120, obj_121, obj_122, obj_123, obj_124, obj_125, obj_126, obj_127, obj_128, obj_129, tup_130, obj_131, obj_132, obj_133, obj_134, tup_135, obj_136, tup_137, obj_138, obj_139, obj_140, obj_141, obj_142, obj_143, tup_144, obj_145, obj_146, obj_147, tup_148, obj_149, obj_150, obj_151, obj_152, obj_153, obj_154, obj_155, obj_156} + let {scrut17, tmp52, tmp53} scrut17 = false tmp52 = 2 - obj_100 = new Exact("2") - obj_101 = new Exact("5") - tup_102 = ["0", "1", "2", "3", "4", "5"] - obj_103 = new In(tup_102) - obj_104 = new Concat(obj_101, obj_103) - obj_105 = new Concat(obj_100, obj_104) - obj_106 = new Exact("2") - tup_107 = ["0", "1", "2", "3", "4"] - obj_108 = new In(tup_107) - tup_109 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_110 = new In(tup_109) - obj_111 = new Concat(obj_108, obj_110) - obj_112 = new Concat(obj_106, obj_111) - obj_113 = new Exact("1") - obj_114 = new Empty() - obj_115 = new Union(obj_113, obj_114) - tup_116 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_117 = new In(tup_116) - obj_118 = new Empty() - obj_119 = new Union(obj_117, obj_118) - tup_120 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_121 = new In(tup_120) - obj_122 = new Concat(obj_119, obj_121) - obj_123 = new Concat(obj_115, obj_122) - obj_124 = new Union(obj_112, obj_123) - obj_125 = new Union(obj_105, obj_124) - obj_126 = new Exact(".") - obj_127 = new Concat(obj_125, obj_126) - obj_128 = new Exact("2") - obj_129 = new Exact("5") - tup_130 = ["0", "1", "2", "3", "4", "5"] - obj_131 = new In(tup_130) - obj_132 = new Concat(obj_129, obj_131) - obj_133 = new Concat(obj_128, obj_132) - obj_134 = new Exact("2") - tup_135 = ["0", "1", "2", "3", "4"] - obj_136 = new In(tup_135) - tup_137 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_138 = new In(tup_137) - obj_139 = new Concat(obj_136, obj_138) - obj_140 = new Concat(obj_134, obj_139) - obj_141 = new Exact("1") - obj_142 = new Empty() - obj_143 = new Union(obj_141, obj_142) - tup_144 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_145 = new In(tup_144) - obj_146 = new Empty() - obj_147 = new Union(obj_145, obj_146) - tup_148 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_149 = new In(tup_148) - obj_150 = new Concat(obj_147, obj_149) - obj_151 = new Concat(obj_143, obj_150) - obj_152 = new Union(obj_140, obj_151) - obj_153 = new Union(obj_133, obj_152) - obj_154 = new Exact(".") - obj_155 = new Concat(obj_153, obj_154) - obj_156 = new Concat(obj_127, obj_155) - tmp53 = obj_156 + tmp53 = nTimes_StagedRegExp_sp_1(r, tmp52) new Concat(r, tmp53) fun nTimes_StagedRegExp_sp_1(r, i) = - let {scrut17, tmp52, tmp53, obj_72, obj_73, tup_74, obj_75, obj_76, obj_77, obj_78, tup_79, obj_80, tup_81, obj_82, obj_83, obj_84, obj_85, obj_86, obj_87, tup_88, obj_89, obj_90, obj_91, tup_92, obj_93, obj_94, obj_95, obj_96, obj_97, obj_98, obj_99} + let {scrut17, tmp52, tmp53} scrut17 = false tmp52 = 1 - obj_72 = new Exact("2") - obj_73 = new Exact("5") - tup_74 = ["0", "1", "2", "3", "4", "5"] - obj_75 = new In(tup_74) - obj_76 = new Concat(obj_73, obj_75) - obj_77 = new Concat(obj_72, obj_76) - obj_78 = new Exact("2") - tup_79 = ["0", "1", "2", "3", "4"] - obj_80 = new In(tup_79) - tup_81 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_82 = new In(tup_81) - obj_83 = new Concat(obj_80, obj_82) - obj_84 = new Concat(obj_78, obj_83) - obj_85 = new Exact("1") - obj_86 = new Empty() - obj_87 = new Union(obj_85, obj_86) - tup_88 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_89 = new In(tup_88) - obj_90 = new Empty() - obj_91 = new Union(obj_89, obj_90) - tup_92 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] - obj_93 = new In(tup_92) - obj_94 = new Concat(obj_91, obj_93) - obj_95 = new Concat(obj_87, obj_94) - obj_96 = new Union(obj_84, obj_95) - obj_97 = new Union(obj_77, obj_96) - obj_98 = new Exact(".") - obj_99 = new Concat(obj_97, obj_98) - tmp53 = obj_99 + tmp53 = nTimes_StagedRegExp_sp_2(r, tmp52) new Concat(r, tmp53) fun nTimes_StagedRegExp_sp_2(r, i) = let {scrut17, tmp52, tmp53} @@ -1237,31 +1005,20 @@ fun question_StagedRegExp_sp_3(r) = tmp48 = new Empty() new Union(r, tmp48) fun canBeEmpty_Nothing_sp_0(self) = false -fun derive_Nothing_sp_0(self, c) = - let {obj_244} - obj_244 = new Nothing() - obj_244 -fun normalize_Nothing_sp_0(self) = - let {obj_18} - obj_18 = new Nothing() - obj_18 +fun derive_Nothing_sp_0(self, c) = self +fun normalize_Nothing_sp_0(self) = self fun normalize_Nothing_sp_1(self) = self fun startsWith_Nothing_sp_0(self, c) = false fun canBeEmpty_Empty_sp_0(self) = true -fun derive_Empty_sp_0(self, c) = - let {obj_243} - obj_243 = new Nothing() - obj_243 -fun normalize_Empty_sp_0(self) = - let {obj_17} - obj_17 = new Empty() - obj_17 +fun derive_Empty_sp_0(self, c) = new Nothing() +fun normalize_Empty_sp_0(self) = self fun startsWith_Empty_sp_0(self, c) = false fun canBeEmpty_Exact_sp_0(self) = false fun canBeEmpty_Exact_sp_1(self) = false fun canBeEmpty_Exact_sp_2(self) = false fun canBeEmpty_Exact_sp_3(self) = false fun canBeEmpty_Exact_sp_4(self) = false +fun canBeEmpty_Exact_sp_5(self) = false fun derive_Exact_sp_0(self, c) = let {scrut2} scrut2 = self.startsWith(c) @@ -1292,8 +1049,15 @@ fun derive_Exact_sp_4(self, c) = if scrut2 is true then new Empty() else new Nothing() +fun derive_Exact_sp_5(self, c) = + let {scrut2} + scrut2 = self.startsWith(c) + if scrut2 is + true then new Empty() + else new Nothing() fun normalize_Exact_sp_0(self) = self fun normalize_Exact_sp_1(self) = self +fun normalize_Exact_sp_10(self) = self fun normalize_Exact_sp_2(self) = self fun normalize_Exact_sp_3(self) = self fun normalize_Exact_sp_4(self) = self @@ -1301,11 +1065,13 @@ fun normalize_Exact_sp_5(self) = self fun normalize_Exact_sp_6(self) = self fun normalize_Exact_sp_7(self) = self fun normalize_Exact_sp_8(self) = self +fun normalize_Exact_sp_9(self) = self fun startsWith_Exact_sp_0(self, c) = ==("@", c) fun startsWith_Exact_sp_1(self, c) = ==(":", c) fun startsWith_Exact_sp_2(self, c) = ==("2", c) -fun startsWith_Exact_sp_3(self, c) = ==("1", c) -fun startsWith_Exact_sp_4(self, c) = ==(".", c) +fun startsWith_Exact_sp_3(self, c) = ==("2", c) +fun startsWith_Exact_sp_4(self, c) = ==("1", c) +fun startsWith_Exact_sp_5(self, c) = ==(".", c) fun canBeEmpty_Not_sp_0(self) = false fun derive_Not_sp_0(self, c) = let {scrut3} @@ -1337,7 +1103,7 @@ fun derive_Union_sp_1(self, c) = normalize_Union_sp_11(tmp8) fun derive_Union_sp_2(self, c) = let {tmp6, tmp7, tmp8} - tmp6 = derive_Exact_sp_3(self.p1, c) + tmp6 = derive_Exact_sp_4(self.p1, c) tmp7 = derive_Empty_sp_0(self.p2, c) tmp8 = new Union.class(tmp6, tmp7) normalize_Union_sp_7(tmp8) @@ -1412,15 +1178,15 @@ fun normalize_Union_sp_1(self) = mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_10(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_In_sp_5(self.p1) + p1__1 = normalize_In_sp_6(self.p1) p2__1 = normalize_Empty_sp_0(self.p2) tmp16 = [p1__1] arr11 = tmp16 tmp17 = [p2__1] arr2 = tmp17 tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 + tmp19 = len_StagedRegExp_sp_1(arr2) + tmp20 = len_StagedRegExp_sp_1(arr2) s2 = self.iter(tmp18, arr2, 1, 1) tmp21 = len(s2.arr) tmp22 = len(s2.arr) @@ -1429,7 +1195,7 @@ fun normalize_Union_sp_11(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} if self.p1 is Concat then - p1__1 = normalize_Concat_sp_33(self.p1) + p1__1 = normalize_Concat_sp_50(self.p1) Nothing then p1__1 = normalize_Nothing_sp_0(self.p1) p2__1 = self.p2.normalize() @@ -1452,7 +1218,7 @@ fun normalize_Union_sp_12(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} if self.p1 is Concat then - p1__1 = normalize_Concat_sp_31(self.p1) + p1__1 = normalize_Concat_sp_51(self.p1) Nothing then p1__1 = normalize_Nothing_sp_0(self.p1) p2__1 = self.p2.normalize() @@ -1473,7 +1239,7 @@ fun normalize_Union_sp_12(self) = mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_13(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_41(self.p1) + p1__1 = normalize_Concat_sp_56(self.p1) p2__1 = normalize_Union_sp_14(self.p2) tmp16 = [p1__1] arr11 = tmp16 @@ -1492,8 +1258,8 @@ fun normalize_Union_sp_13(self) = mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_14(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_42(self.p1) - p2__1 = normalize_Concat_sp_43(self.p2) + p1__1 = normalize_Concat_sp_57(self.p1) + p2__1 = normalize_Concat_sp_58(self.p2) tmp16 = [p1__1] arr11 = tmp16 tmp17 = [p2__1] @@ -1507,22 +1273,22 @@ fun normalize_Union_sp_14(self) = mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_15(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Exact_sp_8(self.p1) + p1__1 = normalize_Exact_sp_10(self.p1) p2__1 = normalize_Empty_sp_0(self.p2) tmp16 = [p1__1] arr11 = tmp16 tmp17 = [p2__1] arr2 = tmp17 tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 + tmp19 = len_StagedRegExp_sp_1(arr2) + tmp20 = len_StagedRegExp_sp_1(arr2) s2 = self.iter(tmp18, arr2, 1, 1) tmp21 = len(s2.arr) tmp22 = len(s2.arr) mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_16(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_37(self.p1) + p1__1 = normalize_Concat_sp_52(self.p1) if self.p2 is Empty then p2__1 = normalize_Empty_sp_0(self.p2) @@ -1541,18 +1307,18 @@ fun normalize_Union_sp_16(self) = mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_17(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_47(self.p1) + p1__1 = normalize_Concat_sp_62(self.p1) if self.p2 is Nothing then p2__1 = normalize_Nothing_sp_0(self.p2) Exact then - p2__1 = normalize_Exact_sp_1(self.p2) + p2__1 = normalize_Exact_sp_7(self.p2) Nothing then p2__1 = normalize_Nothing_sp_1(self.p2) Concat then - p2__1 = normalize_Concat_sp_37(self.p2) + p2__1 = normalize_Concat_sp_52(self.p2) Concat then - p2__1 = normalize_Concat_sp_50(self.p2) + p2__1 = normalize_Concat_sp_65(self.p2) tmp16 = [p1__1] arr11 = tmp16 tmp17 = [p2__1] @@ -1566,10 +1332,10 @@ fun normalize_Union_sp_17(self) = mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_2(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_3(self.p1) + p1__1 = normalize_Concat_sp_13(self.p1) if self.p2 is Concat then - p2__1 = normalize_Concat_sp_5(self.p2) + p2__1 = normalize_Concat_sp_10(self.p2) Nothing then p2__1 = normalize_Nothing_sp_0(self.p2) tmp16 = [p1__1] @@ -1585,40 +1351,40 @@ fun normalize_Union_sp_2(self) = mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_3(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_20(self.p1) + p1__1 = normalize_Concat_sp_28(self.p1) p2__1 = normalize_Empty_sp_0(self.p2) tmp16 = [p1__1] arr11 = tmp16 tmp17 = [p2__1] arr2 = tmp17 tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 + tmp19 = len_StagedRegExp_sp_1(arr2) + tmp20 = len_StagedRegExp_sp_1(arr2) s2 = self.iter(tmp18, arr2, 1, 1) tmp21 = len(s2.arr) tmp22 = len(s2.arr) mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_4(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_21(self.p1) + p1__1 = normalize_Concat_sp_29(self.p1) p2__1 = normalize_Empty_sp_0(self.p2) tmp16 = [p1__1] arr11 = tmp16 tmp17 = [p2__1] arr2 = tmp17 tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 + tmp19 = len_StagedRegExp_sp_1(arr2) + tmp20 = len_StagedRegExp_sp_1(arr2) s2 = self.iter(tmp18, arr2, 1, 1) tmp21 = len(s2.arr) tmp22 = len(s2.arr) mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_5(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_10(self.p1) + p1__1 = normalize_Concat_sp_32(self.p1) if self.p2 is Concat then - p2__1 = normalize_Concat_sp_12(self.p2) + p2__1 = normalize_Concat_sp_22(self.p2) Nothing then p2__1 = normalize_Nothing_sp_0(self.p2) tmp16 = [p1__1] @@ -1634,12 +1400,12 @@ fun normalize_Union_sp_5(self) = mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_6(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_23(self.p1) + p1__1 = normalize_Concat_sp_33(self.p1) if self.p2 is Nothing then p2__1 = normalize_Nothing_sp_0(self.p2) Concat then - p2__1 = normalize_Concat_sp_29(self.p2) + p2__1 = normalize_Concat_sp_42(self.p2) tmp16 = [p1__1] arr11 = tmp16 tmp17 = [p2__1] @@ -1664,15 +1430,15 @@ fun normalize_Union_sp_7(self) = tmp17 = [p2__1] arr2 = tmp17 tmp18 = new DedupSet(arr11) - tmp19 = 1 - tmp20 = 1 + tmp19 = len_StagedRegExp_sp_4(arr2) + tmp20 = len_StagedRegExp_sp_4(arr2) s2 = self.iter(tmp18, arr2, 1, 1) tmp21 = len(s2.arr) tmp22 = len(s2.arr) mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_8(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_34(self.p1) + p1__1 = normalize_Concat_sp_47(self.p1) if self.p2 is Empty then p2__1 = normalize_Empty_sp_0(self.p2) @@ -1691,7 +1457,7 @@ fun normalize_Union_sp_8(self) = mkUnion(s2.arr, tmp21, tmp22) fun normalize_Union_sp_9(self) = let {p1__1, p2__1, arr11, arr2, s2, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22} - p1__1 = normalize_Concat_sp_35(self.p1) + p1__1 = normalize_Concat_sp_48(self.p1) p2__1 = self.p2.normalize() tmp16 = [p1__1] arr11 = tmp16 @@ -1722,7 +1488,7 @@ fun startsWith_Union_sp_1(self, c) = else true fun startsWith_Union_sp_2(self, c) = let {tmp26} - tmp26 = startsWith_Exact_sp_3(self.p1, c) + tmp26 = startsWith_Exact_sp_4(self.p1, c) if tmp26 is false then startsWith_Empty_sp_0(self.p2, c) else true @@ -1759,6 +1525,7 @@ fun normalize_In_sp_2(self) = self fun normalize_In_sp_3(self) = self fun normalize_In_sp_4(self) = self fun normalize_In_sp_5(self) = self +fun normalize_In_sp_6(self) = self fun startsWith_In_sp_0(self, c) = has_StagedRegExp_sp_0(self.chars, c) fun startsWith_In_sp_1(self, c) = has_StagedRegExp_sp_1(self.chars, c) fun startsWith_In_sp_2(self, c) = has_StagedRegExp_sp_3(self.chars, c) @@ -1806,19 +1573,19 @@ fun derive_Concat_sp_10(self, c) = p1__2 = derive_Concat_sp_11(self.p1, c) scrut8 = canBeEmpty_Concat_sp_11(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_27(tmp30) + normalize_Concat_sp_40(tmp30) fun derive_Concat_sp_11(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Concat_sp_12(self.p1, c) scrut8 = canBeEmpty_Concat_sp_12(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_26(tmp30) + normalize_Concat_sp_39(tmp30) fun derive_Concat_sp_12(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Not_sp_0(self.p1, c) scrut8 = canBeEmpty_Not_sp_0(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_25(tmp30) + normalize_Concat_sp_38(tmp30) fun derive_Concat_sp_13(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = self.p1.derive(c) @@ -1831,37 +1598,37 @@ fun derive_Concat_sp_13(self, c) = normalize_Union_sp_6(tmp29) else tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_23(tmp30) + normalize_Concat_sp_33(tmp30) fun derive_Concat_sp_14(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Concat_sp_15(self.p1, c) scrut8 = canBeEmpty_Concat_sp_15(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_44(tmp30) + normalize_Concat_sp_59(tmp30) fun derive_Concat_sp_15(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Concat_sp_16(self.p1, c) scrut8 = canBeEmpty_Concat_sp_16(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_38(tmp30) + normalize_Concat_sp_53(tmp30) fun derive_Concat_sp_16(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Union_sp_0(self.p1, c) scrut8 = canBeEmpty_Union_sp_0(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_37(tmp30) + normalize_Concat_sp_52(tmp30) fun derive_Concat_sp_17(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Exact_sp_2(self.p1, c) scrut8 = canBeEmpty_Exact_sp_2(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_30(tmp30) + normalize_Concat_sp_43(tmp30) fun derive_Concat_sp_18(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} - p1__2 = derive_Exact_sp_2(self.p1, c) - scrut8 = canBeEmpty_Exact_sp_2(self.p1) + p1__2 = derive_Exact_sp_3(self.p1, c) + scrut8 = canBeEmpty_Exact_sp_3(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_32(tmp30) + normalize_Concat_sp_45(tmp30) fun derive_Concat_sp_19(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Union_sp_2(self.p1, c) @@ -1891,21 +1658,21 @@ fun derive_Concat_sp_21(self, c) = p1__2 = derive_Concat_sp_22(self.p1, c) scrut8 = canBeEmpty_Concat_sp_22(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_49(tmp30) + normalize_Concat_sp_64(tmp30) fun derive_Concat_sp_22(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} if self.p1 is Exact then - p1__2 = derive_Exact_sp_4(self.p1, c) + p1__2 = derive_Exact_sp_5(self.p1, c) Concat then p1__2 = derive_Concat_sp_23(self.p1, c) if self.p1 is Exact then - scrut8 = canBeEmpty_Exact_sp_4(self.p1) + scrut8 = canBeEmpty_Exact_sp_5(self.p1) Concat then scrut8 = canBeEmpty_Concat_sp_23(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_47(tmp30) + normalize_Concat_sp_62(tmp30) fun derive_Concat_sp_23(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = self.p1.derive(c) @@ -1913,12 +1680,12 @@ fun derive_Concat_sp_23(self, c) = if scrut8 is true then tmp27 = new Concat.class(p1__2, self.p2) - tmp28 = derive_Exact_sp_4(self.p2, c) + tmp28 = derive_Exact_sp_5(self.p2, c) tmp29 = new Union(tmp27, tmp28) normalize_Union_sp_16(tmp29) else tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_37(tmp30) + normalize_Concat_sp_52(tmp30) fun derive_Concat_sp_24(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} if self.p1 is @@ -1937,16 +1704,16 @@ fun derive_Concat_sp_25(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} if self.p1 is Exact then - p1__2 = derive_Exact_sp_4(self.p1, c) + p1__2 = derive_Exact_sp_5(self.p1, c) Concat then p1__2 = derive_Concat_sp_23(self.p1, c) if self.p1 is Exact then - scrut8 = canBeEmpty_Exact_sp_4(self.p1) + scrut8 = canBeEmpty_Exact_sp_5(self.p1) Concat then scrut8 = canBeEmpty_Concat_sp_23(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_50(tmp30) + normalize_Concat_sp_65(tmp30) fun derive_Concat_sp_26(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = self.p1.derive(c) @@ -1965,37 +1732,37 @@ fun derive_Concat_sp_26(self, c) = normalize_Union_sp_17(tmp29) else tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_47(tmp30) + normalize_Concat_sp_62(tmp30) fun derive_Concat_sp_3(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Exact_sp_0(self.p1, c) scrut8 = canBeEmpty_Exact_sp_0(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_8(tmp30) + normalize_Concat_sp_9(tmp30) fun derive_Concat_sp_4(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Concat_sp_5(self.p1, c) scrut8 = canBeEmpty_Concat_sp_5(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_13(tmp30) + normalize_Concat_sp_19(tmp30) fun derive_Concat_sp_5(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Concat_sp_6(self.p1, c) scrut8 = canBeEmpty_Concat_sp_6(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_10(tmp30) + normalize_Concat_sp_16(tmp30) fun derive_Concat_sp_6(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_In_sp_1(self.p1, c) scrut8 = canBeEmpty_In_sp_1(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_9(tmp30) + normalize_Concat_sp_15(tmp30) fun derive_Concat_sp_7(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Concat_sp_8(self.p1, c) scrut8 = canBeEmpty_Concat_sp_8(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_23(tmp30) + normalize_Concat_sp_33(tmp30) fun derive_Concat_sp_8(self, c) = let {p1__2, scrut8, tmp27, tmp28, tmp29, tmp30} p1__2 = derive_Star_sp_1(self.p1, c) @@ -2009,7 +1776,7 @@ fun derive_Concat_sp_9(self, c) = p1__2 = derive_Exact_sp_1(self.p1, c) scrut8 = canBeEmpty_Exact_sp_1(self.p1) tmp30 = new Concat.class(p1__2, self.p2) - normalize_Concat_sp_22(tmp30) + normalize_Concat_sp_31(tmp30) fun normalize_Concat_sp_0(self) = let {p1__3, tmp31} p1__3 = self.p1.normalize() @@ -2029,6 +1796,48 @@ fun normalize_Concat_sp_1(self) = tmp31 = normalize_Star_sp_0(self.p2) new Concat.class(p1__3, tmp31) fun normalize_Concat_sp_10(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_11(self.p1) + tmp31 = normalize_Concat_sp_12(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_11(self) = + let {p1__3, tmp31} + p1__3 = normalize_In_sp_0(self.p1) + tmp31 = normalize_Star_sp_1(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_12(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_1(self.p1) + tmp31 = normalize_Concat_sp_11(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_13(self) = + let {p1__3, tmp31} + if self.p1 is + Star then + p1__3 = normalize_Star_sp_1(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_14(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_14(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_0(self.p1) + tmp31 = normalize_Concat_sp_10(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_15(self) = + let {p1__3, tmp31} + if self.p1 is + Empty then + p1__3 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Empty then normalize_Star_sp_2(self.p2) + Nothing then p1__3 +fun normalize_Concat_sp_16(self) = let {p1__3, tmp31} if self.p1 is Star then @@ -2038,56 +1847,76 @@ fun normalize_Concat_sp_10(self) = if p1__3 is Nothing then p1__3 else - tmp31 = normalize_Concat_sp_11(self.p2) + tmp31 = normalize_Concat_sp_17(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_11(self) = +fun normalize_Concat_sp_17(self) = let {p1__3, tmp31} p1__3 = normalize_Exact_sp_2(self.p1) - tmp31 = normalize_Concat_sp_12(self.p2) + tmp31 = normalize_Concat_sp_18(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_12(self) = +fun normalize_Concat_sp_18(self) = let {p1__3, tmp31} p1__3 = normalize_Exact_sp_3(self.p1) tmp31 = normalize_Exact_sp_3(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_13(self) = +fun normalize_Concat_sp_19(self) = let {p1__3, tmp31} if self.p1 is Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) Concat then - p1__3 = normalize_Concat_sp_14(self.p1) + p1__3 = normalize_Concat_sp_20(self.p1) if p1__3 is Nothing then p1__3 else - tmp31 = normalize_Concat_sp_15(self.p2) + tmp31 = normalize_Concat_sp_23(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_14(self) = +fun normalize_Concat_sp_2(self) = + let {p1__3, tmp31} + if self.p1 is + Empty then + p1__3 = normalize_Empty_sp_0(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Empty then normalize_Star_sp_1(self.p2) + Nothing then p1__3 +fun normalize_Concat_sp_20(self) = let {p1__3, tmp31} p1__3 = normalize_Star_sp_2(self.p1) - tmp31 = normalize_Concat_sp_11(self.p2) + tmp31 = normalize_Concat_sp_21(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_15(self) = +fun normalize_Concat_sp_21(self) = let {p1__3, tmp31} - p1__3 = normalize_Concat_sp_16(self.p1) - tmp31 = normalize_Concat_sp_19(self.p2) + p1__3 = normalize_Exact_sp_2(self.p1) + tmp31 = normalize_Concat_sp_22(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_16(self) = +fun normalize_Concat_sp_22(self) = let {p1__3, tmp31} - p1__3 = normalize_Concat_sp_17(self.p1) - tmp31 = normalize_Concat_sp_18(self.p2) + p1__3 = normalize_Exact_sp_3(self.p1) + tmp31 = normalize_Exact_sp_3(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_17(self) = +fun normalize_Concat_sp_23(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_24(self.p1) + tmp31 = normalize_Concat_sp_27(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_24(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_25(self.p1) + tmp31 = normalize_Concat_sp_26(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_25(self) = let {p1__3, tmp31} p1__3 = normalize_Not_sp_0(self.p1) tmp31 = normalize_Star_sp_3(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_18(self) = +fun normalize_Concat_sp_26(self) = let {p1__3, tmp31} p1__3 = normalize_Not_sp_1(self.p1) tmp31 = normalize_Star_sp_4(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_19(self) = +fun normalize_Concat_sp_27(self) = let {p1__3, tmp31} p1__3 = normalize_Union_sp_3(self.p1) if p1__3 is @@ -2096,7 +1925,29 @@ fun normalize_Concat_sp_19(self) = else tmp31 = normalize_Union_sp_4(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_2(self) = +fun normalize_Concat_sp_28(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_4(self.p1) + tmp31 = normalize_Star_sp_5(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_29(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_5(self.p1) + tmp31 = normalize_Star_sp_6(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_3(self) = + let {p1__3, tmp31} + if self.p1 is + Star then + p1__3 = normalize_Star_sp_1(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_4(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_30(self) = let {p1__3, tmp31} if self.p1 is Empty then @@ -2104,19 +1955,9 @@ fun normalize_Concat_sp_2(self) = Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) if p1__3 is - Empty then normalize_Star_sp_1(self.p2) + Empty then normalize_Star_sp_2(self.p2) Nothing then p1__3 -fun normalize_Concat_sp_20(self) = - let {p1__3, tmp31} - p1__3 = normalize_Exact_sp_4(self.p1) - tmp31 = normalize_Star_sp_5(self.p2) - new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_21(self) = - let {p1__3, tmp31} - p1__3 = normalize_Exact_sp_5(self.p1) - tmp31 = normalize_Star_sp_5(self.p2) - new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_22(self) = +fun normalize_Concat_sp_31(self) = let {p1__3, tmp31} if self.p1 is Empty then @@ -2124,23 +1965,50 @@ fun normalize_Concat_sp_22(self) = Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) if p1__3 is - Empty then normalize_Concat_sp_12(self.p2) + Empty then normalize_Concat_sp_22(self.p2) Nothing then p1__3 -fun normalize_Concat_sp_23(self) = +fun normalize_Concat_sp_32(self) = + let {p1__3, tmp31} + if self.p1 is + Star then + p1__3 = normalize_Star_sp_2(self.p1) + Nothing then + p1__3 = normalize_Nothing_sp_0(self.p1) + if p1__3 is + Nothing then p1__3 + else + tmp31 = normalize_Concat_sp_21(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_33(self) = let {p1__3, tmp31} p1__3 = self.p1.normalize() if p1__3 is - Empty then normalize_Concat_sp_24(self.p2) + Empty then normalize_Concat_sp_34(self.p2) Nothing then p1__3 else - tmp31 = normalize_Concat_sp_24(self.p2) + tmp31 = normalize_Concat_sp_34(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_24(self) = +fun normalize_Concat_sp_34(self) = let {p1__3, tmp31} - p1__3 = normalize_Concat_sp_16(self.p1) + p1__3 = normalize_Concat_sp_35(self.p1) tmp31 = self.p2.normalize() new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_25(self) = +fun normalize_Concat_sp_35(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_36(self.p1) + tmp31 = normalize_Concat_sp_37(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_36(self) = + let {p1__3, tmp31} + p1__3 = normalize_Not_sp_0(self.p1) + tmp31 = normalize_Star_sp_3(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_37(self) = + let {p1__3, tmp31} + p1__3 = normalize_Not_sp_1(self.p1) + tmp31 = normalize_Star_sp_4(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_38(self) = let {p1__3, tmp31} if self.p1 is Empty then @@ -2150,7 +2018,7 @@ fun normalize_Concat_sp_25(self) = if p1__3 is Empty then normalize_Star_sp_3(self.p2) Nothing then p1__3 -fun normalize_Concat_sp_26(self) = +fun normalize_Concat_sp_39(self) = let {p1__3, tmp31} if self.p1 is Star then @@ -2160,43 +2028,36 @@ fun normalize_Concat_sp_26(self) = if p1__3 is Nothing then p1__3 else - tmp31 = normalize_Concat_sp_18(self.p2) + tmp31 = normalize_Concat_sp_37(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_27(self) = +fun normalize_Concat_sp_4(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_0(self.p1) + tmp31 = normalize_Concat_sp_5(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_40(self) = let {p1__3, tmp31} if self.p1 is Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) Concat then - p1__3 = normalize_Concat_sp_28(self.p1) + p1__3 = normalize_Concat_sp_41(self.p1) if p1__3 is Nothing then p1__3 else tmp31 = self.p2.normalize() new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_28(self) = +fun normalize_Concat_sp_41(self) = let {p1__3, tmp31} p1__3 = normalize_Star_sp_3(self.p1) - tmp31 = normalize_Concat_sp_18(self.p2) + tmp31 = normalize_Concat_sp_37(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_29(self) = +fun normalize_Concat_sp_42(self) = let {p1__3, tmp31} - p1__3 = normalize_Concat_sp_28(self.p1) + p1__3 = normalize_Concat_sp_41(self.p1) tmp31 = self.p2.normalize() new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_3(self) = - let {p1__3, tmp31} - if self.p1 is - Star then - p1__3 = normalize_Star_sp_1(self.p1) - Nothing then - p1__3 = normalize_Nothing_sp_0(self.p1) - if p1__3 is - Nothing then p1__3 - else - tmp31 = normalize_Concat_sp_4(self.p2) - new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_30(self) = +fun normalize_Concat_sp_43(self) = let {p1__3, tmp31} if self.p1 is Empty then @@ -2204,14 +2065,14 @@ fun normalize_Concat_sp_30(self) = Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) if p1__3 is - Empty then normalize_Concat_sp_31(self.p2) + Empty then normalize_Concat_sp_44(self.p2) Nothing then p1__3 -fun normalize_Concat_sp_31(self) = +fun normalize_Concat_sp_44(self) = let {p1__3, tmp31} p1__3 = normalize_Exact_sp_6(self.p1) - tmp31 = normalize_In_sp_3(self.p2) + tmp31 = normalize_In_sp_4(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_32(self) = +fun normalize_Concat_sp_45(self) = let {p1__3, tmp31} if self.p1 is Empty then @@ -2219,105 +2080,115 @@ fun normalize_Concat_sp_32(self) = Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) if p1__3 is - Empty then normalize_Concat_sp_33(self.p2) + Empty then normalize_Concat_sp_46(self.p2) Nothing then p1__3 -fun normalize_Concat_sp_33(self) = +fun normalize_Concat_sp_46(self) = let {p1__3, tmp31} - p1__3 = normalize_In_sp_4(self.p1) - tmp31 = normalize_In_sp_5(self.p2) + p1__3 = normalize_In_sp_5(self.p1) + tmp31 = normalize_In_sp_6(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_34(self) = +fun normalize_Concat_sp_47(self) = let {p1__3, tmp31} p1__3 = self.p1.normalize() if p1__3 is - Empty then normalize_In_sp_5(self.p2) + Empty then normalize_In_sp_6(self.p2) Nothing then p1__3 else - tmp31 = normalize_In_sp_5(self.p2) + tmp31 = normalize_In_sp_6(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_35(self) = +fun normalize_Concat_sp_48(self) = let {p1__3, tmp31} p1__3 = self.p1.normalize() if p1__3 is - Empty then normalize_Concat_sp_36(self.p2) + Empty then normalize_Concat_sp_49(self.p2) Nothing then p1__3 else - tmp31 = normalize_Concat_sp_36(self.p2) + tmp31 = normalize_Concat_sp_49(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_36(self) = +fun normalize_Concat_sp_49(self) = let {p1__3, tmp31} p1__3 = normalize_Union_sp_10(self.p1) if p1__3 is - Empty then normalize_In_sp_5(self.p2) + Empty then normalize_In_sp_6(self.p2) Nothing then p1__3 else - tmp31 = normalize_In_sp_5(self.p2) + tmp31 = normalize_In_sp_6(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_37(self) = +fun normalize_Concat_sp_5(self) = + let {p1__3, tmp31} + p1__3 = normalize_Concat_sp_6(self.p1) + tmp31 = normalize_Concat_sp_7(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_50(self) = + let {p1__3, tmp31} + p1__3 = normalize_In_sp_5(self.p1) + tmp31 = normalize_In_sp_6(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_51(self) = + let {p1__3, tmp31} + p1__3 = normalize_Exact_sp_6(self.p1) + tmp31 = normalize_In_sp_4(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_52(self) = let {p1__3, tmp31} p1__3 = self.p1.normalize() if p1__3 is - Empty then normalize_Exact_sp_1(self.p2) + Empty then normalize_Exact_sp_7(self.p2) Nothing then p1__3 else - tmp31 = normalize_Exact_sp_1(self.p2) + tmp31 = normalize_Exact_sp_7(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_38(self) = +fun normalize_Concat_sp_53(self) = let {p1__3, tmp31} if self.p1 is Exact then - p1__3 = normalize_Exact_sp_1(self.p1) + p1__3 = normalize_Exact_sp_7(self.p1) Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) Concat then - p1__3 = normalize_Concat_sp_37(self.p1) + p1__3 = normalize_Concat_sp_52(self.p1) if p1__3 is Nothing then p1__3 else - tmp31 = normalize_Concat_sp_39(self.p2) + tmp31 = normalize_Concat_sp_54(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_39(self) = +fun normalize_Concat_sp_54(self) = let {p1__3, tmp31} - p1__3 = normalize_Concat_sp_40(self.p1) + p1__3 = normalize_Concat_sp_55(self.p1) if p1__3 is Nothing then p1__3 else - tmp31 = normalize_Concat_sp_40(self.p2) + tmp31 = normalize_Concat_sp_55(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_4(self) = - let {p1__3, tmp31} - p1__3 = normalize_Exact_sp_0(self.p1) - tmp31 = normalize_Concat_sp_5(self.p2) - new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_40(self) = +fun normalize_Concat_sp_55(self) = let {p1__3, tmp31} p1__3 = normalize_Union_sp_13(self.p1) if p1__3 is - Empty then normalize_Exact_sp_1(self.p2) + Empty then normalize_Exact_sp_7(self.p2) Nothing then p1__3 else - tmp31 = normalize_Exact_sp_1(self.p2) + tmp31 = normalize_Exact_sp_7(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_41(self) = +fun normalize_Concat_sp_56(self) = let {p1__3, tmp31} - p1__3 = normalize_Exact_sp_7(self.p1) - tmp31 = normalize_Concat_sp_31(self.p2) + p1__3 = normalize_Exact_sp_8(self.p1) + tmp31 = normalize_Concat_sp_44(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_42(self) = +fun normalize_Concat_sp_57(self) = let {p1__3, tmp31} - p1__3 = normalize_Exact_sp_7(self.p1) - tmp31 = normalize_Concat_sp_33(self.p2) + p1__3 = normalize_Exact_sp_9(self.p1) + tmp31 = normalize_Concat_sp_46(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_43(self) = +fun normalize_Concat_sp_58(self) = let {p1__3, tmp31} p1__3 = normalize_Union_sp_15(self.p1) if p1__3 is - Empty then normalize_Concat_sp_36(self.p2) + Empty then normalize_Concat_sp_49(self.p2) Nothing then p1__3 else - tmp31 = normalize_Concat_sp_36(self.p2) + tmp31 = normalize_Concat_sp_49(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_44(self) = +fun normalize_Concat_sp_59(self) = let {p1__3, tmp31} if self.p1 is Nothing then @@ -2325,19 +2196,24 @@ fun normalize_Concat_sp_44(self) = Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) Concat then - p1__3 = normalize_Concat_sp_45(self.p1) + p1__3 = normalize_Concat_sp_60(self.p1) if p1__3 is Nothing then p1__3 else tmp31 = normalize_Union_sp_13(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_45(self) = +fun normalize_Concat_sp_6(self) = + let {p1__3, tmp31} + p1__3 = normalize_In_sp_0(self.p1) + tmp31 = normalize_Star_sp_1(self.p2) + new Concat.class(p1__3, tmp31) +fun normalize_Concat_sp_60(self) = let {p1__3, tmp31} if self.p1 is Exact then - p1__3 = normalize_Exact_sp_1(self.p1) + p1__3 = normalize_Exact_sp_7(self.p1) Concat then - p1__3 = normalize_Concat_sp_37(self.p1) + p1__3 = normalize_Concat_sp_52(self.p1) if p1__3 is Nothing then p1__3 else @@ -2345,27 +2221,27 @@ fun normalize_Concat_sp_45(self) = Nothing then tmp31 = normalize_Nothing_sp_0(self.p2) Concat then - tmp31 = normalize_Concat_sp_46(self.p2) + tmp31 = normalize_Concat_sp_61(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_46(self) = +fun normalize_Concat_sp_61(self) = let {p1__3, tmp31} if self.p1 is Exact then - p1__3 = normalize_Exact_sp_1(self.p1) + p1__3 = normalize_Exact_sp_7(self.p1) Concat then - p1__3 = normalize_Concat_sp_37(self.p1) + p1__3 = normalize_Concat_sp_52(self.p1) if p1__3 is Nothing then p1__3 else if self.p2 is Exact then - tmp31 = normalize_Exact_sp_1(self.p2) + tmp31 = normalize_Exact_sp_7(self.p2) Nothing then tmp31 = normalize_Nothing_sp_0(self.p2) Concat then - tmp31 = normalize_Concat_sp_37(self.p2) + tmp31 = normalize_Concat_sp_52(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_47(self) = +fun normalize_Concat_sp_62(self) = let {p1__3, tmp31} p1__3 = self.p1.normalize() if p1__3 is @@ -2373,7 +2249,7 @@ fun normalize_Concat_sp_47(self) = if self.p2 is Nothing then normalize_Nothing_sp_0(self.p2) Nothing then normalize_Nothing_sp_0(self.p2) - Concat then normalize_Concat_sp_48(self.p2) + Concat then normalize_Concat_sp_63(self.p2) Nothing then p1__3 else if self.p2 is @@ -2382,29 +2258,29 @@ fun normalize_Concat_sp_47(self) = Nothing then tmp31 = normalize_Nothing_sp_0(self.p2) Concat then - tmp31 = normalize_Concat_sp_48(self.p2) + tmp31 = normalize_Concat_sp_63(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_48(self) = +fun normalize_Concat_sp_63(self) = let {p1__3, tmp31} if self.p1 is Exact then - p1__3 = normalize_Exact_sp_1(self.p1) + p1__3 = normalize_Exact_sp_7(self.p1) Concat then - p1__3 = normalize_Concat_sp_37(self.p1) + p1__3 = normalize_Concat_sp_52(self.p1) if p1__3 is Nothing then p1__3 else if self.p2 is Exact then - tmp31 = normalize_Exact_sp_1(self.p2) + tmp31 = normalize_Exact_sp_7(self.p2) Nothing then tmp31 = normalize_Nothing_sp_0(self.p2) Nothing then tmp31 = normalize_Nothing_sp_0(self.p2) Concat then - tmp31 = normalize_Concat_sp_37(self.p2) + tmp31 = normalize_Concat_sp_52(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_49(self) = +fun normalize_Concat_sp_64(self) = let {p1__3, tmp31} if self.p1 is Nothing then @@ -2412,46 +2288,36 @@ fun normalize_Concat_sp_49(self) = Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) Concat then - p1__3 = normalize_Concat_sp_48(self.p1) + p1__3 = normalize_Concat_sp_63(self.p1) Concat then - p1__3 = normalize_Concat_sp_47(self.p1) + p1__3 = normalize_Concat_sp_62(self.p1) if p1__3 is Nothing then p1__3 else tmp31 = self.p2.normalize() new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_5(self) = - let {p1__3, tmp31} - p1__3 = normalize_Concat_sp_6(self.p1) - tmp31 = normalize_Concat_sp_7(self.p2) - new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_50(self) = +fun normalize_Concat_sp_65(self) = let {p1__3, tmp31} p1__3 = self.p1.normalize() if p1__3 is Empty then if self.p2 is - Exact then normalize_Exact_sp_1(self.p2) + Exact then normalize_Exact_sp_7(self.p2) Nothing then normalize_Nothing_sp_0(self.p2) Nothing then normalize_Nothing_sp_0(self.p2) - Concat then normalize_Concat_sp_37(self.p2) + Concat then normalize_Concat_sp_52(self.p2) Nothing then p1__3 else if self.p2 is Exact then - tmp31 = normalize_Exact_sp_1(self.p2) + tmp31 = normalize_Exact_sp_7(self.p2) Nothing then tmp31 = normalize_Nothing_sp_0(self.p2) Nothing then tmp31 = normalize_Nothing_sp_0(self.p2) Concat then - tmp31 = normalize_Concat_sp_37(self.p2) + tmp31 = normalize_Concat_sp_52(self.p2) new Concat.class(p1__3, tmp31) -fun normalize_Concat_sp_6(self) = - let {p1__3, tmp31} - p1__3 = normalize_In_sp_0(self.p1) - tmp31 = normalize_Star_sp_1(self.p2) - new Concat.class(p1__3, tmp31) fun normalize_Concat_sp_7(self) = let {p1__3, tmp31} p1__3 = normalize_Exact_sp_1(self.p1) @@ -2465,7 +2331,7 @@ fun normalize_Concat_sp_8(self) = Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) if p1__3 is - Empty then normalize_Concat_sp_5(self.p2) + Empty then normalize_Star_sp_1(self.p2) Nothing then p1__3 fun normalize_Concat_sp_9(self) = let {p1__3, tmp31} @@ -2475,7 +2341,7 @@ fun normalize_Concat_sp_9(self) = Nothing then p1__3 = normalize_Nothing_sp_0(self.p1) if p1__3 is - Empty then normalize_Star_sp_2(self.p2) + Empty then normalize_Concat_sp_10(self.p2) Nothing then p1__3 fun startsWith_Concat_sp_0(self, c) = let {scrut13, scrut14, tmp32} @@ -2565,10 +2431,10 @@ fun startsWith_Concat_sp_17(self, c) = else true fun startsWith_Concat_sp_18(self, c) = let {scrut13, scrut14, tmp32} - tmp32 = startsWith_Exact_sp_2(self.p1, c) + tmp32 = startsWith_Exact_sp_3(self.p1, c) if tmp32 is false then - scrut13 = canBeEmpty_Exact_sp_2(self.p1) + scrut13 = canBeEmpty_Exact_sp_3(self.p1) false else true fun startsWith_Concat_sp_19(self, c) = @@ -2616,14 +2482,14 @@ fun startsWith_Concat_sp_22(self, c) = let {scrut13, scrut14, tmp32} if self.p1 is Exact then - tmp32 = startsWith_Exact_sp_4(self.p1, c) + tmp32 = startsWith_Exact_sp_5(self.p1, c) Concat then tmp32 = startsWith_Concat_sp_23(self.p1, c) if tmp32 is false then if self.p1 is Exact then - scrut13 = canBeEmpty_Exact_sp_4(self.p1) + scrut13 = canBeEmpty_Exact_sp_5(self.p1) Concat then scrut13 = canBeEmpty_Concat_sp_23(self.p1) false @@ -2636,7 +2502,7 @@ fun startsWith_Concat_sp_23(self, c) = scrut13 = self.p1.canBeEmpty() if scrut13 is true then - scrut14 = startsWith_Exact_sp_4(self.p2, c) + scrut14 = startsWith_Exact_sp_5(self.p2, c) if scrut14 is true then true else false @@ -2662,14 +2528,14 @@ fun startsWith_Concat_sp_25(self, c) = let {scrut13, scrut14, tmp32} if self.p1 is Exact then - tmp32 = startsWith_Exact_sp_4(self.p1, c) + tmp32 = startsWith_Exact_sp_5(self.p1, c) Concat then tmp32 = startsWith_Concat_sp_23(self.p1, c) if tmp32 is false then if self.p1 is Exact then - scrut13 = canBeEmpty_Exact_sp_4(self.p1) + scrut13 = canBeEmpty_Exact_sp_5(self.p1) Concat then scrut13 = canBeEmpty_Concat_sp_23(self.p1) false @@ -2760,13 +2626,13 @@ fun derive_Star_sp_0(self, c) = tmp33 = derive_In_sp_0(self.p, c) tmp34 = new Star.class(self.p) tmp35 = new Concat(tmp33, tmp34) - normalize_Concat_sp_2(tmp35) + normalize_Concat_sp_8(tmp35) fun derive_Star_sp_1(self, c) = let {tmp33, tmp34, tmp35} tmp33 = derive_In_sp_1(self.p, c) tmp34 = new Star.class(self.p) tmp35 = new Concat(tmp33, tmp34) - normalize_Concat_sp_9(tmp35) + normalize_Concat_sp_30(tmp35) fun normalize_Star_sp_0(self) = let {tmp36} tmp36 = self.p.normalize() @@ -2791,5 +2657,9 @@ fun normalize_Star_sp_5(self) = let {tmp36} tmp36 = normalize_In_sp_2(self.p) new Star.class(tmp36) +fun normalize_Star_sp_6(self) = + let {tmp36} + tmp36 = normalize_In_sp_3(self.p) + new Star.class(tmp36) fun startsWith_Star_sp_0(self, c) = startsWith_In_sp_0(self.p, c) fun startsWith_Star_sp_1(self, c) = startsWith_In_sp_1(self.p, c) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls index 41ddf4bf73..5142492d00 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/Transform3D.mls @@ -56,13 +56,11 @@ module Transform3D with tmp16 = i - 1 iterRow(tmp15, x, y, rowX, colX, colY, tmp16) fun model(local, position, scaling, rotation) = - let {rot, res1, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58, tup_36, obj_37} + let {rot, res1, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58} tmp47 = rotateZ(rotation.2) tmp48 = rotateY(rotation.1) tmp49 = rotateX(rotation.0) - tup_36 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_37 = new Matrix(tup_36, 4, 4) - tmp50 = obj_37 + tmp50 = ident_Transform3D_sp_0(4) tmp51 = multiply_Transform3D_sp_0(tmp49, tmp50) tmp52 = multiply_Transform3D_sp_1(tmp48, tmp51) rot = multiply_Transform3D_sp_1(tmp47, tmp52) @@ -92,54 +90,44 @@ module Transform3D with res = zeros(x.r, y.c) iterRow_Transform3D_sp_0(res, x, y, x.r, x.c, y.c, x.r) fun rotateX(angle) = - let {s, c2, tmp32, tmp33, tmp34, tmp35, tmp36, tup_30, obj_31} + let {s, c2, tmp32, tmp33, tmp34, tmp35, tmp36} s = Math.sin(angle) c2 = Math.cos(angle) - tup_30 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_31 = new Matrix(tup_30, 4, 4) - tmp32 = obj_31 + tmp32 = ident_Transform3D_sp_0(4) tmp33 = update_Transform3D_sp_13(tmp32, 1, 1, c2) tmp34 = -(s) tmp35 = update_Transform3D_sp_14(tmp33, 1, 2, tmp34) tmp36 = update_Transform3D_sp_15(tmp35, 2, 1, s) update_Transform3D_sp_12(tmp36, 2, 2, c2) fun rotateY(angle) = - let {s1, c3, tmp37, tmp38, tmp39, tmp40, tmp41, tup_32, obj_33} + let {s1, c3, tmp37, tmp38, tmp39, tmp40, tmp41} s1 = Math.sin(angle) c3 = Math.cos(angle) - tup_32 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_33 = new Matrix(tup_32, 4, 4) - tmp37 = obj_33 + tmp37 = ident_Transform3D_sp_0(4) tmp38 = update_Transform3D_sp_10(tmp37, 0, 0, c3) tmp39 = update_Transform3D_sp_16(tmp38, 0, 2, s1) tmp40 = -(s1) tmp41 = update_Transform3D_sp_17(tmp39, 2, 0, tmp40) update_Transform3D_sp_12(tmp41, 2, 2, c3) fun rotateZ(angle) = - let {s2, c4, tmp42, tmp43, tmp44, tmp45, tmp46, tup_34, obj_35} + let {s2, c4, tmp42, tmp43, tmp44, tmp45, tmp46} s2 = Math.sin(angle) c4 = Math.cos(angle) - tup_34 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_35 = new Matrix(tup_34, 4, 4) - tmp42 = obj_35 + tmp42 = ident_Transform3D_sp_0(4) tmp43 = update_Transform3D_sp_10(tmp42, 0, 0, c4) tmp44 = -(s2) tmp45 = update_Transform3D_sp_18(tmp43, 0, 1, tmp44) tmp46 = update_Transform3D_sp_19(tmp45, 1, 0, s2) update_Transform3D_sp_11(tmp46, 1, 1, c4) fun scale(sx, sy, sz) = - let {tmp29, tmp30, tmp31, tup_28, obj_29} - tup_28 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_29 = new Matrix(tup_28, 4, 4) - tmp29 = obj_29 + let {tmp29, tmp30, tmp31} + tmp29 = ident_Transform3D_sp_0(4) tmp30 = update_Transform3D_sp_10(tmp29, 0, 0, sx) tmp31 = update_Transform3D_sp_11(tmp30, 1, 1, sy) update_Transform3D_sp_12(tmp31, 2, 2, sz) fun transform(dx, dy, dz) = - let {tmp26, tmp27, tmp28, tup_26, obj_27} - tup_26 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_27 = new Matrix(tup_26, 4, 4) - tmp26 = obj_27 + let {tmp26, tmp27, tmp28} + tmp26 = ident_Transform3D_sp_0(4) tmp27 = update_Transform3D_sp_7(tmp26, 0, 3, dx) tmp28 = update_Transform3D_sp_8(tmp27, 1, 3, dy) update_Transform3D_sp_9(tmp28, 2, 3, dz) @@ -156,13 +144,9 @@ module Transform3D with new Matrix(tmp22, r, c) open Transform3D fun ident_Transform3D_sp_0(w) = - let {m3, tup_2, obj_3, tup_24, obj_25} - tup_2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_3 = new Matrix(tup_2, 4, 4) - m3 = obj_3 - tup_24 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_25 = new Matrix(tup_24, 4, 4) - obj_25 + let {m3} + m3 = zeros_Transform3D_sp_0(w, w) + iterID_Transform3D_sp_1(m3, w, w) fun iterCol_Transform3D_sp_0(m, x, y, colX, colY, i, j) = let {scrut1, tmp9, tmp10, tmp11, tmp12, tmp13} scrut1 = ===(j, 0) @@ -616,7 +600,7 @@ fun iterCol_Transform3D_sp_63(m, x, y, colX, colY, i, j) = scrut1 = false tmp9 = 0 tmp10 = 0 - tmp11 = 1 + tmp11 = iter_Transform3D_sp_216(0, x, y, colX, i, tmp10, colX) tmp12 = update_Transform3D_sp_36(m, i, tmp9, tmp11) tmp13 = 0 iterCol_Transform3D_sp_64(tmp12, x, y, colX, colY, i, tmp13) @@ -715,53 +699,37 @@ fun iterID_Transform3D_sp_0(m, w, i) = tmp20 = i - 1 iterID_Transform3D_sp_0(tmp19, w, tmp20) fun iterID_Transform3D_sp_1(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_5, obj_6, tup_22, obj_23} + let {scrut3, tmp17, tmp18, tmp19, tmp20} scrut3 = false tmp17 = 0 tmp18 = 0 - tup_5 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_6 = new Matrix(tup_5, 4, 4) - tmp19 = obj_6 + tmp19 = update_Transform3D_sp_3(m, tmp17, tmp18, 1) tmp20 = 3 - tup_22 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_23 = new Matrix(tup_22, 4, 4) - obj_23 + iterID_Transform3D_sp_2(tmp19, w, tmp20) fun iterID_Transform3D_sp_2(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_8, obj_9, tup_20, obj_21} + let {scrut3, tmp17, tmp18, tmp19, tmp20} scrut3 = false tmp17 = 1 tmp18 = 1 - tup_8 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_9 = new Matrix(tup_8, 4, 4) - tmp19 = obj_9 + tmp19 = update_Transform3D_sp_4(m, tmp17, tmp18, 1) tmp20 = 2 - tup_20 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_21 = new Matrix(tup_20, 4, 4) - obj_21 + iterID_Transform3D_sp_3(tmp19, w, tmp20) fun iterID_Transform3D_sp_3(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_11, obj_12, tup_18, obj_19} + let {scrut3, tmp17, tmp18, tmp19, tmp20} scrut3 = false tmp17 = 2 tmp18 = 2 - tup_11 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] - obj_12 = new Matrix(tup_11, 4, 4) - tmp19 = obj_12 + tmp19 = update_Transform3D_sp_5(m, tmp17, tmp18, 1) tmp20 = 1 - tup_18 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_19 = new Matrix(tup_18, 4, 4) - obj_19 + iterID_Transform3D_sp_4(tmp19, w, tmp20) fun iterID_Transform3D_sp_4(m, w, i) = - let {scrut3, tmp17, tmp18, tmp19, tmp20, tup_14, obj_15, tup_16, obj_17} + let {scrut3, tmp17, tmp18, tmp19, tmp20} scrut3 = false tmp17 = 3 tmp18 = 3 - tup_14 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_15 = new Matrix(tup_14, 4, 4) - tmp19 = obj_15 + tmp19 = update_Transform3D_sp_6(m, tmp17, tmp18, 1) tmp20 = 0 - tup_16 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_17 = new Matrix(tup_16, 4, 4) - obj_17 + iterID_Transform3D_sp_5(tmp19, w, tmp20) fun iterID_Transform3D_sp_5(m, w, i) = let {scrut3, tmp17, tmp18, tmp19, tmp20} scrut3 = true @@ -3622,22 +3590,16 @@ fun iter_Transform3D_sp_99(sum, x, y, colX, i, j, k) = tmp8 = 0 iter_Transform3D_sp_100(tmp7, x, y, colX, i, j, tmp8) fun model_Transform3D_sp_0(local, position, scaling, rotation) = - let {rot, res1, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58, tup_53, obj_54, tup_66, obj_67, tup_79, obj_80} + let {rot, res1, tmp47, tmp48, tmp49, tmp50, tmp51, tmp52, tmp53, tmp54, tmp55, tmp56, tmp57, tmp58} tmp47 = rotateZ_Transform3D_sp_0(rotation.2) tmp48 = rotateY_Transform3D_sp_0(rotation.1) tmp49 = rotateX_Transform3D_sp_0(rotation.0) - tup_53 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_54 = new Matrix(tup_53, 4, 4) - tmp50 = obj_54 + tmp50 = ident_Transform3D_sp_0(4) tmp51 = multiply_Transform3D_sp_0(tmp49, tmp50) tmp52 = multiply_Transform3D_sp_1(tmp48, tmp51) rot = multiply_Transform3D_sp_1(tmp47, tmp52) - tup_66 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] - obj_67 = new Matrix(tup_66, 4, 4) - tmp53 = obj_67 - tup_79 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] - obj_80 = new Matrix(tup_79, 4, 4) - tmp54 = obj_80 + tmp53 = transform_Transform3D_sp_0(position.0, position.1, position.2) + tmp54 = scale_Transform3D_sp_0(scaling.0, scaling.1, scaling.2) tmp55 = [local.0, local.1, local.2, 1] tmp56 = new Matrix(tmp55, 4, 1) tmp57 = multiply_Transform3D_sp_4(tmp54, tmp56) @@ -3645,105 +3607,71 @@ fun model_Transform3D_sp_0(local, position, scaling, rotation) = res1 = multiply_Transform3D_sp_5(tmp53, tmp58) [res1.arr.0, res1.arr.1, res1.arr.2] fun multiply_Transform3D_sp_0(x, y) = - let {res, tup_38, obj_39} - tup_38 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_39 = new Matrix(tup_38, 4, 4) - res = obj_39 + let {res} + res = zeros_Transform3D_sp_0(x.r, y.c) iterRow_Transform3D_sp_1(res, x, y, x.r, x.c, y.c, x.r) fun multiply_Transform3D_sp_1(x, y) = - let {res, tup_40, obj_41} - tup_40 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - obj_41 = new Matrix(tup_40, 4, 4) - res = obj_41 + let {res} + res = zeros_Transform3D_sp_0(x.r, y.c) iterRow_Transform3D_sp_6(res, x, y, x.r, x.c, y.c, x.r) fun multiply_Transform3D_sp_2(x, y) = - let {res, tup_43, obj_44} - tup_43 = [0, 0, 0, 0] - obj_44 = new Matrix(tup_43, 4, 1) - res = obj_44 + let {res} + res = zeros_Transform3D_sp_1(x.r, y.c) iterRow_Transform3D_sp_11(res, x, y, x.r, x.c, y.c, x.r) fun multiply_Transform3D_sp_3(x, y) = - let {res, tup_45, obj_46} - tup_45 = [0, 0, 0, 0] - obj_46 = new Matrix(tup_45, 4, 1) - res = obj_46 + let {res} + res = zeros_Transform3D_sp_1(x.r, y.c) iterRow_Transform3D_sp_16(res, x, y, x.r, x.c, y.c, x.r) fun multiply_Transform3D_sp_4(x, y) = - let {res, tup_81, obj_82} - tup_81 = [0, 0, 0, 0] - obj_82 = new Matrix(tup_81, 4, 1) - res = obj_82 + let {res} + res = zeros_Transform3D_sp_1(x.r, y.c) iterRow_Transform3D_sp_21(res, x, y, x.r, x.c, y.c, x.r) fun multiply_Transform3D_sp_5(x, y) = - let {res, tup_83, obj_84} - tup_83 = [0, 0, 0, 0] - obj_84 = new Matrix(tup_83, 4, 1) - res = obj_84 + let {res} + res = zeros_Transform3D_sp_1(x.r, y.c) iterRow_Transform3D_sp_26(res, x, y, x.r, x.c, y.c, x.r) fun rotateX_Transform3D_sp_0(angle) = - let {s, c2, tmp32, tmp33, tmp34, tmp35, tmp36, tup_51, obj_52} + let {s, c2, tmp32, tmp33, tmp34, tmp35, tmp36} s = Math.sin(2.51327412) c2 = Math.cos(2.51327412) - tup_51 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_52 = new Matrix(tup_51, 4, 4) - tmp32 = obj_52 + tmp32 = ident_Transform3D_sp_0(4) tmp33 = update_Transform3D_sp_13(tmp32, 1, 1, c2) tmp34 = -(s) tmp35 = update_Transform3D_sp_14(tmp33, 1, 2, tmp34) tmp36 = update_Transform3D_sp_15(tmp35, 2, 1, s) update_Transform3D_sp_12(tmp36, 2, 2, c2) fun rotateY_Transform3D_sp_0(angle) = - let {s1, c3, tmp37, tmp38, tmp39, tmp40, tmp41, tup_49, obj_50} + let {s1, c3, tmp37, tmp38, tmp39, tmp40, tmp41} s1 = Math.sin(3.1415926535) c3 = Math.cos(3.1415926535) - tup_49 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_50 = new Matrix(tup_49, 4, 4) - tmp37 = obj_50 + tmp37 = ident_Transform3D_sp_0(4) tmp38 = update_Transform3D_sp_10(tmp37, 0, 0, c3) tmp39 = update_Transform3D_sp_16(tmp38, 0, 2, s1) tmp40 = -(s1) tmp41 = update_Transform3D_sp_17(tmp39, 2, 0, tmp40) update_Transform3D_sp_12(tmp41, 2, 2, c3) fun rotateZ_Transform3D_sp_0(angle) = - let {s2, c4, tmp42, tmp43, tmp44, tmp45, tmp46, tup_47, obj_48} + let {s2, c4, tmp42, tmp43, tmp44, tmp45, tmp46} s2 = Math.sin(0) c4 = Math.cos(0) - tup_47 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_48 = new Matrix(tup_47, 4, 4) - tmp42 = obj_48 + tmp42 = ident_Transform3D_sp_0(4) tmp43 = update_Transform3D_sp_10(tmp42, 0, 0, c4) tmp44 = -(s2) tmp45 = update_Transform3D_sp_18(tmp43, 0, 1, tmp44) tmp46 = update_Transform3D_sp_19(tmp45, 1, 0, s2) update_Transform3D_sp_11(tmp46, 1, 1, c4) fun scale_Transform3D_sp_0(sx, sy, sz) = - let {tmp29, tmp30, tmp31, tup_68, obj_69, tup_71, obj_72, tup_74, obj_75, tup_77, obj_78} - tup_68 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_69 = new Matrix(tup_68, 4, 4) - tmp29 = obj_69 - tup_71 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_72 = new Matrix(tup_71, 4, 4) - tmp30 = obj_72 - tup_74 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_75 = new Matrix(tup_74, 4, 4) - tmp31 = obj_75 - tup_77 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] - obj_78 = new Matrix(tup_77, 4, 4) - obj_78 + let {tmp29, tmp30, tmp31} + tmp29 = ident_Transform3D_sp_0(4) + tmp30 = update_Transform3D_sp_33(tmp29, 0, 0, sx) + tmp31 = update_Transform3D_sp_34(tmp30, 1, 1, sy) + update_Transform3D_sp_35(tmp31, 2, 2, sz) fun transform_Transform3D_sp_0(dx, dy, dz) = - let {tmp26, tmp27, tmp28, tup_55, obj_56, tup_58, obj_59, tup_61, obj_62, tup_64, obj_65} - tup_55 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_56 = new Matrix(tup_55, 4, 4) - tmp26 = obj_56 - tup_58 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - obj_59 = new Matrix(tup_58, 4, 4) - tmp27 = obj_59 - tup_61 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] - obj_62 = new Matrix(tup_61, 4, 4) - tmp28 = obj_62 - tup_64 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] - obj_65 = new Matrix(tup_64, 4, 4) - obj_65 + let {tmp26, tmp27, tmp28} + tmp26 = ident_Transform3D_sp_0(4) + tmp27 = update_Transform3D_sp_30(tmp26, 0, 3, dx) + tmp28 = update_Transform3D_sp_31(tmp27, 1, 3, dy) + update_Transform3D_sp_32(tmp28, 2, 3, dz) fun update_Transform3D_sp_0(m, i, j, v) = let {tmp23, tmp24, tmp25} tmp23 = *(i, m.c) @@ -3883,53 +3811,53 @@ fun update_Transform3D_sp_29(m, i, j, v) = tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, v) new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_3(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_4} + let {tmp23, tmp24, tmp25, tup_2} tmp23 = 0 tmp24 = 0 - tup_4 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - tmp25 = tup_4 + tup_2 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + tmp25 = tup_2 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_30(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_57} + let {tmp23, tmp24, tmp25, tup_7} tmp23 = 0 tmp24 = 3 - tup_57 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_57 + tup_7 = [1, 0, 0, 11, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_7 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_31(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_60} + let {tmp23, tmp24, tmp25, tup_8} tmp23 = 4 tmp24 = 7 - tup_60 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_60 + tup_8 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_8 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_32(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_63} + let {tmp23, tmp24, tmp25, tup_9} tmp23 = 8 tmp24 = 11 - tup_63 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] - tmp25 = tup_63 + tup_9 = [1, 0, 0, 11, 0, 1, 0, 4, 0, 0, 1, 51, 0, 0, 0, 1] + tmp25 = tup_9 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_33(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_70} + let {tmp23, tmp24, tmp25, tup_10} tmp23 = 0 tmp24 = 0 - tup_70 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_70 + tup_10 = [0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_10 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_34(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_73} + let {tmp23, tmp24, tmp25, tup_11} tmp23 = 4 tmp24 = 5 - tup_73 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_73 + tup_11 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_11 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_35(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_76} + let {tmp23, tmp24, tmp25, tup_12} tmp23 = 8 tmp24 = 10 - tup_76 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] - tmp25 = tup_76 + tup_12 = [0.4, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 0.19, 0, 0, 0, 0, 1] + tmp25 = tup_12 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_36(m, i, j, v) = let {tmp23, tmp24, tmp25} @@ -3938,25 +3866,25 @@ fun update_Transform3D_sp_36(m, i, j, v) = tmp25 = Transform3D__Legacy."Mx$Transform3D".setAt(m.arr, 3, 1) new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_4(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_7} + let {tmp23, tmp24, tmp25, tup_3} tmp23 = 4 tmp24 = 5 - tup_7 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - tmp25 = tup_7 + tup_3 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + tmp25 = tup_3 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_5(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_10} + let {tmp23, tmp24, tmp25, tup_4} tmp23 = 8 tmp24 = 10 - tup_10 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] - tmp25 = tup_10 + tup_4 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] + tmp25 = tup_4 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_6(m, i, j, v) = - let {tmp23, tmp24, tmp25, tup_13} + let {tmp23, tmp24, tmp25, tup_5} tmp23 = 12 tmp24 = 15 - tup_13 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - tmp25 = tup_13 + tup_5 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + tmp25 = tup_5 new Matrix(tmp25, m.r, m.c) fun update_Transform3D_sp_7(m, i, j, v) = let {tmp23, tmp24, tmp25} @@ -3983,8 +3911,8 @@ fun zeros_Transform3D_sp_0(r, c) = tmp22 = tup_1 new Matrix(tmp22, r, c) fun zeros_Transform3D_sp_1(r, c) = - let {tmp21, tmp22, tup_42} + let {tmp21, tmp22, tup_6} tmp21 = 4 - tup_42 = [0, 0, 0, 0] - tmp22 = tup_42 + tup_6 = [0, 0, 0, 0] + tmp22 = tup_6 new Matrix(tmp22, r, c) \ No newline at end of file diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 95f7b9ad94..54c12af453 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -217,7 +217,7 @@ print(Dispatching."cache$Dispatching") //│ > fun test(b) = //│ > let {y1, m, tmp1, tmp2, tmp3} //│ > tmp1 = new L1.class(1) -//│ > y1 = 11 +//│ > y1 = twice_Dispatching_sp_0(tmp1, 5) //│ > tmp2 = new L2.class(2) //│ > tmp3 = new L3.class(3) //│ > m = pick_Dispatching_sp_2(tmp2, tmp3, b) @@ -319,7 +319,7 @@ staged module Inheritance with else "not B" Inheritance."test_gen"() -//│ = ["test", {}] +//│ = ["test", {Lit(5)}] staged module NonTermination with fun f(x, y) = if y From fd3da20ace7c98726c4348df3a1e300cc137f31a Mon Sep 17 00:00:00 2001 From: NeilKleistGao Date: Fri, 5 Jun 2026 11:48:42 +0800 Subject: [PATCH 651/654] Address problems --- .../src/test/mlscript-compile/Shape.mls | 10 ++-------- .../src/test/mlscript-compile/ShapeSet.mls | 10 +++++----- .../test/mlscript-compile/SimpleRegExp.mls | 20 ++++++++----------- .../mlscript-compile/SpecializeHelpers.mls | 8 -------- .../mlscript-compile/staging/StagedRegExp.mls | 20 ++++++++----------- .../shared/src/test/mlscript/ShapeSetTest.mls | 6 +++--- .../test/mlscript/block-staging/ShapeProp.mls | 3 ++- .../block-staging/SimpleRegExpTest.mls | 3 --- 8 files changed, 28 insertions(+), 52 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/Shape.mls b/hkmc2/shared/src/test/mlscript-compile/Shape.mls index ec29204a71..ffc0af6482 100644 --- a/hkmc2/shared/src/test/mlscript-compile/Shape.mls +++ b/hkmc2/shared/src/test/mlscript-compile/Shape.mls @@ -50,14 +50,8 @@ fun static(s: Shape) = if s is Dyn then false Lit(l) then not (l is Str and isPrimitiveType(l)) // redundant bracket? - Class(_, params) then params.every(field => - let values = field.values() - values.length is 1 and static(values.0) - ) - Arr(shapes) then shapes.every(field => - let values = field.values() - values.length is 1 and static(values.0) - ) + Class(_, params) then params.every(_.values() is [v] and static(v)) + Arr(shapes) then shapes.every(_.values() is [v] and static(v)) open Block { Case } diff --git a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls index c7845c602c..6113433984 100644 --- a/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls +++ b/hkmc2/shared/src/test/mlscript-compile/ShapeSet.mls @@ -34,27 +34,27 @@ class ShapeSet(val shapeset: Map[String, Shape]) extends CachedHash with module ShapeSet with fun empty = ShapeSet(new Map) -fun makeShapeSet(entries) = +fun mkShapeSet(entries) = let shapeMap = new Map(entries) let dyn = Dyn() if shapeMap.has(dyn.hash()) then ShapeSet(new Map([[dyn.hash(), dyn]])) else ShapeSet(shapeMap) -fun lift(s: Shape) = makeShapeSet([[s.hash(), s]]) +fun lift(s: Shape) = mkShapeSet([[s.hash(), s]]) fun liftMany(arr: Array[Shape]) = - makeShapeSet(arr.map(s => [s.hash(), s])) + mkShapeSet(arr.map(s => [s.hash(), s])) fun union2(s1: ShapeSet, s2: ShapeSet) = if s1.isDyn() then s1 else if s2.isDyn() then s2 - else makeShapeSet([...s1.shapeset, ...s2.shapeset]) + else mkShapeSet([...s1.shapeset, ...s2.shapeset]) fun union(...s) = if s.length is 0 then ShapeSet.empty else s.reduce((acc, next) => union2(acc, next)) -fun flat(arr: Array[ShapeSet]) = makeShapeSet(arr.map(_.shapeset.entries().toArray()).flat()) +fun flat(arr: Array[ShapeSet]) = mkShapeSet(arr.map(_.shapeset.entries().toArray()).flat()) fun prod(xs) = xs.reduce((a, b) => a.flatMap(d => b.map(e => [...d, e])), [[]]) diff --git a/hkmc2/shared/src/test/mlscript-compile/SimpleRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/SimpleRegExp.mls index 7c983fc915..77ce8a73aa 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SimpleRegExp.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SimpleRegExp.mls @@ -171,19 +171,15 @@ module SimpleRegExp with fun plus(r) = new Concat(r, new Star(r)) - fun matchImpl(p, s, acc) = - if len(s) == 0 then - if p.canBeEmpty() then new Some(acc) + fun matchImpl(p, s, acc) = if + len(s) == 0 and + p.canBeEmpty() then new Some(acc) else new None - else - if p is - Nothing then new None - else - let c = s.0 - if p.startsWith(c) then - matchImpl(p.derive(c), s.slice(1), acc + c) - else - if p.canBeEmpty() then new Some(acc) else new None + p is Nothing then new None + let c = s.0 + p.startsWith(c) then matchImpl(p.derive(c), s.slice(1), acc + c) + p.canBeEmpty() then new Some(acc) + else new None fun match(p, s) = matchImpl(p, s, "") diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index bd4f81e439..a44bacb8b3 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -335,7 +335,6 @@ fun sorStaticModuleCall(ctx, f, value, fld, args, argShapes) = let entry = StaticCallEntry(evaluatedPath.0, evaluatedPath.1, inferredShape) ctx.addStaticCall(key, entry) [entry.block, entry.path, entry.shape] - else sorUnknownCall(ctx, f, args) fun sorCall(ctx, r, f, args, argShapes) = if f is Select(Select(ValueMemberRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) // runtime.Tuple.get is generated by the compiler in the IR @@ -368,13 +367,6 @@ fun sorCall(ctx, r, f, args, argShapes) = if f is [End(), Call(Select(ValueThis(ModuleSymbol(name, value, redir)), Symbol(res.0)), args), res.1] else throw Error("module " + name + " is staged but function " + fld + " is not found in generator map") - argShapes.every(staticSet) and // non staged function and params known - let fimp = value.(fld) - let evaluated = fimp(...argShapes.map(valOfSet)) - let inferredShape = sov(evaluated) - staticSet(inferredShape) then // shape can be inferred from runtime value - let evaluatedPath = shapeset2path(inferredShape, ctx.allocs) - [evaluatedPath.0, evaluatedPath.1, inferredShape] Select(ValueMemberRef(ModuleSymbol(name, value, redir)), Symbol(fld)) and let mapPropName = getGenMapName(name, false) let genMap = value.(mapPropName) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls b/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls index 35d5169a52..f2371d1c37 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/StagedRegExp.mls @@ -171,19 +171,15 @@ staged module StagedRegExp with fun plus(r) = new Concat(r, new Star(r)) - fun matchImpl(p, s, acc) = - if len(s) == 0 then - if p.canBeEmpty() then new Some(acc) + fun matchImpl(p, s, acc) = if + len(s) == 0 and + p.canBeEmpty() then new Some(acc) else new None - else - if p is - Nothing then new None - else - let c = s.0 - if p.startsWith(c) then - matchImpl(p.derive(c), s.slice(1), acc + c) - else - if p.canBeEmpty() then new Some(acc) else new None + p is Nothing then new None + let c = s.0 + p.startsWith(c) then matchImpl(p.derive(c), s.slice(1), acc + c) + p.canBeEmpty() then new Some(acc) + else new None fun match(p, s) = matchImpl(p, s, "") diff --git a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls index 7cc130f1a0..de35ad0c72 100644 --- a/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls +++ b/hkmc2/shared/src/test/mlscript/ShapeSetTest.mls @@ -44,11 +44,11 @@ val clsSym = ConcreteClassSymbol("C", C, Some([Param(None, Symbol("a"))]), [], f //│ ) :fixme -let x = liftMany([Class(clsSym, [Lit(42)]), Arr([Lit(1), Lit("a")])]) +let x = liftMany([Class(clsSym, [mkLit(42)]), Arr([mkLit(1), mkLit("a")])]) let y = liftMany([Lit(1), Lit("a")]) selSet(x, y) -//│ ═══[RUNTIME ERROR] TypeError: arg$Class$1$[scrut1].values is not a function -//│ x = {Arr([Lit(1), Lit("a")]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), [], false), [Lit(42)])} +//│ ═══[RUNTIME ERROR] Error: Array out of bound +//│ x = {Arr([{Lit(1)}, {Lit("a")}]),Class(ConcreteClassSymbol("C", fun C { class: class C }, Some([Param(None, Symbol("a"))]), [], false), [{Lit(42)}])} //│ y = {Lit("a"),Lit(1)} mkClass(clsSym, [mkLit(1)]) diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index 54c12af453..e74e26ef16 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -346,13 +346,14 @@ Comparison."test_gen"(union(mkLit(3), mkLit(4))) Comparison."test_gen"(union(mkLit(4), mkLit(6))) //│ = ["test_Comparison_sp_1", {Dyn()}] +:fixme class C module Opaque with fun f() = new C staged module M with fun f() = Opaque.f() M."f_gen"() -//│ = ["f", {Dyn()}] +//│ ═══[RUNTIME ERROR] Error: match error staged module M with fun f(x, y) = x * y diff --git a/hkmc2/shared/src/test/mlscript/block-staging/SimpleRegExpTest.mls b/hkmc2/shared/src/test/mlscript/block-staging/SimpleRegExpTest.mls index 6152f873b2..e1eb578a40 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/SimpleRegExpTest.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/SimpleRegExpTest.mls @@ -9,9 +9,6 @@ open SimpleRegExp match(Exact("x"), "x") //│ = Some("x") -match(Exact("x"), "x") -//│ = Some("x") - match(Exact("x"), "") //│ = None From f6a24c3ca14f3f47e62f8cd2219ab9c94d01b1dd Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 5 Jun 2026 13:33:51 +0800 Subject: [PATCH 652/654] add back fallback to sorUnknownCall --- hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls | 2 ++ hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls index a44bacb8b3..145fdc22e9 100644 --- a/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls +++ b/hkmc2/shared/src/test/mlscript-compile/SpecializeHelpers.mls @@ -335,6 +335,8 @@ fun sorStaticModuleCall(ctx, f, value, fld, args, argShapes) = let entry = StaticCallEntry(evaluatedPath.0, evaluatedPath.1, inferredShape) ctx.addStaticCall(key, entry) [entry.block, entry.path, entry.shape] + // NOTE: this fallback is for when we are not be able to infer the shape for some runtime values, even when all parameters are static + else sorUnknownCall(ctx, f, args) fun sorCall(ctx, r, f, args, argShapes) = if f is Select(Select(ValueMemberRef(Symbol("runtime")), Symbol("Tuple")), Symbol("get")) // runtime.Tuple.get is generated by the compiler in the IR diff --git a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls index e74e26ef16..54c12af453 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/ShapeProp.mls @@ -346,14 +346,13 @@ Comparison."test_gen"(union(mkLit(3), mkLit(4))) Comparison."test_gen"(union(mkLit(4), mkLit(6))) //│ = ["test_Comparison_sp_1", {Dyn()}] -:fixme class C module Opaque with fun f() = new C staged module M with fun f() = Opaque.f() M."f_gen"() -//│ ═══[RUNTIME ERROR] Error: match error +//│ = ["f", {Dyn()}] staged module M with fun f(x, y) = x * y From 9e8f08701c8dc8e8061d7421df247665ad3a3fb5 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 5 Jun 2026 15:56:50 +0800 Subject: [PATCH 653/654] resolve remaining comments --- .../mlscript-compile/staging/Transform3D.mls | 16 ++++++++-------- .../staging/out/CombinedModule.mls | 4 ++-- .../test/mlscript/block-staging/GenerateMult.mls | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls index 2db5a3bfe3..c957ef9fa1 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/Transform3D.mls @@ -43,13 +43,13 @@ staged module Transform3D with update of update of update(ident(4), 0, 3, dx), 1, 3, dy - , 2, 3, dz + 2, 3, dz fun scale(sx, sy, sz) = update of update of update(ident(4), 0, 0, sx), 1, 1, sy - , 2, 2, sz + 2, 2, sz fun rotateX(angle) = let s = Math.sin(angle) @@ -58,8 +58,8 @@ staged module Transform3D with update of update of update(ident(4), 1, 1, c), 1, 2, -s - , 2, 1, s - , 2, 2, c + 2, 1, s + 2, 2, c fun rotateY(angle) = let s = Math.sin(angle) @@ -68,8 +68,8 @@ staged module Transform3D with update of update of update(ident(4), 0, 0, c), 0, 2, s - , 2, 0, -s - , 2, 2, c + 2, 0, -s + 2, 2, c fun rotateZ(angle) = let s = Math.sin(angle) @@ -78,8 +78,8 @@ staged module Transform3D with update of update of update(ident(4), 0, 0, c), 0, 1, -s - , 1, 0, s - , 1, 1, c + 1, 0, s + 1, 1, c fun model(local, position, scaling, rotation) = let rot = multiply of diff --git a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls index 1938f86190..609c228f4e 100644 --- a/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls +++ b/hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls @@ -1,6 +1,6 @@ #config(noFreeze: true, noModuleCheck: true, deadParamElim: Some(DeadParamElim(debug: false, mono: true))) -import "../SimpleStagedExample.mjs" as SimpleStagedExample__Legacy -import "../LinkingGeneratedClasses.mjs" as LinkingGeneratedClasses__Legacy +import "../SimpleStagedExample.mls" as SimpleStagedExample__Legacy +import "../LinkingGeneratedClasses.mls" as LinkingGeneratedClasses__Legacy module CombinedModule with module SimpleStagedExample with diff --git a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls index c48baa68e5..4b8e6a89a0 100644 --- a/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls +++ b/hkmc2/shared/src/test/mlscript/block-staging/GenerateMult.mls @@ -7,7 +7,7 @@ import "../../mlscript-compile/staging/LinkingGeneratedClasses.mls" import "../../mlscript-compile/Block.mls" -Block.generateAll("CombinedModule", "./hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls", [SimpleStagedExample, "SimpleStagedExample", "../SimpleStagedExample.mjs"], [LinkingGeneratedClasses, "LinkingGeneratedClasses", "../LinkingGeneratedClasses.mjs"]) +Block.generateAll("CombinedModule", "./hkmc2/shared/src/test/mlscript-compile/staging/out/CombinedModule.mls", [SimpleStagedExample, "SimpleStagedExample", "../SimpleStagedExample.mls"], [LinkingGeneratedClasses, "LinkingGeneratedClasses", "../LinkingGeneratedClasses.mls"]) import "../../mlscript-compile/staging/out/CombinedModule.mls" From 9b7fb628d0915ea9d6868ffd5b59bfffde1d4808 Mon Sep 17 00:00:00 2001 From: ChingLongTin <26105652+Sunny-Ching@users.noreply.github.com> Date: Fri, 5 Jun 2026 16:25:56 +0800 Subject: [PATCH 654/654] replace Value.Ref use --- .../main/scala/hkmc2/codegen/ReflectionInstrumenter.scala | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala index f4a71e6554..afa322c84a 100644 --- a/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala +++ b/hkmc2/shared/src/main/scala/hkmc2/codegen/ReflectionInstrumenter.scala @@ -585,7 +585,7 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S val sym = BlockMemberSymbol(name, Nil) // reconstructs the Path from the top-level to the current symbol - def reconstruct(s: DefinitionSymbol[? <: ModuleOrObjectDef | ClassDef]): Path = + def reconstruct(s: DefinitionSymbol[? <: ModuleOrObjectDef | ClassDef] & InnerSymbol): Path = s.defn.orElse(defnMap.get(key)) match case S(defn) => val owner: Option[InnerSymbol] = defn match @@ -597,8 +597,10 @@ class ReflectionInstrumenter(using State, Raise, Ctx) extends BlockTransformer(S case N => defn match case l: (ModuleOrObjectDef | ClassDef) => Value.MemberRef(l.bsym, s) case l: ClsLikeDefn => Value.MemberRef(l.sym, s) - case N => Value.Ref(s) - + case N => + // TODO: get this case to trigger, where the symbol has no definition and isn't collected in defnMap + raise(ErrorReport(msg"Cannot recover definition from symbol" -> s.toLoc :: Nil)) + Value.This(s) (tsym, sym, reconstruct(key)) )